Route Optimization API の主な目的は、最もコストの低いルートを見つけることです。そのため、費用モデルはルートの最適化の主な推進要因となります。
費用モデルは、グローバル、車両、配送の費用を指定する一連のプロパティです。
費用モデルのプロパティは、次の種類の最適化目標をサポートしています。
- 効率的な車両の割り当てとルート
- 費用対効果の高い集荷と配送のタイミング
- 重要な荷物の優先順位付け
構造
図に示すように、費用モデルのプロパティは次のように構成されています。
Shipment
にはpenaltyCost
プロパティが含まれています。Vehicle
には次のプロパティが含まれます。
このドキュメントでは、重要な費用モデル パラメータのみを取り上げます。費用パラメータの完全なセットについては、リファレンス ドキュメントをご覧ください。
Essentials のチェックリスト
次のチェックリストは、コスト関連の潜在的なミスを防ぐために不可欠な知識をまとめたものです。このリストは、リクエストを検証し、レスポンスのトラブルシューティングを行う際に役立ちます。
プロパティ
次の表に、費用モデルのプロパティを示します。
親 | プロパティ名 | プロパティのタイプ | 費用/ | プロパティの説明 |
---|---|---|---|---|
Shipment |
penaltyCost |
数値 | スキップされた配送 | 配送をスキップした場合に発生する費用。 完了にかかる費用がペナルティ費用を超える場合、API は配送をスキップします。
|
Vehicle |
fixedCost |
数値 | 配送 | この車両が配送の処理に使用された場合に適用される固定費用。 |
costPerHour |
数値 | 時間 | 移動時間、待機時間、訪問時間、休憩時間を含む、車両の 1 時間あたりの運用費用。 この費用が増加すると、オプティマイザーは最短ルートではない可能性のある、より速いルートを見つけようとします。 このプロパティは、シンプルで完全であるため、車両 1 台あたりの費用として効果的なスタンドアロンの指標となります。 |
|
costPerKilometer |
数値 | 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 ドルを表します。つまり、リクエストの costModel プロパティの値は次のようになります。
プロパティ | 値 | シナリオ |
---|---|---|
penaltyCost |
10 | 予定日に犬を引き取りに来なかったお客様に課すペナルティを表します。予定日に犬を迎えに行かなかった場合は、サービスの合計金額から 40 ドルが割引されます。 |
fixedCost |
30 | 自動車ローンの 1 日あたりの支払い額(1 日あたり 30 ドル)を表します。 |
costPerKilometer |
0.08 | 車両が 1 キロメートルあたりに消費するガソリンの量を示します。車両の走行には 1 キロメートルあたり 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
: すべてのルートの合計費用を合計したものです。