ShipmentModel

配送モデルには、一連の車両で実行する必要がある一連の配送が含まれ、費用全体を最小限に抑えることができます。合計コストは次のとおりです。

  • 車両の手配にかかる費用(総時間あたりの費用、移動時間あたりの費用、すべての車両の固定費用の合計)。
  • 不履行に対するペナルティが減ります
  • 世界全体での出荷期間にかかる費用
JSON 表現
{
  "shipments": [
    {
      object (Shipment)
    }
  ],
  "vehicles": [
    {
      object (Vehicle)
    }
  ],
  "globalStartTime": string,
  "globalEndTime": string,
  "globalDurationCostPerHour": number,
  "durationDistanceMatrices": [
    {
      object (DurationDistanceMatrix)
    }
  ],
  "durationDistanceMatrixSrcTags": [
    string
  ],
  "durationDistanceMatrixDstTags": [
    string
  ],
  "transitionAttributes": [
    {
      object (TransitionAttributes)
    }
  ],
  "shipmentTypeIncompatibilities": [
    {
      object (ShipmentTypeIncompatibility)
    }
  ],
  "shipmentTypeRequirements": [
    {
      object (ShipmentTypeRequirement)
    }
  ],
  "precedenceRules": [
    {
      object (PrecedenceRule)
    }
  ],
  "maxActiveVehicles": integer
}
フィールド
shipments[]

object (Shipment)

モデルで実行する必要がある出荷のセット。

vehicles[]

object (Vehicle)

訪問に使用できる車両のセット。

globalStartTime

string (Timestamp format)

モデルのグローバルな開始時刻と終了時刻: この範囲外の時刻は有効とみなされません。

モデルの期間は 1 年未満にする必要があります。つまり、globalEndTimeglobalStartTime の間隔は 3,153,600 秒以内でなければなりません。

cost_per_*hour フィールドを使用する場合は、このウィンドウを短い間隔に設定してパフォーマンスを向上させることをおすすめします(たとえば、1 日をモデル化する場合は、グローバル時間制限をその日に設定する必要があります)。設定しない場合、1970 年 1 月 1 日 00:00:00 UTC(秒: 0、ナノ: 0)がデフォルトで使用されます。

RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"

globalEndTime

string (Timestamp format)

設定しない場合、1971 年 1 月 1 日 00:00:00 UTC(秒: 31536000、ナノ: 0)がデフォルトで使用されます。

RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"

globalDurationCostPerHour

number

計画全体の「グローバルな期間」は、全車両の最も早い有効開始時刻と最も遅い有効終了時刻の差です。その数量に 1 時間あたりの費用を割り当てて、ジョブ完了が最も早く完了するなど最適化を試みることができます。この費用には Shipment.penalty_cost と同じ単位を指定する必要があります。

durationDistanceMatrices[]

object (DurationDistanceMatrix)

モデルで使用する期間と距離の行列を指定します。このフィールドが空の場合は、useGeodesicDistances フィールドの値に応じて、Google マップまたは測地線距離が代わりに使用されます。空でない場合、useGeodesicDistances を true にすることはできません。また、durationDistanceMatrixSrcTagsdurationDistanceMatrixDstTags も空にすることはできません。

使用例:

  • 場所には locA と locB の 2 つがあります。
  • 1 台の車両が locA でルートを開始し、locA で終了する。
  • locB での 1 件の店舗受け取りリクエスト。
model {
  vehicles { startTags: "locA"  endTags: "locA" }
  shipments { pickups { tags: "locB" } }
  durationDistanceMatrixSrcTags: "locA"
  durationDistanceMatrixSrcTags: "locB"
  durationDistanceMatrixDstTags: "locA"
  durationDistanceMatrixDstTags: "locB"
  durationDistanceMatrices {
    rows {  # from: locA
      durations { seconds: 0 }   meters: 0    # to: locA
      durations { seconds: 100 } meters: 1000 # to: locB
    }
    rows {  # from: locB
      durations { seconds: 102 } meters: 990 # to: locA
      durations { seconds: 0 }   meters: 0   # to: locB
    }
  }
}
  • locA、locB、locC の 3 つの場所があります。
  • 「fast」という行列を使用して、locA でルートを開始し、locB で終了する 1 台の車両。
  • 「slow」という行列を使用して、locB でルートを開始し、locB で終了する 1 台の車両。
  • 「fast」という行列を使用して、locB でルートを開始し、locB で終了する 1 台の車両。
  • locC での店舗受け取りリクエストが 1 件。
model {
  vehicles { startTags: "locA" endTags: "locB" startTags: "fast" }
  vehicles { startTags: "locB" endTags: "locB" startTags: "slow" }
  vehicles { startTags: "locB" endTags: "locB" startTags: "fast" }
  shipments { pickups { tags: "locC" } }
  durationDistanceMatrixSrcTags: "locA"
  durationDistanceMatrixSrcTags: "locB"
  durationDistanceMatrixSrcTags: "locC"
  durationDistanceMatrixDstTags: "locB"
  durationDistanceMatrixDstTags: "locC"
  durationDistanceMatrices {
    vehicleStartTag: "fast"
    rows {  # from: locA
      durations { seconds: 1000 } meters: 2000 # to: locB
      durations { seconds: 600 }  meters: 1000 # to: locC
    }
    rows {  # from: locB
      durations { seconds: 0 }   meters: 0    # to: locB
      durations { seconds: 700 } meters: 1200 # to: locC
    }
    rows {  # from: locC
      durations { seconds: 702 } meters: 1190 # to: locB
      durations { seconds: 0 }   meters: 0    # to: locC
    }
  }
  durationDistanceMatrices {
    vehicleStartTag: "slow"
    rows {  # from: locA
      durations { seconds: 1800 } meters: 2001 # to: locB
      durations { seconds: 900 }  meters: 1002 # to: locC
    }
    rows {  # from: locB
      durations { seconds: 0 }    meters: 0    # to: locB
      durations { seconds: 1000 } meters: 1202 # to: locC
    }
    rows {  # from: locC
      durations { seconds: 1001 } meters: 1195 # to: locB
      durations { seconds: 0 }    meters: 0    # to: locC
    }
  }
}
durationDistanceMatrixSrcTags[]

string

所要時間と距離行列のソースを定義するタグ。durationDistanceMatrices(i).rows(j) は、行列 i 内のタグ durationDistanceMatrixSrcTags(j) のある訪問から他の訪問までの所要時間と距離を定義します。

