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