インデックス
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(メッセージ)ShipmentRoute.Visit.VisitType(列挙型)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 からの秒数)です。
- 秒は [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 |
|---|
|
これは、タイムアウト値が大きい最適化用に設計された 返される
|
| OptimizeToursUri |
|---|
|
これは、タイムアウト値が大きく、ラージ インプット/出力サイズが大きい最適化用に設計された クライアントは、Google Cloud Storage に保存されている このメソッドは、数分以上かかる最適化や、8 MB を超える入出力サイズに適しています。ただし、より短時間で小規模な最適化にも使用できます。 返される
|
AggregatedMetrics
すべての Transition 要素または Visit 要素(ShipmentRoute 要素)にわたる 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 km あたりの費用は、次の式で計算され、最大 この費用は |
cost_per_kilometer_above_soft_max |
距離が 費用は 0 以上にする必要があります。 |
GcsDestination
出力ファイルの書き込み先となる Google Cloud Storage のロケーション。
| フィールド | |
|---|---|
uri |
必須。Google Cloud Storage URI。 |
GcsSource
入力ファイルの読み取り元となる Google Cloud Storage のロケーション。
| フィールド | |
|---|---|
uri |
必須。Google Cloud Storage オブジェクトの URI( |
InjectedSolutionConstraint
リクエストに挿入されたソリューション。制約する必要がある訪問とその制約方法に関する情報が含まれます。
| フィールド | |
|---|---|
routes[] |
挿入するソリューションのルート。一部のルートは元のソリューションから除外される場合があります。ルートとスキップされた配送は、 |
skipped_shipments[] |
挿入するソリューションのスキップされた出荷。一部は元のソリューションから省略されている場合があります。 |
constraint_relaxations[] |
0 個以上の車両グループについて、制約を緩和するタイミングと量を指定します。このフィールドが空の場合、空でないすべての車両ルートが完全に制約されます。 |
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 のみが設定されます。訪問が複数の 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 の場合:
この解釈は、 true の場合、次のカテゴリのラベルは、そのカテゴリに 1 回だけ表示される必要があります。
挿入されたソリューションの 挿入されたソリューションからルート訪問またはルート全体を削除すると、暗黙的な制約に影響する可能性があります。これにより、ソリューションの変更、検証エラー、または実行不能につながる可能性があります。 注: 呼び出し元は、各 |
consider_road_traffic |
|
populate_polylines |
true の場合、レスポンス |
populate_transition_polylines |
true の場合、ポリラインとルートトークンがレスポンス |
allow_large_deadline_despite_interruption_risk |
これを設定すると、リクエストの期限(https://grpc.io/blog/deadlines を参照)を最大 60 分に設定できます。それ以外の場合、最大期限は 30 分です。長時間実行されるリクエストは、中断のリスクが大幅に高くなります(ただし、それでも小さいリスクです)。 |
use_geodesic_distances |
true の場合、移動距離は Google マップの距離ではなく測地線距離を使用して計算され、移動時間は |
label |
このリクエストを識別するために使用できるラベル。 |
geodesic_meters_per_second |
|
max_validation_errors |
返される検証エラーの数を切り捨てます。これらのエラーは通常、BadRequest エラーの詳細(https://cloud.google.com/apis/design/errors#error_details))として INVALID_ARGUMENT エラー ペイロードに添付されます。ただし、solving_mode=VALIDATE_ONLY の場合は除きます。 |
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 を基準とする proto パス(「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 つのアイテムの、集荷場所から配達場所までの配送。配送が実行されたとみなされるには、一意の車両が集荷場所のいずれかを訪問し(それに応じて予備容量を減らし)、その後、配送場所のいずれかを訪問する必要があります(それに応じて予備容量を再度増やします)。
| フィールド | |
|---|---|
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 |
集荷の開始から配送の開始までの最大期間を指定します。指定する場合は、負でない値にする必要があります。また、集荷と配送が少なくとも 1 つずつ含まれている必要があります。これは、集荷と配達に選択された代替手段や車両の速度には依存しません。これは、最大迂回制約とともに指定できます。ソリューションは両方の仕様を考慮します。 |
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 ターンを回避するかどうかを指定します。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 |
「最初」のイベントと「2 番目」のイベントの間のオフセット。負の値にすることもできます。 |
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 を基準とする proto パス(「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 |
|
visit_type |
省略可。訪問のタイプを指定します。 |
injected_solution_location_token |
訪問場所に関する情報を表す不透明なトークン。 このフィールドは、この訪問で 試験運用版: 詳しくは、https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request をご覧ください。 |
VisitType
訪問が受け取り、配達、Stop への訪問のいずれであるかを示します。停留所への訪問は、マルチモーダル最適化が有効になっている場合にのみ使用されます。
| 列挙型 | |
|---|---|
VISIT_TYPE_UNSPECIFIED |
訪問タイプが指定されていません。 |
PICKUP_SHIPMENT |
訪問は荷物の集荷に対応します。 |
DELIVER_SHIPMENT |
訪問は荷物の配達に対応します。 |
ShipmentTypeIncompatibility
shipment_type に応じて、出荷間の非互換性を指定します。同じルートに互換性のない配送が表示されるかどうかは、互換性のないモードに基づいて制限されます。
| フィールド | |
|---|---|
types[] |
互換性のないタイプのリスト。リストされている |
incompatibility_mode |
互換性のないモード。 |
IncompatibilityMode
互換性のない配送が同じルートに表示される方法を制限する方法を定義するモード。
| 列挙型 | |
|---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
互換性のないモードが指定されていません。この値は使用しないでください。 |
NOT_PERFORMED_BY_SAME_VEHICLE |
このモードでは、互換性のないタイプの 2 つの配送が同じ車両を共有することはできません。 |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
このモードでは、互換性のないタイプの 2 つの配送を同じ車両に同時に載せることはできません。
|
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 |
以下の理由の少なくとも 1 つにより、この配送を実行できない車両の推定比率。注: この項目は、理由に車両が関係している場合にのみ入力します。 試験運用版: このフィールドの動作や存在は、今後変更される可能性があります。 |
理由
配送がスキップされた理由を説明できる場合は、ここに理由が一覧表示されます。すべての車両で理由が同じでない場合、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 台の車両の「Apples」容量が超過し(車両 1 を含む)、少なくとも 1 台の車両の「Pears」容量が超過し(車両 3 を含む)、少なくとも 1 台の車両の距離制限が超過します(車両 1 を含む)。
| フィールド | |
|---|---|
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/s(約 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 以前にイベントが発生することを優先することを示します。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 km あたりの費用を指定します。車両に指定された |
distance_limit |
この移行の実行中に移動する距離の上限を指定します。 2021 年 6 月現在、ソフトリミットのみがサポートされています。 |
delay |
この遷移を実行するときに発生する遅延を指定します。 この遅延は、常にソース訪問の終了後、かつ宛先訪問の開始前に発生します。 |
URI
Route Optimization API で読み取りと書き込みが可能なリソースを指す Universal Resource Identifier。
| フィールド | |
|---|---|
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 |
費用は 0 以上にする必要があります。 |
cost_per_square_hour_after_quadratic_soft_max |
期間がしきい値を下回る場合、追加費用は 0 です。それ以外の場合、費用は次のように期間によって異なります。 費用は 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 km 移動する費用。これは燃料消費量のプロキシとして使用できます。負荷が重量(ニュートン単位)の場合、負荷*キロメートルはエネルギーの次元になります。 試験運用版: 詳しくは、https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request をご覧ください。 |
cost_per_traveled_hour |
この車両で 1 単位の荷物を 1 時間運ぶ場合の費用。 試験運用版: 詳しくは、https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request をご覧ください。 |
間隔
許容される負荷量の間隔。
| フィールド | |
|---|---|
min |
|
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
}
}
}
ルートは start、pickup、pickup、delivery、delivery、end で、次の遷移があります。
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 * キロメートル + cost_above * load_above * キロメートル)になります。
- transition 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 です。
ただし、ルートが start、pickup、delivery、pickup、delivery、end で、次のような遷移がある場合:
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 で発生する費用は次のとおりです。
- transition 0: 0.0
- 遷移 1: 2.0 * 10 * 1.0 + 10.0 * 0 * 1.0 = 20.0
- transition 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 |
この負荷量を超えると、負荷単位の移動コストが 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 |
省略可。このウェイポイントの場所が、車両を優先的に道路の特定の側に停車することを意味することを示します。この値を設定すると、ルートがその場所を通過するようになり、車両は道路の中心からその場所が偏っている側の道路脇に停車できます。このオプションは、移動手段が「WALKING」の場合は機能しません。 |
vehicle_stopover |
車両が乗車または降車のために停車するウェイポイントであることを示します。このオプションは、移動モードが「DRIVING」で、「location_type」が「location」の場合にのみ機能します。 試験運用版: このフィールドの動作や存在は、今後変更される可能性があります。 |
共用体フィールド location_type。場所を表すさまざまな方法。location_type は次のいずれかになります。 |
|
location |
地理座標を使用して指定されたポイント(オプションの方向を含む)。 |
place_id |
ウェイポイントに関連付けられた POI のプレイス ID。 プレイス ID を使用して VisitRequest の到着地または出発地を指定する場合は、その場所へのナビゲーションの LatLng 位置を特定できる、十分に具体的なプレイス ID を使用します。たとえば、建物を表すプレイス ID は適していますが、道路を表すプレイス ID は推奨されません。 |