車両特性 (Vehicle Characteristics)
車両特性には、特定のタスクやルートへの適合性に影響を与える車両のさまざまな属性と機能が含まれます。これらの特性には、容量、車両タイプ、特殊機器、ドライバーのスキル、可用性などの要素が含まれる場合があります。
車両特性と注文の関係:
車両特性と注文は複雑に関連しています。車両の特性は、注文の要件を満たす能 力を決定します。
関係は次のとおりです。
- 注文要件が車両選択を促進: 注文の特定のニーズにより、サービスを提供するために必要な車両のタイプが決まります。
- 車両特性が注文割り当てを制限: 車両の特性により、実行できる注文のタイプが制限されます。
- 特性と要件のマッチングが不可欠: 互換性のない特性を持つ車両に注文を割り当てると、実行不可能または非効率的なルートになります。
- 多様な特性により多様な注文履行が可能: さまざまな車両特性を持つフリートは、より幅広い注文を処理できます。
例:
さまざまなタイプの車両を持つ配送会社を考えてみましょう。
- バン: 容量500立方フィート、冷蔵なし。
- 冷蔵トラック: 容量300立方フィート、冷蔵あり。
会社は次の注文を受け取ります。
- 注文 A: 200立方フィートの非腐敗性商品。
- 注文 B: 冷蔵が必要な100立方フィートの腐敗性商品。
- 注文 C: 400立方フィートの非腐敗性商品。
このシナリオでは:
- バンは、注文 A と注文 C を個別に実行できますが、冷蔵がないため、注文 B を実行できません。
- 冷蔵トラックは、注文 B を実行できますが、容量が不足しているため、注文 C を実行できません。
3つの注文すべてを実行するには、会社はバン(注文 A と C 用)と冷蔵トラック(注文 B 用)の両方を利用する必要があります。
SWAT API での実装 (Implementation in SWAT APIs)
車両特性は、characteristics フィールド を使用して車両レベルで設定できます。これは、キーが特性の名前であり、値がその値である辞書として表されます。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 によって要求される すべて の特性を満たさなければならないと想定しています。
たとえば、これにより booking と vehicle 間の割り当てが許可されます。
vehicle.characteristics =
{
"ALL": true,
"frozen": false,
"perishable": false,
"weight": 4
}
booking.characteristics =
{
"perishable": false,
"weight": {
"max": 5,
"min": 0
}
}
次のペイロードにより、booking と vehicle 間の割り当ては 許可されません。
vehicle.characteristics =
{
"frozen": false,
"perishable": false,
"weight": 4
}
booking.characteristics =
{
"perishable": true,
"weight": {
"max": 5,
"min": 0
}
}
また、この例も booking と vehicle 間の割り当てを 許可しません。
vehicle.characteristics =
{
"perishable": false,
"weight": 4
}
booking.characteristics =
{
"frozen": false,
"perishable": true,
"weight": {
"max": 5,
"min": 0
}
}
Optimization API の場合、予約の特性要件を指定するには、booking_uid フィールドを使用してマップされたその予約内のすべてのノードが同じ特性を共有する必要があります(ドロップオフとピックアップの両方の場所で)。