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

車両特性

車両特性には、特定のタスクやルートへの適合性に影響を与える車両のさまざまな属性と機能が含まれます。これらの特性には、容量、車両タイプ、特殊機器、ドライバーのスキル、空き状況などの要因が含まれます。

車両特性と注文の関係

車両特性と注文は密接に関連しています。車両の特性は、注文の要件を満たす能力を決定します。

関係は次のとおりです。

  • 注文要件が車両選択を促進する:注文の特定のニーズによって、サービスを提供するために必要な車両のタイプが決まります。
  • 車両特性が注文の割り当てを制限する:車両の特性によって、履行できる注文の種類が制限されます。
  • 特性と要件の一致が不可欠:互換性のない特性を持つ車両に注文を割り当てると、実行不可能または非効率的なルートになります。
  • 多様な特性が多様な注文履行を可能にする:さまざまな車両特性を持つフリートは、より幅広い注文に対応できます。

さまざまな種類の車両を持つ配送会社を考えてみましょう。

  • バン:容量500立方フィート、冷蔵なし。
  • 冷蔵トラック:容量300立方フィート、冷蔵あり。

同社は次の注文を受け取ります。

  • 注文A:200立方フィートの非腐敗性商品。
  • 注文B:冷蔵が必要な100立方フィートの腐敗性商品。
  • 注文C:400立方フィートの非腐敗性商品。

このシナリオでは:

  • バンは注文Aと注文Cを個別に履行できますが、冷蔵がないため注文Bを履行できません。
  • 冷蔵トラックは注文Bを履行できますが、容量が不十分なため注文Cを履行できません。

3つの注文すべてを履行するには、同社はバン(注文AとC用)と冷蔵トラック(注文B用)の両方を利用する必要があります。

SWAT APIでの実装

車両特性は、特性フィールドを使用して車両レベルで設定できます。これは辞書として表され、キーは特性の名前、値はその値です。APIはブール値と整数値を受け入れることができます。例:

{
"ALL": true,
"frozen": false,
"perishable": false,
"weight": 4
}

この場合、各注文は、予約モデルの特性を使用して車両に割り当てられる資格を得るために、一致する特性を持つことが期待されます。例:

{
"ALL": true,
"frozen": false,
"perishable": false,
"weight": {
"max": 5,
"min": 0
}
}
ヒント

上記の例では、weightに値の範囲が使用されています。予約では、0〜5の範囲で指定されたweight特性を持つ車両の使用が許可されます。したがって、weightが4に設定されている車両は使用できますが、たとえばweightが8の車両にはそのbookingが割り当てられません。

SWATのアルゴリズムは、bookingが特性で車両に適用される制限の一部しか持っていない場合でも、車両がbookingで要求されるすべての特性を満たす必要があると想定しています。

たとえば、これによりbookingvehicleの間の割り当てが可能になります。


vehicle.characteristics =
{
"ALL": true,
"frozen": false,
"perishable": false,
"weight": 4
}

booking.characteristics =
{
"perishable": false,
"weight": {
"max": 5,
"min": 0
}
}

次のペイロードでは、bookingvehicleの間の割り当ては許可されません


vehicle.characteristics =
{
"frozen": false,
"perishable": false,
"weight": 4
}

booking.characteristics =
{
"perishable": true,
"weight": {
"max": 5,
"min": 0
}
}

また、この例では、bookingvehicleの間の割り当ては許可されません


vehicle.characteristics =
{
"perishable": false,
"weight": 4
}

booking.characteristics =
{
"frozen": false,
"perishable": true,
"weight": {
"max": 5,
"min": 0
}
}
ヒント

最適化APIの場合、予約の特性要件を指定するには、booking_uidフィールドを使用してマッピングされたその予約内のすべてのノードが、(ドロップオフとピックアップの両方の場所で)同じ特性を共有する必要があります。