インデックス
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
(メッセージ)RouteModifiers
(メッセージ)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)です。最適化のための入力( ユーザーは LRO の LRO の
|
OptimizeTours |
---|
目標は、
|
AggregatedMetrics
ShipmentRoute
(すべての Transition
要素または Visit
(すべての ShipmentRoute
要素に対する OptimizeToursResponse
)に対応)の集計指標。
フィールド | |
---|---|
performed_shipment_count |
実施した配送の数。受け取りと配送の組み合わせは 1 回のみカウントされます。 |
travel_duration |
ルートまたはソリューションの合計移動時間。 |
wait_duration |
ルートまたはソリューションの合計待機時間。 |
delay_duration |
経路またはソリューションの遅延の合計時間。 |
break_duration |
ルートまたはソリューションの総休憩時間。 |
visit_duration |
ルートまたはソリューションの訪問の合計時間。 |
total_duration |
合計時間は、上記のすべての時間の合計と等しくする必要があります。ルートの場合は、以下も対応します。
|
travel_distance_meters |
ルートまたはソリューションの総移動距離。 |
max_loads |
ルート全体で達成された最大負荷(対応ソリューション)。このルート上の各数量(対応ソリューション)に対して計算され、すべての |
BatchOptimizeToursMetadata
この型にはフィールドがありません。
BatchOptimizeToursRequest
呼び出しのオペレーション メタデータ。
BatchOptimizeToursRequest
非同期オペレーションとしてツアーを一括最適化するリクエスト。各入力ファイルには 1 つの OptimizeToursRequest
が含まれ、各出力ファイルには 1 つの OptimizeToursResponse
が含まれます。リクエストには、ファイルの読み取り / 書き込みと解析に関する情報が含まれます。入力ファイルと出力ファイルはすべて同じプロジェクトに配置する必要があります。
フィールド | |
---|---|
parent |
必須。呼び出しを行うターゲット プロジェクトとロケーション。 形式: * ロケーションが指定されていない場合、リージョンが自動的に選択されます。 |
model_configs[] |
必須。各購入モデルの入出力情報(ファイルパス、データ形式など)。 |
AsyncModelConfig
1 つの最適化モデルを非同期で解決するための情報。
フィールド | |
---|---|
display_name |
省略可。ユーザー定義のモデル名。モデルを追跡するためにユーザーがエイリアスとして使用できます。 |
input_config |
必須。入力モデルに関する情報。 |
output_config |
必須。目的の出力場所情報。 |
BatchOptimizeToursResponse
この型にはフィールドがありません。
BatchOptimizeToursRequest
に対するレスポンス。これは、オペレーションの完了後に長時間実行オペレーションで返されます。
BreakRule
車両の休憩(昼休みなど)を生成するルール。休憩とは、車両が現在の位置でアイドリング状態を維持し、車両をまったく訪問できない連続した時間のことです。次のような場合に中断が発生する可能性があります。
- 2 回の訪問間の移動中(訪問の前後を含むが、訪問中は含まない)に発生した場合、その訪問間の移動時間が延長されます。
- 車両の始動前(休憩の途中で始動しない場合もあります)。この場合、車両の始動時間には影響しません。
- または車両の終了時間後(同上、車両の終了時間で指定する)。
フィールド | |
---|---|
break_requests[] |
休憩の順序。 |
frequency_constraints[] |
複数の |
BreakRequest
各車両に適用されるブレークの順序(その回数と順序)を事前に把握しておく必要があります。繰り返される BreakRequest
は、発生順にそのシーケンスを定義します。時間枠(earliest_start_time
/ latest_start_time
)は重複する場合がありますが、順序との互換性がある必要があります(チェックが入っています)。
フィールド | |
---|---|
earliest_start_time |
必須。ブレーク開始の下限(両端を含む)。 |
latest_start_time |
必須。ブレーク開始の上限(両端を含む)。 |
min_duration |
必須。休憩の最小時間。正の値である必要があります。 |
FrequencyConstraint
「12 時間ごとに少なくとも 1 時間の休憩が必要」など、休憩の最小頻度を適用することで、上記で指定した休憩の頻度と期間を、さらに制限することもできます。これが「12 時間のスライディング タイム ウィンドウ内に、少なくとも 1 時間の休憩が少なくとも 1 回はある」と解釈できると仮定すると、この例では、FrequencyConstraint
は次のようになります。
{
min_break_duration { seconds: 3600 } # 1 hour.
max_inter_break_duration { seconds: 39600 } # 11 hours (12 - 1 = 11).
}
ソリューション内の休憩のタイミングと長さは、BreakRequest
ですでに指定されている時間帯と最小時間に加えて、このような制約をすべて遵守します。
実際には、FrequencyConstraint
は連続しない休憩に適用できます。たとえば、次のスケジュールは「12 時間ごとに 1 時間」の例に従います。
04:00 vehicle start
.. performing travel and visits ..
09:00 1 hour break
10:00 end of the break
.. performing travel and visits ..
12:00 20-min lunch break
12:20 end of the break
.. performing travel and visits ..
21:00 1 hour break
22:00 end of the break
.. performing travel and visits ..
23:59 vehicle end
フィールド | |
---|---|
min_break_duration |
必須。この制約の最小ブレーク時間。非負。 |
max_inter_break_duration |
必須。 |
DataFormat
入力ファイルと出力ファイルのデータ形式。
列挙型 | |
---|---|
DATA_FORMAT_UNSPECIFIED |
値が無効です。形式を [指定しない] にすることはできません。 |
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[] |
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
ANDroute.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 は真東の見出し、というようになります。 |
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 |
これが設定されている場合、リクエストの期限は最大 60 分です(https://grpc.io/blog/deadlines をご覧ください)。それ以外の場合、期限は最大で 30 分です。実行時間が長いリクエストは、中断のリスクが大幅に高くなります(ただし、それでもわずかです)。 |
use_geodesic_distances |
true の場合、移動距離は Google マップの距離ではなく測地線距離を使用して計算され、移動時間は |
label |
このリクエストの識別に使用できるラベル。 |
geodesic_meters_per_second |
|
max_validation_errors |
返された検証エラーの数を切り捨てます。通常、これらのエラーは、solving_mode=VALIDATE_ONLY でない限り、BadRequest エラーの詳細(https://cloud.google.com/apis/design/errors#error_details)として INVALID_ARGUMENT エラー ペイロードに関連付けられます。 |
SearchMode
検索の動作を定義するモード。レイテンシとソリューションの品質とをトレードオフします。どのモードでも、グローバル リクエストの期限が適用されます。
列挙型 | |
---|---|
SEARCH_MODE_UNSPECIFIED |
未指定の検索モード。RETURN_FAST と同等です。 |
RETURN_FAST |
最初に適切な解決策が見つかったら、検索を中止します。 |
CONSUME_ALL_AVAILABLE_TIME |
より優れたソリューションを見つけるために、利用可能な時間をすべて使ってください。 |
SolvingMode
ソルバがリクエストを処理する方法を定義します。VALIDATE_ONLY
を除くすべてのモードで、リクエストが無効な場合、INVALID_REQUEST
エラーが返されます。返されるエラーの数を制限するには、max_validation_errors
をご覧ください。
列挙型 | |
---|---|
DEFAULT_SOLVE |
モデルを解く。警告は [OptimizeToursResponse.validation_errors][google.cloud.optimization.v1.OptimizeToursResponse.validation_errors] で発行される場合があります。 |
VALIDATE_ONLY |
モデルを解決せずに検証のみを行います。可能な限り多くの OptimizeToursResponse.validation_errors を入力します。 |
DETECT_SOME_INFEASIBLE_SHIPMENTS |
重要: すべての実行不可能な配送がここで返されるわけではなく、前処理中に実行不可能として検出されたもののみが返されます。 |
OptimizeToursResponse
ツアー最適化の問題を解決した後の対応
フィールド | |
---|---|
routes[] |
各車両で計算されたルートi 番目のルートはモデルの i 番目の車両に対応しています。 |
request_label |
|
skipped_shipments[] |
スキップされたすべての配送のリスト。 |
validation_errors[] |
個別に検出できたすべての検証エラーのリスト。 |
metrics |
このソリューションの期間、距離、使用状況の指標。 |
指標
すべてのルートについて集計された全体的な指標。
フィールド | |
---|---|
aggregated_route_metrics |
ルート全体にわたって集計されます。各指標は、同じ名前のすべての |
skipped_mandatory_shipment_count |
スキップされた必須配送の数。 |
used_vehicle_count |
使用台数。注: 車両のルートが空で、 |
earliest_vehicle_start_time |
中古車の最も早い開始時間。 |
latest_vehicle_end_time |
中古車の最も遅い終了時間。 |
costs |
費用関連のリクエスト フィールド別のソリューションの費用。キーは、入力 OptimizeToursRequest に対する相対パスの proto パスです。次に例を示します。「model.shipments.pickups.cost」で、値は対応する費用フィールドで生成された合計費用で、ソリューション全体で集計されます。つまり、cost["model.shipments.pickups.cost"] は、ソリューションのすべての受け取り費用の合計です。2022 年 1 月時点で集計された形でのみ報告される TransitionAttributes に関連する費用を除き、モデルで定義されたすべての費用は、ここで詳細に報告されます。 |
total_cost |
ソリューションの総費用。費用マップのすべての値の合計。 |
OptimizeToursValidationError
OptimizeToursRequest
の検証時に発生したエラーまたは警告について説明します。
フィールド | |
---|---|
code |
検証エラーは、常に存在するペア( その他のフィールド(下記)には、エラーに関する詳細情報が表示されます。 複数のエラー: 複数のエラーがある場合、検証プロセスではそれらのエラーのうちいくつかが出力されます。コンパイラのように、これは不完全なプロセスです。一部の検証エラーは「致命的」であり、検証プロセス全体が停止します。これは、 STABILITY: 参照: すべての(コードと名前)ペアのリスト。
|
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 |
集荷から配達までの最短経路と比較した、迂回経路の絶対的な最大時間を指定します。指定する場合は負の値を指定してください。配送には少なくとも受け取りと宅配の 1 つが含まれている必要があります。 たとえば、t は、選択した集荷オプションから選択した配送オプションに直接移動するのにかかる最短時間とします。
同じ配送に相対的制限と絶対的制限の両方が指定されている場合は、受け取りと配達の組み合わせごとに、より制限の厳しい制限が適用されます。2017 ~ 2010 年現在、迂回運転は、移動時間が車両に依存していない場合にのみサポートされます。 |
pickup_to_delivery_time_limit |
荷物の集荷から配達を開始するまでの最長期間を指定します。指定する場合は、正の値にする必要があります。また、配送には少なくとも集荷と配達が含まれている必要があります。これは、受け取りと配送に選択した代替手段や、車両の速度には依存しません。これは、最大迂回の制約とともに指定することができます。ソリューションは両方の仕様を遵守します。 |
shipment_type |
「タイプ」を指定する空でない文字列。この機能を使用すると、 1 回の訪問に指定された |
label |
この配送のラベルを指定します。このラベルは、対応する |
ignore |
true の場合、この配送はスキップしますが、 モデルに
|
penalty_cost |
配送が完了しなかった場合、このペナルティはルートの総費用に追加されます。集荷と配達の代替手段のいずれかを訪問した場合、配送は完了とみなされます。費用は、モデル内の他のすべての費用関連フィールドで使用されている単位で表すことができ、正の値である必要があります。 重要: このペナルティが指定されていない場合は、ペナルティは無限(配送の完了が必要)とみなされます。 |
pickup_to_delivery_relative_detour_limit |
集荷から配達までの最短経路と比較して、最大の相対的迂回時間を指定します。指定する場合は負の値を指定してください。配送には少なくとも受け取りと宅配の 1 つが含まれている必要があります。 たとえば、選択した受け取り方法から別の配送方法に直接移動する最短の所要時間を 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 |
この |
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[] |
特定の行の Duration 値。 |
meters[] |
指定された行の距離値。モデル内の距離を参照するコストや制約がない場合は、空のままにしておくことができます。それ以外の場合は、 |
PrecedenceRule
2 つのイベント(各イベントは集荷または配送)間の優先順位ルール: 「2 番目」イベントは、「最初」の後に少なくとも offset_duration
後に開始する必要があります開始しました。
いくつかの優先順位は、同じ(または関連する)イベントを指すことができます。「B の集荷は A の配送後に行われます」「B の集荷後に C の集荷が行われる」などです。
また、優先順位は両方の発送が行われた場合にのみ適用され、それ以外の場合は無視されます。
フィールド | |
---|---|
first_is_delivery |
最初の Pod が配送イベントです。 |
second_is_delivery |
「2 番目」のイベントが配信かどうかを示します。 |
offset_duration |
「最初の」位置とと「second」イベントです。負の値も使用できます。 |
first_index |
「first」の配送指数イベントです。このフィールドは指定する必要があります。 |
second_index |
「2 個目」の配送指数イベントです。このフィールドを指定する必要があります。 |
ShipmentRoute
車両のルートは、次のように時間軸に沿って分解できます(訪問は n 回であると仮定します)。
| | | | | T[2], | | |
| Transition | Visit #0 | | | V[2], | | |
| #0 | aka | T[1] | V[1] | ... | V[n-1] | T[n] |
| aka T[0] | V[0] | | | V[n-2],| | |
| | | | | T[n-1] | | |
^ ^ ^ ^ ^ ^ ^ ^
vehicle V[0].start V[0].end V[1]. V[1]. V[n]. V[n]. vehicle
start (arrival) (departure) start end start end end
違いに留意してください。
- 車両の始点と終点、各訪問の始点と終点(到着と出発)などの「時間厳守のイベント」。指定した時間に行われます。
- 訪問自体や訪問間の移行などの「期間」。時間間隔の継続時間は、ゼロ(開始と終了が同じ秒)になることもありますが、多くの場合、正の期間は正の値になります。
不変条件:
- 訪問回数が n 回の場合は、n+1 回遷移が発生します。
- 訪問は常に、前後のトランジション(インデックス + 1)で囲まれています。
- 車両が発進すると、常にトランジション #0 が続きます。
- 車両の終端には常にトランジション #n が先行します。
ズームインすると、Transition
と Visit
の実行中は次のようになります。
---+-------------------------------------+-----------------------------+-->
| TRANSITION[i] | VISIT[i] |
| | |
| * TRAVEL: the vehicle moves from | PERFORM the visit: |
| VISIT[i-1].departure_location to | |
| VISIT[i].arrival_location, which | * Spend some time: |
| takes a given travel duration | the "visit duration". |
| and distance | |
| | * Load or unload |
| * BREAKS: the driver may have | some quantities from the |
| breaks (e.g. lunch break). | vehicle: the "demand". |
| | |
| * WAIT: the driver/vehicle does | |
| nothing. This can happen for | |
| many reasons, for example when | |
| the vehicle reaches the next | |
| event's destination before the | |
| start of its time window | |
| | |
| * DELAY: *right before* the next | |
| arrival. E.g. the vehicle and/or | |
| driver spends time unloading. | |
| | |
---+-------------------------------------+-----------------------------+-->
^ ^ ^
V[i-1].end V[i].start V[i].end
最後に、移行中に TRAVEL、BREAKS、DELAY、WAIT を配置する方法について説明します。
- 重複していません。
- DELAY は一意であり、次の訪問(または車両の終了)の直前の連続した期間である必要があります。したがって、遅延時間がわかれば、開始時間と終了時間を把握できます。
- BREAKS は、重複しない連続した時間です。レスポンスでは、各休憩の開始時間と継続時間を指定します。
- TRAVEL と WAIT は「プリエンプティブ」です。この移行中に複数回中断されることがあります。クライアントは旅行が「できるだけ早く」行われると想定できるその「待機」をが残りの時間で埋められます。
(複雑な)例:
TRANSITION[i]
--++-----+-----------------------------------------------------------++-->
|| | | | | | | ||
|| T | B | T | | B | | D ||
|| r | r | r | W | r | W | e ||
|| a | e | a | a | e | a | l ||
|| v | a | v | i | a | i | a ||
|| e | k | e | t | k | t | y ||
|| l | | l | | | | ||
|| | | | | | | ||
--++-----------------------------------------------------------------++-->
フィールド | |
---|---|
vehicle_index |
ルートを運行している車両。ソース |
vehicle_label |
このルートを運行する車両のラベル。指定する場合は |
vehicle_start_time |
車両がルートを開始した時刻。 |
vehicle_end_time |
車両がルートを終了した時刻。 |
visits[] |
経路を表す順序付きの訪問シーケンス。Visits[i] はルートの i 番目の訪問です。このフィールドが空の場合、車両は未使用とみなされます。 |
transitions[] |
ルートの遷移の順序付きリスト。 |
has_traffic_infeasibilities |
交通渋滞により推定所要時間 |
route_polyline |
エンコードされた経路のポリライン表現。このフィールドは、 |
breaks[] |
このルートを走行する車両の休憩。 |
metrics |
このルートの期間、距離、負荷の指標。 |
route_costs |
ルートのコスト。コスト関連のリクエスト フィールド別に分類されます。キーは、入力 OptimizeToursRequest に対する相対パスの proto パスです。次に例を示します。「model.shipments.pickups.cost」、値は対応する費用フィールドで生成された合計費用で、ルート全体で集計されます。つまり、cost["model.shipments.pickups.cost"] はルート上のすべての受け取り費用の合計となります。2022 年 1 月時点で集計された形でのみ報告される TransitionAttributes に関連する費用を除き、モデルで定義されたすべての費用は、ここで詳細に報告されます。 |
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
shipping_type に応じて、配送間の互換性がないことを示します。互換性のない配送が同じルート上に表示されるかどうかは、非互換モードに基づいて制限されます。
フィールド | |
---|---|
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 |
以前と同じですが、「依存関係」配送には「required」を配達時に車両に配送します。 |
SkippedShipment
ソリューション内の未実施の配送の詳細を指定します。些細なケースの場合、またはスキップの原因を特定できた場合は、こちらで理由を報告します。
フィールド | |
---|---|
index |
このインデックスは、ソース |
label |
対応する |
reasons[] |
配送がスキップされた理由の説明。 |
理由
配送がスキップされた理由を説明できる場合は、ここに理由が表示されます。すべての車両で理由が同じでない場合、reason
には複数の要素が含まれます。スキップした配送に重複する理由を指定することはできません(example_vehicle_index
を除くすべての項目が同じ場合など)。例:
reasons {
code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
example_vehicle_index: 1
example_exceeded_capacity_type: "Apples"
}
reasons {
code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
example_vehicle_index: 3
example_exceeded_capacity_type: "Pears"
}
reasons {
code: CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT
example_vehicle_index: 1
}
スキップされた配送は、すべての車両には対応していません。理由は車両によって異なる場合がありますが、少なくとも 1 つの車両の「リンゴ」が原因となります。収容人数を超える場合(車両 1 を含む)、少なくとも 1 台の車両の「洋ナシ」車両 3 台を含む最大定員を超過し、少なくとも 1 台の車両の距離制限を超過する(車両 1 車両を含む)。
フィールド | |
---|---|
code |
コードのコメントを参照してください。 |
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` <= `end_time` and
0 <= `start_time` <= `soft_start_time` and
0 <= `soft_end_time` <= `end_time`.
フィールド | |
---|---|
start_time |
ハードタイム ウィンドウの開始時間。指定しない場合は、 |
end_time |
ハードタイム ウィンドウの終了時刻。指定しない場合は、 |
soft_start_time |
時間枠のソフト スタート時間。 |
soft_end_time |
時間枠の柔軟な終了時間。 |
cost_per_hour_before_soft_start_time |
soft_start_time より前にイベントが発生した場合に、モデルの他の費用に追加される 1 時間あたりの費用。次のように計算されます。
このコストは正の値である必要があります。このフィールドは、soft_start_time が設定されている場合のみ設定できます。 |
cost_per_hour_after_soft_end_time |
この費用は正数でなければならず、このフィールドは |
TransitionAttributes
ルート上の 2 つの連続した訪問間の遷移の属性を指定します。同じ移行に複数の TransitionAttributes
を適用できます。その場合は、余分なコストがすべて加算され、最も厳しい制約または制限が適用されます(自然な「AND」セマンティクスに従って)。
フィールド | |
---|---|
src_tag |
これらの属性が適用される(src->dst)遷移のセットを定義するタグ。 ソース訪問または車両の開始が一致するのは、 |
excluded_src_tag |
|
dst_tag |
目的地の訪問または車両の終了は、 |
excluded_dst_tag |
|
cost |
この移行の実行にかかる費用を指定します。これは、モデルの他のすべての費用と同じ単位であり、負の値にすることはできません。これは、その他すべての既存の費用に上乗せして適用されます。 |
cost_per_kilometer |
この移行を実施する際の移動距離に適用される 1 キロメートルあたりの費用を指定します。車両で指定された |
distance_limit |
この遷移中の移動距離の上限を指定します。 2021 年 6 月現在、ソフトリミットのみがサポートされています。 |
delay |
この遷移の実行時に発生する遅延を指定します。 この遅延は常に、参照元の訪問が終了してから、訪問先の訪問を開始する前に発生します。 |
車両
配送の問題で車両をモデル化します。配送に関する問題を解決すると、この車両のルートとして start_location
から end_location
までのルートが作成されます。経路とは、一連の訪問のことです(ShipmentRoute
を参照)。
フィールド | |
---|---|
display_name |
車両のユーザー定義の表示名。最大 63 文字で、UTF-8 文字を使用できます。 |
travel_mode |
車両が通過できる道路とその速度に影響を与える交通手段。 |
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 |
ソフトリミットは、最大時間制限を適用しませんが、違反すると、ルートに費用が発生します。このコストは、モデルで定義されている同じ単位での他のコストに加算されます。 定義する場合、
|
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 |
省略可。車両が道路の特定の側に停車することを優先して、このウェイポイントの位置を指定します。この値を設定すると、ルートは位置を通過するため、車両は、位置が道路の中心よりも偏っている道路脇で停止できるようになります。「WALKING」ではこのオプションは使用できません。選択します |
共用体フィールド location_type 。場所を表すさまざまな方法。location_type は次のいずれかになります。 |
|
location |
地理座標を使用して指定された地点。オプションで見出しも含む。 |
place_id |
ウェイポイントに関連付けられているスポットのプレイス ID。 |