비용 모델 매개변수

OptimizeToursRequest 메시지 (REST, gRPC)에는 관련 속성 비용입니다. 이러한 비용 매개변수는 요청에 대한 비용 모델입니다 비용 모델은 요청의 상위 수준 다음과 같은 최적화 목표를 달성할 수 있습니다.

  • 짧은 경로 또는 그 반대 방향보다 빠른 Vehicle 경로에 우선순위 지정 주변
  • Shipment 게재 비용이 Shipment님의 완료
  • 기간 내에 수령 및 배달을 수행하는 경우는 비용 효율성

비용이 포함된 요청 예 보기

{
  "model": {
    "globalStartTime": "2023-01-13T16:00:00-08:00",
    "globalEndTime": "2023-01-14T16:00:00-08:00",
    "shipments": [
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.789456,
              "longitude": -122.390192
            },
            "duration": "250s"
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 100.0
      },
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.789116,
              "longitude": -122.395080
            },
            "duration": "250s"
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 5.0
      },
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.795242,
              "longitude": -122.399347
            },
            "duration": "250s"
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 50.0
      }
    ],
    "vehicles": [
      {
        "endLocation": {
          "latitude": 37.794465,
          "longitude": -122.394839
        },
        "startLocation": {
          "latitude": 37.794465,
          "longitude": -122.394839
        },
        "costPerHour": 40.0,
        "costPerKilometer": 10.0
      }
    ]
  }
}
    

비용 속성 Vehicle

Vehicle 메시지 (REST, gRPC)에는 몇 가지 비용 속성이 있습니다.

  • Vehicle.cost_per_hour: 시간당 차량 운행 비용을 나타냅니다. 대중교통, 대기, 방문, 휴식 시간 등이 포함됩니다.
  • Vehicle.cost_per_kilometer: 킬로미터당 이동 비용을 나타냅니다. 나타냅니다.
  • Vehicle.cost_per_traveled_hour: 차량 운행 비용을 나타냅니다. 대기 시간, 방문, 휴식 시간을 제외하고 이동 중에만 사용할 수 있습니다.

이러한 비용 매개변수를 사용하면 옵티마이저가 time-versus-traveled-distance를 장단점이 있습니다 최적화된 경로에서 발생한 비용이 응답에 표시됨 메시지를 metrics.costs 형식으로 전송합니다.

costPerHour가 증가함에 따라 옵티마이저는 더 빠른 경로를 찾으려고 시도합니다. 이러한 경로는 가장 짧은 경로가 아닐 수도 있습니다. 이 예에서는 가장 빠른 경로가 가장 짧기 때문에 비용 매개변수를 변경해도 효과가 거의 없습니다.

비용 속성 Shipment

Shipment 메시지 (REST, gRPC)에는 여러 가지 비용도 있습니다. 매개변수:

  • Shipment.penalty_cost는 다음 행을 건너뛸 때 발생하는 비용을 나타냅니다. 배송을 탭합니다.
  • Shipment.VisitRequest.cost는 특정 픽업 비용을 나타냅니다. 주로 여러 수령 또는 서비스 간의 비용 절충을 가능하게 하는 데 사용됩니다. 단일 배송의 배송 옵션을 선택할 수 있습니다.

비용 매개변수 Shipment개가 Vehicle 비용과 동일한 측정기준 없는 단위를 사용합니다. 매개변수입니다. 발생한 비용이 Shipment이면 제재 비용을 초과하면 Shipment은(는) Vehicle의 경로에 포함되어 있지 않으며 대신 다음 위치에 표시됩니다. skipped_shipments 목록을 반환합니다.

비용 속성 ShipmentModel

ShipmentModel 메시지 (REST, gRPC)에는 단일 비용이 포함되어 있습니다. 속성, globalDurationCostPerHour 이 비용은 총 모든 차량이 ShipmentRoute을(를) 완료하는 데 필요한 시간 증가 globalDurationCostPerHour에서는 모든 배송의 빠른 완료를 우선시합니다.

경로 최적화 응답 비용 속성

OptimizeToursResponse 메시지 (REST, gRPC)에는 비용 속성이 있습니다. ShipmentRoute 완료 과정에서 발생한 비용을 나타냅니다. metrics.costs 속성과 metrics.totalCost 속성은 응답의 모든 경로에서 발생한 비용 단위 각 routes 항목에는 다음이 포함됩니다. 관련 비용을 나타내는 routeCostsrouteTotalCosts 속성 있습니다.

비용이 포함된 예시 요청에 대한 응답 보기

