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
: 車両 1 時間あたりの運転費用を表します。 (交通機関、待ち時間、訪問時間、休憩時間を含む)Vehicle.cost_per_kilometer
: 車両が走行した 1 km あたりの費用を表します。Vehicle.cost_per_traveled_hour
: 車両の運転費用を表します。 (待ち時間、訪問時間、休憩時間は除く)転送中のみ
これらのコスト パラメータにより、オプティマイザーは時間と移動距離を比較して、
トレードオフがあります最適化されたルートで発生した費用は、レスポンス メッセージに metrics.costs
として表示されます。
costPerHour
が増加すると、最短ルートではないより速いルートを検索しようとします。この例の最速ルートは
そのため、費用パラメータを変更してもほとんど影響しません。
Shipment
個の費用プロパティ
Shipment
メッセージ(REST、gRPC)にもいくつかの費用がかかる
parameters:
Shipment.penalty_cost
は、スキップした場合に発生する費用を表します。 提供します。Shipment.VisitRequest.cost
は、特定の乗車料金を表します。 主に複数の受け取りまたは注文間のコストのトレードオフを 1 つの配送に対する配送オプション。
Shipment
費用パラメータで Vehicle
費用と同じディメンションなしの単位が使用されています
あります。Shipment
の完了で発生した費用がペナルティ コストを超えている場合、
Shipment
は Vehicle
のルートではなく、
レスポンス メッセージの skipped_shipments
リスト。
ShipmentModel
個の費用プロパティ
ShipmentModel
メッセージ(REST、gRPC)には、単一の費用が含まれます。
プロパティ、globalDurationCostPerHour
。この費用は、次の期間の合計に基づいて発生します。
すべての車両が ShipmentRoute
を完了するのに要する時間。globalDurationCostPerHour
を増やすと、すべての配送の早期完了が優先されます。
ルート最適化レスポンスの費用プロパティ
OptimizeToursResponse
メッセージ(REST、gRPC)にはコスト プロパティがあります。
ShipmentRoute
の完了プロセスで発生した費用を表します。
metrics.costs
プロパティと metrics.totalCost
プロパティは、指標の数を表します。
レスポンス内のすべてのルートで発生した費用単位。各 routes
エントリには
その費用を表す routeCosts
プロパティと routeTotalCosts
プロパティ
表示されます。
費用を含むリクエストの例に対するレスポンスを確認する
{ "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 ユニットのペナルティ コストがあり、合計額と一致します。
model.shipments.penalty_cost
キーを使用します。少額配送
penaltyCost
を Vehicle
の 40.0 costPerHour
および 10.0 と比較
costPerKilometer
では、配送をスキップするよりも費用対効果が高い
完了できます。
高度なトピック: 費用とソフト制約
複数の OptimizeToursRequest
メッセージ(REST、gRPC)プロパティ
ソフト制約を表します。ソフト制約は、リソースの作成時に費用が発生する
満たすことができません。
たとえば、車両の LoadLimit
(REST、gRPC)制約には、
softMaxLoad
プロパティと costPerUnitAboveSoftMax
プロパティ。これらを合わせると
softMaxLoad
を超える読み込みユニットに比例して費用が発生するため、
費用の観点から理にかなった場合にのみ、上限を超えないようにする必要があります。
同様に、TimeWindow
制約(REST、gRPC)には、
soft_start_time
プロパティと soft_end_time
プロパティ、および対応する
cost_per_hour_before_soft_start_time
と cost_per_hour_after_soft_end_time
制約されたイベントが、発生時刻に基づいて
TimeWindow
に関して。
すべてのコストモデルのパラメータと同様に、ソフト制約のコストは 他のコスト パラメータと同じディメンションなしの単位を使用します。
LoadLimit
の制約について詳しくは、負荷需要と上限をご覧ください。TimeWindow
制約の詳細な対処
受け取りと配達の時間帯の制約をご覧ください。