タグは VisitRequest.tags または Vehicle.start_tags に対応します。指定された VisitRequest または Vehicle は、このフィールド内の 1 つのタグと正確に一致する必要があります。Vehicle のソースタグ、デスティネーションタグ、マトリックスタグは同じである場合があります。同様に、VisitRequest のソースタグとデスティネーションタグも同じである場合があります。すべてのタグが異なる必要があり、空の文字列にすることはできません。このフィールドが空でない場合、durationDistanceMatrices を空にすることはできません。

durationDistanceMatrixDstTags[]

string

所要時間行列と距離行列の目的地を定義するタグ。durationDistanceMatrices(i).rows(j).durations(k)durationDistanceMatrices(i).rows(j).meters(k)) は、行列 i でタグ durationDistanceMatrixSrcTags(j) の訪問からタグ durationDistanceMatrixDstTags(k) の訪問までの移動時間(距離)を定義します。

タグは VisitRequest.tags または Vehicle.start_tags に対応します。指定された VisitRequest または Vehicle は、このフィールド内の 1 つのタグと正確に一致する必要があります。Vehicle のソースタグ、デスティネーションタグ、マトリックスタグは同じである場合があります。同様に、VisitRequest のソースタグとデスティネーションタグも同じである場合があります。すべてのタグが異なる必要があり、空の文字列にすることはできません。このフィールドが空でない場合、durationDistanceMatrices を空にすることはできません。

transitionAttributes[]

object (TransitionAttributes)

モデルに追加された遷移属性。

shipmentTypeIncompatibilities[]

object (ShipmentTypeIncompatibility)

互換性のない shipping_types のセット(ShipmentTypeIncompatibility を参照)。

shipmentTypeRequirements[]

object (ShipmentTypeRequirement)

shipmentType 要件のセット(ShipmentTypeRequirement を参照)。

precedenceRules[]

object (PrecedenceRule)

モデルで適用する必要がある一連の優先順位ルール。

maxActiveVehicles

integer

有効な車両の最大数を制限します。ルートで配送が 1 回以上行われると、車両はアクティブになります。これは、車両よりドライバーが少なく、車両フリートが異種混合である場合に、ルート数を制限するために使用できます。次に、最適化によって、使用に最適な車両のサブセットが選択されます。真に正である必要があります。

配送

単一の商品の配送(集荷 1 つから配送 1 つまで)。配送が完了したと見なされるには、一意の車両がいずれかの乗車拠点を訪問し(それに応じて予備のキャパシティを減らし)、後でいずれかの配送拠点を訪問する必要があります(それに応じて予備キャパシティを増やします)。

JSON 表現
{
  "displayName": string,
  "pickups": [
    {
      object (VisitRequest)
    }
  ],
  "deliveries": [
    {
      object (VisitRequest)
    }
  ],
  "loadDemands": {
    string: {
      object (Load)
    },
    ...
  },
  "allowedVehicleIndices": [
    integer
  ],
  "costsPerVehicle": [
    number
  ],
  "costsPerVehicleIndices": [
    integer
  ],
  "pickupToDeliveryAbsoluteDetourLimit": string,
  "pickupToDeliveryTimeLimit": string,
  "shipmentType": string,
  "label": string,
  "ignore": boolean,
  "penaltyCost": number,
  "pickupToDeliveryRelativeDetourLimit": number
}
フィールド
displayName

string

配送のユーザー定義の表示名。最大 63 文字で、UTF-8 文字を使用できます。

pickups[]

object (VisitRequest)

配送に関連付けられた受け取り方法のセット。指定しない場合、車両は配送に対応する場所に訪問するだけです。

deliveries[]

object (VisitRequest)

配送に関連付けられた代替の配送方法のセット。指定しなかった場合、車両は乗車場所に対応する場所に訪問するだけで済みます。

loadDemands

map (key: string, value: object (Load))

荷物の積載量(重量、容積、パレット数など)マップ内のキーは、対応する負荷のタイプを説明する識別子である必要があります。理想的には、その単位も含める必要があります。たとえば、「weight_kg」、「volume_gallons」、「pallet_count」などです。特定のキーがマップにない場合、対応する負荷は null と見なされます。

"key": value ペアのリストを含むオブジェクト。例: { "name": "wrench", "mass": "1.3kg", "count": "3" }

allowedVehicleIndices[]

integer

この配送を実行できる車両のセット。空の場合、すべての車両が実行できます。車両は、ShipmentModelvehicles リスト内のインデックスで指定されます。

costsPerVehicle[]

number

この荷物が各車両で配送されたときに発生する費用を指定します。指定する場合、EITHER:

  • costsPerVehicleIndices と同じ数の要素。costsPerVehicle[i] は、モデルの車両 costsPerVehicleIndices[i] に対応します。
  • モデル内の車両の数と同じ数の要素だけを抽出できます。i 番目の要素は、モデルの車両 #i に対応します。

これらの費用は penaltyCost と同じ単位にする必要があり、負の値にはできません。このような費用がない場合は、空欄のままにします。

costsPerVehicleIndices[]

integer

costsPerVehicle が適用される車両のインデックス。空でない場合は、costsPerVehicle と同じ数の要素が必要です。車両インデックスは複数回指定できません。車両が costsPerVehicleIndices から除外されている場合、その費用はゼロです。

pickupToDeliveryAbsoluteDetourLimit

string (Duration format)

集荷から配達までの最短経路と比較して、最長の迂回時間を指定します。指定する場合、値は負の値にせず、少なくとも集荷と配達が含まれている必要があります。

たとえば、選択された代替受け取り場所から、選択された配送方法に直接到達するまでに要する最短時間を t とします。次に、pickupToDeliveryAbsoluteDetourLimit を設定すると、次のルールが適用されます。

startTime(delivery) - startTime(pickup) <=
t + pickupToDeliveryAbsoluteDetourLimit

同じ配送に相対制限と絶対制限の両方が指定されている場合は、受け取りと配達の組み合わせごとに、より厳しい制限が適用されます。2017 年と 2010 年現在、迂回ルートは走行時間が車両に依存していない場合にのみサポートされます。

s」で終わる小数 9 桁までの秒単位の期間。例: "3.5s"

pickupToDeliveryTimeLimit

string (Duration format)

