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

車両ラベルと注文ラベル

車両と注文の関係を管理する1つの方法は、車両ラベルと注文ラベルを使用することです。これらのラベルは、車両と注文に関する追加情報を提供するタグまたは識別子として機能し、より洗練された微妙なルート最適化を可能にします。

SWATモデルは、車両と注文のラベルを使用して、予約を適切な車両に一致させます。これらのラベルは、割り当てアルゴリズムをガイドし、一致するラベルを持つ注文と車両のみを考慮するように制限します。さらに、APIでは、「OR」および「AND」ロジックを使用してラベル解釈ルールを構成できます。ラベルは、ジオフェンスの管理が困難であるか、十分な柔軟性を提供しない運用で、ジオフェンス境界を適用せずに車両でゾーニングを実現するために使用できます。

フィルタリングルールの適用方法については、フィルタリングを参照するか、APIを参照してください。

車両ラベル

車両ラベルは、特定の特性、機能、または制限を表すために車両に割り当てられる属性または分類です。これらのラベルは、次のようなさまざまな要因に基づいています。

  • 車両タイプ:サイズ、容量、機能に基づいて車両を分類するために、「バン」、「トラック」、「冷蔵トラック」、「オートバイ」などのラベルを使用できます。
  • スキルまたは認定:「危険物取り扱い」や「重機操作」など、特定のスキルや認定を持つドライバーがいるかどうかを示すラベルを使用できます。
  • 機器:「テールリフト」、「冷蔵」、「ナビゲーションシステム」など、特殊な機器の存在を示すラベルを使用できます。
  • 可用性:「午前シフト」や「週末の可用性」など、時間枠やその他の可用性の制約を示すラベルを使用できます。
  • ゾーンまたは地域:「ダウンタウン配送」や「地域輸送」など、車両の運用ゾーンまたは地域を指定するラベルを使用できます。

注文ラベル

注文ラベルは、特定の要件、優先度、または制限を表すために注文に割り当てられる同様の識別子です。これらのラベルは、次のような要因に基づいています。

  • 注文タイプ:「壊れ物」、「緊急」、「高価値」、「生鮮品」など、取り扱いのニーズに基づいて注文を分類するためにラベルを使用できます。
  • 顧客タイプ:「VIP顧客」、「常連客」、「新規顧客」など、顧客のタイプを示すラベルを使用できます。
  • 配送時間枠:「午前配送」や「午後配送」など、希望または必須の配送時間枠を指定するラベルを使用できます。
  • 場所:「市内中心部」や「郊外」など、配送の場所またはゾーンを示すラベルを使用できます。
  • 特別な指示:「取り扱い注意」や「裏口に配送」など、注文の取り扱いに関する特定の指示を伝えるラベルを使用できます。

車両ラベルと注文ラベルの関係

車両ラベルと注文ラベルは相互に関連しています。注文に割り当てられたラベルは、それを満たすのに適した車両のタイプを決定します。効率的で実行可能なルート計画には、車両ラベルと注文ラベルを一致させることが重要です。

それらがどのように関連しているかを次に示します。

  • 注文ラベルは車両の選択をガイドします:注文のラベルは、それを処理する車両に必要な特性を指定します。
  • 車両ラベルは注文の割り当てを制限します:車両のラベルは、処理できる注文のタイプを決定します。
  • ラベルを一致させることで互換性が確保されます:一致しないラベルを持つ車両に注文を割り当てると、実行不可能または非効率的なルートになる可能性があります。
  • ラベル付けの柔軟性により、ルーティング効率が向上します:適切に設計されたラベル付けシステムにより、より柔軟で最適化されたルーティングソリューションが可能になります。

ある配送会社は、次のラベルを使用しています。

  • 車両ラベル:「壊れ物」、「生鮮品」、「緊急」、「ダウンタウン」
  • 注文ラベル:「壊れ物」、「生鮮品」、「緊急」、「ダウンタウン」

これらの注文を検討してください。

  • 注文1:「壊れ物」、「ダウンタウン」
  • 注文2:「生鮮品」、「緊急」

このシナリオでは:

  • 注文1は、「ダウンタウン」ラベルを持つ車両、および/または「壊れ物」ラベルを持つ車両によって処理できます
  • 注文2には、「生鮮品」ラベルを持つ車両、および/または「緊急」ラベルを持つ車両が必要です

ラベルを使用することで、同社は注文を適切な車両と効率的に照合し、壊れ物が慎重に取り扱われ、生鮮品が冷蔵トラックで輸送され、緊急の注文が優先されるようにすることができます。

SWAT APIでの実装

ヒント

同じシミュレーション実行内で、ラベルを使用して注文と車両をグループ化できます。一致するラベルを持つ異なる車両と注文グループに対してシミュレーション実行を分離する必要がある場合は、シミュレーションプロセッサでフィルタリング式を使用できます。

ラベルは、vehiclesbookings、およびnodes間のラベルの照合プロセスを管理するために適用できます。

