索引
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 からの経過秒数)。
- 秒の単位は [0, 253402300799]、つまり [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00] でなければなりません。
- nanos を未設定のままにするか、0 に設定する必要があります。
google.protobuf.Duration
- 秒の単位は [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)です。最適化用の入力(
|
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 |
必須。Google Cloud Storage オブジェクトの URI。形式は |
InjectedSolutionConstraint
リクエストに注入されるソリューション(制限が必要な訪問や、どのように制限する必要があるかに関する情報を含む)。
フィールド | |
---|---|
routes[] |
挿入するソリューションのルート。元のソリューションから一部のルートが省略されている場合があります。ルートとスキップされた配送は、 |
skipped_shipments[] |
注入するソリューションの出荷をスキップした。元のソリューションから一部が省略されている場合があります。 |
constraint_relaxations[] |
0 個以上の車両グループの場合は、制約を緩和するタイミングと程度を指定します。このフィールドが空の場合、空でない車両ルートはすべて完全な制約を受けます。 |
ConstraintRelaxation
車両のグループについて、訪問に対する制約をどのしきい値でどのレベルに緩和するかを指定します。skipped_shipment
フィールドにリストされている配送は、スキップすることが制限されているため、実行できません。
フィールド | |
---|---|
relaxations[] |
|
vehicle_indices[] |
訪問の制約
|
リラクゼーション
relaxations
が空の場合、routes
へのすべての訪問の開始時間と順序は完全に制限され、新しい訪問をそれらのルートに挿入したり追加したりすることはできません。また、routes
での車両の開始時間と終了時間には、完全に制約があります。ただし、車両が空である(訪問がなく、モデルで used_if_route_is_empty
が false に設定されている)場合を除きます。
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
を持つ relaxations
を 2 つ追加します。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 は正しい東の方向を示します。 |
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 |
返された検証エラーの数を切り捨てます。これらのエラーは通常、Solutions_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 |
モデルを解きます。 |
VALIDATE_ONLY |
モデルを解かずにのみ検証します。可能な限り多くの OptimizeToursResponse.validation_errors が入力されます。 |
DETECT_SOME_INFEASIBLE_SHIPMENTS |
重要: 実行不可の荷物がすべて返されるわけではなく、前処理中に実行不可として検出された荷物のみが返されます。 |
OptimizeToursResponse
各車両がたどるルート、スキップされた出荷、ソリューションの全体的な費用を含むツアー最適化の問題を解決した後の回答。
フィールド | |
---|---|
routes[] |
車両ごとに計算されたルート。i 番目のルートは、モデルの i 番目の車両に対応します。 |
request_label |
|
skipped_shipments[] |
スキップされたすべての配送のリスト。 |
validation_errors[] |
Google が個別に検出できたすべての検証エラーのリスト。 |
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」)です。値は、対応する費用フィールドによって生成された総費用を、ソリューション全体で集計したものです。つまり、cost["model.shipments.pickups.cost"] はソリューションの集荷費用の合計です。モデルで定義されているすべての費用は、ここでは詳細に報告されます。ただし、TransitionAttributes に関連する費用は、2022 年 1 月時点で集計された方法でのみ報告されます。 |
total_cost |
ソリューションの総費用。費用マップのすべての値の合計。 |
OptimizeToursValidationError
OptimizeToursRequest
の検証中に発生したエラーを示します。
フィールド | |
---|---|
code |
検証エラーは、常に存在するペア( 他のフィールド(下記)には、エラーに関する詳細なコンテキストが表示されます。 複数のエラー: 複数のエラーがある場合、検証プロセスでは複数のエラーが出力されます。コンパイラと同様、これは不完全なプロセスです。一部の検証エラーは「致命的」となり、検証プロセス全体が停止します。これは、特に 安定性: 参照: すべての (code, name) ペアのリスト。
|
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 |
フィールドの名前。例:。 |
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[] |
この荷物が各車両で配送されたときに発生する費用を指定します。指定する場合、EITHER:
これらの費用は |
costs_per_vehicle_indices[] |
|
pickup_to_delivery_absolute_detour_limit |
集荷から配達までの最短経路と比較して、最長の迂回時間を指定します。指定する場合、値は負の値にせず、少なくとも集荷と配達が含まれている必要があります。 たとえば、選択された代替受け取り場所から、選択された配送方法に直接到達するまでに要する最短時間を t とします。次に、
同じ配送に相対制限と絶対制限の両方が指定されている場合は、受け取りと配達の組み合わせごとに、より厳しい制限が適用されます。2017 年と 2010 年現在、迂回ルートは走行時間が車両に依存していない場合にのみサポートされます。 |
pickup_to_delivery_time_limit |
荷物の集荷から配達を開始するまでの最大期間を指定します。指定する場合、値は負の値にせず、少なくとも集荷と配達が含まれている必要があります。これは、受け取りと宅配の選択肢、車両速度には左右されません。これは、最大迂回の制約と並行して指定できます。ソリューションは両方の仕様を尊重します。 |
shipment_type |
この配送の「タイプ」を指定する空でない文字列。この機能を使用して、 1 回の訪問に指定される |
label |
この配送のラベルを指定します。このラベルは、対応する |
ignore |
true の場合、この配送をスキップしますが、 配送を無視すると、モデルに
|
penalty_cost |
配送が完了しない場合は、このペナルティがルートの総費用に加算されます。受け取りまたは宅配の代替便のいずれかを訪問した場合、配送が完了したとみなされます。費用は、モデルの他のすべての費用関連フィールドに使用されるのと同じ単位で表すことができます。また、正の値にする必要があります。 重要: このペナルティが指定されていない場合、ペナルティは無限であると見なされます(配送を完了する必要がある)。 |
pickup_to_delivery_relative_detour_limit |
集荷から配達までの最短経路と比較した、最長の相対迂回時間を指定します。指定する場合、値は負の値にせず、少なくとも集荷と配達が含まれている必要があります。 たとえば、選択された代替受け取り場所から、選択された配送方法に直接到達するまでに要する最短時間を t とします。次に、
同じ配送に相対制限と絶対制限の両方が指定されている場合は、受け取りと配達の組み合わせごとに、より厳しい制限が適用されます。2017 年と 2010 年現在、迂回ルートは走行時間が車両に依存していない場合にのみサポートされます。 |
読み込み
訪問の際は、事前定義された金額が車両の積載量に加算(集荷の場合)され、配達の場合に減額される場合があります。このメッセージは、その金額を定義します。load_demands
をご確認ください。
フィールド | |
---|---|
amount |
訪問に対応する車両の積載量が変わる量。これは整数なので、精度の低下を避けるため、適切な単位を選択することをおすすめします。0 以上の値を指定してください。 |
VisitRequest
車両による訪問のリクエスト: 位置情報(1 つまたは 2 つ、以下を参照)、時間枠で表される開店時間と閉店時間、サービス提供時間(車両が荷物を受け取るか降車してから到着してから費やした時間)が含まれています。
フィールド | |
---|---|
arrival_location |
この |
arrival_waypoint |
この |
departure_location |
この |
departure_waypoint |
この |
tags[] |
アクセス リクエストに付加するタグを指定します。空の文字列や重複する文字列は使用できません。 |
time_windows[] |
訪問時の到着時刻を制限する時間枠。車両は到着時間枠外に出発してもよいことに注意してください。つまり、到着時刻 + 所要時間が時間枠内である必要はありません。
時間枠は互いに独立している必要があります。つまり、時間枠が互いに重なり合ったり隣接したりしてはならず、順に並べる必要があります。
|
duration |
訪問の所要時間、つまり到着から出発までに車両が費やした時間(待ち時間に加算されます。 |
cost |
車両ルートでこの訪問リクエストを処理するための費用。これを使用して、荷物の別の受け取りまたは配送ごとに異なる費用を支払うことができます。この費用は |
load_demands |
この訪問リクエストのロード デマンド。これは |
visit_types[] |
訪問のタイプを指定します。車両がこの訪問を完了するために必要な追加の時間を割り当てるために使用されることがあります( 1 つのタイプは 1 回だけ使用できます。 |
label |
この |
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[] |
互換性のない shipping_types のセット( |
shipment_type_requirements[] |
|
precedence_rules[] |
モデルで適用する必要がある一連の優先順位ルール。 |
max_active_vehicles |
有効な車両の最大数を制限します。ルートで配送が 1 回以上行われると、車両はアクティブになります。これは、車両よりドライバーが少なく、車両フリートが異種混合である場合に、ルート数を制限するために使用できます。次に、最適化によって、使用に最適な車両のサブセットが選択されます。真に正である必要があります。 |
DurationDistanceMatrix
訪問と車両の開始位置から訪問までの所要時間と距離の行列、および車両の終了位置を指定します。
フィールド | |
---|---|
rows[] |
所要時間と距離のマトリックスの行を指定します。 |
vehicle_start_tag |
この所要時間と距離の行列が適用される車両を定義するタグ。空の場合はすべての車両に適用され、指定できる行列は 1 つのみです。 各車両の開始点は、必ず 1 つの行列と一致する必要があります。つまり、 すべての行列は異なる |
行
所要時間と距離の行列を指定します。
フィールド | |
---|---|
durations[] |
指定された行の所要時間の値。 |
meters[] |
指定された行の距離値。モデル内の距離を参照している費用や制約がない場合は、空のままにすることができます。それ以外の場合は、 |
PrecedenceRule
2 つのイベント間の優先順位ルール(各イベントは荷物の集荷または配達): 「1 回目」の開始後、少なくとも offset_duration
後に「2 回目の」イベントが開始される必要があります。
同じ(または関連する)イベントを指す優先順位が複数あります(例:「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
次の 2 点は区別されます。
- 車両の始点と終点、各訪問の始点と終点(到着と出発)などの「定刻イベント」。特定の瞬間に発生します。
- 訪問そのものや、訪問間の移行などの「時間間隔」。時間間隔の期間がゼロになる(開始と終了を同じ秒にするなど)場合もありますが、多くの場合、継続時間は正になります。
不変条件:
- 訪問が 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[] |
ルートを表す一連の訪問順序です。visit[i] はルートの i 番目の訪問です。このフィールドが空の場合、車両は未使用とみなされます。 |
transitions[] |
ルートの移行の順序付きリスト。 |
has_traffic_infeasibilities |
交通状況により推定移動時間 |
route_polyline |
ルートのエンコード済みポリライン表現。このフィールドは、 |
breaks[] |
このルートを走行する車両のために予定されている休憩時間。 |
metrics |
このルートの所要時間、距離、負荷の指標。 |
route_costs |
ルートの費用。費用関連のリクエスト フィールド別に分類されます。キーは、入力 OptimizeToursRequest を基準とするプロトコルパス(例: model.shipments.pickups.cost)です。値は、対応するコスト フィールドによって生成された総コストで、ルート全体で集計されます。つまり、cost["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 |
対応する |
ShipmentTypeIncompatibility
配送タイプに応じて配送間の非互換性を指定します。同一ルート上で互換性のない配送が表示されるかどうかは、非互換性モードに基づいて制限されます。
フィールド | |
---|---|
types[] |
互換性のないタイプのリスト。上記のうち |
incompatibility_mode |
非互換性に適用されるモード。 |
IncompatibilityMode
同じルート上で互換性のない荷物の表示を制限するモード。
列挙型 | |
---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
未指定の非互換モード。この値は使用しないでください。 |
NOT_PERFORMED_BY_SAME_VEHICLE |
このモードでは、互換性のないタイプの 2 つの配送で同じ車両を共有することはできません。 |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
|
ShipmentTypeRequirement
shipping_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 つの車両の「Pears」の収容力を超え(車両 3 を含む)、少なくとも 1 つの車両の距離制限を超えます(車両 1 を含む)。
フィールド | |
---|---|
code |
Code のコメントをご覧ください。 |
example_exceeded_capacity_type |
理由コードが |
example_vehicle_index |
理由が出荷車両の非互換性に関連している場合、このフィールドは該当する 1 つの車両のインデックスを提供します。 |
コード
理由タイプを識別するコード。この順序は意味がありません。特に、両方の理由がある場合、特定の理由がソリューションで別の理由より先に現れるかどうかはわかりません。
列挙型 | |
---|---|
CODE_UNSPECIFIED |
これは絶対に使用しないでください。配送がスキップされた理由が不明な場合は、空の理由セットを返します。 |
NO_VEHICLE |
モデルに車両が含まれていないため、すべての出荷が不可能である。 |
DEMAND_EXCEEDS_VEHICLE_CAPACITY |
一部の容量タイプ(そのうちの 1 つは 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 フィールドが空ではなく、この車両は属していません。 |
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` <= `soft_start_time` <= `end_time` and
0 <= `start_time` <= `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 |
この移行の実行時に発生する遅延を指定します。 この遅延は常に、ソース訪問を終了した後、かつリンク先訪問を開始する前に発生します。 |
車両
配送の問題に含まれる車両をモデル化します。配送の問題を解決すると、この車両の 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 |
車両ルートの走行時間あたりの費用。この費用は、そのルートの移動時間( |
cost_per_kilometer |
車両ルートの 1 km あたりの料金。この費用は、 |
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 |
ソフトリミットは、最大継続時間制限を適用しませんが、違反すると、ルートの所要時間に二次的なコストが発生します。この費用が、モデルで定義された他の費用(同じ単位)に加算されます。 定義する場合、
|
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 |
|
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。 |