データコンテナとしてのシミュレーション (Simulation as a data container)
シミュレーション api は包括的なデータコンテナとして機能し、ルート最適化とジョブ割り当てに必要なすべての要素をまとめます。以下をカプセル化します。
- 注文: 前述のように、注文は配達/サービスリクエストを表し、何をどこで行う必要があるかを指定します。シミュレーションには、関連するノード(顧客の場所)、需要(数量またはサービス期間)、時間枠(該当する場合)、優先順位など、すべての関連する注文の詳細が含まれます。これらの注文は、訪問する必要のあるノードのセットを定義します。
- 車両: シミュレーションは、利用可能な車両のフリートを定義し、それぞれに独自の属性があります:容量(重量、体積など)、最大トリップ期間、開始/終了場所(デポ)、およびキロメートルあたりのコストやドライバーの可用性などのその他の特性。これらの車両プロパティは、可能なルートを制限します。
- 制約: 車両容量や最大トリップ期間に加えて、シミュレーションには特定の問題に関連する他の制約を組み込むことができます。
- 時間枠: 前述のように、これらは特定のノード(顧客、デポ、あるいは車両)でサービスが発生できる時間を制限します。シミュレーションは、これらの時間的制限を尊重する必要があります。
- ノード依存関係: 一部の注文には依存関係がある場合があります(例:注文 A は注文 B の前に配達する必要があります)。シミュレーションはこれらの関係を管理します。
- リソース制約: 車両容量を超えて、他のリソース制約(例:利用可能なドライバーの数、積み込みドックの容量)を含めることができます。
- テンプレート: テンプレートは、最適化プロセスの開始点またはガイドとして使用できる事前設定されたルートまたはサービスパターンを定義できます。それらは、典型的な配送ルートまたはベストプラクティスを表すことができます。
- メタデータ: シミュレーションは、道路網情報(ノード間の移動時間)、コストパラメータ(例:キロメートルあたりのコスト、ドライバーの賃金)、およびその他の関連データなど、最適化に必要なすべての追加データを保存します。
時間的境界:
シミュレーションは時間制限があり、定義された開始時間と終了時間があります。これは、通常特定の期間(例:配送シフト、勤務日)内に発生する現実世界の運用を反映しています。シミュレーションの時間的境界は、最大トリップ期間や時間枠などの制約を尊重するために重要です。
プロジェクトと複数のシミュレーション:
プロジェクトには、それぞれ異なる期間またはシナリオを表す複数のシミュレー ションを含めることができます。シミュレーションは時間的に重複する可能性があり、複数のシフトまたは日にまたがる複雑な運用のモデリングを可能にします。日ごとに個別のシミュレーションを作成することは一般的な慣行であり、その日の特定の注文と制約に基づいて独立した最適化を可能にします。これにより、異なる日ごとのパフォーマンスを簡単に比較することもできます。
時間制限のある運用のモデリング:
シミュレーションは、現実世界の時間制限のある運用をモデル化するように設計されています。定義された時間枠内に注文、車両、制約、およびメタデータを組み込むことにより、シミュレーションはルートとジョブ割り当ての最適化を可能にし、効率を最大化し、コストを最小化します。それらは、複雑なロジスティクス運用を計画および管理するための強力なツールを提供します。たとえば、シミュレーションを使用して、受信したすべての注文、利用可能な車両、および顧客から要求された時間枠を考慮して、特定の日の宅配便会社の配送ルートをモデル化できます。
simulation_clone モードの /api/v2/microservices/logisticsapi エンドポイントは、start_time と end_time を使用してシミュレーションを定義します。 simulation_clone_parameters を使用して注文をアップロードする場合(既存のシミュレーションに追加するのではなく)、一意の start_time/end_time ペアが新しいシミュレーションを作成します。複数のリクエストにわたって同じシミュレーションに注文を追加するには、同じ start_time/end_time ペアを使用します。それ以外の場合、各リクエストは 新しいシミュレーションを作成します。