荷物の集荷から配達を開始するまでの最大期間を指定します。指定する場合、値は負の値にせず、少なくとも集荷と配達が含まれている必要があります。これは、受け取りと宅配の選択肢、車両速度には左右されません。これは、最大迂回の制約と並行して指定できます。ソリューションは両方の仕様を尊重します。

s」で終わる小数 9 桁までの秒単位の期間。例: "3.5s"

shipmentType

string

この配送の「タイプ」を指定する空でない文字列。この機能を使用して、shipment_types 間の非互換性や要件を定義できます(ShipmentModelshipmentTypeIncompatibilitiesshipmentTypeRequirements を参照)。

1 回の訪問に指定される visitTypes とは異なります。同じ配送に属するすべての集荷/配達で、同じ shipmentType が共有されます。

label

string

この配送のラベルを指定します。このラベルは、対応する ShipmentRoute.VisitshipmentLabel のレスポンスで報告されます。

ignore

boolean

true の場合、この配送をスキップしますが、penaltyCost は適用しません。

配送を無視すると、モデルに shipmentTypeRequirements がある場合に検証エラーが発生します。

injectedFirstSolutionRoutes または injectedSolutionConstraint で行われる出荷は無視できますが、ソルバーによって、関連する集荷/配達訪問が実行中のルートから削除されます。無視された配送を参照する precedenceRules も無視されます。

penaltyCost

number

配送が完了しない場合は、このペナルティがルートの総費用に加算されます。受け取りまたは宅配の代替便のいずれかを訪問した場合、配送が完了したとみなされます。費用は、モデルの他のすべての費用関連フィールドに使用されるのと同じ単位で表すことができます。また、正の値にする必要があります。

重要: このペナルティが指定されていない場合、ペナルティは無限であると見なされます(配送を完了する必要がある)。

pickupToDeliveryRelativeDetourLimit

number

集荷から配達までの最短経路と比較した、最長の相対迂回時間を指定します。指定する場合、値は負の値にせず、少なくとも集荷と配達が含まれている必要があります。

たとえば、選択された代替受け取り場所から、選択された配送方法に直接到達するまでに要する最短時間を t とします。次に、pickupToDeliveryRelativeDetourLimit を設定すると、次のルールが適用されます。

startTime(delivery) - startTime(pickup) <=
std::ceil(t * (1.0 + pickupToDeliveryRelativeDetourLimit))

同じ配送に相対制限と絶対制限の両方が指定されている場合は、受け取りと配達の組み合わせごとに、より厳しい制限が適用されます。2017 年と 2010 年現在、迂回ルートは走行時間が車両に依存していない場合にのみサポートされます。

VisitRequest

車両による訪問のリクエスト: 位置情報(1 つまたは 2 つ、以下を参照)、時間枠で表される開店時間と閉店時間、サービス提供時間(車両が荷物を受け取るか降車してから到着してから費やした時間)が含まれています。

JSON 表現
{
  "arrivalLocation": {
    object (LatLng)
  },
  "arrivalWaypoint": {
    object (Waypoint)
  },
  "departureLocation": {
    object (LatLng)
  },
  "departureWaypoint": {
    object (Waypoint)
  },
  "tags": [
    string
  ],
  "timeWindows": [
    {
      object (TimeWindow)
    }
  ],
  "duration": string,
  "cost": number,
  "loadDemands": {
    string: {
      object (Load)
    },
    ...
  },
  "visitTypes": [
    string
  ],
  "label": string
}
フィールド
arrivalLocation

object (LatLng)

この VisitRequest を実行したときに車両が到着した位置情報。配送モデルに所要時間の距離行列がある場合、arrivalLocation は指定できません。

arrivalWaypoint

object (Waypoint)

この VisitRequest を実行するときに車両が到着する地点。配送モデルに所要時間の距離行列がある場合、arrivalWaypoint は指定できません。

departureLocation

object (LatLng)

この VisitRequest の完了後に車両が出発する位置情報。arrivalLocation と同じ場合は省略できます。配送モデルに所要時間の距離行列がある場合、departureLocation は指定できません。

departureWaypoint

object (Waypoint)

この VisitRequest の完了後に車両が出発する地点。arrivalWaypoint と同じ場合は省略できます。配送モデルに所要時間の距離行列がある場合、departureWaypoint は指定できません。

tags[]

string

アクセス リクエストに付加するタグを指定します。空の文字列や重複する文字列は使用できません。

timeWindows[]

object (TimeWindow)

訪問時の到着時刻を制限する時間枠。車両は到着時間枠外に出発してもよいことに注意してください。つまり、到着時刻 + 所要時間が時間枠内である必要はありません。TimeWindow.start_time より前に到着すると、待ち時間が発生することがあります。

TimeWindow がない場合、車両はいつでもこの訪問を実行できます。

時間枠は互いに独立している必要があります。つまり、時間枠が互いに重なり合ったり隣接したりしてはならず、順に並べる必要があります。

costPerHourAfterSoftEndTimesoftEndTime は、時間枠が 1 つの場合にのみ設定できます。

duration

string (Duration format)

訪問の所要時間、つまり到着から出発までに車両が費やした時間(待ち時間に加算されます。timeWindows を参照)。

s」で終わる小数 9 桁までの秒単位の期間。例: "3.5s"

cost

number

車両ルートでこの訪問リクエストを処理するための費用。これを使用して、荷物の別の受け取りまたは配送ごとに異なる費用を支払うことができます。この費用は Shipment.penalty_cost と同じ単位にする必要があり、負の値にすることはできません。

loadDemands

map (key: string, value: object (Load))

この訪問リクエストのロード デマンド。これは Shipment.load_demands フィールドと似ていますが、Shipment 全体ではなくこの VisitRequest にのみ適用される点が異なります。ここに記載されている要求は、Shipment.load_demands にリストされている要求に追加されます。

"key": value ペアのリストを含むオブジェクト。例: { "name": "wrench", "mass": "1.3kg", "count": "3" }

visitTypes[]

string

訪問のタイプを指定します。車両がこの訪問を完了するために必要な追加の時間を割り当てるために使用されることがあります(Vehicle.extra_visit_duration_for_visit_type を参照)。

1 つのタイプは 1 回だけ使用できます。

label

string

この VisitRequest のラベルを指定します。このラベルは、レスポンスで対応する ShipmentRoute.VisitvisitLabel として報告されます。

LatLng

