メインコンテンツまでスキップ

車両の開始位置および/または終了位置の設定 (Setting start and\or end location for a vehicle)

Integration API により、車両の開始位置および/または終了位置を設定できます。一般的なユースケースは次のとおりです。

デポベースのルーティング:

配送会社は、中央倉庫(デポ)から運営しています。トラックはデポを出発し、複数の顧客に商品を配達し、同じデポに戻ります。

  • 開始位置: デポの場所。
  • 終了位置: 同じデポの場所。
  • 目的: これは最も一般的なセットアップであり、すべてのルートが中央配送ポイントから始まり、そこで終わることを保証します。

マルチデポルーティング:

大規模なロジスティクス会社は、地域全体に複数の倉庫を持っています。トラックはあるデポから出発し、別のデポで終了する場合があります。

  • 開始位置: 車両に割り当てられた特定のデポ。
  • 終了位置: 運用戦略に応じて、別のデポ、または同じデポの可能性があります。
  • 目的: より柔軟なルーティングが可能になり、デポ間のワークロードのバランスを取り、長距離輸送を最適化します。

自宅ベースのサービス技術者:

フィールドサービス技術者は、自宅から一日を始め、顧客の場所を訪問し、一日の終わりに帰宅する場合としない場合があります。

  • 開始位置: 技術者の自宅住所。
  • 終了位置: 技術者の自宅住所、または指定された場所(会社のオフィスなど)。
  • 目的: 技術者の日常業務と移動要件の実際の制約をモデル化します。

廃棄物収集:

廃棄物収集トラックはデポから出発し、さまざまな場所から廃棄物を収集し、処分場で廃棄物を空にしてからデポに戻ります。

  • 開始位置: 廃棄物収集デポ。
  • 終了位置: 廃棄物収集デポ。
  • 中間位置: 処分場。
  • 目的: 収集と処分のプロセスをモデル化し、トラックが定義されたルートに従い、指定されたサイトで荷物を空にすることを保証します。

Integration API での実装 (Implementation in the Integration API)

SWAT API は、車両の開始位置と終了位置の構成をサポートしています。実装は、Optimization API と Integration API で異なります。 Integration API では、新しいノードのセットを作成し、車両に事前割り当てする必要があります。ノードはシミュレーションに属しているため、事前割り当てされた場所は テンプレート レベルで確立でき、その場所はそのテンプレートから作成された各シミュレーションで再利用されます。

各車両の開始位置と終了位置は、開始ノードと終了ノードを割り当てることで構成できます。あるいは、Optimization API を使用してこれらの場所を設定することもできます(/docs/manuals/concepts/depot.md を参照)。

ノードを使用した構成 (Configuring using nodes)

開始位置と終了位置 (ノード) (Start and end location (node))

開始位置は、3つの追加プロパティが設定された車両の開始ノードを作成することで追加できます。

  • node.status = assigned: ノードが車両に事前割り当てされていることを確立します。
  • node.partial_route_index = 1: このノードが事前割り当てされたノードのシーケンスの最初のノードである必要があることを確立します(最後の場合は -1)。
  • node.finalization_type = max: 出発時のスラックを回避するために、開始ノードからの出発時間を可能な限り遅く要求します。
  • node.type = point: ノードがウェイポイントとして見なされることを要求します。

ノードは、たとえば 次のように作成できます。 POST {{base_url}}/api/v2/node

{
"lat": 1.312, // Coordinates of the start location
"lon": 103.8,
"uid": "6f657979-a390-49b6-ab29-8be4d014a63e", // Random unique identifier of the node
"scheduled_ts": "2021-01-01T00:00:00+07:00", // Time windows that can be matched with the simulation time boundaries, if there is no restriction on the depature
"open_time_ts": "2021-01-01T00:00:00+07:00",
"close_time_ts": "2021-01-01T23:59:59+07:00",
"close_time_ts_dynamic": "2021-01-01T23:59:59+07:00",
"location_name": "Somelocation", // Name of the location
"assigned_vehicle": "/api/v2/vehicle/1487568", // ID of the vehicle this start location should be created for
"node_type": "point", // Type of the node
"service_time": 0, // No service is required at this node
"booking_uid": "eb94f0aa-198a-4df5-b0c8-1e286a1bb5ff", // Random booking UID (not used anywhere else)
"status": "assigned", // This node should not be planned for during route optimization
"partial_route_index": 1, // This node should be the first in a sequence of preassigned nodes
"finalization_type": "max", // Try to minimize slack
}

終了位置 (End location)

同様に、最後のノードの構成は次のようになります。

    {
"lat": 1.312,
"lon": 103.8,
"uid": "3c516dc8-b08e-400e-9322-cf447e6eff28",
"scheduled_ts": "2021-02-01T23:59:59+07:00",
"open_time_ts": "2021-01-01T00:00:00+07:00",
"close_time_ts": "2021-02-01T23:59:59+07:00",
"close_time_ts_dynamic": "2021-02-01T23:59:59+07:00",
"location_name": "Some End location",
"assigned_vehicle": "/api/v2/vehicle/1487568",
"node_type": "point",
"service_time": 0,
"booking_uid": "765ab521-708f-42a1-8fae-c4512ffd9d28",
"status": "assigned",
"partial_route_index": -1, // This node should be the last in sequence (-1 stands for max integer)
"finalization_type": "min", // Try to arrive to this node as early as possible given solution
}