SkippedShipment

ソリューションに未実施の配送の詳細を指定します。軽微なケースや、スキップの原因を特定できる場合は、その理由をここに報告します。

JSON 表現
{
  "index": integer,
  "label": string,
  "reasons": [
    {
      object (Reason)
    }
  ],
  "penaltyCost": number,
  "estimatedIncompatibleVehicleRatio": number
}
フィールド
index

integer

インデックスは、ソース ShipmentModel 内の配送のインデックスに対応しています。

label

string

対応する Shipment.label のコピー(Shipment で指定されている場合)。

reasons[]

object (Reason)

配送がスキップされた理由を説明する理由のリスト。Reason の上のコメントをご覧ください。配送がスキップされた理由がわからない場合は、理由は設定されません。

penaltyCost

number

これは Shipment.penalty_cost のコピーです。スキップされた配送の重大度を簡単に確認できるようにここに記載しています。

試験運用版: このフィールドの動作や存在は今後変更される可能性があります。

estimatedIncompatibleVehicleRatio

number

以下のいずれかの理由により、この配送を実施できない車両の推定割合。注: 車両に関連する理由がある場合にのみ入力します。

試験運用版: このフィールドの動作や存在は今後変更される可能性があります。

理由

配送がスキップされた理由が説明できる場合は、その理由がここに表示されます。すべての車両で理由が同じでない場合は、reason に複数の要素が含まれます。スキップされた配送の理由が重複している(exampleVehicleIndex を除くすべてのフィールドが同じ)場合、例:

reasons {
  code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
  exampleVehicleIndex: 1
  exampleExceededCapacityType: "Apples"
}
reasons {
  code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
  exampleVehicleIndex: 3
  exampleExceededCapacityType: "Pears"
}
reasons {
  code: CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT
  exampleVehicleIndex: 1
}

スキップされた配送は、すべての車両に対応していません。理由は車両によって異なりますが、少なくとも 1 台の車両の「りんご」の容量が超過します(車両 1 を含む)。また、少なくとも 1 台の車両の「梨」の容量が超過します(車両 3 を含む)。さらに、少なくとも 1 台の車両の距離制限が超過します(車両 1 を含む)。

JSON 表現
{
  "code": enum (Code),
  "exampleVehicleIndices": [
    integer
  ],
  "exampleExceededCapacityType": string,
  "exampleVehicleIndex": integer
}
フィールド
code

enum (Code)

Code のコメントを参照してください。

exampleVehicleIndices[]

integer

exampleVehicleIndex と同じですが、複数の車両が検出された場合はそのリストが提供されます。このリストはすべてを網羅しているわけではありません。これは、[fill_example_vehicle_indices_in_skipped_reasons][] が true の場合にのみ入力されます。

試験運用版: このフィールドの動作や存在は今後変更される可能性があります。

exampleExceededCapacityType

string

理由コードが DEMAND_EXCEEDS_VEHICLE_CAPACITY の場合は、超過している容量タイプを 1 つ記録します。

exampleVehicleIndex

integer

理由が配送車両との互換性に関連する場合、このフィールドには関連する車両のインデックスが 1 つ表示されます。

コード

理由の種類を識別するコード。ここでの順序は無意味です。特に、両方の理由が適用される場合、特定の理由が解決策で他の理由の前に表示されるか否かは示されません。

列挙型
CODE_UNSPECIFIED 使用しないでください。
NO_VEHICLE モデルに車両がないため、すべての配送が不可能です。
DEMAND_EXCEEDS_VEHICLE_CAPACITY 荷物の需要が、一部の容量タイプ(exampleExceededCapacityType など)の車両の容量を超えています。
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT

この配送を実行するために必要な最小距離(車両の startLocation から配送の集荷場所または配送先、または車両の最終目的地までの距離)が、車両の routeDistanceLimit を超えている。

この計算では測地線距離が使用されます。

CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT

移動時間、待ち時間、サービス時間など、この配送を実行するために必要な最小時間は、車両の routeDurationLimit を超えています。

注: 所要時間は最良のシナリオで計算されます。つまり、測地距離 x 36 m/秒(約 130 km/時)で計算されます。

CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT 上記と同じですが、最短所要時間と車両の travelDurationLimit のみを比較します。
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS 車両が最も早い開始時間に開始した場合、最良のシナリオ(時間の計算については CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT を参照)でもこの配送を完了できません。合計時間が、車両の最も遅い終了時間を超えてしまうためです。
VEHICLE_NOT_ALLOWED 配送の allowedVehicleIndices フィールドが空ではなく、この車両がその配送に属していない。
VEHICLE_IGNORED

車両の ignore フィールドが true であること。

試験運用版: このフィールドの動作や存在は今後変更される可能性があります。

SHIPMENT_IGNORED

配送の ignore フィールドが true です。

試験運用版: このフィールドの動作や存在は今後変更される可能性があります。

SKIPPED_IN_INJECTED_SOLUTION_CONSTRAINT

injectedSolutionConstraint で配送がスキップされている。

試験運用版: このフィールドの動作や存在は今後変更される可能性があります。

VEHICLE_ROUTE_IS_FULLY_SEQUENCE_CONSTRAINED

injectedSolutionConstraint で指定された車両ルートの緩和では、訪問を挿入できません。

試験運用版: このフィールドの動作や存在は今後変更される可能性があります。

ZERO_PENALTY_COST

荷物にペナルティ費用は発生しません。これは高度なモデリングの選択肢として役立ちますが、配送がスキップされた理由を事後的に説明することもできます。

試験運用版: このフィールドの動作や存在は今後変更される可能性があります。