緯度と経度のペアを表すオブジェクト。緯度を表す倍精度値と経度を表す倍精度値のペアで表現されます。特に指定のない限り、このオブジェクトは WGS84 規格に準拠する必要があります。値は正規化範囲内で指定する必要があります。

JSON 表現
{
  "latitude": number,
  "longitude": number
}
フィールド
latitude

number

緯度(度単位)。範囲 [-90.0, +90.0] 内になければなりません。

longitude

number

経度(度単位)。範囲 [-180.0, +180.0] 内になければなりません。

ウェイポイント

ウェイポイントをカプセル化します。ウェイポイントは、VisitRequest の到着地点と出発地点、車両の出発地と目的地をマークします。

JSON 表現
{
  "sideOfRoad": boolean,

  // Union field location_type can be only one of the following:
  "location": {
    object (Location)
  },
  "placeId": string
  // End of list of possible types for union field location_type.
}
フィールド
sideOfRoad

boolean

省略可。このウェイポイントの位置が、車両が道路の特定の側に停止することを優先することを示します。この値を設定すると、ルートはその場所を通過するため、車両はその場所が道路の中心から方向に偏った道路脇に停車します。このオプションは移動モードで「歩行中」にすることはできません。

共用体フィールド location_type。場所を表すさまざまな方法。location_type は次のいずれかになります。
location

object (Location)

地理座標を使用して指定されたポイント。オプションで方角が含まれます。

placeId

string

ウェイポイントに関連付けられているスポットのプレイス ID。

ロケーション

場所(地理的位置と任意の方角)をカプセル化します。

JSON 表現
{
  "latLng": {
    object (LatLng)
  },
  "heading": integer
}
フィールド
latLng

object (LatLng)

ウェイポイントの地理座標。

heading

integer

交通の流れの方向に関連付けられたコンパス方位。この値は、乗車と降車に使用する道路の側を指定するために使用されます。方角の値は 0 から 360 までの値で、0 は真北の方向、90 は正しい東の方向を示します。

TimeWindow

タイム ウィンドウは、訪問時の到着時刻、車両の開始時刻と終了時刻など、イベントの時刻を制限します。

ハードタイムのウィンドウ境界(startTimeendTime)は、イベントの最も早い時刻と最も遅い時刻(startTime <= event_time <= endTime など)を適用します。ソフトタイム ウィンドウの下限 softStartTime は、softStartTime のイベントが発生するまでの時間に比例したコストを発生させることで、softStartTime 以降にイベントが発生する設定を表します。ソフトタイム ウィンドウの上限である softEndTime は、softEndTime からイベントが発生するまでの時間に比例して費用が発生することで、softEndTime かそれ以前にイベントが発生することを優先することを表します。startTimeendTimesoftStartTimesoftEndTime は、グローバル時間制限(ShipmentModel.global_start_timeShipmentModel.global_end_time を参照)内である必要があり、以下を遵守する必要があります。

  0 <= `startTime` <= `softStartTime` <= `endTime` and
  0 <= `startTime` <= `softEndTime` <= `endTime`.
JSON 表現
{
  "startTime": string,
  "endTime": string,
  "softStartTime": string,
  "softEndTime": string,
  "costPerHourBeforeSoftStartTime": number,
  "costPerHourAfterSoftEndTime": number
}
フィールド
startTime

string (Timestamp format)

ハードタイムの開始時刻。指定しない場合は、ShipmentModel.global_start_time に設定されます。

RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"

endTime

string (Timestamp format)

ハードタイムの終了時間。指定しない場合は、ShipmentModel.global_end_time に設定されます。

RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"

softStartTime

string (Timestamp format)

時間枠のソフトスタート時間。

RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"

softEndTime

string (Timestamp format)

時間枠のソフト エンド時間。

RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"

costPerHourBeforeSoftStartTime

number

イベントが softStartTime の前に発生した場合に、モデルの他の費用に 1 時間あたりの費用を加えたもの。以下のように計算されます。

   max(0, softStartTime - t.seconds)
                          * costPerHourBeforeSoftStartTime / 3600,
t being the time of the event.

この費用には正の値を指定する必要があります。また、このフィールドは softStartTime が設定されている場合にのみ設定できます。

costPerHourAfterSoftEndTime

number

イベントが softEndTime の後に発生した場合に、モデルの他の費用に 1 時間あたりの費用を加えたもの。次のように計算されます。

   max(0, t.seconds - softEndTime.seconds)
                    * costPerHourAfterSoftEndTime / 3600,
t being the time of the event.

この費用は正の値で指定する必要があります。このフィールドは、softEndTime が設定されている場合にのみ設定できます。

車両

配送の問題に含まれる車両をモデル化します。配送の問題を解決すると、この車両の startLocation から endLocation までのルートが作成されます。ルートとは、一連の訪問履歴です(ShipmentRoute を参照)。

JSON 表現
{
  "displayName": string,
  "travelMode": enum (TravelMode),
  "startLocation": {
    object (LatLng)
  },
  "startWaypoint": {
    object (Waypoint)
  },
  "endLocation": {
    object (LatLng)
  },
  "endWaypoint": {
    object (Waypoint)
  },
  "startTags": [
    string
  ],
  "endTags": [
    string
  ],
  "startTimeWindows": [
    {
      object (TimeWindow)
    }
  ],
  "endTimeWindows": [
    {
      object (TimeWindow)
    }
  ],
  "unloadingPolicy": enum (UnloadingPolicy),
  "loadLimits": {
    string: {
      object (LoadLimit)
    },
    ...
  },
  "costPerHour": number,
  "costPerTraveledHour": number,
  "costPerKilometer": number,
  "fixedCost": number,
  "usedIfRouteIsEmpty": boolean,
  "routeDurationLimit": {
    object (DurationLimit)
  },
  "travelDurationLimit": {
    object (DurationLimit)
  },
  "routeDistanceLimit": {
    object (DistanceLimit)
  },
  "extraVisitDurationForVisitType": {
    string: string,
    ...
  },
  "breakRule": {
    object (BreakRule)
  },
  "label": string,
  "ignore": boolean,
  "travelDurationMultiple": number
}
フィールド
displayName

string

車両のユーザー定義の表示名。最大 63 文字で、UTF-8 文字を使用できます。

travelMode

enum (TravelMode)

車両が使用できる道路と速度に影響する移動モード。travelDurationMultiple もご覧ください。

startLocation

object (LatLng)

