予約ペナルティ
予約ペナルティ(「注文ペナルティ」とも呼ばれます)は、整数として設定される人為的なコストであり、特定の注文に割り当てます。このペナルティは、最適化エンジンがその注文を履行しないことを選択し、「オファーなし」ステータスになった場合にのみ適用されます。
この機能により、オプティマイザーは、注文を履行することの利点とそれに関連するコストをインテリジェントに比較検討できます。
目的
典型的な配車計画問題(VRP)では、すべての注文を履行することが目的です。ただし、現実世界のロジスティクスでは、すべての単一の注文にサービスを提供することは不可能またはコストがかかりすぎることがよくあります。たとえば、注文が遠すぎる、すべての車両が満杯である、または配達時間枠が狭すぎる可能性があります。
「すべての注文にサービスを提供する」を厳格で柔軟性のないルールとして扱うのではなく(最適化プロセスが失敗する可能性があります)、予約ペナルティはそれを柔軟な制約に変えます。あなたは本質的にオプティマイザーに次のように伝えています。
「この注文を含めるために最善を尽くしてください。それを含めるためのルーティングコストがペナルティ値を超える場合は、割り当てずに放置して代わりにペナルティを「支払う」ことが許可されます。」
仕組み:コストのトレードオフ
最適化エンジンの主な目的は、絶対的に最も低い総コストでソリューションを発見することです。この総コストは、ルーティング費用(燃料、時間、車両の使用など)と適用されるペナルティを組み合わせたものです。
ペナルティが割り当てられている注文を評価する場合、オプティマイザーは簡単な比較を行います。
- **サービス提供コスト:**この注文を含めるために必要な追加のルーティングコストはいくらですか?(例:追加の時間と燃料に対して500ユニット)
- **スキップコスト:**予約ペナルティの値は いくらですか?(例:1000ユニット)
オプティマイザーは、より安価なオプションを選択します。
- **シナリオ1:**注文がサービス提供されるサービス提供コスト(500ユニット)がスキップコスト(1000ユニット)よりも低い場合、オプティマイザーは注文を履行します。その後、500ユニットのルーティングコストがソリューションの総コストに追加されます。
- **シナリオ2:**注文がサービス提供されない(「オファーなし」)サービス提供コストが非常に高い場合(例:まったく新しい車両が必要なため1500ユニット)、このコストがスキップコスト(1000ユニット)を超えると、オプティマイザーは注文を履行しません。その後、1000ユニットのペナルティがソリューションの総コストに追加されます。
この結果は、1500ユニットのルーティングコストを負担するよりも1000ユニットのペナルティを支払う方が経済的であるため、オプティマイザーにとって有益です。
この設定を使用して、配送コストと配送しないコストの トレードオフを制御します。正確な値は、解決される問題によって異なります。
主要原則
ペナルティ値が高いほど、注文がサービス提供される可能性が高くなります。
- ペナルティが低い場合は、オプティマイザーに「わずかな不便が生じる場合は、この注文をスキップしてもかまいません」と示します。
- ペナルティが非常に高い場合は、オプティマイザーに「新しい車両を追加したり、非常に非効率的なルートを作成したりする必要がある場合でも、コストに関係なくこの注文を履行する必要があります」と通知します。
APIでの実装
booking_penaltyパラメータは、ステートレスAPIの場合は各ノードで、または統合APIの場合はシミュレーション設定で構成可能であり、注文レベルで明示的に設定されていない限り、すべての注文にデフォルト値が適用されます。