インデックス
RouteOptimization(インターフェース)AggregatedMetrics(メッセージ)BatchOptimizeToursMetadata(メッセージ)BatchOptimizeToursRequest(メッセージ)BatchOptimizeToursRequest.AsyncModelConfig(メッセージ)BatchOptimizeToursResponse(メッセージ)BreakRule(メッセージ)BreakRule.BreakRequest(メッセージ)BreakRule.FrequencyConstraint(メッセージ)DataFormat(列挙型)DistanceLimit(メッセージ)GcsDestination(メッセージ)GcsSource(メッセージ)InjectedSolutionConstraint(メッセージ)InjectedSolutionConstraint.ConstraintRelaxation(メッセージ)InjectedSolutionConstraint.ConstraintRelaxation.Relaxation(メッセージ)InjectedSolutionConstraint.ConstraintRelaxation.Relaxation.Level(列挙型)InputConfig(メッセージ)Location(メッセージ)OptimizeToursRequest(メッセージ)OptimizeToursRequest.SearchMode(列挙型)OptimizeToursRequest.SolvingMode(列挙型)OptimizeToursResponse(メッセージ)OptimizeToursResponse.Metrics(メッセージ)OptimizeToursValidationError(メッセージ)OptimizeToursValidationError.FieldReference(メッセージ)OutputConfig(メッセージ)Shipment(メッセージ)Shipment.Load(メッセージ)Shipment.VisitRequest(メッセージ)ShipmentModel(メッセージ)ShipmentModel.DurationDistanceMatrix(メッセージ)ShipmentModel.DurationDistanceMatrix.Row(メッセージ)ShipmentModel.PrecedenceRule(メッセージ)ShipmentRoute(メッセージ)ShipmentRoute.Break(メッセージ)ShipmentRoute.EncodedPolyline(メッセージ)ShipmentRoute.Transition(メッセージ)ShipmentRoute.VehicleLoad(メッセージ)ShipmentRoute.Visit(メッセージ)ShipmentTypeIncompatibility(メッセージ)ShipmentTypeIncompatibility.IncompatibilityMode(列挙型)ShipmentTypeRequirement(メッセージ)ShipmentTypeRequirement.RequirementMode(列挙型)SkippedShipment(メッセージ)SkippedShipment.Reason(メッセージ)SkippedShipment.Reason.Code(列挙型)TimeWindow(メッセージ)TransitionAttributes(メッセージ)Vehicle(メッセージ)Vehicle.DurationLimit(メッセージ)Vehicle.LoadLimit(メッセージ)Vehicle.LoadLimit.Interval(メッセージ)Vehicle.TravelMode(列挙型)Vehicle.UnloadingPolicy(列挙型)Waypoint(メッセージ)
RouteOptimization
車でのツアーを最適化するサービス。
特定のタイプのフィールドの有効性:
google.protobuf.Timestamp- 時刻は Unix 時間(1970-01-01T00:00:00+00:00 からの秒数)で表されます。
 - seconds は [0、253402300799] の範囲内([1970-01-01T00:00:00+00:00、9999-12-31T23:59:59+00:00] の範囲内)にする必要があります。
 - nanos は未設定または 0 に設定する必要があります。
 
google.protobuf.Duration- seconds は [0、253402300799] の範囲内([1970-01-01T00:00:00+00:00、9999-12-31T23:59:59+00:00] の範囲内)にする必要があります。
 - nanos は未設定または 0 に設定する必要があります。
 
google.type.LatLng- 緯度は [-90.0, 90.0] の範囲内になければなりません。
 - 経度は [-180.0, 180.0] の範囲内になければなりません。
 - 緯度または経度の少なくとも 1 つがゼロ以外である必要があります。
 