荷物を受け取る前に車両が始動する地理的な場所。指定しない場合、車両は最初の乗車地点から開始します。配送モデルに所要時間と距離の行列がある場合、startLocation は指定できません。

startWaypoint

object (Waypoint)

配送物を受け取る前に車両が始動する地理的位置を表す地点。startWaypointstartLocation も指定されていない場合、車両は最初の乗車地点から開始します。配送モデルに所要時間と距離の行列がある場合、startWaypoint は指定できません。

endLocation

object (LatLng)

最後の VisitRequest が完了した後に車両を終了する地理的位置。指定しない場合、車両の ShipmentRoute は最後の VisitRequest が完了するとすぐに終了します。配送モデルに所要時間と距離の行列がある場合、endLocation は指定できません。

endWaypoint

object (Waypoint)

車両が最後の VisitRequest を完了した後に終了する地理的位置を表す地点。endWaypointendLocation も指定されていない場合、車両の ShipmentRoute は最後の VisitRequest が完了するとすぐに終了します。配送モデルに所要時間と距離の行列がある場合、endWaypoint は指定できません。

startTags[]

string

車両のルートの始点に付けるタグを指定します。

空の文字列や重複する文字列は使用できません。

endTags[]

string

車両のルートの終点に付けられたタグを指定します。

空の文字列や重複する文字列は使用できません。

startTimeWindows[]

object (TimeWindow)

車両が開始位置を出発できる時間帯。グローバルの制限時間内である必要があります(ShipmentModel.global_* フィールドを参照)。指定されていない場合は、グローバル時間制限以外に制限はありません。

同じ繰り返しフィールドに属する時間枠は、互いに素である必要があります。つまり、時間枠が別の時間枠と重複したり、隣接したりしてはいけません。また、時系列である必要があります。

costPerHourAfterSoftEndTimesoftEndTime は、時間枠が 1 つの場合にのみ設定できます。

endTimeWindows[]

object (TimeWindow)

車両が最終位置に到着する可能性のある時間枠。グローバルの制限時間内である必要があります(ShipmentModel.global_* フィールドを参照)。指定されていない場合は、グローバル時間制限以外に制限はありません。

同じ繰り返しフィールドに属する時間枠は、互いに素である必要があります。つまり、時間枠が別の時間枠と重複したり、隣接したりしてはいけません。また、時系列である必要があります。

costPerHourAfterSoftEndTimesoftEndTime は、時間枠が 1 つの場合にのみ設定できます。

unloadingPolicy

enum (UnloadingPolicy)

車両にアンロード ポリシーが適用されています。

loadLimits

map (key: string, value: object (LoadLimit))

車両の容量(重量、容積、パレット数など)。マップ内のキーは、Shipment.load_demands フィールドのキーと一致する、負荷のタイプの識別子です。特定のキーがこのマップにない場合、対応する容量は無制限とみなされます。

"key": value ペアのリストを含むオブジェクト。例: { "name": "wrench", "mass": "1.3kg", "count": "3" }

costPerHour

number

車両費用: すべての費用が合計され、Shipment.penalty_cost と同じ単位である必要があります。

車両ルートの 1 時間あたりの費用。この費用は、ルートの所要時間、移動時間、待ち時間、訪問時間に適用されます。costPerTraveledHour だけではなく costPerHour を使用すると、レイテンシが増加する可能性があります。

costPerTraveledHour

number

車両ルートの走行時間あたりの費用。この費用は、そのルートの移動時間(ShipmentRoute.transitions でレポートされる時間)にのみ適用され、待ち時間と来店時間は含まれません。

costPerKilometer

number

車両ルートの 1 km あたりの料金。この費用は、ShipmentRoute.transitions でレポートされる距離に適用され、単一の VisitRequestarrivalLocation から departureLocation まで暗黙的に移動する距離には適用されません。

fixedCost

number

この車両を使用して出荷する場合、固定料金が適用されます。

usedIfRouteIsEmpty

boolean

この項目は、ルートで配送を行う車両がない場合にのみ適用されます。そのケースで車両を中古車とみなすかどうかを示します。

true の場合、車両は荷物のサービスを提供していなくても、始点から終点まで移動し、始点から終点への移動に要する時間と距離の費用が考慮されます。

それ以外の場合、この車両は始点から終点まで移動せず、breakRule または遅延(TransitionAttributes 以降)は設定されません。この場合、車両の ShipmentRoute には、車両のインデックスとラベル以外の情報は含まれません。

routeDurationLimit

object (DurationLimit)

車両のルートの総所要時間に適用される制限。特定の OptimizeToursResponse では、車両のルートの所要時間は vehicleEndTimevehicleStartTime の差となります。

travelDurationLimit

object (DurationLimit)

車両のルートの走行時間に適用される制限。特定の OptimizeToursResponse において、ルートの移動時間は、そのすべての transitions.travel_duration の合計です。

routeDistanceLimit

object (DistanceLimit)

車両のルートの総距離に適用される制限。特定の OptimizeToursResponse において、ルート距離はすべての transitions.travel_distance_meters の合計です。

extraVisitDurationForVisitType

map (key: string, value: string (Duration format))

visitTypes 文字列から期間までのマップを指定します。所要時間は、VisitRequest.duration に加えて、指定された visitTypes の訪問で取得される時間です。costPerHour が指定されている場合は、滞在時間が長くなるため費用が発生します。キー(visitTypes)を空の文字列にすることはできません。

訪問リクエストのタイプが複数ある場合は、地図のタイプごとに所要時間が追加されます。

"key": value ペアのリストを含むオブジェクト。例: { "name": "wrench", "mass": "1.3kg", "count": "3" }

breakRule

object (BreakRule)

この車両に適用される休憩スケジュールを記述します。空の場合、この車両に休憩は設定されません。

label

string

この車両のラベルを指定します。このラベルは、対応する ShipmentRoutevehicleLabel としてレスポンスで報告されます。

ignore

boolean

true の場合、usedIfRouteIsEmpty は false にする必要があります。この車両は未使用のままになります。

injectedFirstSolutionRoutes で無視された車両によって配送が行われた場合、最初のソリューションではスキップされますが、レスポンスでは自由に実行できます。

injectedSolutionConstraint で無視された車両によって配送が行われ、関連する集荷/配送が車両にとどまるように制限されている場合(つまり、レベル RELAX_ALL_AFTER_THRESHOLD まで緩和されていない場合)、レスポンスではスキップされます。配送に空でない allowedVehicleIndices フィールドがあり、許可された車両がすべて無視された場合、レスポンスでスキップされます。

