Route Optimization API の主な目標は、コストが最も低いルートを見つけることです。 そのため、コストモデルはルートの最適化の主な要因となります。
コストモデルは、グローバル、車両、配送の費用を指定するプロパティのセットです。
コストモデルのプロパティは、次の種類の最適化目標をサポートしています。
- 効率的な車両の割り当てとルート
- 費用対効果の高い集荷と配送の時間
- 重要な配送の優先順位付け
構造
図に示すように、コストモデルのプロパティは次のように構成されています。
ShipmentにはpenaltyCostプロパティが含まれます。Vehicleには次のプロパティが含まれます。
このドキュメントでは、重要なコストモデル パラメータのみを取り上げます 。コスト パラメータの完全なセットについては、リファレンス ドキュメントをご覧ください。
基本に関するチェックリスト
次のチェックリストでは、費用に関連する間違いを防ぐための基本的な知識 について説明します。このリストは、リクエストの検証とレスポンスのトラブルシューティングに役立ちます。
プロパティ
次の表に、コストモデルのプロパティを示し、説明します。
| 親 | プロパティ名 | プロパティのタイプ | 費用/ | プロパティの説明 |
|---|---|---|---|---|
Shipment |
penaltyCost |
数値 | 配送をスキップ | 配送をスキップ したときに発生する費用。 配送を完了するための費用がペナルティ費用を超える場合、API は配送をスキップします。
|
Vehicle |
fixedCost |
数値 | 配送 | この車両が配送の処理に使用される場合に適用される固定費用。 |
costPerHour |
数値 | 時間 | 移動時間、待機時間、訪問時間、休憩時間を含めた車両の 1 時間あたりの運行費用。 この費用が増加すると、オプティマイザは最短ルートではない可能性があるより速いルートを見つけようとします。 このプロパティは、シンプルで完全であるため、車両ごとの効果的なスタンドアロン費用にすることができます。 |
|
costPerKilometer |
数値 | km | 車両の走行距離 1 km あたりの費用 。燃料費や車両のメンテナンス費用の償却費を表すことができます。 | |
costPerTraveledHour |
数値 | 時間 | 待機時間、訪問時間、休憩時間を含めない、移動中のみの車両の 1 時間あたりの運行費用 。これにより、短いルートよりも速いルートが優先されます。 |
例
このセクションでは、次の 3 種類の例について説明します。
- コストモデルの プロパティの構造を示す**コードサンプル**。
- コストモデルのプロパティを使用してビジネス目標を達成する方法を示す **シナリオ例**。
- シナリオ例で設定された値を含む**リクエストの例**。
コードサンプル
次のコードサンプルは、コストモデル プロパティの構造を示しています
Shipment:
{ "model": { "shipments": [ ... { "penaltyCost": PENALTY_COST } ], "vehicles": [ ... ] } }
次のコードサンプルは、コストモデル プロパティの構造を示しています
Vehicle:
{ "model": { "shipments": [ ... ], "vehicles": [ ... { "fixedCost": FIXED_COST, "costPerKilometer": KILOMETER_COST, "costPerHour": HOUR_COST, "costPerTraveledHour": TRAVELED_HOUR_COST } ] } }
シナリオ例
このセクションでは、犬のデイケア サービスを提供しているシナリオについて説明します。犬を自宅まで迎えに行くトラックのルートを最適化しています。このシナリオでは、ルートを提供する際に、犬の送迎と車両の運行に関連する費用を考慮するようにオプティマイザに指示します。
この例では、1 費用単位は 1 ドルを表します。つまり、リクエストのコストモデル プロパティの値は次のようになります。
| プロパティ | 値 | シナリオ |
|---|---|---|
penaltyCost |
10 | 予定日に犬を迎えに行かなかった場合に顧客に提供するペナルティを表します。予定日に犬を迎えに行かなかった場合、お客様はサービスの合計金額から 40 ドルの割引を受けられます。 |
fixedCost |
30 | 車両ローンの 1 日あたりの支払い額を表します。1 日あたり 30 ドルです。 |
costPerKilometer |
0.08 | 車両が 1 km あたり消費するガソリンの量を示します。車両は 1 km 走行するのに 0.04 ガロン必要で、このリージョンの 1 ガロンあたりの費用は 2 ドルです。 |
costPerHour |
27 | 車両の運転に対して運転手に支払う金額を表します。運転手には 1 時間あたり 27 ドルを支払います。 |
costPerTraveledHour |
2.5 | 移動中に犬のために車両のエアコンを 1 時間使用するのにかかる費用を表します。車両が動いていないときは、運転手は後部のドアを開けてエアコンをオフにできます。 |
費用パラメータに基づいて、オプティマイザはユーザーには明らかではないが、最適化によって見つけられるトレードオフを行う可能性があります。
次の図は、オプティマイザが緑色の破線で示されたより長く速いルートを選択して、赤い点線で示されたルートの交通渋滞を回避する例を示しています。

このシナリオでは、2 つのルートの費用のバランスは次のようになります。
緑色の破線は、交通渋滞を避ける高速ルートであるため、
costPerHourとcostPerTraveledHourが低く、 費用対効果が高くなります 、costPerKilometerが高くても。赤い点線は、直接ルートであるため
costPerKilometerが低いですが、交通渋滞での待ち時間が長いためcostPerHourとcostPerTraveledHourが高すぎ、最も費用のかかる ルート になります。
オプティマイザは、費用対効果の高いルートを提供するだけでなく、 レスポンスプロパティ で配送ルートの合計費用も提供します。
リクエストの例
次の例は、シナリオ例で設定された値を組み込んだ基本的な optimizeTours
リクエストの構造を示しています。
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.8024, "longitude": -122.4058 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ] "penaltyCost": 40 } ], "vehicles": [ { "startLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "endLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "fixedCost": 30, "costPerKilometer": 0.08, "costPerHour": 27, "costPerTraveledHour": 2.5 } ] } }
レスポンス プロパティ
OptimizeToursResponse メッセージには、ルートの完了プロセスで発生した費用を説明する費用プロパティがあります
。
metrics.costs: 費用に関連するリクエスト フィールド別に分類された、すべてのルートの合計費用。metrics.totalCost: すべてのルートの合計費用。