インデックス
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
(メッセージ)OptimizeToursLongRunningMetadata
(メッセージ)OptimizeToursRequest
(メッセージ)OptimizeToursRequest.SearchMode
(列挙型)OptimizeToursRequest.SolvingMode
(列挙型)OptimizeToursResponse
(メッセージ)OptimizeToursResponse.Metrics
(メッセージ)OptimizeToursUriMetadata
(メッセージ)OptimizeToursUriRequest
(メッセージ)OptimizeToursUriResponse
(メッセージ)OptimizeToursValidationError
(メッセージ)OptimizeToursValidationError.FieldReference
(メッセージ)OutputConfig
(メッセージ)RouteModifiers
(メッセージ)Shipment
(メッセージ)Shipment.Load
(メッセージ)Shipment.VisitRequest
(メッセージ)ShipmentModel
(メッセージ)ShipmentModel.DurationDistanceMatrix
(メッセージ)ShipmentModel.DurationDistanceMatrix.Row
(メッセージ)ShipmentModel.Objective
(メッセージ)ShipmentModel.Objective.Type
(列挙型)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
(メッセージ)Uri
(メッセージ)Vehicle
(メッセージ)Vehicle.DurationLimit
(メッセージ)Vehicle.LoadLimit
(メッセージ)Vehicle.LoadLimit.Interval
(メッセージ)Vehicle.LoadLimit.LoadCost
(メッセージ)Vehicle.TravelMode
(列挙型)Vehicle.UnloadingPolicy
(列挙型)VehicleFullness
(メッセージ)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 |
---|
目標は、
|
OptimizeToursLongRunning |
---|
これは、タイムアウト値の大きい最適化用に設計された 返される 試験運用版: 詳しくは、https://developers.google.com/maps/tt/route-optimization/experimental/otlr/make-request をご覧ください。
|
OptimizeToursUri |
---|
これは、タイムアウト値と入力/出力サイズが大きい最適化用に設計された クライアントは Google Cloud Storage に保存されている この方法は、数分を超える時間と 8 MB を超える入出力サイズの最適化には 返される 試験運用版: 詳しくは、https://developers.google.com/maps/tt/route-optimization/experimental/otlr/make-request をご覧ください。
|
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 |
ルート全体(または解)で達成される最大負荷。このルート(または解)の各量について、すべての |
performed_mandatory_shipment_count |
実施された必須配送の数。 試験運用版: このフィールドの動作や存在は今後変更される可能性があります。 |
performed_shipment_penalty_cost_sum |
実行された配送の 試験運用版: このフィールドの動作や存在は今後変更される可能性があります。 |
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_below_soft_max |
発生した 1 キロメートルあたりの費用(
この費用は |
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 は真東の向きなどを指定します。 |
OptimizeToursLongRunningMetadata
この型にはフィールドがありません。
OptimizeToursLongRunning
呼び出しのオペレーション メタデータ。
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 |
重要: 不可能な配送はすべて返されるわけではなく、前処理中に不可能な配送として検出された配送のみが返されます。 |
TRANSFORM_AND_RETURN_REQUEST |
このモードは、 試験運用版: 詳しくは、https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request をご覧ください。 |
OptimizeToursResponse
ルート最適化問題を解決した後のレスポンス。各車両が走行するルート、スキップされた配送、ソリューションの総費用が含まれます。
フィールド | |
---|---|
routes[] |
各車両に対して計算されたルート。i 番目のルートは、モデル内の i 番目の車両に対応します。 |
request_label |
リクエストでラベルが指定されている場合の |
skipped_shipments[] |
スキップされたすべての配送のリスト。 |
validation_errors[] |
独立して検出できたすべての検証エラーのリスト。 |
processed_request |
場合によっては、解決前に受信したリクエストを変更することがあります(費用の追加など)。solving_mode == TRANSFORM_AND_RETURN_REQUEST の場合、変更されたリクエストが返されます。 試験運用版: 詳しくは、https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request をご覧ください。 |
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 |
ソリューションの合計費用。費用マップ内のすべての値の合計。 |
OptimizeToursUriMetadata
この型にはフィールドがありません。
OptimizeToursUri
呼び出しのオペレーション メタデータ。
OptimizeToursUriRequest
OptimizeToursUri
メソッドで使用されるリクエスト。
フィールド | |
---|---|
parent |
必須。呼び出しを行うターゲット プロジェクトまたはロケーション。 形式: * ロケーションが指定されていない場合、リージョンが自動的に選択されます。 |
input |
必須。 |
output |
必須。 |
OptimizeToursUriResponse
OptimizeToursUri
メソッドによって返されるレスポンス。
フィールド | |
---|---|
output |
省略可。JSON または textproto としてエンコードされた リソースの |
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 の場所。 |
RouteModifiers
車両ルートの計算時に満たす一連のオプション条件をカプセル化します。これは、Google Maps Platform の Routes Preferred API の RouteModifiers
に似ています。https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers をご覧ください。
フィールド | |
---|---|
avoid_tolls |
合理的な場合は有料道路を避けるかどうかを指定します。有料道路を含まないルートが優先されます。電動移動手段にのみ適用されます。 |
avoid_highways |
合理的な場合は高速道路を回避するかどうかを指定します。高速道路を含まないルートが優先されます。電動移動手段にのみ適用されます。 |
avoid_ferries |
合理的な場合はフェリーを使わないかどうかを指定します。フェリーを利用しないルートに優先されます。電動移動手段にのみ適用されます。 |
avoid_indoor |
省略可。合理的な場合は屋内を避けてルーティングするかどうかを指定します。優先されるのは、屋内ナビゲーションのないルートです。 |
配送
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 ターンを回避するかどうかを指定します。右折 / 左折の回避はベスト エフォートであり、完全に回避できる保証はありません。これは試験運用中の機能であり、動作は変更される可能性があります。 試験運用版: 詳しくは、https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request をご覧ください。 |
ShipmentModel
配送モデルには、一連の車両によって実行される一連の配送が含まれます。このモデルでは、次の合計である総費用を最小限に抑えます。
- 車両のルーティング費用(合計時間あたりの費用、移動時間あたりの費用、すべての車両の固定費用の合計)。
- 未実施の配送に対するペナルティ。
- 配送のグローバル期間の費用
フィールド | |
---|---|
shipments[] |
モデルで実行する必要がある一連の配送。 |
vehicles[] |
訪問に使用できる車両のセット。 |
objectives[] |
このモデルの目標セット。これを費用に変換します。空でない場合、入力モデルは費用なしである必要があります。変更されたリクエストを取得するには、 試験運用版: 詳しくは、https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request をご覧ください。 |
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[] |
特定の行の距離値。モデル内の距離を参照する費用や制約がない場合は、空のままにできます。それ以外の場合は、 |
目標
目標は費用モデルを完全に置き換えるため、既存の費用とは互換性がありません。各目標は、車両、配送、移行などの事前定義された費用にマッピングされます。
試験運用版: 詳しくは、https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request をご覧ください。
フィールド | |
---|---|
type |
目標のタイプ。 |
weight |
この目標が他の目標と比較してどの程度重視されるか。任意の正の数値を指定できます。重みの合計が 1 になる必要はありません。重み付けのデフォルトは 1.0 です。 |
タイプ
費用セットにマッピングされる目標タイプ。
列挙型 | |
---|---|
DEFAULT |
妥当なソリューションを確保するため、デフォルトの費用セットが使用されます。注: この目標は単独で使用できますが、ユーザーが指定した目標にまだ含まれていない場合は、ベースラインとして常に重み付け 1.0 で追加されます。 |
MIN_DISTANCE |
「MIN」目標。合計移動距離を最小限に抑える。 |
MIN_WORKING_TIME |
すべての車両の合計作業時間を最小限に抑える。 |
MIN_TRAVEL_TIME |
上記と同じですが、移動時間のみに焦点を当てます。 |
MIN_NUM_VEHICLES |
使用する車両の数を最小限に抑える。 |
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 |
このルートの所要時間、距離、負荷の指標。 |
vehicle_fullness |
試験運用版: このフィールドの動作や存在は今後変更される可能性があります。 |
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 |
遷移中にたどったルートのエンコードされたポリライン表現。このフィールドは、 |
route_token |
出力専用。Navigation SDK に渡してナビゲーション中にルートを再構築できる不透明なトークン。ルートの再ルーティングが発生した場合、ルートの作成時の元の意図を尊重します。このトークンは不透明な blob として扱います。サービスがまったく同じルートを返しても値が変更される可能性があるため、リクエスト間で値を比較しないでください。このフィールドは、 |
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 |
訪問場所に関する情報を表す不透明なトークン。 このフィールドは、この訪問で 試験運用版: 詳しくは、https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request をご覧ください。 |
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[] |
配送がスキップされた理由を説明する理由のリスト。 |
penalty_cost |
これは 試験運用版: このフィールドの動作や存在は今後変更される可能性があります。 |
estimated_incompatible_vehicle_ratio |
以下のいずれかの理由により、この配送を実施できない車両の推定割合。注: 車両に関連する理由がある場合にのみ入力します。 試験運用版: このフィールドの動作や存在は今後変更される可能性があります。 |
理由
配送がスキップされた理由が説明できる場合は、その理由がここに表示されます。すべての車両で理由が同じでない場合は、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_vehicle_indices[] |
試験運用版: このフィールドの動作や存在は今後変更される可能性があります。 |
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 フィールドが空ではなく、この車両がその配送に属していない。 |
VEHICLE_IGNORED |
車両の 試験運用版: このフィールドの動作や存在は今後変更される可能性があります。 |
SHIPMENT_IGNORED |
配送の 試験運用版: このフィールドの動作や存在は今後変更される可能性があります。 |
SKIPPED_IN_INJECTED_SOLUTION_CONSTRAINT |
試験運用版: このフィールドの動作や存在は今後変更される可能性があります。 |
VEHICLE_ROUTE_IS_FULLY_SEQUENCE_CONSTRAINED |
試験運用版: このフィールドの動作や存在は今後変更される可能性があります。 |
ZERO_PENALTY_COST |
荷物に対するペナルティ費用は発生しません。これは高度なモデリングの選択肢として役立ちますが、配送がスキップされた理由を事後的に説明することもできます。 試験運用版: このフィールドの動作や存在は今後変更される可能性があります。 |
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 |
この遷移の実行時に発生する遅延を指定します。 この遅延は、常に参照元のアクセスが完了した後、リンク先のアクセスが開始される前に発生します。 |
URI
Route Optimization API によって読み取りと書き込みが可能なリソースを指すユニバーサル リソース識別子。
フィールド | |
---|---|
uri |
リソースの URI。リソースがまだ存在しない場合があります。 リソースの内容は、JSON または textproto のいずれかとしてエンコードされます。Google Cloud Storage リソースのみがサポートされています。リソースが JSON としてエンコードされている場合は、リソース名に |
車両
配送に関する問題が発生している車両をモデル化します。配送に関する問題を解決すると、この車両のルートとして start_location
から end_location
までのルート構築が開始されます。ルートとは、一連の訪問です(ShipmentRoute
を参照)。
フィールド | |
---|---|
display_name |
車両のユーザー定義の表示名。最大 63 文字で、UTF-8 文字を使用できます。 |
travel_mode |
移動モード。車両が走行できる道路と速度に影響します。 |
route_modifiers |
特定の車両のルートの計算方法に影響する、満たす必要がある一連の条件。 |
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 |
許容される最大負荷量。 |
cost_per_kilometer |
この車両で 1 キロメートル移動する 1 単位の荷物の費用。これは燃料消費量の代用として使用できます。荷重が重量(ニュートン)の場合、荷重*キロメートルはエネルギーの次元になります。 試験運用版: 詳細については、https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request をご覧ください。 |
cost_per_traveled_hour |
この車両で 1 時間あたりの荷物単位の走行費用。 試験運用版: 詳細については、https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request をご覧ください。 |
間隔
許容される負荷量の範囲。
フィールド | |
---|---|
min |
許容される最小負荷。0 以上である必要があります。両方が指定されている場合は、 |
max |
許容できる最大負荷。0 以上である必要があります。指定しない場合、最大負荷はこのメッセージで制限されません。両方が指定されている場合は、 |
LoadCost
Transition
中に 1 ユニットの負荷を移動する費用。特定の負荷の場合、費用は次の 2 つの部分の合計です。
- min(load,
load_threshold
) *cost_per_unit_below_threshold
- max(0, load -
load_threshold
) *cost_per_unit_above_threshold
このコストでは、ソリューションは高い需要を優先して配信するか、高い需要を最後に配信します。たとえば、車両に
load_limit {
key: "weight"
value {
cost_per_kilometer {
load_threshold: 15
cost_per_unit_below_threshold: 2.0
cost_per_unit_above_threshold: 10.0
}
}
}
経路が開始、集荷、集荷、配達、配達、終了で、遷移が次のように設定されている場合:
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 20 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
この LoadCost
で発生する費用は、(cost_below * load_below * kilometers + cost_above * load_above * kms)です。
- 遷移 0: 0.0
- 遷移 1: 2.0 * 10 * 1.0 + 10.0 * 0 * 1.0 = 20.0
- 移行 2: 2.0 * 15 * 1.0 + 10.0 * (20 - 15) * 1.0 = 80.0
- 遷移 3: 2.0 * 10 * 1.0 + 10.0 * 0 * 1.0 = 20.0
- 遷移 4: 0.0
したがって、ルート全体の LoadCost
は 120.0 です。
ただし、ルートが開始、集荷、配達、集荷、配達、終了の順序で、遷移が次の場合:
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
この LoadCost
で発生する費用は
- 遷移 0: 0.0
- 遷移 1: 2.0 * 10 * 1.0 + 10.0 * 0 * 1.0 = 20.0
- 遷移 2: 0.0
- 遷移 3: 2.0 * 10 * 1.0 + 10.0 * 0 * 1.0 = 20.0
- 遷移 4: 0.0
ここでは、ルート全体の LoadCost
は 40.0 です。
LoadCost
を使用すると、負荷の高い遷移があるソリューションの費用が高くなります。
試験運用版: 詳細については、https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request をご覧ください。
フィールド | |
---|---|
load_threshold |
1 単位の負荷を移動する費用が cost_per_unit_below_threshold から cost_per_unit_above_threshold に変更される負荷の量。0 以上である必要があります。 |
cost_per_unit_below_threshold |
0 ~しきい値の各ユニットの負荷移動費用。有限値で、0 より大きい値にする必要があります。 |
cost_per_unit_above_threshold |
しきい値を超える単位ごとに、1 単位の負荷を移動する費用。特殊なケースでしきい値が 0 の場合、これは単位あたりの固定費用です。有限値で、0 より大きい値にする必要があります。 |
TravelMode
車両で使用できる移動手段。
これらは、Google Maps Platform Routes API の移動モードのサブセットである必要があります。https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteTravelMode をご覧ください。
注: WALKING
ルートはベータ版であり、明確な歩道や自転車道が含まれていない場合があります。アプリに表示するすべてのウォーキング ルートで、この警告をユーザーに表示する必要があります。
列挙型 | |
---|---|
TRAVEL_MODE_UNSPECIFIED |
移動手段が指定されていません(DRIVING と同等)。 |
DRIVING |
ルート案内に含まれる移動手段(自動車など)。 |
WALKING |
徒歩ルートに該当する移動手段。 |
UnloadingPolicy
車両の荷降ろし方法に関するポリシー。集荷と配送の両方がある配送にのみ適用されます。
その他の配送は、unloading_policy
に関係なく、ルートの任意の場所で行うことができます。
列挙型 | |
---|---|
UNLOADING_POLICY_UNSPECIFIED |
荷降ろしに関するポリシーが指定されていません。配送は、対応する集荷の後に行う必要があります。 |
LAST_IN_FIRST_OUT |
配送は集荷の逆順で行う必要があります |
FIRST_IN_FIRST_OUT |
配送は集荷と同じ順序で行う必要があります |
VehicleFullness
VehicleFullness
は、車両の混雑度を計算する指標です。各 VehicleFullness
フィールドは 0 ~ 1 の値で、上限のある指標フィールド(AggregatedMetrics.travel_distance_meters
など)と、関連する車両の上限(Vehicle.route_distance_limit
など)の比率として計算されます(上限が存在する場合)。設定されていない場合、満腹度比率は設定されません。上限が 0 の場合、フィールドは 1 に設定されます。注: ルートに交通渋滞が発生している場合、一部の正味の満員率が 1.0 を超えることがあります(車両が距離制限を超えている場合など)。このような場合、満腹度の値は 1.0 に制限されます。
フィールド | |
---|---|
max_fullness |
このメッセージ内の他のすべてのフィールドの最大値。 |
distance |
|
travel_duration |
[AggregatedMetrics.travel_duration_seconds][] と |
active_duration |
[AggregatedMetrics.total_duration_seconds][] と |
max_load |
すべてのタイプの [AggregatedMetrics.max_load][] とそれぞれの |
active_span |
特定の車両の(vehicle_end_time - vehicle_start_time)÷(latest_vehicle_end_time - earliest_vehicle_start_time)の比率。分母が指定されていない場合は、代わりに( |
ウェイポイント
ウェイポイントをカプセル化します。ウェイポイントは、VisitRequest の到着地と出発地、および車両の出発地と終点を示します。
フィールド | |
---|---|
side_of_road |
省略可。このウェイポイントの位置は、車両を優先的に道路の特定の側に停車することを指示することを示します。この値を設定すると、ルートはスポットの真ん中を通るように設定され、車両はスポットの中心からずれた側の路肩に停車できるようになります。このオプションは、移動モードが「歩行」の場合に機能しません。 |
vehicle_stopover |
ウェイポイントが、乗客の乗降を目的とした車両の停車地であることを示します。このオプションは、移動モードが「DRIVING」で、かつ「location_type」が「location」の場合にのみ機能します。 試験運用版: このフィールドの動作や存在は今後変更される可能性があります。 |
共用体フィールド location_type 。場所を表すさまざまな方法。location_type は次のいずれかになります。 |
|
location |
地理座標(オプションの向きを含む)を使用して指定されたポイント。 |
place_id |
ウェイポイントに関連付けられているスポットのプレイス ID。 プレイス ID を使用して VisitRequest の到着地または出発地を指定する場合は、その場所へのナビゲーションの LatLng 位置を特定できるほど具体的なプレイス ID を使用してください。たとえば、建物を表すプレイス ID は適切ですが、道路を表すプレイス ID は推奨されません。 |