travelDurationMultiple

number

この車両の移動時間を増減するために使用できる乗法係数を指定します。たとえば、この値を 2.0 に設定すると、この車両は速度が遅く、移動時間が標準車両の 2 倍であることを意味します。この倍率は訪問の滞在時間には影響しません。costPerHour または costPerTraveledHour が指定されている場合は、費用に影響します。これは [0.001, 1000.0] の範囲内にする必要があります。設定しない場合、車両は標準となり、この倍数は 1.0 と見なされます。

警告: 移動時間は、この倍数が適用された後、数値演算を実行する前に最も近い秒単位に丸められます。そのため、倍数が小さいと、精度が低下する可能性があります。

以下の extraVisitDurationForVisitType もご覧ください。

TravelMode

車両で使用できる移動手段。

これらは Google Maps Platform Routes Preferred API の移動手段のサブセットである必要があります(https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteTravelMode をご覧ください)。

列挙型
TRAVEL_MODE_UNSPECIFIED 未指定の移動手段。DRIVING に相当します。
DRIVING 運転ルート(車など)に対応する移動モード。
WALKING 徒歩ルートに対応する移動手段。

UnloadingPolicy

車両の積み下ろし方法に関するポリシー。集荷と宅配の両方を行う配送にのみ適用されます。

その他の配送は、unloadingPolicy に関係なく、ルート上のどこでも自由に行えます。

列挙型
UNLOADING_POLICY_UNSPECIFIED 荷物の撤去ポリシーが指定されていません。配送は対応する集荷の直後に行う必要があります。
LAST_IN_FIRST_OUT 受け取りは逆の順序で行ってください。
FIRST_IN_FIRST_OUT 配送は集荷と同じ順序で行う必要があります

LoadLimit

車両に適用する積載量を定義します(「このトラックは 3, 500 kg までしか運べません」など)。loadLimitsをご確認ください。

JSON 表現
{
  "softMaxLoad": string,
  "costPerUnitAboveSoftMax": number,
  "startLoadInterval": {
    object (Interval)
  },
  "endLoadInterval": {
    object (Interval)
  },
  "maxLoad": string
}
フィールド
softMaxLoad

string (int64 format)

負荷のソフトリミット。costPerUnitAboveSoftMaxをご確認ください。

costPerUnitAboveSoftMax

number

この車両の経路で負荷が softMaxLoad を超えると、次の費用ペナルティが適用されます(車両 1 台につき 1 回のみ)。(負荷 - softMaxLoad) × costPerUnitAboveSoftMaxすべての費用を合計し、Shipment.penalty_cost と同じ単位にする必要があります。

startLoadInterval

object (Interval)

ルート開始時の車両の許容積載間隔。

endLoadInterval

object (Interval)

ルートの終点における車両の許容積載間隔。

maxLoad

string (int64 format)

最大許容負荷量。

間隔

許容される読み込み量の間隔。

JSON 表現
{
  "min": string,
  "max": string
}
フィールド
min

string (int64 format)

最小許容負荷0 以上の値を指定してください。両方指定する場合、minmax 以下でなければなりません。

max

string (int64 format)

最大許容負荷。0 以上の値を指定してください。指定しない場合、このメッセージによる最大負荷の制限はありません。両方指定する場合、minmax 以下でなければなりません。

DurationLimit

車両のルートの最大継続時間を定義する制限。ハードとソフトのどちらでも構いません。

ソフトリミット フィールドが定義されている場合は、ソフト最大しきい値とそれに関連するコストの両方を一緒に定義する必要があります。

JSON 表現
{
  "maxDuration": string,
  "softMaxDuration": string,
  "quadraticSoftMaxDuration": string,
  "costPerHourAfterSoftMax": number,
  "costPerSquareHourAfterQuadraticSoftMax": number
}
フィールド
maxDuration

string (Duration format)

再生時間が maxDuration 以下になるように制限するハードリミット。

s」で終わる小数 9 桁までの秒単位の期間。例: "3.5s"

softMaxDuration

string (Duration format)

ソフトリミットは、最大時間制限を適用しませんが、違反するとコストが発生します。この費用が、モデルで定義された他の費用(同じ単位)に加算されます。

定義する場合、softMaxDuration は負でない値にする必要があります。maxDuration も定義されている場合は、softMaxDuration を maxDuration より短くする必要があります。

s」で終わる小数 9 桁までの秒単位の期間。例: "3.5s"

quadraticSoftMaxDuration

string (Duration format)

ソフトリミットは、最大継続時間制限を適用しませんが、違反すると、ルートの所要時間に二次的なコストが発生します。この費用が、モデルで定義された他の費用(同じ単位)に加算されます。

定義する場合、quadraticSoftMaxDuration は負でない値にする必要があります。maxDuration も定義されている場合、quadraticSoftMaxDurationmaxDuration より小さく、差は 1 日以下でなければなりません。

maxDuration - quadraticSoftMaxDuration <= 86400 seconds

s」で終わる小数 9 桁までの秒単位の期間。例: "3.5s"

costPerHourAfterSoftMax

number

softMaxDuration のしきい値に違反した場合に発生する 1 時間あたりの費用。期間がしきい値を下回っている場合、追加費用は 0 になります。そうでない場合、費用は期間に応じて次のように異なります。

  costPerHourAfterSoftMax * (duration - softMaxDuration)

費用には負でない値を指定してください。

costPerSquareHourAfterQuadraticSoftMax

number

quadraticSoftMaxDuration のしきい値に違反した場合に発生した 1 平方時間あたりの費用。

期間がしきい値を下回っている場合、追加費用は 0 になります。そうでない場合、費用は期間に応じて次のように異なります。

  costPerSquareHourAfterQuadraticSoftMax *
  (duration - quadraticSoftMaxDuration)^2

費用には負でない値を指定してください。

DistanceLimit

移動可能な最大距離を定義する制限。ハードとソフトのどちらでも構いません。

ソフトリミットを定義する場合は、softMaxMeterscostPerKilometerAboveSoftMax の両方を定義し、負でない値にする必要があります。

JSON 表現
{
  "maxMeters": string,
  "softMaxMeters": string,
  "costPerKilometerAboveSoftMax": number
}
フィールド
maxMeters

