- JSON 表現
 - Shipment(配送)
 - VisitRequest
 - LatLng
 - Waypoint
 - ロケーション
 - TimeWindow
 - Vehicle
 - TravelMode
 - UnloadingPolicy
 - LoadLimit
 - Interval
 - DurationLimit
 - DistanceLimit
 - BreakRule
 - BreakRequest
 - FrequencyConstraint
 - DurationDistanceMatrix
 - 行
 - TransitionAttributes
 - ShipmentTypeIncompatibility(ShipmentTypeIncompatibility)
 - IncompatibilityMode
 - ShipmentTypeRequirement
 - RequirementMode
 - PrecedenceRule
 
出荷モデルには、車両のセットで実施する必要がある一連の出荷が含まれ、次の合計値となる総コストが最小限に抑えられます。
- 車両のルーティング費用(合計時間あたりの費用、移動時間あたりの費用、すべての車両の固定費用の合計)。
 - 未履行配送ペナルティが科されます
 - 配送のグローバル期間の費用
 
| JSON 表現 | 
|---|
{ "shipments": [ { object (  | 
            
| フィールド | |
|---|---|
shipments[] | 
              
                 
 モデルで実行する必要がある配送セット。  | 
            
vehicles[] | 
              
                 
 訪問に使用できる車両のセット。  | 
            
globalStartTime | 
              
                 
 モデルのグローバルな開始時間と終了時間: この範囲外の時刻は有効と見なされません。 モデルの時間範囲は 1 年未満にする必要があります。つまり、 
 RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例:   | 
            
globalEndTime | 
              
                 
 設定しない場合、1971 年 1 月 1 日 00:00:00 UTC(秒: 31536000、nanos: 0)がデフォルトで使用されます。 RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例:   | 
            
globalDurationCostPerHour | 
              
                 
 全体的なプランの「グローバルな期間」は、すべての車両の有効な開始時間の最も早い時間と有効な終了時間の最も遅い時間の差です。ユーザーは、その数量に 1 時間あたりの費用を割り当てることで、たとえばジョブの完了を最短にするように最適化できます。この費用は   | 
            
durationDistanceMatrices[] | 
              
                 
 モデルで使用する期間行列と距離行列を指定します。このフィールドが空の場合、 使用例: 
 
  | 
            
durationDistanceMatrixSrcTags[] | 
              
                 
 滞在時間および距離行列のソースを定義するタグです。 タグは   | 
            
durationDistanceMatrixDstTags[] | 
              
                 
 所要時間と距離のマトリックスの宛先を定義するタグ。 タグは   | 
            
transitionAttributes[] | 
              
                 
 モデルに追加された遷移属性。  | 
            
shipmentTypeIncompatibilities[] | 
              
                 
 互換性のない shipment_types のセット(  | 
            
shipmentTypeRequirements[] | 
              
                 
 
  | 
            
precedenceRules[] | 
              
                 
 モデルに適用する必要がある一連の優先順位ルール。  | 
            
maxActiveVehicles | 
              
                 
 アクティブな車両の最大数を制限します。ルートで少なくとも 1 回の配送が行われる車両はアクティブです。これは、ドライバーの数よりも車両の数が少なかったり、車両のフリートが異種である場合に、ルートの数を制限するために使用できます。最適化により、使用する最適な車両のサブセットが選択されます。真に正である必要があります。  | 
            
配送
1 つの商品の配送(集荷から配達まで)。配送済みと見なされるには、車両がいずれかの集荷場所を訪問し(それに応じて予備容量を減らしてから)、後でいずれかの配達場所を訪問する必要があります(そのため、それに応じて予備容量を再度増やす必要があります)。
| JSON 表現 | 
|---|
{ "displayName": string, "pickups": [ { object (  | 
              
| フィールド | |
|---|---|
displayName | 
                
                   
 配送のユーザー定義の表示名。最大 63 文字で、UTF-8 文字を使用できます。  | 
              
pickups[] | 
                
                   
 配送に関連付けられている受け取りの代替手段のセット。指定されていない場合、車両は配達に対応する場所を訪問するだけで済みます。  | 
              
deliveries[] | 
                
                   
 配送に関連付けられた配送方法のセット。指定されていない場合、車両は乗車に対応する場所を訪問するだけで済みます。  | 
              
loadDemands | 
                
                   
 荷物の積荷需要(重量、体積、パレット数など)。マップ内のキーは、対応する負荷のタイプを示す識別子である必要があります。また、単位も含めることが理想的です。例: 「weight_kg」、「volume_gallons」、「pallet_count」など。指定されたキーがマップにない場合、対応する負荷は null と見なされます。 
  | 
              
allowedVehicleIndices[] | 
                
                   
 この配送を実行できる車両のセット。空白の場合、すべての車両が実行する可能性があります。車両は、  | 
              
costsPerVehicle[] | 
                
                   
 この荷物が各車両で配達されたときに発生する費用を指定します。指定する場合は、次のいずれかが必要です。 
 これらの費用は   | 
              
costsPerVehicleIndices[] | 
                
                   
 
  | 
              
pickupToDeliveryAbsoluteDetourLimit | 
                
                   
 受け取りから配達までの最短経路と比較して、最大絶対迂回時間を指定します。指定する場合は負の値以外にする必要があります。また、配送には少なくとも受け取りと宅配の 1 つが含まれている必要があります。 たとえば、t は、選択した集荷オプションから選択した配送オプションに直接移動するのにかかる最短時間とします。次に、 同じ配送に相対的制限と絶対的制限の両方が指定されている場合は、受け取りと配達の組み合わせごとに、より制限の厳しい制限が適用されます。2017 ~ 2010 年現在、迂回運転は、移動時間が車両に依存しない場合にのみサポートされます。 
  | 
              
pickupToDeliveryTimeLimit | 
                
                   
 荷物の集荷から配達を開始するまでの最長期間を指定します。指定する場合は負の値を指定してください。配送には少なくとも受け取りと宅配の 1 つが含まれている必要があります。これは、受け取りと配達のためにどの代替手段を選択するか、車両の速度には依存しません。これは、最大迂回制約とともに指定できます。ソリューションは両方の指定を尊重します。 
  | 
              
shipmentType | 
                
                   
 この配送の「タイプ」を指定する空でない文字列。この機能は、 1 回の訪問に指定される   | 
              
label | 
                
                   
 この配送のラベルを指定します。このラベルは、対応する   | 
              
ignore | 
                
                   
 true の場合、この配送をスキップしますが、 モデルに  
  | 
              
penaltyCost | 
                
                   
 配送が完了していない場合、このペナルティがルートの総費用に追加されます。集荷と配達の代替手段のいずれかを訪問した場合、配送は完了とみなされます。費用は、モデル内の他のすべての費用関連フィールドで使用されている単位で表すことができ、正の値にする必要があります。 重要: このペナルティが指定されていない場合、無限と見なされます。つまり、配送が完了する必要があります。  | 
              
pickupToDeliveryRelativeDetourLimit | 
                
                   
 集荷から配達までの最短経路と比較した、迂回経路の最大相対時間を指定します。指定する場合は負の値以外にする必要があります。また、配送には少なくとも受け取りと宅配の 1 つが含まれている必要があります。 たとえば、t は、選択した集荷オプションから選択した配送オプションに直接移動するのにかかる最短時間とします。次に、 同じ配送に相対的制限と絶対的制限の両方が指定されている場合は、受け取りと配達の組み合わせごとに、より制限の厳しい制限が適用されます。2017 ~ 2010 年現在、迂回運転は、移動時間が車両に依存しない場合にのみサポートされます。  | 
              
VisitRequest
車両で可能な訪問のリクエスト: 位置情報(下記参照、2 つ)、時間枠で表される開店時間と閉店時間、サービス提供期間(車両が荷物の集荷または降車に到着した後の車両が費やした時間)があります。
| JSON 表現 | 
|---|
{ "arrivalLocation": { object (  | 
              
| フィールド | |
|---|---|
arrivalLocation | 
                
                   
 この   | 
              
arrivalWaypoint | 
                
                   
 この   | 
              
departureLocation | 
                
                   
 この   | 
              
departureWaypoint | 
                
                   
 この   | 
              
tags[] | 
                
                   
 訪問リクエストに関連付けられたタグを指定します。空の文字列や重複する文字列は使用できません。  | 
              
timeWindows[] | 
                
                   
 訪問の到着時間を制限する時間枠。車両は到着時間の範囲外に出発する可能性があります。つまり、到着時間と到着時間が時間枠の範囲内である必要はありません。車両が  
 時間枠は重複しないようにする必要があります。つまり、時間枠が重なったり、隣接したりしないようにし、昇順に並べ替える必要があります。 
  | 
              
duration | 
                
                   
 訪問時間(車両が到着してから出発するまでの時間)(想定される待ち時間に追加します。 
  | 
              
cost | 
                
                   
 車両ルートでこの訪問リクエストに対応するための費用。これにより、配送の代替の集荷または配達ごとに異なる費用を支払うことができます。この費用は   | 
              
loadDemands | 
                
                   
 このアクセス リクエストの読み込みデマンド。これは  
  | 
              
visitTypes[] | 
                
                   
 訪問の種類を指定します。これは、車両がこの訪問を完了するために必要な追加の時間を割り当てるために使用されることがあります( 型は 1 回だけ使用できます。  | 
              
label | 
                
                   
 この   | 
              
avoidUTurns | 
                
                   
 この場所で、U ターンを避けたルートを検索するかどうかを指定します。右折 / 左折の回避はベスト エフォートであり、完全に回避できるとは限りません。これは試験運用中の機能であり、動作は変更される可能性があります。  | 
              
LatLng
緯度と経度のペアを表すオブジェクト。これは緯度を表す倍精度値と経度を表す倍精度値のペアで表現されます。特に明記されていない場合、このオブジェクトは WGS84 規格に準拠する必要があります。値は正規化範囲内で指定する必要があります。
| JSON 表現 | 
|---|
{ "latitude": number, "longitude": number }  | 
              
| フィールド | |
|---|---|
latitude | 
                
                   
 緯度(度単位)。範囲 [-90.0, +90.0] 内になければなりません。  | 
              
longitude | 
                
                   
 経度(度単位)。範囲 [-180.0, +180.0] 内になければなりません。  | 
              
ウェイポイント
地点をカプセル化します。ウェイポイントは、VisitRequests の到着位置と出発位置、車両の開始位置と終了位置をマークします。
| JSON 表現 | 
|---|
{ "sideOfRoad": boolean, // Union field  | 
              
| フィールド | |
|---|---|
sideOfRoad | 
                
                   
 省略可。車両が道路の特定の側に停車することを優先して、このウェイポイントの位置を指定します。この値を設定すると、ルートはスポットの中心から偏った側の道路の端に車両を停車できるように、スポットを通過します。このオプションは、移動モードが「歩行」の場合に機能しません。  | 
              
共用体フィールド location_type。場所を表すさまざまな方法。location_type は次のいずれかになります。 | 
              |
location | 
                
                   
 地理座標(オプションの向きを含む)で指定されたポイント。  | 
              
placeId | 
                
                   
 ウェイポイントに関連付けられているスポット プレイス ID。  | 
              
場所
ロケーション(地理的なポイント、ヘディング(任意))をカプセル化します。
| JSON 表現 | 
|---|
{
  "latLng": {
    object ( | 
              
| フィールド | |
|---|---|
latLng | 
                
                   
 ウェイポイントの地理座標。  | 
              
heading | 
                
                   
 トラフィック フローの方向に関連付けられたコンパス方位。この値は、乗車と降車に使用する道路の側面を指定するために使用されます。向きの値は 0~360 の範囲で指定できます。0 は真北の向き、90 は真東の向きなどを指定します。  | 
              
TimeWindow
時間帯は、訪問の到着時間や車両の開始時間と終了時間など、イベントの時間を制限します。
厳密な時間枠の境界(startTime と endTime)は、イベントの最も早い時刻と最も遅い時刻を適用します(startTime <= event_time <=
          endTime など)。ソフト時間枠の下限 softStartTime は、イベントが softStartTime より前に発生した場合、発生までの時間に比例した費用が発生するため、イベントが softStartTime 以降に発生することを優先することを表します。ソフトタイム ウィンドウの上限(softEndTime)は、softEndTime またはその前にイベントが発生することを優先し、softEndTime の後、イベントが発生する時間の長さに比例する費用を発生させます。startTime、endTime、softStartTime、softEndTime は、グローバル時間制限(ShipmentModel.global_start_time と ShipmentModel.global_end_time を参照)内で、以下を遵守する必要があります。
  0 <= `startTime` <= `endTime` and
  0 <= `startTime` <= `softStartTime` and
  0 <= `softEndTime` <= `endTime`.
| JSON 表現 | 
|---|
{ "startTime": string, "endTime": string, "softStartTime": string, "softEndTime": string, "costPerHourBeforeSoftStartTime": number, "costPerHourAfterSoftEndTime": number }  | 
              
| フィールド | |
|---|---|
startTime | 
                
                   
 ハードタイム ウィンドウの開始時間。指定しない場合は、 RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例:   | 
              
endTime | 
                
                   
 ハードタイム ウィンドウの終了時刻。指定しない場合、 RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例:   | 
              
softStartTime | 
                
                   
 時間枠のソフト開始時間。 RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例:   | 
              
softEndTime | 
                
                   
 時間枠のソフト終了時間。 RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例:   | 
              
costPerHourBeforeSoftStartTime | 
                
                   
 イベントが softStartTime より前に発生した場合にモデル内の他の費用に追加される 1 時間あたりの費用。次のように計算されます。 この費用は正の値にする必要があります。このフィールドは、softStartTime が設定されている場合にのみ設定できます。  | 
              
costPerHourAfterSoftEndTime | 
                
                   
 イベントが  この費用は正数でなければならず、このフィールドは   | 
              
車両
配送の問題で車両をモデル化します。配送に関する問題を解決すると、この車両の startLocation から endLocation までのルートが作成されます。経路とは、一連の訪問のことです(ShipmentRoute を参照)。
| JSON 表現 | 
|---|
{ "displayName": string, "travelMode": enum (  | 
              
| フィールド | |
|---|---|
displayName | 
                
                   
 車両のユーザー定義の表示名。長さは 63 文字以下で、UTF-8 文字を使用できます。  | 
              
travelMode | 
                
                   
 移動モード。車両が走行できる道路と速度に影響します。  | 
              
startLocation | 
                
                   
 車両が荷物を受け取る前に出発する地理的位置。指定しない場合、車両は最初の乗車から出発します。配送モデルに期間行列と距離行列がある場合、  | 
              
startWaypoint | 
                
                   
 車両が荷物を受け取る前に出発する地理的位置を表す地点。  | 
              
endLocation | 
                
                   
 最後の   | 
              
endWaypoint | 
                
                   
 最後の   | 
              
startTags[] | 
                
                   
 車両のルートの開始点に適用されるタグを指定します。 空の文字列や重複する文字列は使用できません。  | 
              
endTags[] | 
                
                   
 車両のルートの終点に付けられたタグを指定します。 空の文字列や重複する文字列は使用できません。  | 
              
startTimeWindows[] | 
                
                   
 車両が出発地を出発する時間枠。グローバルな時間制限内である必要があります( 同じ繰り返しフィールドに属する時間枠は重複しない必要があります。つまり、時間枠が重なったり、隣接したりすることはできません。また、時間枠は時系列で並べ替える必要があります。 
  | 
              
endTimeWindows[] | 
                
                   
 車両が最終目的地に到着する可能性のある時間帯。グローバル制限時間内である必要があります( 同じ繰り返しフィールドに属する時間枠は重複しない必要があります。つまり、時間枠が重なったり、隣接したりすることはできません。また、時間枠は時系列で並べ替える必要があります。 
  | 
              
unloadingPolicy | 
                
                   
 車両に適用されている荷降ろしに関するポリシー。  | 
              
loadLimits | 
                
                   
 車両の容量(重量、容積、パレット数など)。マップ内のキーは、読み込みタイプの識別子であり、 
  | 
              
costPerHour | 
                
                   
 車両費用: すべての費用を合計し、 車両ルートの 1 時間あたりの費用。この費用は、ルートの所要時間全体に適用されます。所要時間には、移動時間、待ち時間、訪問時間が含まれます。  | 
              
costPerTraveledHour | 
                
                   
 車両ルートの走行 1 時間あたりの費用。この費用は、ルートの移動時間(  | 
              
costPerKilometer | 
                
                   
 車両ルートの 1 キロメートルあたりの費用。この費用は、  | 
              
fixedCost | 
                
                   
 この車両が配送の処理に使用された場合に適用される固定費。  | 
              
usedIfRouteIsEmpty | 
                
                   
 このフィールドは、ルートで荷物を配送しない車両にのみ適用されます。この場合、車両を中古とみなすべきかどうかを指定します。 true の場合、車両は配送サービスを提供していなくても、開始地点から終了地点まで移動します。また、開始地点から終了地点までの移動に伴う時間と距離の費用が考慮されます。 それ以外の場合は、始点から終点まで移動せず、この車両には   | 
              
routeDurationLimit | 
                
                   
 車両のルートの合計時間に適用される上限。ある   | 
              
travelDurationLimit | 
                
                   
 車両のルートの走行時間に適用される上限。特定の   | 
              
routeDistanceLimit | 
                
                   
 車両のルートの合計距離に適用される制限。ある特定の   | 
              
extraVisitDurationForVisitType | 
                
                   
 visitTypes 文字列から所要時間へのマップを指定します。所要時間は、指定された  訪問リクエストに複数のタイプがある場合は、マップの各タイプに所要時間が追加されます。 
  | 
              
breakRule | 
                
                   
 この車両に適用される休憩スケジュールを記述します。空白の場合、この車両には休憩はスケジュールされません。  | 
              
label | 
                
                   
 この車両のラベルを指定します。このラベルは、対応する   | 
              
ignore | 
                
                   
 true の場合、 
 
  | 
              
travelDurationMultiple | 
                
                   
 この車両の移動時間を増減するために使用できる乗法係数を指定します。たとえば、この値を 2.0 に設定すると、この車両は標準車両の 2 倍の所要時間で移動することになります。この倍率は、訪問時間には影響しません。 警告: 移動時間は、この倍数を適用した後、数値演算を実行する前に最も近い秒単位に丸められます。そのため、乗数の値が小さいと精度が低下する可能性があります。 下記の   | 
              
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 (  | 
              
| フィールド | |
|---|---|
softMaxLoad | 
                
                   
 負荷のソフトリミット。  | 
              
costPerUnitAboveSoftMax | 
                
                   
 この車両のルートで負荷が   | 
              
startLoadInterval | 
                
                   
 ルートの開始時点で許容される車両の積載間隔。  | 
              
endLoadInterval | 
                
                   
 ルートの終点における車両の許容積載間隔。  | 
              
maxLoad | 
                
                   
 許容される最大負荷量。  | 
              
間隔
許容される負荷量の間隔。
| JSON 表現 | 
|---|
{ "min": string, "max": string }  | 
              
| フィールド | |
|---|---|
min | 
                
                   
  | 
              
max | 
                
                   
 許容できる最大負荷。0 以上にする必要があります。指定しない場合、最大負荷は制限されません。両方が指定されている場合は、  | 
              
DurationLimit
車両のルートの最大時間を定義する上限。ハードにもソフトにもできます。
ソフトリミット フィールドを定義する場合は、ソフトマックスしきい値とそれに関連付けられた費用の両方を一緒に定義する必要があります。
| JSON 表現 | 
|---|
{ "maxDuration": string, "softMaxDuration": string, "quadraticSoftMaxDuration": string, "costPerHourAfterSoftMax": number, "costPerSquareHourAfterQuadraticSoftMax": number }  | 
              
| フィールド | |
|---|---|
maxDuration | 
                
                   
 期間を maxDuration 以下に制限するハード制限。 
  | 
              
softMaxDuration | 
                
                   
 ソフトリミットは最大時間制限を適用しませんが、違反するとルートにコストが発生します。この費用は、モデルで定義された他の費用と合計され、同じ単位で表されます。 定義する場合、 
  | 
              
quadraticSoftMaxDuration | 
                
                   
 ソフトリミットでは、最大時間制限は適用されませんが、違反すると、ルートに時間の 2 乗に比例する費用が発生します。この費用は、モデルで定義された他の費用と合計され、同じ単位で表されます。 定義する場合、 
 
  | 
              
costPerHourAfterSoftMax | 
                
                   
 
 費用は正の値にする必要があります。  | 
              
costPerSquareHourAfterQuadraticSoftMax | 
                
                   
 
 期間がしきい値を下回ると、追加費用は 0 になります。しきい値を下回っている場合は、費用は次のように期間によって異なります。 費用は正の値にする必要があります。  | 
              
DistanceLimit
移動可能な最大距離を定義する制限。ハードまたはソフトのいずれかです。
ソフトリミットが定義されている場合、softMaxMeters と costPerKilometerAboveSoftMax の両方を定義し、正の値にする必要があります。
| JSON 表現 | 
|---|
{ "maxMeters": string, "softMaxMeters": string, "costPerKilometerAboveSoftMax": number }  | 
              
| フィールド | |
|---|---|
maxMeters | 
                
                   
 距離を maxMeters 以下に制限するハードリミットです。上限は負でない値にしてください。  | 
              
softMaxMeters | 
                
                   
 ソフトリミットは最大距離制限を適用しませんが、違反すると、モデルで定義されている他の費用に同じ単位で加算される費用が発生します。 定義する場合、softMaxMeters は maxMeters より小さく、負でない値にする必要があります。  | 
              
costPerKilometerAboveSoftMax | 
                
                   
 距離が  費用は正の値にする必要があります。  | 
              
BreakRule
車両の休憩(昼休みなど)を生成するルール。休憩とは、車両が現在の位置でアイドル状態のままで、訪問を実行できない連続した期間です。次のような場合に中断が発生する可能性があります。
- 2 回の訪問間の移動中(訪問の前後を含むが、訪問中は含まない)に発生した場合、その訪問間の移動時間が延長されます。
 - 車両の始動前(休憩の途中で始動しない場合もあります)。この場合、車両の始動時間には影響しません。
 - または車両の終了時間(車両の終了時間も同様)以降に開始します。
 
| JSON 表現 | 
|---|
{ "breakRequests": [ { object (  | 
              
| フィールド | |
|---|---|
breakRequests[] | 
                
                   
 休憩の順序。  | 
              
frequencyConstraints[] | 
                
                   
 複数の   | 
              
BreakRequest
各車両に適用される休憩の順序(数と順序)を事前に把握しておく必要があります。繰り返される BreakRequest は、そのシーケンスを発生させる順序で定義します。時間枠(earliestStartTime / latestStartTime)は重複する場合がありますが、順序との互換性がある必要があります(チェックが入っています)。
| JSON 表現 | 
|---|
{ "earliestStartTime": string, "latestStartTime": string, "minDuration": string }  | 
              
| フィールド | |
|---|---|
earliestStartTime | 
                
                   
 必須。休憩の開始時間の下限(その時間を含む)。 RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例:   | 
              
latestStartTime | 
                
                   
 必須。ブレーク開始の上限(両端を含む)。 RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例:   | 
              
minDuration | 
                
                   
 必須。休憩の最小時間。正の値である必要があります。 
  | 
              
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 | 
                
                   
 必須。この制約の最小休憩時間。非負。 
  | 
              
maxInterBreakDuration | 
                
                   
 必須。 
  | 
              
DurationDistanceMatrix
訪問場所、車両の出発点から訪問までの所要時間と距離の行列を指定します。
| JSON 表現 | 
|---|
{
  "rows": [
    {
      object ( | 
              
| フィールド | |
|---|---|
rows[] | 
                
                   
 期間と距離の行列の行を指定します。  | 
              
vehicleStartTag | 
                
                   
 この所要時間と距離行列を適用する車両を定義するタグ。空の場合、すべての車両に適用されます。マトリックスは 1 つだけです。 各車両の開始は、1 つの行列と完全に一致する必要があります。つまり、 すべての行列の   | 
              
行
期間と距離の行列の行を指定します。
| JSON 表現 | 
|---|
{ "durations": [ string ], "meters": [ number ] }  | 
              
| フィールド | |
|---|---|
durations[] | 
                
                   
 特定の行の所要時間の値。 
  | 
              
meters[] | 
                
                   
 特定の行の距離値。モデル内の距離を参照する費用や制約がない場合は、空のままにできます。それ以外の場合は、  | 
              
TransitionAttributes
ルート上の 2 つの連続した訪問間の遷移の属性を指定します。同じ遷移に複数の TransitionAttributes が適用される場合があります。その場合、すべての追加費用が合計され、最も厳しい制約または上限が適用されます(自然な「AND」セマンティクスに従います)。
| JSON 表現 | 
|---|
{
  "srcTag": string,
  "excludedSrcTag": string,
  "dstTag": string,
  "excludedDstTag": string,
  "cost": number,
  "costPerKilometer": number,
  "distanceLimit": {
    object ( | 
              
| フィールド | |
|---|---|
srcTag | 
                
                   
 これらの属性が適用される(src->dst)遷移のセットを定義するタグ。 ソース訪問または車両の開始が一致するのは、  | 
              
excludedSrcTag | 
                
                   
 
  | 
              
dstTag | 
                
                   
 目的地の訪問または車両の終了は、  | 
              
excludedDstTag | 
                
                   
 
  | 
              
cost | 
                
                   
 この遷移を実行する費用を指定します。これは、モデルの他のすべての費用と同じ単位であり、負の値にすることはできません。既存の他のすべての費用に上乗せされます。  | 
              
costPerKilometer | 
                
                   
 この移行中に移動した距離に適用される 1 キロメートルあたりの費用を指定します。車両に指定されている   | 
              
distanceLimit | 
                
                   
 この遷移中の移動距離の上限を指定します。 2021 年 6 月現在、ソフトリミットのみがサポートされています。  | 
              
delay | 
                
                   
 この移行の際に発生する遅延を指定します。 この遅延は、常に参照元のアクセスが完了した後、リンク先のアクセスが開始される前に発生します。 
  | 
              
ShipmentTypeIncompatibility
配送の種類に応じて、配送間の互換性がないことを示します。互換性のない配送が同じルートに表示されるかどうかは、互換性モードに基づいて制限されます。
| JSON 表現 | 
|---|
{
  "types": [
    string
  ],
  "incompatibilityMode": enum ( | 
              
| フィールド | |
|---|---|
types[] | 
                
                   
 互換性のないタイプのリスト。リスト内の異なる   | 
              
incompatibilityMode | 
                
                   
 互換性がない場合に適用されるモード。  | 
              
IncompatibilityMode
同じルートで互換性のない配送の表示を制限する方法を指定するモード。
| 列挙型 | |
|---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED | 
                未指定の非互換モード。この値は使用しないでください。 | 
NOT_PERFORMED_BY_SAME_VEHICLE | 
                このモードでは、互換性のないタイプの 2 つの配送で同じ車両を共有することはできません。 | 
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY | 
                
 
  | 
              
ShipmentTypeRequirement
shippingType に基づいて、配送間の要件を指定します。要件の詳細は、要件モードによって定義されます。
| JSON 表現 | 
|---|
{
  "requiredShipmentTypeAlternatives": [
    string
  ],
  "dependentShipmentTypes": [
    string
  ],
  "requirementMode": enum ( | 
              
| フィールド | |
|---|---|
requiredShipmentTypeAlternatives[] | 
                
                   
 
  | 
              
dependentShipmentTypes[] | 
                
                   
 
 注:   | 
              
requirementMode | 
                
                   
 要件に適用されるモード。  | 
              
RequirementMode
ルート上の依存する配送の表示を定義するモード。
| 列挙型 | |
|---|---|
REQUIREMENT_MODE_UNSPECIFIED | 
                未指定の要件モード。この値は使用しないでください。 | 
PERFORMED_BY_SAME_VEHICLE | 
                このモードでは、「依存」するすべての配送が少なくとも 1 つの「必須」配送と同じ車両を共有する必要があります。 | 
IN_SAME_VEHICLE_AT_PICKUP_TIME | 
                
 そのため、「依存」する配送の集荷には、次のいずれかが必要です。 
  | 
              
IN_SAME_VEHICLE_AT_DELIVERY_TIME | 
                以前と同じですが、「依存」する荷物は、配達時に車両に「必須」な荷物が積まれている必要があります。 | 
PrecedenceRule
2 つのイベント(各イベントは荷物の集荷または配達)間の優先ルール: 「2 番目」のイベントは、「1 番目」のイベントの開始から少なくとも offsetDuration 後に開始する必要があります。
複数の優先度が同じ(または関連する)イベントを参照できます(例:「B の集荷は A の配送後に行われます」、「C の集荷は B の集荷後に行われます」。
また、優先順位は両方の発送が行われた場合にのみ適用され、それ以外の場合は無視されます。
| JSON 表現 | 
|---|
{ "firstIsDelivery": boolean, "secondIsDelivery": boolean, "offsetDuration": string, "firstIndex": integer, "secondIndex": integer }  | 
              
| フィールド | |
|---|---|
firstIsDelivery | 
                
                   
 「最初」のイベントが配信であるかどうかを示します。  | 
              
secondIsDelivery | 
                
                   
 「2 番目」のイベントが配信かどうかを示します。  | 
              
offsetDuration | 
                
                   
 「first」イベントと「second」イベントの間のオフセット。負の値にすることもできます。 
  | 
              
firstIndex | 
                
                   
 「最初の」イベントの配送インデックス。このフィールドを指定する必要があります。  | 
              
secondIndex | 
                
                   
 「2 回目」のイベントの配送インデックス。このフィールドを指定する必要があります。  |