パスイコライザー (Path Equalizer)
複雑な車両ルーティングシナリオでは、総コストの最小化のみに焦点を当てた最適化アルゴリズムが、バランスの取れていないルートを生成することが一般的です。たとえば、ある車両には8時間の長いルートが割り当てられ、別の車両には3時間の短いルートが割り当てられる場合があります。これは、ドライバーの公平性、残業代、および一貫性のない車両使用率の問題につながる可能性があります。
パスイコライザー は、フリート内のすべての車両にわたってワークロード(移動時間または距離で測定)のより公平な配分を促進することによってこれに対処するために設計された特殊なヒューリスティックです。
パスイコライザーの目的 (Purpose of the Path Equalizer)
パスイコライザーの主な目標は、ルート期間または距離間の 分散 を最小化することです。あるドライバーが別 のドライバーよりも大幅に長い一日働くようにするのではなく、パスイコライザーはすべてのドライバーがより類似したワークロードを持つソリューションを奨励します。
これは以下に貢献します。
- ドライバーの公平性の向上: 一部のドライバーが一貫して過労である一方で、他のドライバーが十分に活用されていない状況を防ぎます。
- 運用の予測可能性: フリート全体のシフト終了時間をより一貫させます。
- リソース使用率の向上: 車両フリートの容量がより均等に使用されるようにします。
仕組み: バランス調整 (How It Works: The Balancing Act)
有効にすると、パスイコライザーは、「公平性」コストをソルバーの総コスト計算に追加導入します。このコストは、各車両のルート長が平均ルート長からどれだけ逸脱しているかに基づいています。
その後、ソルバーは、他のすべてのコスト(移動時間、車両使用料、ペナルティなど)とともに、この公平性コストを最小化するように機能します。これを行うために、車両間で停留所を戦略的に再割り当てします。「公平性」ペナルティの削減が全体的なソリューションを改善するため、フリートの総移動距離がわずかに増加したとしても、非常に長い ルートを持つ車両から短いルートを持つ車両に停留所を移動する場合があります。
シナリオ例:
次の初期ルートを持つ2台の車両 A と B を想像してください。
- 車両 A: 総移動時間 = 8時間
- 車両 B: 総移動時間 = 4時間
パスイコライザーを有効にすると、ソルバーは、車両 A の停留所のいくつかを車両 B のルートに移動すると、よりバランスの取れた計画になることを特定する場合があります。
- 車両 A (調整後): 総移動時間 = 6.5時間
- 車両 B (調整後): 総移動時間 = 6時間
フリートの総移動時間はわずかに増加した(12時間から12.5時間へ)かもしれませんが、ルートははるかにバランスが取れており、これが目標でした。
Stateless API での実装 (Implementation in the Stateless API)
パスイコライザーは、Stateless API リクエストの model_parameters 内で構成されます。
"model_parameters": {
...
"use_path_equalizer": true,
"path_equalizer_weight": 1000,
...
}
パラメータ (Parameters)
-
use_path_equalizer(boolean, オプション):- パスイコライザーヒューリスティックをアクティブにするには、これを
trueに設定します。 - デフォルトでは
falseです。
- パスイコライザーヒューリスティックをアクティブにするには、これを
-
path_equalizer_weight(number, オプション):- このパラメータは、ソルバーが公平性をどれだけ強く優先すべきかを制御します。これは、バランスの取れていないルートに対するペナルティの重みを定義します。
- 高い重み は、ルートバランスが非常に重要であり、それを達成するために高い移動コストを受け入れる意思があることをソルバーに伝えます。
- 低い重み は、ソルバーに公平性を優先するよう伝えますが、他のコストの大幅な増加を犠牲にしてまでではありません。
- 正しい値を見つけるには、多くの場合、特定の運用におけるルートの公平性と全体的な効率の間の望ましいバランスを達成するための実験が必要です。
パスイコライザーをアクティブにすると、トレードオフが生じます。個々の車両に対してよりバランスの取れたルートを作成しますが、フリート全体の 合計 移動時間または距離がわずかに増加する可能性があ ります。
プレイグラウンド (Playground)
以下のプレイグラウンドを使用して、パスイコライザー の概念を試すことができます。
この例では、2台の車両と2つのジョブクラスターを定義します。use_path_equalizer パラメータは、バランスの取れたルートを促進するために高い重みで true に設定されています。
use_path_equalizer を false に変更して、ソルバーがコスト/距離のみに基づいてルートを割り当てる方法を確認してください。