string (int64 format)

距離を maxMeters 以下に制限するハードリミット。上限には負でない値を指定してください。

softMaxMeters

string (int64 format)

ソフトリミットは、最大距離制限を適用しませんが、違反するとコストが発生します。このコストは、同じ単位を使用してモデルで定義された他のコストになります。

定義されている場合、softMaxMeters は maxMeters より小さく、かつ非負でなければなりません。

costPerKilometerAboveSoftMax

number

距離が上限の softMaxMeters を超える場合の 1 キロメートルあたりの料金。距離が制限を下回っている場合、追加費用は 0 になります。それ以外の場合、費用の計算に使用される式は次のとおりです。

  (distanceMeters - softMaxMeters) / 1000.0 *
  costPerKilometerAboveSoftMax.

費用には負でない値を指定してください。

BreakRule

車両の休憩(昼食など)を生成するためのルール。休憩とは、車両が現在の位置でアイドル状態のままで、訪問できない連続時間です。休憩が起きる場合があります。

  • 2 回の訪問間の移動中(訪問の直前と直後の時間を含むが、訪問の途中は含まない)の場合は、訪問間の移動時間が延長されます。
  • または車両の始動前(車両が休憩の途中で始動しない場合があります)は、車両の開始時間には影響しません。
  • または車両の終了時刻の後(同上、車両の終了時刻も指定)。
JSON 表現
{
  "breakRequests": [
    {
      object (BreakRequest)
    }
  ],
  "frequencyConstraints": [
    {
      object (FrequencyConstraint)
    }
  ]
}
フィールド
breakRequests[]

object (BreakRequest)

休憩の順序。BreakRequest のメッセージをご覧ください。

frequencyConstraints[]

object (FrequencyConstraint)

複数の FrequencyConstraint が適用される場合があります。この BreakRuleBreakRequest によってすべてが満たされている必要があります。FrequencyConstraintをご覧ください。

BreakRequest

各車両に適用される一連の挿入点(回数と順序)を事前に把握しておく必要があります。繰り返される BreakRequest は、その順序が発生する順序を定義します。時間枠(earliestStartTime / latestStartTime)は重複する場合がありますが、オーダーと互換性がなければなりません(確認済み)。

JSON 表現
{
  "earliestStartTime": string,
  "latestStartTime": string,
  "minDuration": string
}
フィールド
earliestStartTime

string (Timestamp format)

必須。広告ブレークの開始時の下限(指定した値を含む)。

RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"

latestStartTime

string (Timestamp format)

必須。広告ブレークの開始時の上限(指定した値を含む)。

RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"

minDuration

string (Duration format)

必須。休憩の最小時間。正の値である必要があります。

s」で終わる小数 9 桁までの秒単位の期間。例: "3.5s"

FrequencyConstraint

「12 時間ごとに少なくとも 1 時間の休憩が必要である」など、最小の休憩頻度を適用することで、上記の休憩の頻度と継続時間をさらに制限できます。これが「12 時間のスライディング タイム ウィンドウ内に、少なくとも 1 時間の休憩が少なくとも 1 つ必要です」と解釈できると仮定すると、次のような FrequencyConstraint に変換されます。

{
   minBreakDuration { seconds: 3600 }         # 1 hour.
   maxInterBreakDuration { seconds: 39600 }  # 11 hours (12 - 1 = 11).
}

ソリューションの休憩のタイミングと継続時間は、すでに BreakRequest で指定されている時間枠と最小時間に加えて、このような制約をすべて考慮します。

実際には、FrequencyConstraint は連続していない挿入点に適用されます。たとえば、次のスケジュールでは「12 時間ごとに 1 時間」が適用されます。

  04:00 vehicle start
   .. performing travel and visits ..
  09:00 1 hour break
  10:00 end of the break
   .. performing travel and visits ..
  12:00 20-min lunch break
  12:20 end of the break
   .. performing travel and visits ..
  21:00 1 hour break
  22:00 end of the break
   .. performing travel and visits ..
  23:59 vehicle end
JSON 表現
{
  "minBreakDuration": string,
  "maxInterBreakDuration": string
}
フィールド
minBreakDuration

string (Duration format)

必須。この制約の最小ブレーク時間。非負。FrequencyConstraint の説明をご覧ください。

s」で終わる小数 9 桁までの秒単位の期間。例: "3.5s"

maxInterBreakDuration

string (Duration format)

必須。duration >= minBreakDuration の中断を少なくとも部分的に含まない、ルートの任意の時間間隔の最大許容スパン。正の値である必要があります。

s」で終わる小数 9 桁までの秒単位の期間。例: "3.5s"

DurationDistanceMatrix

訪問と車両の開始位置から訪問までの所要時間と距離の行列、および車両の終了位置を指定します。

JSON 表現
{
  "rows": [
    {
      object (Row)
    }
  ],
  "vehicleStartTag": string
}
フィールド
rows[]

object (Row)

所要時間と距離のマトリックスの行を指定します。ShipmentModel.duration_distance_matrix_src_tags 個と同じ数の要素を含める必要があります。

vehicleStartTag

string

この所要時間と距離の行列が適用される車両を定義するタグ。空の場合はすべての車両に適用され、指定できる行列は 1 つのみです。

各車両の開始点は、必ず 1 つの行列と一致する必要があります。つまり、startTags フィールドの 1 つだけが、(およびその行列の)vehicleStartTag と一致している必要があります。

すべての行列は異なる vehicleStartTag を持つ必要があります。

所要時間と距離の行列を指定します。

JSON 表現
{
  "durations": [
    string
  ],
  "meters": [
    number
  ]
}
フィールド
durations[]

string (Duration format)

指定された行の所要時間の値。ShipmentModel.duration_distance_matrix_dst_tags 個と同じ数の要素を含める必要があります。

s」で終わる小数 9 桁までの秒単位の期間。例: "3.5s"

meters[]

number

指定された行の距離値。モデル内の距離を参照している費用や制約がない場合は、空のままにすることができます。それ以外の場合は、durations と同じ数の要素が必要です。

TransitionAttributes

経路上の連続する 2 回の訪問間の遷移の属性を指定します。同じ移行に複数の TransitionAttributes を適用できます。その場合、余分な費用がすべて加算され、(自然な「AND」セマンティクスに従って)最も厳しい制約または制限が適用されます。

