发送包含 ShipmentModel
的 OptimizeToursRequest
,并返回包含 ShipmentRoute
的 OptimizeToursResponse
,这些 ShipmentRoute
是车辆执行的一组路线,可最大限度地降低总费用。
ShipmentModel
模型主要由需要执行的 Shipment
和可用于传输 Shipment
的 Vehicle
组成。ShipmentRoute
会将 Shipment
分配给 Vehicle
。更具体地说,它们会为每辆车分配一系列 Visit
,其中 Visit
对应于 VisitRequest
,即 Shipment
的接送点。
目标是为 ShipmentRoute
分配 Vehicle
,以最大限度地降低总费用,其中费用在 ShipmentModel
中定义了许多组成部分。
HTTP 请求
POST https://routeoptimization.googleapis.com/v1/{parent=projects/*/locations/*}:optimizeTours
网址采用 gRPC 转码语法。
路径参数
参数 | |
---|---|
parent |
必需。定位项目或位置以进行呼叫。 格式:* 如果未指定位置,则系统将自动选择区域。 |
请求正文
请求正文中包含结构如下的数据:
JSON 表示法 |
---|
{ "timeout": string, "model": { object ( |
字段 | |
---|---|
timeout |
如果设置此超时,服务器会在超时期限或同步请求的服务器截止时间(以较早者为准)到达之前返回响应。 对于异步请求,服务器会在超时之前生成解决方案(如果可能)。 该时长以秒为单位,最多包含九个小数位,以“ |
model |
要解决的配送模型。 |
solving |
默认情况下,求解模式为 |
search |
用于解决请求的搜索模式。 |
injected |
引导优化算法找到与上一个解决方案类似的第一个解决方案。 在构建第一个解决方案时,模型会受到约束。在第一个解决方案中,系统会隐式跳过未在某个路线上执行的任何配送,但可能会在后续解决方案中执行这些配送。 该解决方案必须满足一些基本有效性假设:
如果注入的解决方案不可行,则不一定会返回验证错误,而可能会返回指示不可行性的错误。 |
injected |
限制优化算法,以找到与上一个解决方案类似的最终解决方案。例如,这可用于冻结已完成或将要完成但不得修改的路线的部分。 如果注入的解决方案不可行,则不一定会返回验证错误,而可能会返回指示不可行性的错误。 |
refresh |
如果不为空,系统会刷新给定路线,而不会更改其底层的访问顺序或行程时间:只有其他详细信息会更新。这并不能解决模型问题。 自 2020 年 11 月起,此方法仅填充非空路线的多段线,并且要求 传入路线的 此字段不得与
|
interpret |
如果为真:
此解释适用于 如果为 true,则以下类别中的标签在其类别中最多只能显示一次:
如果注入的解决方案中的 从注入的解决方案中移除路线访问或整个路线可能会影响隐含约束条件,从而导致解决方案发生变化、出现验证错误或不可行。 注意:调用方必须确保每个 |
consider |
在计算 |
populate |
如果为 true,系统会在响应 |
populate |
如果为 true,系统会在响应 |
allow |
如果设置此值,则请求可以设置最长 60 分钟的截止期限(请参阅 https://grpc.io/blog/deadlines)。否则,最长期限只有 30 分钟。请注意,长时间运行的请求中断的风险要高得多(但仍然很小)。 |
use |
如果为 true,则将使用地面距离(而非 Google 地图距离)计算行程距离,并使用由 |
label |
可用于标识此请求的标签,会在 |
geodesic |
当 |
max |
截断返回的验证错误数量。这些错误通常附加到 INVALID_ARGUMENT 错误载荷中,作为 BadRequest 错误详情 (https://cloud.google.com/apis/design/errors#error_details),除非 solvingMode=VALIDATE_ONLY:请参阅 |
响应正文
如果成功,则响应正文包含一个 OptimizeToursResponse
实例。
授权范围
需要以下 OAuth 范围:
https://www.googleapis.com/auth/cloud-platform
IAM 权限
需要拥有 parent
资源的以下 IAM 权限:
routeoptimization.locations.use
如需了解详情,请参阅 IAM 文档。