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