| BatchOptimizeTours | 
|---|
| 
                   
 1 つ以上の  このメソッドは長時間実行オペレーション(LRO)です。最適化の入力( ユーザーは  LRO の  LRO の  
 
  | 
              
| OptimizeTours | 
|---|
| 
                   
 
 
 目標は、 
 
  | 
              
AggregatedMetrics
ShipmentRoute の集計指標(すべての Transition 要素または Visit 要素(またはすべての ShipmentRoute 要素)の OptimizeToursResponse の集計指標)。
| フィールド | |
|---|---|
performed_shipment_count | 
                
                   
 行われた発送回数。集荷と配達のペアは 1 回のみカウントされます。  | 
              
travel_duration | 
                
                  
                   ルートまたはソリューションの合計所要時間。  | 
              
wait_duration | 
                
                  
                   ルートまたはソリューションの合計待ち時間。  | 
              
delay_duration | 
                
                  
                   ルートまたはソリューションの遅延の合計時間。  | 
              
break_duration | 
                
                  
                   ルートまたはソリューションの休憩の合計時間。  | 
              
visit_duration | 
                
                  
                   ルートまたはソリューションの合計訪問時間。  | 
              
total_duration | 
                
                  
                   合計時間は、上記のすべての時間の合計と同じにする必要があります。ルートの場合、以下にも対応します。  | 
              
travel_distance_meters | 
                
                   
 ルートまたはソリューションの合計移動距離。  | 
              
max_loads | 
                
                   
 ルート全体(または解)で達成される最大負荷。このルート(または解)の各量について、すべての   | 
              
BatchOptimizeToursMetadata
この型にはフィールドがありません。
BatchOptimizeToursRequest 呼び出しのオペレーション メタデータ。
BatchOptimizeToursRequest
非同期オペレーションとしてツアーをバッチで最適化するようリクエストします。各入力ファイルには 1 つの OptimizeToursRequest が含まれ、各出力ファイルには 1 つの OptimizeToursResponse が含まれます。リクエストには、ファイルの読み取り/書き込みと解析に関する情報が含まれます。すべての入力ファイルと出力ファイルが同じプロジェクトに存在している必要があります。
| フィールド | |
|---|---|
parent | 
                
                   
 必須。呼び出しを行うターゲット プロジェクトとロケーション。 形式: *  ロケーションが指定されていない場合、リージョンが自動的に選択されます。  | 
              
model_configs[] | 
                
                  
                   必須。各購入モデルの入出力情報(ファイルパス、データ形式など)。  | 
              
AsyncModelConfig
1 つの最適化モデルを非同期で解くための情報。
| フィールド | |
|---|---|
display_name | 
                
                   
 省略可。ユーザー定義のモデル名。ユーザーがエイリアスとして使用してモデルを追跡できます。  | 
              
input_config | 
                
                  
                   必須。入力モデルに関する情報。  | 
              
output_config | 
                
                  
                   必須。目的の出力場所情報。  | 
              
BatchOptimizeToursResponse
この型にはフィールドがありません。
BatchOptimizeToursRequest へのレスポンス。これは、オペレーションの完了後に長時間実行オペレーションで返されます。
BreakRule
車両の休憩時間(昼休みなど)を生成するルール。休憩とは、車両が現在の位置でアイドル状態のままで、訪問を実行できない連続した期間です。休憩が発生する可能性があるのは、次のとおりです。
- 2 回の訪問間の移動中(訪問の前後を含むが、訪問中は含まない)に発生した場合、その訪問間の移動時間が延長されます。
 - または車両の始動前(休憩中に車両が始動しない場合があります)に充電を開始した場合、車両の始動時間には影響しません。
 - または車両の終了後(車両の終了時間も同様)に開始します。
 
| フィールド | |
|---|---|
break_requests[] | 
                
                  
                   休憩の順序。  | 
              
frequency_constraints[] | 
                
                  
                   複数の   | 
              
BreakRequest
各車両に適用される休憩の順序(数と順序)を事前に把握しておく必要があります。繰り返される BreakRequest は、そのシーケンスを発生させる順序で定義します。時間枠(earliest_start_time / latest_start_time)は重複してもかまいませんが、注文と互換性がある必要があります(この点はチェックされます)。
| フィールド | |
|---|---|
earliest_start_time | 
                
                  
                   必須。休憩の開始時間の下限(その時間を含む)。  | 
              
latest_start_time | 
                
                  
                   必須。休憩の開始時間の上限(端を含む)。  | 
              
min_duration | 
                
                  
                   必須。休憩の最小時間。正の値である必要があります。  | 
              
FrequencyConstraint
「12 時間ごとに 1 時間以上の休憩が必要」など、休憩の最小頻度を適用することで、上記の休憩の頻度と時間をさらに制限できます。これは「12 時間のスライディング タイム ウィンドウ内に、1 時間以上の休憩を 1 回以上設けること」と解釈できます。この例は、次の FrequencyConstraint に変換されます。
{
   min_break_duration { seconds: 3600 }         # 1 hour.
   max_inter_break_duration { 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
| フィールド | |
|---|---|
min_break_duration | 
                
                  
                   必須。この制約の最小休憩時間。正の値。  | 
              
max_inter_break_duration | 
                
                  
                   必須。  | 
              
DataFormat
入力ファイルと出力ファイルのデータ形式。
| 列挙型 | |
|---|---|
DATA_FORMAT_UNSPECIFIED | 
                無効な値です。形式は UNSPECIFIED にする必要があります。 | 
JSON | 
                JavaScript Object Notation。 | 
PROTO_TEXT | 
                プロトコル バッファのテキスト形式。https://protobuf.dev/reference/protobuf/textformat-spec/ をご覧ください。 | 
DistanceLimit
移動可能な最大距離を定義する制限。ハードまたはソフトのいずれかです。
ソフトリミットが定義されている場合、soft_max_meters と cost_per_kilometer_above_soft_max の両方を定義し、正の値にする必要があります。
| フィールド | |
|---|---|
max_meters | 
                
                   
 距離を max_meters 以下に制限するハード制限。上限は正の値にする必要があります。  | 
              
soft_max_meters | 
                
                   
 ソフトリミットは最大距離制限を適用しませんが、違反すると、モデルで定義されている他の費用に同じ単位で加算される費用が発生します。 定義する場合は、soft_max_meters は max_meters より小さく、正の値にする必要があります。  | 
              
cost_per_kilometer_above_soft_max | 
                
                   
 距離が  費用は正の値にする必要があります。  | 
              
GcsDestination
出力ファイルの書き込み先となる Google Cloud Storage のロケーション。
| フィールド | |
|---|---|
uri | 
                
                   
 必須。Google Cloud Storage URI。  | 
              
GcsSource
入力ファイルの読み取り元となる Google Cloud Storage のロケーション。
| フィールド | |
|---|---|
uri | 
                
                   
 必須。  | 
              
InjectedSolutionConstraint
リクエストに挿入されたソリューション。制限する必要がある訪問とその方法に関する情報が含まれます。
| フィールド | |
|---|---|
routes[] | 
                
                  
                   挿入するソリューションのルート。一部のルートが元のソリューションから除外される場合があります。ルートおよびスキップされた配送は、  | 
              
skipped_shipments[] | 
                
                  
                   注入するソリューションの配送をスキップしました。一部は元のソリューションから省略される場合があります。  | 
              
constraint_relaxations[] | 
                
                  
                   車両のグループを 1 つ以上指定し、制約を緩和するタイミングと緩和度を指定します。このフィールドが空の場合、空ではないすべての車両ルートが完全に制約されます。  | 
              
ConstraintRelaxation
車両のグループに対して、訪問に関する制約を緩和するしきい値と緩和レベルを指定します。skipped_shipment フィールドにリストされている配送はスキップされるように制約されています。つまり、実行できません。
| フィールド | |
|---|---|
relaxations[] | 
                
                  
                   
  | 
              
vehicle_indices[] | 
                
                   
 訪問制約  
  | 
              
リラクゼーション
relaxations が空の場合、routes のすべての訪問の開始時間と順序は完全に制約され、これらのルートに新しい訪問を挿入または追加することはできません。また、車両が空の場合(つまり、訪問がなく、モデルで used_if_route_is_empty が false に設定されている場合)を除き、routes の車両の開始時間と終了時間は完全に制約されます。
relaxations(i).level は、次を満たす訪問 #j に適用される制約緩和レベルを指定します。
route.visits(j).start_time >= relaxations(i).threshold_timeおよびj + 1 >= relaxations(i).threshold_visit_count
同様に、車両の起動は、次の条件を満たしている場合は relaxations(i).level に緩和されます。
vehicle_start_time >= relaxations(i).threshold_timeおよびrelaxations(i).threshold_visit_count == 0と車両の端が、次の条件を満たす場合はrelaxations(i).levelに緩和されます。vehicle_end_time >= relaxations(i).threshold_timeおよびroute.visits_size() + 1 >= relaxations(i).threshold_visit_count
訪問が threshold_visit_count または threshold_time の条件を満たしている場合に緩和レベルを適用するには、同じ level を持つ 2 つの relaxations を追加します。1 つは threshold_visit_count のみを設定し、もう 1 つは threshold_time のみを設定します。1 回のアクセスが複数の relaxations の条件を満たしている場合は、最も緩いレベルが適用されます。その結果、車両の始点からルートの訪問を順にたどって車両の終点に至るまで、リラックス レベルはよりリラックスした状態になります。つまり、ルートの進行に伴ってリラックス レベルが低下することはありません。
relaxations のしきい値条件を満たさないルート訪問のタイミングと順序は完全に制約され、これらのシーケンスに訪問を挿入することはできません。また、車両の始発または終発が緩和条件を満たしていない場合、車両が空でない限り、時刻は固定されます。
| フィールド | |
|---|---|
level | 
                
                  
                   
  | 
              
threshold_time | 
                
                  
                   緩和   | 
              
threshold_visit_count | 
                
                   
 緩和  
  | 
              
レベル
訪問に適用される制約緩和レベルと、しきい値条件を満たした場合に適用される制約緩和レベルを指定します。
以下の列挙は、緩和の度合いが強い順に並べられています。
| 列挙型 | |
|---|---|
LEVEL_UNSPECIFIED | 
                暗黙のデフォルトの緩和レベル: 制約は緩和されません。つまり、すべての訪問が完全に制約されます。 この値は   | 
              
RELAX_VISIT_TIMES_AFTER_THRESHOLD | 
                訪問開始時間と車両の開始時間と終了時間の制限は緩和されますが、各訪問は同じ車両に関連付けられ、訪問の順序は守らなければなりません。訪問の間に挿入したり、前に挿入したりすることはできません。 | 
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD | 
                RELAX_VISIT_TIMES_AFTER_THRESHOLD と同じですが、訪問の順序も緩和されています。訪問は、この車両でのみ実行できますが、実行されない可能性があります。 | 
              
RELAX_ALL_AFTER_THRESHOLD | 
                RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD と同じですが、車両も緩和されています。しきい値時間以降の訪問は完全に無料であり、実行されなくなる可能性があります。 | 
              
InputConfig
[BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours] の入力を指定します。
| フィールド | |
|---|---|
data_format | 
                
                  
                   必須。入力データ形式。  | 
              
共用体フィールド source。必須。source は次のいずれかになります。 | 
              |
gcs_source | 
                
                  
                   Google Cloud Storage のロケーション。これは単一のオブジェクト(ファイル)にする必要があります。  | 
              
場所
ロケーション(地理的なポイント、オプションのヘディング)をカプセル化します。
| フィールド | |
|---|---|
lat_lng | 
                
                  
                   ウェイポイントの地理座標。  | 
              
heading | 
                
                   
 トラフィック フローの方向に関連付けられたコンパス方位。この値は、乗車と降車に使用する道路の側面を指定するために使用されます。向きの値は 0 ~ 360 の範囲で指定できます。0 は真北の向き、90 は真東の向きなどを指定します。  | 
              
OptimizeToursRequest
ツアー最適化ソルバーに渡されるリクエスト。ソルバーは、解決する配送モデルと最適化パラメータを定義します。
| フィールド | |
|---|---|
parent | 
                
                   
 必須。呼び出しを行うターゲット プロジェクトまたはロケーション。 形式: *  ロケーションが指定されていない場合、リージョンが自動的に選択されます。  | 
              
timeout | 
                
                  
                   このタイムアウトが設定されている場合、サーバーはタイムアウト期間が経過する前、または同期リクエストのサーバー期限が切れる前に、どちらか早い方でレスポンスを返します。 非同期リクエストの場合、サーバーはタイムアウトが切れる前に(可能であれば)ソリューションを生成します。  | 
              
model | 
                
                  
                   解決する配送モデル。  | 
              
solving_mode | 
                
                  
                   デフォルトでは、解法モードは   | 
              
search_mode | 
                
                  
                   リクエストの解決に使用された検索モード。  | 
              
injected_first_solution_routes[] | 
                
                  
                   以前のソリューションに類似した最初のソリューションを見つけるように最適化アルゴリズムをガイドします。 最初のソリューションが構築されると、モデルが制約されます。ルートで実行されない配送は、最初のソリューションで暗黙的にスキップされますが、後続のソリューションで実行される場合があります。 ソリューションは、次の基本的な有効性前提を満たす必要があります。 
 挿入されたソリューションが実行可能でない場合、検証エラーが返されるとは限らず、実行不可を示すエラーが返される場合があります。  | 
              
injected_solution_constraint | 
                
                  
                   最適化アルゴリズムを制約して、以前の解に似た最終解を見つけます。たとえば、すでに完了しているルートや、完了する予定だが変更できないルートの一部をフリーズできます。 挿入されたソリューションが実行可能でない場合、検証エラーが返されるとは限らず、実行不可を示すエラーが返される場合があります。  | 
              
refresh_details_routes[] | 
                
                  
                   空でない場合、指定されたルートが更新されます。ただし、訪問の順序や所要時間は変更されず、他の詳細のみが更新されます。これではモデルは解決されません。 2020 年 11 月時点では、空でないルートのポリラインのみが入力され、 渡されたルートの  このフィールドは、 
  | 
              
interpret_injected_solutions_using_labels | 
                
                   
 真の場合: 
 この解釈は、 true の場合、次のカテゴリのラベルは、カテゴリ内で 1 回だけ表示する必要があります。 
 挿入されたソリューションの  挿入されたソリューションからルートの訪問またはルート全体を削除すると、暗黙的な制約に影響し、ソリューションの変更、検証エラー、実現不能につながる可能性があります。 注: 呼び出し元は、各   | 
              
consider_road_traffic | 
                
                   
 
  | 
              
populate_polylines | 
                
                   
 true の場合、レスポンスの   | 
              
populate_transition_polylines | 
                
                   
 true の場合、レスポンス   | 
              
allow_large_deadline_despite_interruption_risk | 
                
                   
 これが設定されている場合、リクエストに最大 60 分の期限(https://grpc.io/blog/deadlines を参照)を設定できます。それ以外の場合、期限は最大で 30 分です。なお、長時間実行されるリクエストは、中断されるリスクが大幅に高くなります(それでも低いリスクです)。  | 
              
use_geodesic_distances | 
                
                   
 true の場合、Google マップの距離ではなく測地線距離を使用して移動距離が計算され、  | 
              
label | 
                
                   
 このリクエストの識別に使用できるラベル。  | 
              
geodesic_meters_per_second | 
                
                   
 
  | 
              
max_validation_errors | 
                
                   
 返される検証エラーの数を切り捨てます。通常、これらのエラーは、solving_mode=VALIDATE_ONLY の場合を除き、BadRequest エラーの詳細(https://cloud.google.com/apis/design/errors#error_details)として INVALID_ARGUMENT エラー ペイロードに関連付けられます。  | 
              
SearchMode
検索の動作を定義するモード。レイテンシとソリューションの品質のトレードオフを行います。どのモードでも、グローバル リクエストの期限が適用されます。
| 列挙型 | |
|---|---|
SEARCH_MODE_UNSPECIFIED | 
                検索モードが指定されていません(RETURN_FAST と同等)。 | 
              
RETURN_FAST | 
                最初の適切な解決策を見つけたら、検索を停止します。 | 
CONSUME_ALL_AVAILABLE_TIME | 
                できるだけ多くの時間をかけて、より良い解決策を探します。 | 
SolvingMode
ソルバがリクエストを処理する方法を定義します。VALIDATE_ONLY 以外のすべてのモードで、リクエストが無効な場合、INVALID_REQUEST エラーが返されます。返されるエラーの数を制限するには、max_validation_errors をご覧ください。
| 列挙型 | |
|---|---|
DEFAULT_SOLVE | 
                モデルを解く。警告は [OptimizeToursResponse.validation_errors][google.cloud.optimization.v1.OptimizeToursResponse.validation_errors] で出力される場合があります。 | 
VALIDATE_ONLY | 
                モデルを解決せずに検証のみを行います。可能な限り多くの OptimizeToursResponse.validation_errors を入力します。 | 
              
DETECT_SOME_INFEASIBLE_SHIPMENTS | 
                
 重要: 不可能な配送はすべて返されるわけではなく、前処理中に不可能な配送として検出された配送のみが返されます。  | 
              
OptimizeToursResponse
ルート最適化問題を解決した後のレスポンス。各車両が走行するルート、スキップされた配送、ソリューションの総費用が含まれます。
| フィールド | |
|---|---|
routes[] | 
                
                  
                   各車両に対して計算されたルート。i 番目のルートは、モデル内の i 番目の車両に対応します。  | 
              
request_label | 
                
                   
 
  | 
              
skipped_shipments[] | 
                
                  
                   スキップされたすべての配送のリスト。  | 
              
validation_errors[] | 
                
                  
                   独立して検出できたすべての検証エラーのリスト。  | 
              
metrics | 
                
                  
                   このソリューションの所要時間、距離、使用状況の指標。  | 
              
指標
すべてのルートを集計した全体的な指標。
| フィールド | |
|---|---|
aggregated_route_metrics | 
                
                  
                   ルート全体で集計されます。各指標は、同じ名前のすべての   | 
              
skipped_mandatory_shipment_count | 
                
                   
 スキップされた必須配送の数。  | 
              
used_vehicle_count | 
                
                   
 使用される車両の数。注: 車両のルートが無効で   | 
              
earliest_vehicle_start_time | 
                
                  
                   中古車の開始時間の開始時間。  | 
              
latest_vehicle_end_time | 
                
                  
                   中古車の最終終了時間。すべての中古車の   | 
              
costs | 
                
                   
 ソリューションの費用(費用関連のリクエスト フィールド別)。キーは、入力 OptimizeToursRequest を基準としたプロトパスです(例: model.shipments.pickups.cost)。値は、対応する費用フィールドによって生成された合計費用で、ソリューション全体で集計されます。つまり、costs["model.shipments.pickups.cost"] は、ソリューション全体の集荷費用の合計です。モデルで定義されているすべての費用が、ここで詳細にレポートされます。ただし、TransitionAttributes に関連する費用は、2022 年 1 月時点では集計された形でのみレポートされます。  | 
              
total_cost | 
                
                   
 ソリューションの合計費用。費用マップ内のすべての値の合計。  | 
              
OptimizeToursValidationError
OptimizeToursRequest の検証中に発生したエラーまたは警告を説明します。
| フィールド | |
|---|---|
code | 
                
                   
 検証エラーは、常に存在するペア( その他のフィールド(下記)には、エラーに関する詳細情報が表示されます。 複数のエラー: エラーが複数ある場合、検証プロセスは複数のエラーを出力しようとします。コンパイラと同様に、これは不完全なプロセスです。検証エラーの中には「致命的」なものがあり、検証プロセス全体が停止します。これは、 安定性:  参照: すべての(コード、名前)ペアのリスト。 
  | 
              
display_name | 
                
                   
 エラーの表示名。  | 
              
fields[] | 
                
                  
                   エラーのコンテキストには、0、1(ほとんどの場合)、またはそれ以上のフィールドが含まれる場合があります。たとえば、車両番号 4 と配送番号 2 の最初の集荷を参照するには、次のようにします。 ただし、特定のエラーコードに対して   | 
              
error_message | 
                
                   
 エラーを説明する、人が読める形式の文字列。 安定性: 安定性なし: 特定の   | 
              
offending_values | 
                
                   
 フィールドの値を含めることができます。これは常に利用できるとは限りません。絶対に頼らず、モデルの手動デバッグにのみ使用してください。  | 
              
FieldReference
検証エラーのコンテキストを指定します。FieldReference は常にこのファイル内の特定のフィールドを参照し、同じ階層構造に従います。たとえば、車両 #5 の start_time_windows の要素 #2 を次のように指定できます。
name: "vehicles" index: 5 sub_field { name: "end_time_windows" index: 2 }
ただし、メッセージが混雑しないように、OptimizeToursRequest や ShipmentModel などの最上位エンティティは省略されます。
| フィールド | |
|---|---|
name | 
                
                   
 フィールドの名前(例: 「vehicles」  | 
              
sub_field | 
                
                  
                   必要に応じて、再帰的にネストされたサブフィールド。  | 
              
共用体フィールド  
  | 
              |
index | 
                
                   
 フィールドが繰り返される場合のインデックス。  | 
              
key | 
                
                   
 フィールドがマップの場合のキー。  | 
              
OutputConfig
[BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours] の結果の宛先を指定します。
| フィールド | |
|---|---|
data_format | 
                
                  
                   必須。出力データ形式。  | 
              
共用体フィールド destination。必須。destination は次のいずれかになります。 | 
              |
gcs_destination | 
                
                  
                   出力を書き込む Google Cloud Storage の場所。  | 
              
配送
1 つの商品の配送(集荷から配達まで)。配送が完了したと見なされるには、1 台の車両が集荷場所のいずれかに立ち寄り(それに応じて予備の容量を減らします)、その後、配送先のいずれかに立ち寄る(それに応じて予備の容量を再び増やします)必要があります。
| フィールド | |
|---|---|
display_name | 
                
                   
 配送のユーザー定義の表示名。最大 63 文字で、UTF-8 文字を使用できます。  | 
              
pickups[] | 
                
                  
                   配送に関連付けられた一連の集荷オプション。指定しない場合、車両は配達先に対応する場所にのみ移動する必要があります。  | 
              
deliveries[] | 
                
                  
                   配送に関連付けられた配送方法のセット。指定しない場合、車両は集荷に対応する場所にのみ立ち寄る必要があります。  | 
              
load_demands | 
                
                   
 荷物の積載量(重量、容積、パレット数など)。マップのキーは、対応する負荷のタイプを記述する識別子である必要があります。理想的には、単位も含めます。たとえば、「weight_kg」、「volume_gallons」、「pallet_count」などです。特定のキーがマップにない場合、対応する負荷は null と見なされます。  | 
              
allowed_vehicle_indices[] | 
                
                   
 この配送を実行できる車両のセット。空白の場合、すべての車両が実行する可能性があります。車両は、  | 
              
costs_per_vehicle[] | 
                
                   
 この配送が各車両で配達される際に発生する費用を指定します。指定する場合は、次のいずれかが必要です。 
 これらの費用は   | 
              
costs_per_vehicle_indices[] | 
                
                   
 
  | 
              
pickup_to_delivery_absolute_detour_limit | 
                
                  
                   集荷から配達までの最短経路と比較した、迂回経路の絶対的な最大所要時間を指定します。指定する場合は、正の値にする必要があります。また、配送には少なくとも集荷と配達が含まれている必要があります。 たとえば、t は、選択した集荷オプションから選択した配送オプションに直接移動するのにかかる最短時間とします。次に、 同じ配送で相対制限と絶対制限の両方が指定されている場合、可能な集荷/配達ペアごとに、より制限の厳しい制限が使用されます。2017 年 10 月現在、迂回路は、移動時間が車両に依存しない場合にのみサポートされています。  | 
              
pickup_to_delivery_time_limit | 
                
                  
                   集荷の開始から配送の開始までの最大時間を指定します。指定する場合は、正の値にする必要があります。また、配送には少なくとも集荷と配達が含まれている必要があります。これは、受け取りと配送に選択した代替手段や、車両の速度には依存しません。これは、最大迂回制約とともに指定できます。ソリューションは両方の指定を尊重します。  | 
              
shipment_type | 
                
                   
 この配送の「タイプ」を指定する空でない文字列。この機能は、 1 回の訪問に指定される   | 
              
label | 
                
                   
 この配送のラベルを指定します。このラベルは、対応する   | 
              
ignore | 
                
                   
 true の場合、この配送をスキップしますが、 配送を無視すると、モデルに  
  | 
              
penalty_cost | 
                
                   
 配送が完了しなかった場合、このペナルティはルートの総費用に追加されます。集荷と配送のいずれかのオプションが実施された場合、配送は完了と見なされます。費用は、モデル内の他のすべての費用関連フィールドで使用されているのと同じ単位で表すことができ、正の値にする必要があります。 重要: このペナルティが指定されていない場合、ペナルティは無限と見なされ、配送が完了する必要があります。  | 
              
pickup_to_delivery_relative_detour_limit | 
                
                   
 集荷から配達までの最短経路と比較した、迂回経路の最大相対時間を指定します。指定する場合は、正の値にする必要があります。また、配送には少なくとも集荷と配達が含まれている必要があります。 たとえば、t は、選択した集荷オプションから選択した配送オプションに直接移動するのにかかる最短時間とします。次に、 同じ配送で相対制限と絶対制限の両方が指定されている場合、可能な集荷/配達ペアごとに、より制限の厳しい制限が使用されます。2017 年 10 月現在、迂回路は、移動時間が車両に依存しない場合にのみサポートされています。  | 
              
読み込み
訪問時に、集荷の場合は事前定義された量が車両の積載量に加算され、配達の場合は減算されます。このメッセージでその金額を定義します。load_demands をご覧ください。
| フィールド | |
|---|---|
amount | 
                
                   
 対応する訪問を実施する車両の負荷が増加する量は異なります。整数であるため、精度が失われることのないよう、適切な単位を選択することをおすすめします。0 以上である必要があります。  | 
              
VisitRequest
車両で実施できる訪問のリクエスト: 地理的位置(2 つまで、下記を参照)、時間帯で表される営業時間と閉店時間、サービス時間(車両が到着してから商品の集荷または配達を完了するまでの時間)。
| フィールド | |
|---|---|
arrival_location | 
                
                  
                   この   | 
              
arrival_waypoint | 
                
                  
                   この   | 
              
departure_location | 
                
                  
                   この   | 
              
departure_waypoint | 
                
                  
                   この   | 
              
tags[] | 
                
                   
 訪問リクエストに関連付けられたタグを指定します。空の文字列や重複する文字列は使用できません。  | 
              
time_windows[] | 
                
                  
                   訪問の到着時間を制限する時間枠。車両は到着時間の枠外に出発する場合があります。つまり、到着時間と所要時間が時間枠内に収まる必要はありません。車両が  
 時間枠は重複しないようにする必要があります。つまり、時間枠が重なったり、隣接したりしないようにする必要があります。また、時間枠は昇順に並べ替える必要があります。 
  | 
              
duration | 
                
                  
                   訪問時間(車両が到着してから出発するまでの時間)(想定される待ち時間に追加します。  | 
              
cost | 
                
                   
 車両ルートでこの訪問リクエストに対応するための費用。これにより、荷物の代替の集荷または配送ごとに異なる費用を支払うことができます。この費用は   | 
              
load_demands | 
                
                   
 このアクセス リクエストの読み込みデマンド。これは   | 
              
visit_types[] | 
                
                   
 訪問の種類を指定します。車両がこの訪問を完了するために必要な追加時間を割り当てるために使用できます( 型は 1 回だけ使用できます。  | 
              
label | 
                
                   
 この   | 
              
avoid_u_turns | 
                
                   
 この場所で、運転ルートで U ターンを回避するかどうかを指定します。右折 / 左折の回避はベスト エフォートであり、完全に回避できるとは限りません。これは試験運用中の機能であり、動作は変更される可能性があります。  | 
              
ShipmentModel
配送モデルには、一連の車両によって実行される一連の配送が含まれます。このモデルでは、次の合計である総費用を最小限に抑えます。
- 車両のルーティング費用(合計時間あたりの費用、移動時間あたりの費用、すべての車両の固定費用の合計)。
 - 未実施の配送に対するペナルティ。
 - 配送のグローバル期間の費用
 
| フィールド | |
|---|---|
shipments[] | 
                
                  
                   モデルで実行する必要がある配送セット。  | 
              
vehicles[] | 
                
                  
                   訪問に使用できる車両のセット。  | 
              
global_start_time | 
                
                  
                   モデルのグローバルな開始時間と終了時間: この範囲外の時間は無効と見なされます。 モデルの時間範囲は 1 年未満にする必要があります。つまり、 
  | 
              
global_end_time | 
                
                  
                   未設定の場合、デフォルトとして 1971 年 1 月 1 日 00:00:00 UTC(秒: 31536000、ナノ秒: 0)が使用されます。  | 
              
global_duration_cost_per_hour | 
                
                   
 全体的なプランの「グローバルな期間」は、すべての車両の有効な開始時間の最も早い時間と有効な終了時間の最も遅い時間の差です。ユーザーは、その数量に 1 時間あたりの費用を割り当てることで、たとえばジョブの完了を最短にするように最適化できます。この費用は   | 
              
duration_distance_matrices[] | 
                
                  
                   モデルで使用される所要時間と距離のマトリックスを指定します。このフィールドが空の場合は、 使用例: 
 
  | 
              
duration_distance_matrix_src_tags[] | 
                
                   
 所要時間と距離の行列のソースを定義するタグ。 タグは   | 
              
duration_distance_matrix_dst_tags[] | 
                
                   
 所要時間と距離のマトリックスの宛先を定義するタグ。 タグは   | 
              
transition_attributes[] | 
                
                  
                   モデルに追加された遷移属性。  | 
              
shipment_type_incompatibilities[] | 
                
                  
                   互換性のない shipment_types のセット(  | 
              
shipment_type_requirements[] | 
                
                  
                   
  | 
              
precedence_rules[] | 
                
                  
                   モデルで適用する必要がある優先ルールのセット。  | 
              
max_active_vehicles | 
                
                   
 アクティブな車両の最大数を制限します。車両がアクティブであるのは、そのルートで 1 件以上の配送が行われている場合です。これは、運転手の数よりも車両の数が少なかったり、車両のフリートが異種である場合に、ルートの数を制限するために使用できます。最適化によって、使用する最適な車両のサブセットが選択されます。真に正である必要があります。  | 
              
DurationDistanceMatrix
訪問と車両の出発地から訪問と車両の終点までの所要時間と距離のマトリックスを指定します。
| フィールド | |
|---|---|
rows[] | 
                
                  
                   所要時間と距離のマトリックスの行を指定します。  | 
              
vehicle_start_tag | 
                
                   
 この所要時間と距離のマトリクスが適用される車両を定義するタグ。空白の場合は、すべての車両に適用されます。また、マトリックスは 1 つだけ指定できます。 各車両の開始は、1 つの行列と完全に一致する必要があります。つまり、 すべての行列の   | 
              
行
所要時間と距離のマトリックスの行を指定します。
| フィールド | |
|---|---|
durations[] | 
                
                  
                   特定の行の所要時間の値。  | 
              
meters[] | 
                
                   
 特定の行の距離値。モデル内の距離を参照する費用や制約がない場合は、空のままにできます。それ以外の場合は、  | 
              
PrecedenceRule
2 つのイベント(各イベントは荷物の集荷または配達)間の優先ルール: 「2 番目」のイベントは、「1 番目」のイベントの開始から少なくとも offset_duration 後に開始する必要があります。
複数の優先度が同じ(または関連する)イベントを参照できます(例:「B の集荷は A の配達後に行われる」と「C の集荷は B の集荷後に行われる」
また、優先順位は、両方の配送が実行される場合にのみ適用され、それ以外の場合は無視されます。
| フィールド | |
|---|---|
first_is_delivery | 
                
                   
 「最初の」イベントが配信かどうかを示します。  | 
              
second_is_delivery | 
                
                   
 「2 番目」のイベントが配信かどうかを示します。  | 
              
offset_duration | 
                
                  
                   「first」イベントと「second」イベントの間のオフセット。負の値にすることもできます。  | 
              
first_index | 
                
                   
 「最初の」イベントの発送インデックス。このフィールドは指定する必要があります。  | 
              
second_index | 
                
                   
 「2 番目」のイベントの発送インデックス。このフィールドは指定する必要があります。  | 
              
ShipmentRoute
車両のルートを時間軸に沿って分解すると、次のようなようになります(n 回の訪問があると仮定します)。
  |            |            |          |       |  T[2], |        |      |
  | Transition |  Visit #0  |          |       |  V[2], |        |      |
  |     #0     |    aka     |   T[1]   |  V[1] |  ...   | V[n-1] | T[n] |
  |  aka T[0]  |    V[0]    |          |       | V[n-2],|        |      |
  |            |            |          |       | T[n-1] |        |      |
  ^            ^            ^          ^       ^        ^        ^      ^
vehicle    V[0].start   V[0].end     V[1].   V[1].    V[n].    V[n]. vehicle
 start     (arrival)   (departure)   start   end      start    end     end
以下の違いにご注意ください。
- 車両の開始と終了、各訪問の開始と終了(到着と出発)などの「正確なイベント」。特定の秒に発生します。
 - 「時間間隔」: 訪問自体や訪問間の遷移など。時間間隔の継続時間がゼロ(開始時間と終了時間が同じ秒)になることもありますが、多くの場合、継続時間は正の値になります。
 
不変条件:
- 訪問が n 回ある場合、遷移は n+1 回あります。
 - 訪問は常に、その前(同じインデックス)と後(インデックス + 1)の遷移に囲まれます。
 - 車両の始動には常に遷移 #0 が続きます。
 - 車両の終了には、常に遷移 #n が先行します。
 
詳しく説明すると、Transition と Visit の処理は次のようになります。
---+-------------------------------------+-----------------------------+-->
   |           TRANSITION[i]             |           VISIT[i]          |
   |                                     |                             |
   |  * TRAVEL: the vehicle moves from   |      PERFORM the visit:     |
   |    VISIT[i-1].departure_location to |                             |
   |    VISIT[i].arrival_location, which |  * Spend some time:         |
   |    takes a given travel duration    |    the "visit duration".    |
   |    and distance                     |                             |
   |                                     |  * Load or unload           |
   |  * BREAKS: the driver may have      |    some quantities from the |
   |    breaks (e.g. lunch break).       |    vehicle: the "demand".   |
   |                                     |                             |
   |  * WAIT: the driver/vehicle does    |                             |
   |    nothing. This can happen for     |                             |
   |    many reasons, for example when   |                             |
   |    the vehicle reaches the next     |                             |
   |    event's destination before the   |                             |
   |    start of its time window         |                             |
   |                                     |                             |
   |  * DELAY: *right before* the next   |                             |
   |    arrival. E.g. the vehicle and/or |                             |
   |    driver spends time unloading.    |                             |
   |                                     |                             |
---+-------------------------------------+-----------------------------+-->
   ^                                     ^                             ^
V[i-1].end                           V[i].start                    V[i].end
最後に、移行中に TRAVEL、BREAKS、DELAY、WAIT を配置する方法について説明します。
- 重複していない。
 - DELAY は一意で、次の訪問(または車両の終了)の直前にある連続した期間である必要があります。したがって、遅延時間がわかれば、開始時間と終了時間を把握できます。
 - BREAKS は、連続した重複しない期間です。レスポンスには、各休憩の開始時間と所要時間が指定されます。
 - TRAVEL と WAIT は「プリエンプト可能」です。この遷移中に複数回中断できます。クライアントは、移動は「できるだけ早く」行われ、残りの時間は「待機」で埋められると想定できます。
 
(複雑な)例:
                               TRANSITION[i]
--++-----+-----------------------------------------------------------++-->
  ||     |       |           |       |           |         |         ||
  ||  T  |   B   |     T     |       |     B     |         |    D    ||
  ||  r  |   r   |     r     |   W   |     r     |    W    |    e    ||
  ||  a  |   e   |     a     |   a   |     e     |    a    |    l    ||
  ||  v  |   a   |     v     |   i   |     a     |    i    |    a    ||
  ||  e  |   k   |     e     |   t   |     k     |    t    |    y    ||
  ||  l  |       |     l     |       |           |         |         ||
  ||     |       |           |       |           |         |         ||
--++-----------------------------------------------------------------++-->
| フィールド | |
|---|---|
vehicle_index | 
                
                   
 ルートを実行する車両。ソース   | 
              
vehicle_label | 
                
                   
 このルートを運行する車両のラベル(指定されている場合は   | 
              
vehicle_start_time | 
                
                  
                   車両がルートを開始する時刻。  | 
              
vehicle_end_time | 
                
                  
                   車両がルートを完了した時刻。  | 
              
visits[] | 
                
                  
                   ルートを表す訪問地の順序付きシーケンス。visits[i] はルートの i 番目の訪問地です。このフィールドが空の場合、車両は未使用と見なされます。  | 
              
transitions[] | 
                
                  
                   ルートの遷移の順序付きリスト。  | 
              
has_traffic_infeasibilities | 
                
                   
 
 交通渋滞により推定所要時間   | 
              
route_polyline | 
                
                  
                   ルートのエンコードされたポリライン表現。このフィールドは、  | 
              
breaks[] | 
                
                  
                   このルートを運行する車両に設定されている休憩。  | 
              
metrics | 
                
                  
                   このルートの所要時間、距離、負荷の指標。  | 
              
route_costs | 
                
                   
 ルートの費用(費用関連のリクエスト フィールド別)。キーは、入力 OptimizeToursRequest を基準としたプロトパスです(例: model.shipments.pickups.cost)。値は、対応する費用フィールドによって生成された合計費用で、ルート全体で集計されます。つまり、costs["model.shipments.pickups.cost"] は、ルート全体の集荷費用の合計です。モデルで定義されているすべての費用が、ここで詳細にレポートされます。ただし、TransitionAttributes に関連する費用は、2022 年 1 月時点では集計された形でのみレポートされます。  | 
              
route_total_cost | 
                
                   
 ルートの合計費用。費用マップ内のすべての費用の合計。  | 
              
休憩
ブレークの実行を表すデータ。
| フィールド | |
|---|---|
start_time | 
                
                  
                   休憩の開始時間。  | 
              
duration | 
                
                  
                   休憩時間。  | 
              
EncodedPolyline
ポリラインのエンコード表現。ポリラインのエンコードの詳細については、https://developers.google.com/maps/documentation/utilities/polylinealgorithm https://developers.google.com/maps/documentation/javascript/reference/geometry#encoding をご覧ください。
| フィールド | |
|---|---|
points | 
                
                   
 ポリラインのエンコードされた点を示す文字列。  | 
              
移行
ルート上の 2 つのイベント間の遷移。ShipmentRoute の説明をご覧ください。
車両に start_location または end_location がない場合、対応する移動指標は 0 になります。
| フィールド | |
|---|---|
travel_duration | 
                
                  
                   この移行期間中の移動時間。  | 
              
travel_distance_meters | 
                
                   
 移行中に移動した距離。  | 
              
traffic_info_unavailable | 
                
                   
 
  | 
              
delay_duration | 
                
                  
                   この遷移に適用される遅延時間の合計。遅延がある場合は、次のイベント(訪問または車両の終了)の   | 
              
break_duration | 
                
                  
                   この移行中に発生した休憩時間の合計(ある場合)。各休憩の開始時間と所要時間の詳細は   | 
              
wait_duration | 
                
                  
                   この移行中に待機した時間。待ち時間はアイドル時間に対応し、休憩時間は含まれません。また、この待ち時間は連続しない複数の区間に分割される場合があります。  | 
              
total_duration | 
                
                  
                   移行の合計時間(便宜上提供)。次と等しくなります。 
  | 
              
start_time | 
                
                  
                   この移行の開始時間。  | 
              
route_polyline | 
                
                  
                   遷移中にたどったルートのエンコードされたポリライン表現。このフィールドは、  | 
              
vehicle_loads | 
                
                   
 この移行中の車両の積載量。この車両の  最初の移行中の負荷は、車両ルートの開始負荷です。その後、各訪問後に、訪問の   | 
              
VehicleLoad
特定のタイプについて、ルートの途中のある地点での車両の実際の負荷を報告します(Transition.vehicle_loads を参照)。
| フィールド | |
|---|---|
amount | 
                
                   
 指定されたタイプにおける車両の負荷量。負荷の単位は通常、タイプで示されます。  | 
              
アクセス
ルート中に実施された訪問。この訪問は、Shipment の集荷または配送に対応します。
| フィールド | |
|---|---|
shipment_index | 
                
                   
 ソース   | 
              
is_pickup | 
                
                   
 true の場合、訪問は   | 
              
visit_request_index | 
                
                   
 
  | 
              
start_time | 
                
                  
                   訪問の開始時間。車両は指定した時間より前に訪問先に到着する場合があります。時刻は   | 
              
load_demands | 
                
                   
 配送と訪問リクエストの合計として、合計訪問負荷需要   | 
              
detour | 
                
                  
                   配達員が訪問する前にルートで配達された荷物や、時間帯制限による待ち時間によって発生する追加の迂回時間。訪問が配達の場合、迂回距離は対応する集荷訪問から計算され、次のように算出されます。 それ以外の場合は、車両の   | 
              
shipment_label | 
                
                   
 対応する   | 
              
visit_label | 
                
                   
 対応する   | 
              
injected_solution_location_token | 
                
                   
 訪問場所に関する情報を表す不透明なトークン。 このフィールドは、この訪問で   | 
              
ShipmentTypeIncompatibility
shipment_type に応じて、配送間の非互換性を指定します。互換性のない配送が同じルートに表示されるかどうかは、互換性モードに基づいて制限されます。
| フィールド | |
|---|---|
types[] | 
                
                   
 互換性のないタイプのリスト。リスト内の異なる   | 
              
incompatibility_mode | 
                
                  
                   互換性のない状態に適用されるモード。  | 
              
IncompatibilityMode
同じルートで互換性のない配送の表示を制限する方法を指定するモード。
| 列挙型 | |
|---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED | 
                未指定の非互換モード。この値は使用しないでください。 | 
NOT_PERFORMED_BY_SAME_VEHICLE | 
                このモードでは、互換性のない 2 つの配送が同じ車両を共有することはできません。 | 
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY | 
                
 
  | 
              
ShipmentTypeRequirement
shipment_type に基づいて、配送間の要件を指定します。要件の詳細は、要件モードによって定義されます。
| フィールド | |
|---|---|
required_shipment_type_alternatives[] | 
                
                   
 
  | 
              
dependent_shipment_types[] | 
                
                   
 
 注:   | 
              
requirement_mode | 
                
                  
                   要件に適用されるモード。  | 
              
RequirementMode
ルート上の依存する配送の表示を定義するモード。
| 列挙型 | |
|---|---|
REQUIREMENT_MODE_UNSPECIFIED | 
                要件モードが指定されていません。この値は使用しないでください。 | 
PERFORMED_BY_SAME_VEHICLE | 
                このモードでは、すべての「依存」配送は、少なくとも 1 つの「必須」配送と同じ車両を共有する必要があります。 | 
IN_SAME_VEHICLE_AT_PICKUP_TIME | 
                
 そのため、「依存」する配送の集荷には、次のいずれかが必要です。 
  | 
              
IN_SAME_VEHICLE_AT_DELIVERY_TIME | 
                以前と同じですが、「依存」する荷物は、配達時に車両に「必須」な荷物が積まれている必要があります。 | 
SkippedShipment
ソリューションに未実施の配送の詳細を指定します。軽微なケースや、スキップの原因を特定できる場合は、その理由をここに報告します。
| フィールド | |
|---|---|
index | 
                
                   
 インデックスは、ソース   | 
              
label | 
                
                   
 対応する   | 
              
reasons[] | 
                
                  
                   配送がスキップされた理由を説明する理由のリスト。  | 
              
理由
配送がスキップされた理由が説明できる場合は、その理由がここに表示されます。すべての車両で理由が同じでない場合は、reason に複数の要素が含まれます。スキップされた配送の理由が重複することはできません(example_vehicle_index を除くすべてのフィールドが同じである場合)。例:
reasons {
  code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
  example_vehicle_index: 1
  example_exceeded_capacity_type: "Apples"
}
reasons {
  code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
  example_vehicle_index: 3
  example_exceeded_capacity_type: "Pears"
}
reasons {
  code: CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT
  example_vehicle_index: 1
}
スキップされた配送は、すべての車両に対応していません。理由は車両によって異なりますが、少なくとも 1 台の車両の「りんご」の容量が超過し(車両 1 を含む)、少なくとも 1 台の車両の「梨」の容量が超過し(車両 3 を含む)、少なくとも 1 台の車両の距離制限が超過します(車両 1 を含む)。
| フィールド | |
|---|---|
code | 
                
                  
                   Code のコメントを参照してください。  | 
              
example_exceeded_capacity_type | 
                
                   
 理由コードが   | 
              
example_vehicle_index | 
                
                   
 理由が配送車両との互換性に関連する場合、このフィールドには関連する車両のインデックスが 1 つ表示されます。  | 
              
コード
理由の種類を識別するコード。ここでの順序は意味がありません。特に、両方の理由が適用される場合、特定の理由が解決策で他の理由の前に表示されるか否かは示されません。
| 列挙型 | |
|---|---|
CODE_UNSPECIFIED | 
                使用しないでください。 | 
NO_VEHICLE | 
                モデルに車両がないため、すべての配送が不可能です。 | 
DEMAND_EXCEEDS_VEHICLE_CAPACITY | 
                荷物の需要が、一部の容量タイプ(example_exceeded_capacity_type など)の車両の容量を超えています。 | 
              
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT | 
                この配送を実行するために必要な最小距離(車両の  この計算では測地線距離が使用されます。  | 
              
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT | 
                移動時間、待ち時間、サービス時間など、この配送を実行するために必要な最小時間は、車両の  注: 所要時間は最良のシナリオで計算されます。つまり、測地距離 x 36 m/秒(約 130 km/時)です。  | 
              
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT | 
                上記と同じですが、最小所要時間と車両の travel_duration_limit のみを比較します。 | 
              
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS | 
                車両が最も早い開始時間に開始した場合、最良のシナリオ(時間の計算については CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT をご覧ください)でも、この配送を完了することはできません。合計時間が、車両の最も遅い終了時間を超えてしまうためです。 | 
              
VEHICLE_NOT_ALLOWED | 
                配送の allowed_vehicle_indices フィールドが空ではなく、この車両がその配送に属していない。 | 
              
TimeWindow
時間帯は、訪問の到着時間や車両の開始時間と終了時間など、イベントの時間を制限します。
厳密な時間枠の境界(start_time と end_time)は、イベントの最も早い時刻と最も遅い時刻を適用します(start_time <= event_time <=
          end_time など)。ソフト時間枠の下限 soft_start_time は、イベントが soft_start_time より前に発生した場合、発生までの時間に比例した費用が発生するため、soft_start_time 以降に発生することを優先することを表します。ソフト時間枠の上限 soft_end_time は、イベントが soft_end_time より前または soft_end_time に発生することを優先することを表します。イベントが soft_end_time より後に発生すると、発生した時間に比例した費用が発生します。start_time、end_time、soft_start_time、soft_end_time は、グローバルな時間制限(ShipmentModel.global_start_time と ShipmentModel.global_end_time を参照)内に収め、次の条件を満たす必要があります。
  0 <= `start_time` <= `end_time` and
  0 <= `start_time` <= `soft_start_time` and
  0 <= `soft_end_time` <= `end_time`.
| フィールド | |
|---|---|
start_time | 
                
                  
                   厳密な時間枠の開始時間。指定しない場合、  | 
              
end_time | 
                
                  
                   厳密な時間枠の終了時間。指定しない場合、  | 
              
soft_start_time | 
                
                  
                   時間枠のソフト開始時間。  | 
              
soft_end_time | 
                
                  
                   時間枠のソフト終了時間。  | 
              
cost_per_hour_before_soft_start_time | 
                
                   
 イベントが soft_start_time より前に発生した場合に、モデル内の他の費用に追加される 1 時間あたりの費用。次のように計算されます。 この費用は正の値にする必要があります。このフィールドは、soft_start_time が設定されている場合にのみ設定できます。  | 
              
cost_per_hour_after_soft_end_time | 
                
                   
 イベントが  この費用は正の値にする必要があります。このフィールドは、  | 
              
TransitionAttributes
ルート上の 2 つの連続した訪問間の遷移の属性を指定します。同じ遷移に複数の TransitionAttributes が適用される場合があります。その場合、すべての追加費用が合計され、最も厳しい制約または上限が適用されます(自然な「AND」セマンティクスに従います)。
| フィールド | |
|---|---|
src_tag | 
                
                   
 これらの属性が適用される(src->dst)遷移のセットを定義するタグ。 ソース訪問または車両の開始が一致するのは、  | 
              
excluded_src_tag | 
                
                   
 
  | 
              
dst_tag | 
                
                   
 目的地の訪問または車両の終了が一致するのは、  | 
              
excluded_dst_tag | 
                
                   
 
  | 
              
cost | 
                
                   
 この遷移を実行する費用を指定します。この値は、モデル内の他のすべての費用と同じ単位で指定し、負の値にすることはできません。他の既存の費用に上乗せして適用されます。  | 
              
cost_per_kilometer | 
                
                   
 この移行中に移動した距離に適用される 1 キロメートルあたりの費用を指定します。車両に指定されている   | 
              
distance_limit | 
                
                  
                   この遷移中に移動する距離の上限を指定します。 2021 年 6 月時点では、ソフトリミットのみがサポートされています。  | 
              
delay | 
                
                  
                   この遷移の実行時に発生する遅延を指定します。 この遅延は、常に参照元のアクセスが完了した後、リンク先のアクセスが開始される前に発生します。  | 
              
車両
配送に関する問題が発生している車両をモデル化します。配送に関する問題を解決すると、この車両のルートとして start_location から end_location までのルートができます。ルートは、一連の訪問です(ShipmentRoute を参照)。
| フィールド | |
|---|---|
display_name | 
                
                   
 車両のユーザー定義の表示名。最大 63 文字で、UTF-8 文字を使用できます。  | 
              
travel_mode | 
                
                  
                   移動モード。車両が走行できる道路と速度に影響します。  | 
              
start_location | 
                
                  
                   車両が配送の集荷を開始する地理的位置。指定しない場合、車両は最初の集荷から開始します。配送モデルに所要時間と距離のマトリックスがある場合は、  | 
              
start_waypoint | 
                
                  
                   車両が荷物を集荷する前に出発する地理的位置を表すウェイポイント。  | 
              
end_location | 
                
                  
                   最後の   | 
              
end_waypoint | 
                
                  
                   車両が最後の   | 
              
start_tags[] | 
                
                   
 車両のルートの開始点に適用されるタグを指定します。 空の文字列や重複する文字列は使用できません。  | 
              
end_tags[] | 
                
                   
 車両のルートの末尾に適用されるタグを指定します。 空の文字列や重複する文字列は使用できません。  | 
              
start_time_windows[] | 
                
                  
                   車両が出発する可能性がある開始地点の期間。グローバルな時間制限内である必要があります( 同じ繰り返しフィールドに属する時間枠は重複しない必要があります。つまり、時間枠が重なったり、隣接したりすることはできません。また、時間枠は時系列で並べ替える必要があります。 
  | 
              
end_time_windows[] | 
                
                  
                   車両が最終目的地に到着する可能性のある時間帯。グローバルな時間制限内である必要があります( 同じ繰り返しフィールドに属する時間枠は重複しない必要があります。つまり、時間枠が重なったり、隣接したりすることはできません。また、時間枠は時系列で並べ替える必要があります。 
  | 
              
unloading_policy | 
                
                  
                   車両に適用されている荷降ろしに関するポリシー。  | 
              
load_limits | 
                
                   
 車両の容量(重量、容積、パレット数など)。マップのキーは、  | 
              
cost_per_hour | 
                
                   
 車両費用: すべての費用を合計し、 車両ルートの 1 時間あたりの費用。この費用は、ルートの所要時間全体に適用されます。所要時間には、移動時間、待ち時間、訪問時間が含まれます。  | 
              
cost_per_traveled_hour | 
                
                   
 車両ルートの走行 1 時間あたりの費用。この費用は、ルートでの所要時間(  | 
              
cost_per_kilometer | 
                
                   
 車両ルートの 1 キロメートルあたりの費用。この費用は   | 
              
fixed_cost | 
                
                   
 この車両が配送の処理に使用された場合に適用される固定費。  | 
              
used_if_route_is_empty | 
                
                   
 このフィールドは、ルートに配送が含まれていない車両にのみ適用されます。このケースで車両を中古と見なすべきかどうかを示します。 true の場合、車両は配送を担当していなくても出発地から目的地まで移動し、出発地から目的地までの移動に伴う時間と距離の費用が考慮されます。 そうでない場合、車両は始点から終点まで移動せず、この車両には   | 
              
route_duration_limit | 
                
                  
                   車両のルートの合計時間に適用される上限。特定の   | 
              
travel_duration_limit | 
                
                  
                   車両のルートの走行時間に適用される上限。特定の   | 
              
route_distance_limit | 
                
                  
                   車両のルートの合計距離に適用される上限。特定の   | 
              
extra_visit_duration_for_visit_type | 
                
                   
 visit_types 文字列から所要時間へのマップを指定します。所要時間は、指定された  訪問リクエストに複数の種類がある場合は、マップ内の種類ごとに所要時間が追加されます。  | 
              
break_rule | 
                
                  
                   この車両に適用される休憩スケジュールを記述します。空白の場合、この車両には休憩はスケジュールされません。  | 
              
label | 
                
                   
 この車両のラベルを指定します。このラベルは、対応する   | 
              
ignore | 
                
                   
 true の場合、 
 
  | 
              
travel_duration_multiple | 
                
                   
 この車両の所要時間を増減するために使用できる乗数を指定します。たとえば、この値を 2.0 に設定すると、この車両は標準車両の 2 倍の所要時間で移動することになります。この倍率は、訪問時間には影響しません。 警告: 移動時間は、この倍率が適用された後、数値演算を実行する前に秒単位で切り捨てられます。そのため、倍率が小さいと精度が低下する可能性があります。 下記の   | 
              
DurationLimit
車両のルートの最大時間を定義する上限。ハードまたはソフトのいずれかです。
ソフトリミット フィールドを定義する場合は、ソフトマックスしきい値とそれに関連付けられた費用の両方を一緒に定義する必要があります。
| フィールド | |
|---|---|
max_duration | 
                
                  
                   最大で max_duration に制限するハード制限。  | 
              
soft_max_duration | 
                
                  
                   ソフトリミットでは最大時間制限は適用されませんが、違反するとルートに費用が発生します。この費用は、モデルで定義されている他の費用と合計され、同じ単位になります。 定義する場合、  | 
              
quadratic_soft_max_duration | 
                
                  
                   ソフトリミットでは、最大時間制限は適用されませんが、違反すると、ルートに時間の 2 乗に比例する費用が発生します。この費用は、モデルで定義されている他の費用と合計され、同じ単位になります。 定義する場合、 
  | 
              
cost_per_hour_after_soft_max | 
                
                   
 
 費用は正の値にする必要があります。  | 
              
cost_per_square_hour_after_quadratic_soft_max | 
                
                   
 
 期間がしきい値未満の場合は追加費用は 0 ですが、それ以外の場合は、次のとおり期間に応じて費用が発生します。 費用は正の値にする必要があります。  | 
              
LoadLimit
車両に適用される積載制限を定義します(例: 「このトラックは最大 3, 500 kg まで積載可能」)。load_limits をご覧ください。
| フィールド | |
|---|---|
soft_max_load | 
                
                   
 負荷のソフトリミット。  | 
              
cost_per_unit_above_soft_max | 
                
                   
 この車両のルートで負荷が   | 
              
start_load_interval | 
                
                  
                   ルートの開始時点での車両の許容積載間隔。  | 
              
end_load_interval | 
                
                  
                   ルートの終点における車両の許容積載間隔。  | 
              
max_load | 
                
                   
 許容される最大負荷量。  | 
              
間隔
許容される負荷量の範囲。
| フィールド | |
|---|---|
min | 
                
                   
 許容される最小負荷。0 以上である必要があります。両方が指定されている場合は、  | 
              
max | 
                
                   
 許容できる最大負荷。0 以上である必要があります。指定しない場合、最大負荷はこのメッセージで制限されません。両方が指定されている場合は、  | 
              
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
車両の荷降ろし方法に関するポリシー。集荷と配達の両方がある配送にのみ適用されます。
その他の配送は、unloading_policy に関係なく、ルートの任意の場所で行うことができます。
| 列挙型 | |
|---|---|
UNLOADING_POLICY_UNSPECIFIED | 
                荷降ろしに関するポリシーが指定されていません。配送は、対応する集荷の後に行う必要があります。 | 
LAST_IN_FIRST_OUT | 
                配送は集荷の逆順で行う必要があります | 
FIRST_IN_FIRST_OUT | 
                配送は集荷と同じ順序で行う必要があります | 
ウェイポイント
ウェイポイントをカプセル化します。ウェイポイントは、VisitRequest の到着地と出発地、および車両の出発地と終点を示します。
| フィールド | |
|---|---|
side_of_road | 
                
                   
 省略可。このウェイポイントの位置は、車両を優先的に道路の特定の側に停車することを指示することを示します。この値を設定すると、ルートはスポットの中心から偏った側の道路の端に車両を停車できるように、スポットを通過します。このオプションは、移動モードが「歩行」の場合に機能しません。  | 
              
共用体フィールド location_type。場所を表すさまざまな方法。location_type は次のいずれかになります。 | 
              |
location | 
                
                  
                   地理座標(オプションの向きを含む)を使用して指定されたポイント。  | 
              
place_id | 
                
                   
 ウェイポイントに関連付けられているスポット プレイス ID。  |