予約オブジェクトbooking.vehicle_labelsフィールドには、注文の配送対象となる車両の車両ラベルが一覧表示されます。次の例では、このvehicle_labelsフィールドを使用して注文を最適化すると、T01、T02、またはT03ラベルを持つ車両のみがこれらの注文を満たすために使用されるようになります。

// 予約

"vehicle_labels": {
"or": [
"T01",
"T02",
"T03"
]
}
//車両

"labels": [
"T01",
"T02",
"T03"
]
ヒント

最適化APIでは、一致するbooking_uidを持つ各ノードのnodeレベルでラベルを適用する必要があります。

割り当てのラベル照合ロジック

注文(予約)の車両への割り当ては、それぞれのラベルがどのように相互作用するかに依存します。

  • 注文にラベルがあり、車両に一致するラベルがある場合:

    • 結果: 割り当て可能です。
    • 説明: 車両は注文で要求される特性を持っています。たとえば、注文にvehicle_labels: {"or": ["refrigerated"]}があり、車両にlabels: ["refrigerated", "large_capacity"]}がある場合、照合は成功します。
  • 注文に特定のラベル要件がなく、車両にラベルがある場合:

    • 結果: 割り当て可能です。
    • 説明: 注文は特定のラベル要件を課しません(たとえば、vehicle_labelsが空であるか、存在しない)。したがって、容量や時間枠などの他の制約が満たされていれば、ラベルを持つ車両を含むどの車両でもサービスを提供できます。たとえば、特定のvehicle_labelsがない注文は、labels: ["zone_A"]を持つ車両に割り当てることができます。
  • 注文にラベルがあり、車両にラベルがない(または一致しないラベルがある)場合:

    • 結果: 割り当てはできません(オファーなし)。
    • 説明: 注文には、車両が持っていない特定の特性(vehicle_labelsで定義)が必要です。たとえば、注文にvehicle_labels: {"or": ["refrigerated"]}があり、車両にlabels: ["van"]}がある場合(そして「van」は「refrigerated」とは見なされない)、割り当ては失敗します。同様に、車両にラベルがまったくない場合(labels: [])、特定のラベルを必要とする注文を満たすことはできません。
  • 注文にも車両にもラベルがない場合:

    • 結果: 割り当て可能です。
    • 説明: 割り当てを妨げるラベルベースの制限は、注文または車両のいずれからもありません。
ヒント

ラベル照合は割り当てプロセスの一部にすぎないことを忘れないでください。車両の容量、時間枠、車両の特性などの他の制約も重要な役割を果たします。

ラベルのフィルタリングロジック(「AND」、「OR」条件など)は、フィルタリング式のドキュメントで詳しく説明されています。たとえば、{"and": [{"or: ["Label 1", "Label 2"]}, {"not": {"and": ["Label 4", "Label 5"]}}]}に設定されたラベルを持つ注文では、以下のシナリオがサポートされます。

一致する組み合わせの例

メインの**and**句の両方の部分を満たす場合、ラベルの組み合わせは一致します。(Label 1またはLabel 2)が真であり、かつnot(Label 4およびLabel 5)が真である必要があります。

  1. {"Label 1"}:この組み合わせは、式の最初の部分("Label 1"または"Label 2"が真)を満たし、"Label 4""Label 5"を一緒に含まないため、2番目の部分(not("Label 4"および"Label 5"))も真であるため、一致します。
  2. {"Label 2", "Label 3"}:これも一致します。"Label 2"(最初の部分を満たす)を含み、"Label 4""Label 5"の両方を含まない(2番目の部分を満たす)ためです。"Label 3"は、結果に影響しない無関係なラベルです。
  3. {"Label 1", "Label 2"}"Label 1""Label 2"の両方を含むため、最初の部分は真です。"Label 4""Label 5"の両方を含まないため、2番目の部分も真です。
  4. {"Label 1", "Label 4"}:これは一致します。最初の部分は"Label 1"を含むため真です。2番目の部分も真です。"Label 4"を含みますが、"Label 5"は含まないためです。したがって、"Label 4"および"Label 5"は偽であり、not("Label 4"および"Label 5")は真です。

一致しない組み合わせの例

メインの**and**句のいずれかの部分が偽の場合、ラベルの組み合わせは一致しません。

  1. {"Label 3", "Label 4"}:式の最初の部分("Label 1"または"Label 2")が偽であるため、これは一致しません。この組み合わせには"Label 1""Label 2"の両方がありません。
  2. {"Label 1", "Label 4", "Label 5"}:これは一致しません。最初の部分は真ですが("Label 1"を含む)、2番目の部分は偽です。"Label 4""Label 5"の両方を含むため、"Label 4"および"Label 5"は真になります。not演算子により、2番目の句not("Label 4"および"Label 5")は偽になります。
  3. {"Label 4", "Label 5"}:これは一致しません。式の両方の部分が失敗します。最初の部分は"Label 1""Label 2"の両方がないため偽です。2番目の部分も、"Label 4""Label 5"の両方を含むため偽です。
  4. {}:空のラベルセットは一致しません。"Label 1"または"Label 2"を含まないため、最初の部分は偽です。