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