車両コスト (Vehicle cost)
車両ルーティング問題 (VRP) では、車両コスト は、1つ以上の注文のサービスに使用される各車両の総ソリューションコストに追加される固定の1回限りのコストです。車両を配備するための「アクティベーション料金」と考えてください。
vehicle_cost の主な目的は、最適化エンジンに、ルートに新しい車両を追加する方が経済的か、既存のすでにアクティブな車両のルートを延長する方が経済的かを判断するための重要なツールを提供することです。ソルバーの主な目標は、可能な限り低い総コストを持つソリューションを見つけることであり、これは移動コスト、ペナルティ、および使用されるすべての車両の vehicle_cost の合計です。
計画への影響 (How It Impacts Planning)
vehicle_cost は、ソルバーに基本的なトレードオフを作成します。
- 新しい車両を追加するコスト: 固定
vehicle_cost。 - 既存のルートを延長するコスト: すでに使用されている車両にさらに停留所を追加することによって発生する追加の移動時間と距離のコスト。
ソルバーは常に安い方のオプションを選択します。
- 高い
vehicle_cost: 車両をアクティブにするコストが高い場合、ソルバーはすでにアクティブな車両にできるだけ多くの注文を合わせることを強く好みます。別の車両を配備する高い価格を支払うのを避けるために、より長く複雑なルートを作成します。 - 低い
vehicle_cost: コストが低い場合、ソルバーは、より効率的な個々のルート(例:移動時間の短縮)になる場合、追加の車両を配備することをいといません。
ユースケース: 所有フリートの優先順位付け (Use Case: Prioritizing Your Own Fleet)
一般的なユースケースは、所有車両とより高価な下請け車両の混合フリートを管理することです。
- あなたのフリート: 低い
vehicle_cost(例:1000)を割り当てます。 - 下請け業者のフリート: 高い
vehicle_cost(例:50000)を割り当てます。
この設定を使用すると、オプティマイザーは常に自社の車両の使用を優先します。内部フリートですべての実行可能なオプションを使い果たした場合にのみ、下請け業者の車両を「アクティブ化」し、現実世界のコスト差を正しくモデル化します。
正しい vehicle_cost の設定 (Setting the Right vehicle_cost)
vehicle_cost の値は、他の運用コスト、主に移動コストに関連して設定する必要があります。
- ガイドライン:
vehicle_costは、特定の量の余分な移動を避けるために支払う意思のあるコストを表す必要があります。たとえば、vehicle_costが10000の場合、ソルバーは、新しい車両の使用を避けるために、既存のルートにたとえば10000秒(約2.78時間)の余分な運転時間を追加することをいとわないでしょう。 - 一般的な範囲: 0 から 50,000 の間の値が一般的な出発点です。ただし、長距離や長時間のために移動コストが大きい場合は、これよりはるかに高くなる可能性があります。
特別な考慮事項 (Special Considerations)
CVRPTW モード (CVRPTW Mode)
prebook_cvrptw モードを使用する場合、vehicle_cost を慎重に使用する必要があります。このモードでは、車両は多くの場合、積み込みのためにデポへの partial_route で事前に構成されています。これにより、ソルバーはすべての車両がすでに「使用中」であると見なし、フリートサイズを最小限に抑えるために vehicle_cost が効果的でなくなる可能性があります。
これを解決するには、車両プロパティ zero_cost_if_only_partial_routes を true に設定します。
"vehicles": [
{
"agent_id": "some-vehicle-id",
"vehicle_cost": 10000,
"zero_cost_if_only_partial_routes": true,
"partial_route": ["depot_node_uid"],
...
}
]
このフラグは、車両が事前に割り当てられた部分ルートのみにサービスを提供し、新しい注文が割り当てられていない場合、vehicle_cost を適用しないようにソルバーに指示します。
PDP モード (PDP Mode)
prebook (PDP) モードでは、慎重に構成しないと、vehicle_cost に副作用が生じる可能性があります。車両の開始位置も partial_route のノードとして定義されているため、ソルバーはコストを誤って適用する可能性があります。ソルバーが使用される車両の数を正しく最小化していないことがわかった場合は、vehicle_cost 値を調整するか、partial_route セットアップを確認して、最適化の開始時にどの車両が本当に「非アクティブ」であるかを正確に反映していることを確認する必要がある場合があります。
SWAT API での実装 (Implementation in SWAT APIs)
vehicle_cost は、Stateless API の車両オブジェクトのパラメータです。model_parameters にデフォルトの vehicle_costs を設定することもできます。
車両固有のコスト(すべての車両のデフォルトコストを上書き):
"vehicles": [
{
"agent_id": "owned-vehicle-01",
"vehicle_cost": 1000,
...
},
{
"agent_id": "subcontractor-vehicle-01",
"vehicle_cost": 50000,
...
}
]
すべての車両のデフォルトコスト:
}
}