費用モデル

費用プロパティは、ShipmentModel.shipments.Shipment と ShipmentModel.vehicles.Vehicle で定義されます。

Route Optimization API の主な目標は、コストが最も低いルートを見つけることです。 そのため、コストモデルはルートの最適化の主な要因となります。

コストモデルは、グローバル、車両、配送の費用を指定するプロパティのセットです。

コストモデルのプロパティは、次の種類の最適化目標をサポートしています。

  • 効率的な車両の割り当てとルート
  • 費用対効果の高い集荷と配送の時間
  • 重要な配送の優先順位付け

構造

図に示すように、コストモデルのプロパティは次のように構成されています。

このドキュメントでは、重要なコストモデル パラメータのみを取り上げます 。コスト パラメータの完全なセットについては、リファレンス ドキュメントをご覧ください。

基本に関するチェックリスト

次のチェックリストでは、費用に関連する間違いを防ぐための基本的な知識 について説明します。このリストは、リクエストの検証とレスポンスのトラブルシューティングに役立ちます。

車両ごとに、

プロパティ

次の表に、コストモデルのプロパティを示し、説明します。

プロパティ名 プロパティのタイプ 費用/ プロパティの説明
Shipment penaltyCost 数値 配送をスキップ 配送をスキップ したときに発生する費用。
配送を完了するための費用がペナルティ費用を超える場合、API は配送をスキップします。
  • penaltyCost を設定すると、費用が高い配送が優先されます。
  • 配送の penaltyCost を設定しない場合、配送は 必須 になります。
  • 配送の 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 つの経路があります。1 つは緑色の破線で表され、距離は長いですがインシデントはありません。もう 1 つは赤色の点線で表され、距離は短いですが途中で交通事故が発生しています。

このシナリオでは、2 つのルートの費用のバランスは次のようになります。

オプティマイザは、費用対効果の高いルートを提供するだけでなく、 レスポンスプロパティ で配送ルートの合計費用も提供します。

リクエストの例

次の例は、シナリオ例で設定された値を組み込んだ基本的な 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: すべてのルートの合計費用。