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 キロメートルあたりの交通費を表します できます。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
制約の詳細な対処
受け取りと配達の時間帯の制約をご覧ください。