コンパウンドゾーン:出入り時間ペナルティの設定
大規模な工業団地、ゲート付きコミュニティ、または制限された都心部など、特定の配達または集荷エリアでは、その中の特定の停止場所に関係なく、エリアに出入りするだけで追加の時間が必要になります。これらの「コンパウンドゾーン」には、セキュリティゲートの通過、内部道路網のナビゲート、または特定の交通パターンの通過が含まれる場合があります。このモデルは、SWAT APIがcompound_zonesパラメータを使用してこれらの時間ペナルティを追加することでサポートされています。
コンパウンドゾーンは、指定された地理的エリア内のすべての注文に対して固定の集約サービス時間を組み込むことにより、車両ルーティング問題のモデリングを大幅に強化します。この集約サービス時間は、個々の注文ごとの個別のサービス時間に加えて適用され、個々の集荷または配達の数に関係なく、車両が場所でかなりの時間を必要とする現実世界のシナリオを正確に反映します。これの主な例は、倉庫または配送センターで必要なドッキング時間です。集荷または配達される各荷物の個別のサービス時間を単純に合計する代わりに、コンパウンドゾーンモデルは、ゾーンへの出入り、ゾーン内での操作、およびゾーンからの退出に関連するオーバーヘッドを考慮します。このオーバーヘッドには、施設のナビゲート、担当者とのやり取り、または個々の注文処理の前後に行われる必要なロジスティックタスクに費やされる時間が含まれる場合があります。コンパウンドゾーンに関連付けられた固定サービス時間は、その場所で必要な総時間コミットメントのより現実的で包括的な表現を提供し、より正確で効率的なルート最適化につながります。この機能は、荷積みドックの可用性や義務付けられたセキュリティ手順などの固定の運用上の制約が、全体的な車両ルーティング効率に大きな影響を与える複雑なロジスティクスネットワークを扱う場合に特に価値があります。
コンパウンドゾーンペナルティ:
コンパウンドゾーンペナルティは、車両のルートが指定されたゾーンに出入りするときに発生する固定時間コストを定義します。コンパウンドゾーンに必要な出入り時間は、ドロップオフまたはピックアップの場所に到達するために必要な移動時間に適用されます。
- エントリー時間: 車 両がそのゾーンの外から来て、特定のゾーンシーケンス内の最初の停止(または注文)に到着したときに追加される時間ペナルティ。
- エグジット時間: 車両がその特定のゾーンシーケンス内の最後の(または注文)でのサービスを完了した後、ゾーン外の目的地に進む前に追加される時間ペナルティ。
これらのペナルティは、ゾーン内の停止の連続したシーケンスごとに1回適用されます。車両がゾーンに入り、内部の複数の停止を訪問してから離れる場合、そのシーケンスに対して1回のエントリーペナルティと1回のエグジットペナルティが発生します。
例:
- ゲート付きコミュニティ: ドライバーは、入り口でのセキュリティ待機/クリアに5分(エントリー時間)、退去時に主要道路に戻るために3分(エグジット時間)を費やす場合があります。
- 大規模工業団地: 最初の配達ポイントに到達するために内部道路網をナビゲートするのに10分(エントリー時間)、最終的な集荷ポイントから公園を出るのにさらに8分(エグジット時間)かかる場合があります。
- 制限された都心部: 歩行者優先または低排出ゾーンに入るには、5分かかる特定のアクセス手順(エントリー時間)が必要な場合があり、退去にも同様の時間が必要です。
- 車両のドッキング時間: 積み込み作業の前後で車両をドッキングまたはアンドッキングするために必要な時間。
概念例:
ある配送会社は、大規模なキャンパス(ゾーンA)内とその外に停止場所を持っています。
- 停止1:ゾーンAの外
- 停止2:ゾーンAの中
- 停止3:ゾーンAの中
- 停止4:ゾーンAの外
考えられるルートシーケンス:デポ -> 停止1 -> ゾーンAに入る(エントリー時間ペナルティを追加) -> 停止2 -> 停止3 -> ゾーンAを出る(エグジット時間ペナルティを追加) -> 停止4 -> デポ。
エントリーペナルティは停止2に到着する前に追加され、エグジットペナルティは停止3を出発した後に追加されます。
実装
コンパウンドゾーンとそれに関連する出入り時間は、APIリクエストのmodel_parameters.compound_zonesセクション内で構成されます。ノード(停止)は、特定のgroupを割り当てることによってゾーンに関連付けられます。
compound_zonesは、各オブジェクトが以下を定義する配列です。
group: ノードをこの特定のコンパウンドゾーンにリンクする識別子。entry_time: ゾーンに入るときに追加される時間ペナルティ(秒単位)。exit_time: ゾーンを出るときに追加される時間ペナルティ(秒単位)。
コンパウンドゾーンの一部となることを意図したノードは、groupsリストに対応するgroup識別子を含める必要があります。
groupsを使用する代わりに、groupsが他の設定に使用される 場合に、より詳細な制御のためにコンパウンドゾーンに割り当てるnode_uidsを明示的に設定することも可能です。
"model_parameters": {
"compound_zones": [
{
"groups": ["IndustrialParkA","IndustrialParkB"],
"enter_time": 600, // 10分
"exit_time": 480 // 8分
},
{
"node_uids": ["45188b13-e91d-4d41-95fa-9cde22767231"],
"enter_time": 300, // 5分
"exit_time": 180 // 3分
}
]
},
"nodes": [
{
"uid": "stop1_park",
"groups": ["IndustrialParkA", "priority_deliveries"],
"lat": ..., "lon": ..., "service_time": 300, ...
},
{
"uid": "stop2_park",
"groups": ["IndustrialParkA"],
"lat": ..., "lon": ..., "service_time": 450, ...
},
{
"uid": "stop3_gated",
"groups": ["GatedCommunityX"],
"lat": ..., "lon": ..., "service_time": 200, ...
},
{
"uid": "45188b13-e91d-4d41-95fa-9cde22767231",
"groups": ["priority_deliveries"],
"lat": ..., "lon": ..., "service_time": 150, ...
}
]
ルーティングエンジンは、車両のルート内で同じコンパウンドゾーンに属するノードのシーケンスを自動的に識別します。車両がグループXにないノードからグループXのノードに移動する場合、グループXのentry_timeが、そのグループXシーケンスの最初のノードに到着する前の移動時間に追加されます。車両がグループXのノードからグループXにないノードに移動する場合、グループXのexit_timeが、そのグループXシーケンスの最後のノードを出発した後の移動時間に追加されます。
特殊なケースと考慮事項
移動時間には、出入りペナルティが含まれます。エントリーペナルティを含むゾーンの最初の停止への車両の到着が、停止の時間枠外になる場合、これは実現可能性に影響を与える可能性があります。ペナルティは最適化結果に別途表示されません。それらは暗黙的に停止間の移動時間に追加されます。
場所での固定サービス時間のモデリング
コンパウンドゾーンの強力なユースケースは、集荷または配達される注文の数に依存しない、場所全体(倉庫や配送センターなど)の固定サービス時間をモデル化することです。これは、車両のドッキング、セキュリティチェック、または管理手順など、処理される荷物の数に関係なく一定の時間がかかるシナリオに役 立ちます。
-
exit_timeの使用:exit_timeは、車両がゾーンの最後のノードでのサービスを完了して出発した後の移動時間に追加されます。これは、ゾーン内のノードのscheduled_tsに影響を与えないことを意味します。車両が次の目的地に出発する前に行われる固定期間の活動(アンドッキングや書類作成など)を正しくモデル化します。 -
enter_timeの使用:enter_timeは、車両がゾーンの最初のノードに到着する前の移動時間に追加されます。これは、そのノードのscheduled_tsに直接影響し、ルート内の後続のすべてのノードに連鎖的な遅延を引き起こす可能性があります。これにより、時間枠を満たすのが難しくなり、到着時に発生するがサービス開始前ではない活動を正確に反映しない場合があります。
これにはenter_timeとexit_timeの両方を使用できますが、後続ノードへのスケジュールされた到着時間の計算に影響を与 えないため、exit_timeが推奨されるアプローチです。
例:倉庫のドッキング時間
倉庫が、荷降ろしを開始する前にトラックがドッキングするために15分の固定期間を必要とすると想像してください。これは、単一のノード(倉庫)を持つコンパウンドゾーンとしてモデル化できます。
exit_time: 900(15分)を設定することにより、オプティマイザーは、車両が倉庫でのサービスを終了し、出発する直前にこの固定時間を考慮します。これにより、到着時間を人為的にずらすことなく、車両のスケジュールが正確に保たれます。
以下の図は、enter_timeとexit_timeがスケジュールにどのように影響するかを示しています。exit_timeがノードのサービス完了後に追加され、スケジュールされた到着時間が維持されることに注意してください。