JSON 表現
{
  "srcTag": string,
  "excludedSrcTag": string,
  "dstTag": string,
  "excludedDstTag": string,
  "cost": number,
  "costPerKilometer": number,
  "distanceLimit": {
    object (DistanceLimit)
  },
  "delay": string
}
フィールド
srcTag

string

これらの属性が適用される一連の(src->dst)遷移を定義するタグ。

参照元の訪問または車両の開始は、その VisitRequest.tags または Vehicle.start_tagssrcTag を含むか、excludedSrcTag が含まれない場合(これら 2 つのフィールドのうちどちらが空でないかに応じて)に一致します。

excludedSrcTag

string

srcTag をご覧ください。srcTag または excludedSrcTag のいずれか 1 つのみを空にすることはできません。

dstTag

string

VisitRequest.tags または Vehicle.end_tagsdstTag が含まれているか、excludedDstTag が含まれていない場合は、訪問または車両の終了が一致します(この 2 つのフィールドが空でないかによって異なります)。

excludedDstTag

string

dstTag をご覧ください。dstTag または excludedDstTag のいずれか 1 つのみを空にすることはできません。

cost

number

この移行の実行にかかる費用を指定します。これは、モデルの他のすべての費用と同じ単位であり、負の値にすることはできません。この料金は、他のすべての既存の費用の上に適用されます。

costPerKilometer

number

この移行中の移動距離に適用される 1 km あたりの料金を指定します。車両で指定された Vehicle.cost_per_kilometer までの合計です。

distanceLimit

object (DistanceLimit)

このトランジションの移動距離の上限を指定します。

2021 年 6 月現在、ソフトリミットのみがサポートされています。

delay

string (Duration format)

この移行の実行時に発生する遅延を指定します。

この遅延は常に、ソース訪問を終了した、かつリンク先訪問を開始するに発生します。

s」で終わる小数 9 桁までの秒単位の期間。例: "3.5s"

ShipmentTypeIncompatibility

shippingType に応じて配送間の非互換性を指定します。同一ルート上で互換性のない配送が表示されるかどうかは、非互換性モードに基づいて制限されます。

JSON 表現
{
  "types": [
    string
  ],
  "incompatibilityMode": enum (IncompatibilityMode)
}
フィールド
types[]

string

互換性のないタイプのリスト。上記のうち shipment_types が異なる 2 件の配送が「互換性なし」です。

incompatibilityMode

enum (IncompatibilityMode)

非互換性に適用されるモード。

IncompatibilityMode

同じルート上で互換性のない荷物の表示を制限するモード。

列挙型
INCOMPATIBILITY_MODE_UNSPECIFIED 未指定の非互換モード。この値は使用しないでください。
NOT_PERFORMED_BY_SAME_VEHICLE このモードでは、互換性のないタイプの 2 つの配送で同じ車両を共有することはできません。
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY

NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY 非互換モードと互換性のないタイプの 2 件の配送の場合:

  • 両方が集荷のみ(配達なし)または配達のみ(集荷なし)の場合は、同じ車両を共有することはできません。
  • 一方の荷物が配達用で、もう一方が集荷サービスの場合、荷物の集荷前に前者の荷物を配達しない限り、2 つの車両で同じ車両を共有できます。

ShipmentTypeRequirement

shippingType に基づいて配送間の要件を指定します。要件の具体的な内容は、要件モードによって定義されます。

JSON 表現
{
  "requiredShipmentTypeAlternatives": [
    string
  ],
  "dependentShipmentTypes": [
    string
  ],
  "requirementMode": enum (RequirementMode)
}
フィールド
requiredShipmentTypeAlternatives[]

string

dependentShipmentTypes で要求されている代替配送タイプのリスト。

dependentShipmentTypes[]

string

dependentShipmentTypes フィールドにタイプが入力されているすべての配送では、タイプ requiredShipmentTypeAlternatives の配送を 1 回以上同じ経路で訪問する必要があります。

注: shipmentType がそれ自体に依存するような要件のチェーンは許可されません。

requirementMode

enum (RequirementMode)

要件に適用されたモード。

RequirementMode

ルート上での従属配送の外観を定義するモード。

列挙型
REQUIREMENT_MODE_UNSPECIFIED 未指定の要件モード。この値は使用しないでください。
PERFORMED_BY_SAME_VEHICLE このモードでは、「依存する」すべての配送で、少なくとも 1 つの「必須」の配送と同じ車両を共有する必要があります。
IN_SAME_VEHICLE_AT_PICKUP_TIME

IN_SAME_VEHICLE_AT_PICKUP_TIME モードでは、すべての「依存」配送には、集荷時に車両に少なくとも 1 つの「必須」の配送が必要です。

そのため、「従属」の荷物の集荷には次のいずれかが必要です。

  • 次の日付より後のルートに配送される、宅配のみの「必須」の荷物
  • 「必須」の荷物は、その前のルートで集荷されます。「必須」の荷物に配達がある場合は、この配送は「従属」の荷物の集荷後に行う必要があります。
IN_SAME_VEHICLE_AT_DELIVERY_TIME 前と同じですが、「従属」の荷物は配達時に車両に「必須」の荷物が設定されている必要がある点が異なります。

PrecedenceRule

2 つのイベント間の優先順位ルール(各イベントは荷物の集荷または配達): 「1 回目」の開始後、少なくとも offsetDuration 後に「2 回目の」イベントが開始される必要があります。

同じ(または関連する)イベントを指す優先順位が複数あります(例:「B の集荷は A の配送後に行われます」と「C の集荷は B の集荷後に行われます」。

また、優先順位は、両方の発送が行われた場合にのみ適用され、それ以外の場合は無視されます。

JSON 表現
{
  "firstIsDelivery": boolean,
  "secondIsDelivery": boolean,
  "offsetDuration": string,
  "firstIndex": integer,
  "secondIndex": integer
}
フィールド
firstIsDelivery

boolean

「最初」のイベントが配信かどうかを示します。

secondIsDelivery

boolean

「2 回目」のイベントが配信かどうかを示します。

offsetDuration

string (Duration format)

「first」イベントと「second イベント」の間のオフセット。負の値でもかまいません。

s」で終わる小数 9 桁までの秒単位の期間。例: "3.5s"

firstIndex

integer

「最初」のイベントの配送インデックス。このフィールドを指定する必要があります。

secondIndex

integer

「2 回目の」イベントの配送インデックス。このフィールドを指定する必要があります。