フィードバックを送信
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
)
解決する配送モデル。
solving Mode
enum (SolvingMode
)
デフォルトでは、解法モードは DEFAULT_SOLVE
(0)です。
search Mode
enum (SearchMode
)
リクエストの解決に使用された検索モード。
injected First Solution Routes[]
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
に含まれている場合、車両は許可されます。
挿入されたソリューションが実行可能でない場合、検証エラーが返されるとは限らず、実行不可を示すエラーが返される場合があります。
injected Solution Constraint
object (InjectedSolutionConstraint
)
最適化アルゴリズムを制約して、以前の解に似た最終解を見つけます。たとえば、すでに完了しているルートや、完了する予定だが変更できないルートの一部をフリーズできます。
挿入されたソリューションが実行可能でない場合、検証エラーが返されるとは限らず、実行不可を示すエラーが返される場合があります。
refresh Details Routes[]
object (ShipmentRoute
)
空でない場合、指定されたルートが更新されます。ただし、訪問の順序や所要時間は変更されず、その他の詳細のみが更新されます。これではモデルは解決されません。
2020 年 11 月現在、空ではないルートのポリラインのみが入力され、populatePolylines
が true である必要があります。
渡されたルートの routePolyline
フィールドが、ルート transitions
と一致しない場合があります。
このフィールドは、injectedFirstSolutionRoutes
または injectedSolutionConstraint
と併用しないでください。
Shipment.ignore
と Vehicle.ignore
は動作に影響しません。関連する配送または車両が無視されているかどうかにかかわらず、空ではないすべてのルートのすべての訪問の間にポリラインが入力されます。
interpret Injected Solutions Using Labels
boolean
真の場合:
この解釈は、injectedFirstSolutionRoutes
、injectedSolutionConstraint
、refreshDetailsRoutes
フィールドに適用されます。これは、ソリューションの作成後にリクエスト内の配送または車両のインデックスが変更された場合に使用できます。これは、配送または車両がリクエストから削除または追加されたことが原因である可能性があります。
true の場合、次のカテゴリのラベルは、カテゴリ内で 1 回だけ表示する必要があります。
挿入されたソリューションの vehicleLabel
がリクエスト ビークルに対応していない場合、対応するルートは訪問とともにソリューションから削除されます。挿入されたソリューションの shipmentLabel
がリクエスト配送に対応していない場合、対応する訪問はソリューションから削除されます。挿入されたソリューションの SkippedShipment.label
がリクエストされた配送に一致しない場合、SkippedShipment
はソリューションから削除されます。
挿入されたソリューションからルートの訪問またはルート全体を削除すると、暗黙的な制約に影響し、ソリューションの変更、検証エラー、実現不能につながる可能性があります。
注: 呼び出し元は、各 Vehicle.label
(Shipment.label
)は、関連する 2 つのリクエスト(挿入されたソリューションで使用される OptimizeToursResponse
を生成する過去のリクエストと、挿入されたソリューションが含まれる現在のリクエスト)で使用される車両(または配送)エンティティを一意に識別します。上記の一意性チェックだけでは、この要件を保証できません。
consider Road Traffic
boolean
ShipmentRoute
フィールド Transition.travel_duration
、Visit.start_time
、vehicleEndTime
の計算、ShipmentRoute.has_traffic_infeasibilities
フィールドの設定、OptimizeToursResponse.total_cost
フィールドの計算でトラフィックの見積もりを検討してください。
populate Polylines
boolean
true の場合、レスポンスの ShipmentRoute
にポリラインが入力されます。
populate Transition Polylines
boolean
true の場合、レスポンス ShipmentRoute.transitions
にポリラインとルート トークンが入力されます。
allow Large Deadline Despite Interruption Risk
boolean
これが設定されている場合、リクエストに最大 60 分の期限(https://grpc.io/blog/deadlines を参照)を設定できます。それ以外の場合、期限は最大で 30 分です。なお、長時間実行されるリクエストは、中断されるリスクが大幅に高くなります(それでも低いリスクです)。
use Geodesic Distances
boolean
true の場合、Google マップの距離ではなく測地線距離を使用して移動距離が計算され、geodesicMetersPerSecond
で定義された速度で測地線距離を使用して移動時間が計算されます。
label
string
このリクエストを識別するために使用できるラベル。OptimizeToursResponse.request_label
で報告されます。
geodesic Meters Per Second
number
useGeodesicDistances
が true の場合、このフィールドを設定する必要があります。このフィールドには、所要時間の計算に適用される速度を定義します。この値は 1.0 メートル/秒以上の値にする必要があります。
max Validation Errors
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。
ご意見をお聞かせください
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 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"]]