{
  "routes": [
    {
      "vehicleStartTime": "2023-01-14T00:00:00Z",
      "vehicleEndTime": "2023-01-14T00:28:22Z",
      "visits": [
        {
          "isPickup": true,
          "startTime": "2023-01-14T00:00:00Z",
          "detour": "0s"
        },
        {
          "shipmentIndex": 2,
          "isPickup": true,
          "startTime": "2023-01-14T00:02:30Z",
          "detour": "150s"
        },
        {
          "startTime": "2023-01-14T00:08:55Z",
          "detour": "150s"
        },
        {
          "shipmentIndex": 2,
          "startTime": "2023-01-14T00:21:21Z",
          "detour": "572s"
        }
      ],
      "transitions": [
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2023-01-14T00:00:00Z"
        },
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2023-01-14T00:02:30Z"
        },
        {
          "travelDuration": "235s",
          "travelDistanceMeters": 795,
          "waitDuration": "0s",
          "totalDuration": "235s",
          "startTime": "2023-01-14T00:05:00Z"
        },
        {
          "travelDuration": "496s",
          "travelDistanceMeters": 1893,
          "waitDuration": "0s",
          "totalDuration": "496s",
          "startTime": "2023-01-14T00:13:05Z"
        },
        {
          "travelDuration": "171s",
          "travelDistanceMeters": 665,
          "waitDuration": "0s",
          "totalDuration": "171s",
          "startTime": "2023-01-14T00:25:31Z"
        }
      ],
      "metrics": {
        "performedShipmentCount": 2,
        "travelDuration": "902s",
        "waitDuration": "0s",
        "delayDuration": "0s",
        "breakDuration": "0s",
        "visitDuration": "800s",
        "totalDuration": "1702s",
        "travelDistanceMeters": 3353
      },
      "routeCosts": {
        "model.vehicles.cost_per_kilometer": 33.53,
        "model.vehicles.cost_per_hour": 18.911111111111111
      },
      "routeTotalCost": 52.441111111111113
    }
  ],
  "skippedShipments": [
    {
      "index": 1
    }
  ],
  "metrics": {
    "aggregatedRouteMetrics": {
      "performedShipmentCount": 2,
      "travelDuration": "902s",
      "waitDuration": "0s",
      "delayDuration": "0s",
      "breakDuration": "0s",
      "visitDuration": "800s",
      "totalDuration": "1702s",
      "travelDistanceMeters": 3353
    },
    "usedVehicleCount": 1,
    "earliestVehicleStartTime": "2023-01-14T00:00:00Z",
    "latestVehicleEndTime": "2023-01-14T00:28:22Z",
    "totalCost": 57.441111111111113,
    "costs": {
      "model.vehicles.cost_per_kilometer": 33.53,
      "model.vehicles.cost_per_hour": 18.911111111111111,
      "model.shipments.penalty_cost": 5
    }
  }
}
    

응답 예에서 최상위 metrics.costs는 다음과 같습니다.

{
  "metrics": {
    ...
    "costs": {
      "model.vehicles.cost_per_hour": 18.911111111111111,
      "model.vehicles.cost_per_kilometer": 33.53,
      "model.shipments.penalty_cost": 5
    }
  }
}

model.shipments.penalty_cost 값은 건의 배송 건을 건너뛰었습니다. skippedShipments 속성은 배송된 물품을 나열합니다. 건너뛰었습니다.

이 예시에서는 예시 요청의 model.shipments[1]만 건너뜁니다. model.shipments[1]의 페널티 비용은 5단위로 총 5단위와 일치합니다. model.shipments.penalty_cost 키를 반환합니다. 배송량이 적음 Vehicle의 40.0 costPerHour 및 10.0 대비 penaltyCost costPerKilometer를 사용하면 배송을 건너뛸 때보다 비용 효율적으로 배송을 건너뛸 수 있습니다. 있습니다.

고급 주제: 비용 및 유연한 제약조건

여러 OptimizeToursRequest 메시지 (REST, gRPC) 속성 서비스 실행 시 비용이 발생하는 제약조건인 소프트 제약조건을 나타냅니다. 만족할 수 없습니다

예를 들어 차량 LoadLimit (REST, gRPC) 제약조건에는 softMaxLoadcostPerUnitAboveSoftMax 속성 함께 사용할 경우 비용이 softMaxLoad를 초과하는 로드 단위에 비례하여 비용 측면에서 합리적인 경우에 한해서만 한도를 초과할 수 있습니다.

마찬가지로 TimeWindow 제약 조건 (REST, gRPC)에는 soft_start_timesoft_end_time 속성(해당하는 항목) cost_per_hour_before_soft_start_timecost_per_hour_after_soft_end_time 제한된 이벤트가 얼마나 일찍 또는 늦게 발생했는지에 따라 발생하는 TimeWindow를 기준으로 합니다.

모든 비용 모델 매개변수와 마찬가지로 유연한 제약조건 비용은 크기가 없는 단위를 다른 비용 매개변수와 동일하게 지정합니다.

LoadLimit 제약 조건은 부하 수요 및 한도. TimeWindow 제약 조건이 자세히 설명됨 (수령 및 배송 시간 기간 제약 조건)