Method: projects.locations.optimizeTours
ShipmentModel
を含む OptimizeToursRequest
を送信し、ShipmentRoute
を含む OptimizeToursResponse
を返します。ShipmentRoute
は、車両が実行するルートのセットであり、総費用を最小限に抑えます。
ShipmentModel
モデルは、実行する必要がある Shipment
と、Shipment
の転送に使用できる Vehicle
で構成されています。ShipmentRoute
は Shipment
を Vehicle
に割り当てます。具体的には、各車両に一連の Visit
を割り当てます。Visit
は VisitRequest
に対応し、Shipment
の集荷または配達を表します。
目標は、ShipmentModel
で定義されている多くのコンポーネントを含む費用の総費用を最小限に抑えるように、ShipmentRoute
を Vehicle
に割り当てることです。
HTTP リクエスト
POST https://routeoptimization.googleapis.com/v1/{parent=projects/*/locations/*}:optimizeTours
この URL は gRPC Transcoding 構文を使用します。
パスパラメータ
パラメータ |
parent |
string
必須。呼び出しを行うターゲット プロジェクトまたはロケーション。 形式: * projects/{project-id} * projects/{project-id}/locations/{location-id} ロケーションが指定されていない場合、リージョンが自動的に選択されます。
|
リクエスト本文
リクエストの本文には、次の構造のデータが含まれます。
JSON 表現 |
{
"timeout": string,
"model": {
object (ShipmentModel )
},
"solvingMode": enum (SolvingMode ),
"searchMode": enum (SearchMode ),
"injectedFirstSolutionRoutes": [
{
object (ShipmentRoute )
}
],
"injectedSolutionConstraint": {
object (InjectedSolutionConstraint )
},
"refreshDetailsRoutes": [
{
object (ShipmentRoute )
}
],
"interpretInjectedSolutionsUsingLabels": boolean,
"considerRoadTraffic": boolean,
"populatePolylines": boolean,
"populateTransitionPolylines": boolean,
"allowLargeDeadlineDespiteInterruptionRisk": boolean,
"useGeodesicDistances": boolean,
"label": string,
"geodesicMetersPerSecond": number,
"maxValidationErrors": integer
} |
フィールド |
timeout |
string (Duration format)
このタイムアウトが設定されている場合、サーバーはタイムアウト期間が経過する前、または同期リクエストのサーバー期限が切れる前に、どちらか早い方でレスポンスを返します。 非同期リクエストの場合、サーバーはタイムアウトが切れる前に(可能であれば)ソリューションを生成します。 s で終わる小数 9 桁までの秒単位の期間。例: "3.5s" 。
|
model |
object (ShipmentModel )
解決する配送モデル。
|
solvingMode |
enum (SolvingMode )
デフォルトでは、解法モードは DEFAULT_SOLVE (0)です。
|
searchMode |
enum (SearchMode )
リクエストの解決に使用された検索モード。
|
injectedFirstSolutionRoutes[] |
object (ShipmentRoute )
以前のソリューションに類似した最初のソリューションを最適化アルゴリズムに見つけるよう指示します。 モデルは、最初のソリューションが構築されたときに制約されます。ルートで実行されない配送は、最初のソリューションで暗黙的にスキップされますが、後続のソリューションで実行される場合があります。 ソリューションは、次の基本的な有効性前提を満たす必要があります。
- すべてのルートで、
vehicleIndex は範囲内にあり、重複していない必要があります。
- すべての訪問で、
shipmentIndex と visitRequestIndex は範囲内になければなりません。
- 1 つの配送は 1 つのルートでのみ参照できます。
- 集荷配送の集荷は、配送の前に行う必要があります。
- 1 件の配送に対して、代替の集荷または配送を 1 回以上行うことはできません。
- すべてのルートで時間が長くなっている(
vehicleStartTime
<= visits[0].start_time <= visits[1].start_time ...
<= vehicleEndTime )。
- 配送は、許可されている車両でのみ行うことができます。
Shipment.allowed_vehicle_indices が空であるか、その vehicleIndex が Shipment.allowed_vehicle_indices に含まれている場合、車両は許可されます。
挿入されたソリューションが実行可能でない場合、検証エラーが返されるとは限らず、実行不可を示すエラーが返される場合があります。
|
injectedSolutionConstraint |
object (InjectedSolutionConstraint )
最適化アルゴリズムを制約して、以前の解に似た最終解を見つけます。たとえば、すでに完了しているルートや、完了する予定だが変更できないルートの一部をフリーズできます。 挿入されたソリューションが実行可能でない場合、検証エラーが返されるとは限らず、実行不可を示すエラーが返される場合があります。
|
refreshDetailsRoutes[] |
object (ShipmentRoute )
空でない場合、指定されたルートが更新されます。ただし、訪問の順序や所要時間は変更されず、その他の詳細のみが更新されます。これではモデルは解決されません。 2020 年 11 月現在、空ではないルートのポリラインのみが入力され、populatePolylines が true である必要があります。 渡されたルートの routePolyline フィールドが、ルート transitions と一致しない場合があります。 このフィールドは、injectedFirstSolutionRoutes または injectedSolutionConstraint と併用しないでください。 Shipment.ignore と Vehicle.ignore は動作に影響しません。関連する配送または車両が無視されているかどうかにかかわらず、空ではないすべてのルートのすべての訪問の間にポリラインが入力されます。
|
interpretInjectedSolutionsUsingLabels |
boolean
真の場合:
この解釈は、injectedFirstSolutionRoutes 、injectedSolutionConstraint 、refreshDetailsRoutes フィールドに適用されます。これは、ソリューションの作成後にリクエスト内の配送または車両のインデックスが変更された場合に使用できます。これは、配送または車両がリクエストから削除または追加されたことが原因である可能性があります。 true の場合、次のカテゴリのラベルは、カテゴリ内で 1 回だけ表示する必要があります。
挿入されたソリューションの vehicleLabel がリクエスト ビークルに対応していない場合、対応するルートは訪問とともにソリューションから削除されます。挿入されたソリューションの shipmentLabel がリクエスト配送に対応していない場合、対応する訪問はソリューションから削除されます。挿入されたソリューションの SkippedShipment.label がリクエストされた配送に一致しない場合、SkippedShipment はソリューションから削除されます。 挿入されたソリューションからルートの訪問またはルート全体を削除すると、暗黙的な制約に影響し、ソリューションの変更、検証エラー、実現不能につながる可能性があります。 注: 呼び出し元は、各 Vehicle.label (Shipment.label )は、関連する 2 つのリクエスト(挿入されたソリューションで使用される OptimizeToursResponse を生成する過去のリクエストと、挿入されたソリューションが含まれる現在のリクエスト)で使用される車両(または配送)エンティティを一意に識別します。上記の一意性チェックだけでは、この要件を保証できません。
|
considerRoadTraffic |
boolean
ShipmentRoute フィールド Transition.travel_duration 、Visit.start_time 、vehicleEndTime の計算、ShipmentRoute.has_traffic_infeasibilities フィールドの設定、OptimizeToursResponse.total_cost フィールドの計算でトラフィックの見積もりを検討してください。
|
populatePolylines |
boolean
true の場合、レスポンスの ShipmentRoute にポリラインが入力されます。
|
populateTransitionPolylines |
boolean
true の場合、レスポンス ShipmentRoute.transitions にポリラインとルート トークンが入力されます。
|
allowLargeDeadlineDespiteInterruptionRisk |
boolean
これが設定されている場合、リクエストに最大 60 分の期限(https://grpc.io/blog/deadlines を参照)を設定できます。それ以外の場合、期限は最大で 30 分です。なお、長時間実行されるリクエストは、中断されるリスクが大幅に高くなります(それでも低いリスクです)。
|
useGeodesicDistances |
boolean
true の場合、Google マップの距離ではなく測地線距離を使用して移動距離が計算され、geodesicMetersPerSecond で定義された速度で測地線距離を使用して移動時間が計算されます。
|
label |
string
このリクエストを識別するために使用できるラベル。OptimizeToursResponse.request_label で報告されます。
|
geodesicMetersPerSecond |
number
useGeodesicDistances が true の場合、このフィールドを設定する必要があります。このフィールドには、所要時間の計算に適用される速度を定義します。この値は 1.0 メートル/秒以上の値にする必要があります。
|
maxValidationErrors |
integer
返される検証エラーの数を切り捨てます。通常、これらのエラーは、solvingMode=VALIDATE_ONLY の場合を除き、BadRequest エラーの詳細(https://cloud.google.com/apis/design/errors#error_details)として INVALID_ARGUMENT エラー ペイロードに関連付けられます。OptimizeToursResponse.validation_errors フィールドをご覧ください。デフォルトは 100 で、上限は 10,000 です。
|
レスポンスの本文
成功した場合、レスポンスの本文には OptimizeToursResponse
のインスタンスが含まれます。
認可スコープ
次の OAuth スコープが必要です。
https://www.googleapis.com/auth/cloud-platform
IAM 権限
parent
リソースに対する次の IAM 権限が必要です。
routeoptimization.locations.use
詳細については、IAM のドキュメントをご覧ください。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2024-12-22 UTC。
[null,null,["最終更新日 2024-12-22 UTC。"],[[["Sends an `OptimizeToursRequest` and returns an `OptimizeToursResponse` containing optimized `ShipmentRoute`s for a given `ShipmentModel` and `Vehicle`s."],["The service aims to minimize the total cost of routes by assigning `Shipment`s to `Vehicle`s and optimizing their `Visit` sequences."],["Request body includes parameters to guide the optimization process such as timeout, model, solving mode, search mode, and constraints."],["The response contains the optimized routes, including details like polylines, travel durations, and total cost."],["Requires the `https://www.googleapis.com/auth/cloud-platform` OAuth scope and `routeoptimization.locations.use` IAM permission."]]],["This content describes the `OptimizeTours` API, which optimizes routes for shipments using vehicles. A `POST` request is sent to `https://routeoptimization.googleapis.com/v1/{parent=projects/*/locations/*}:optimizeTours`. The request body includes a `ShipmentModel` specifying shipments and vehicles. The API then generates an `OptimizeToursResponse` with `ShipmentRoute`s, assigning `Visit`s (pickups/deliveries) to each vehicle to minimize total cost. Optional parameters allow traffic consideration, polyline population, and injected solution constraints. Authorization requires cloud platform scope and IAM permissions.\n"]]