参数列表

以下页面包含 Route Optimization API optimizeTours 方法的以下组件的参数表(按字母顺序排列):

这些参数表仅列出并简要说明了顶级对象和主要参数,以便于发现。如需查看包含完整说明和所有嵌套参数的详尽列表,请参阅 API 参考文档。

请求正文

请求正文的数据结构。

请求正文包含以下元素,这些元素在右侧图表中进行了说明,并在下表中列出:

  • OptimizeToursRequest:包含模型和求解参数的顶级请求对象。
    • ShipmentModel:包含货物、车辆和全局限制的核心数据结构。
      • Shipment:包含取件和送件的任务。
        • VisitRequest:取货或送货的地点和限制条件。
      • Vehicle:可用于执行配送的车辆。
父级 参数 物业类型 说明
OptimizeToursRequest allowLargeDeadlineDespiteInterruptionRisk 布尔值 (true/false) 如果为 true,则即使超时设置为可能导致服务器中断的大值(超过 30 分钟),系统也会处理请求。
considerRoadTraffic 布尔值(true/false) 如果为 true,则使用路况数据进行路线规划。如果为 false,则仅使用道路网速度。
geodesicMetersPerSecond 数值 当 useGeodesicDistances 为 true 时,此速度用于计算行程时间。
injectedFirstSolutionRoutes[] 对象数组 (ShipmentRoute) 要从中开始优化的先前解决方案中的路线。
injectedSolutionConstraint 对象 (InjectedSolutionConstraint) 限制解决方案与现有路线相似,并指定必须保留哪些属性以及可以放宽哪些属性。
interpretInjectedSolutionsUsingLabels 布尔值 (true/false) 如果为 true,则按 label(而非数组索引)匹配注入路线中的运单/车辆。
label 字符串 用于标识请求的任意标签,在响应中返回。
maxValidationErrors integer 指定要返回的验证错误数量上限。如果未指定,则会应用默认限制。
model object (ShipmentModel) 必需。要优化的车辆和货件的集合。
populatePolylines 布尔值(true/false) 如果值为 true,则返回路线的编码多段线。
populateTransitionPolylines 布尔值(true/false) 如果值为 true,则返回各个访问之间转换的编码折线。
refreshDetailsRoutes[] 对象数组 (ShipmentRoute) 要刷新的路由列表。这会重新计算现有路线的多段线、时长和距离,而不会修改造访顺序。
searchMode 枚举 (SearchMode) RETURN_FAST(快速结果)或 CONSUME_ALL_AVAILABLE_TIME(在超时时间内提供最佳质量)。
solvingMode 枚举 (SolvingMode) DEFAULT_SOLVE(默认)或 VALIDATE_ONLY,用于在不求解的情况下验证模型。
timeout 时长 求解器应运行的最长时长(例如“30s”“300s”)。
useGeodesicDistances 布尔值(true/false) 如果值为 true,则使用测地线(直线)距离和 geodesicMetersPerSecond 速度计算行程距离和时间。
ShipmentModel
(属于 OptimizeToursRequest)
durationDistanceMatrices[] 对象数组 (DurationDistanceMatrix) 指定用于在地点之间进行路线规划的自定义时长和距离矩阵。
durationDistanceMatrixDstTags[] 字符串数组 定义自定义时长和距离矩阵的目的地(列)的标记。
durationDistanceMatrixSrcTags[] 字符串数组 用于定义自定义时长和距离矩阵的来源(行)的标记。
globalDurationCostPerHour 数值 路线全局时间跨度(从最早的车辆开始时间到最晚的车辆结束时间)的每小时费用。
globalEndTime 时间戳 模型中任何事件的最晚结束时间。
globalStartTime 时间戳 模型中任何事件的最早开始时间。
maxActiveVehicles integer 解决方案中允许处于活跃状态的车辆数量上限。
precedenceRules[] 对象数组 (PrecedenceRule) 用于定义特定货件之间排序限制的规则。
shipments[] 对象数组 (Shipment) 要配送的运单列表。
shipmentTypeIncompatibilities[] 对象数组 (ShipmentTypeIncompatibility) 禁止同一车辆运送特定类型货物的规则。
shipmentTypeRequirements[] 对象数组 (ShipmentTypeRequirement) 要求特定类型的配送由同一车辆完成的规则。
transitionAttributes[] 对象数组 (TransitionAttributes) 指定具有特定标记的访问之间的过渡的额外费用、延迟时间和距离限制。
vehicles[] 对象数组 (Vehicle) 可用于执行配送任务的车辆列表。
Shipment
(属于 ShipmentModel)
allowedVehicleIndices[] 整数数组 允许执行此配送的车辆的索引。
costsPerVehicle[] 映射(键:整数,值:数字) 如果由特定车辆配送此运单,则会产生额外费用。
costsPerVehicleIndices[] 整数数组 costsPerVehicle 值适用的车辆索引。
deliveries[] 对象数组 (VisitRequest) 配送货件的替代方案。
ignore 布尔值 (true/false) 如果值为 true,则忽略相应配送信息,并且不会将其用于优化。
label 字符串 用于标识货件的用户定义标签,在响应中返回。
loadDemands 映射(键:字符串,值:Load) 运送此货物所需的容量(例如重量、体积)。
penaltyCost 数值 如果无法提供配送服务,则为相应费用。如果未设置,则必须发货。
pickups[] 对象数组 (VisitRequest) 其他取件方式。
pickupToDeliveryAbsoluteDetourLimit 时长 与直达路线相比,允许的取货和送货之间的最大绝对绕行时间。
pickupToDeliveryRelativeDetourLimit 数值 允许的货件最大相对绕行距离(例如,值为 2.0 表示总时间最多可以是直达行程时间的 2 倍)。
pickupToDeliveryTimeLimit 时长 从取货开始到送货开始之间允许的最长时长。
shipmentType 字符串 用于不兼容性和要求规则的类型分类。
VisitRequest
(Shipment 中 pickups 和 deliveries 的组成部分)
arrivalLocation 对象 (LatLng) 到达地点的地理位置,以纬度/经度坐标表示。
arrivalWaypoint object (Waypoint) 车辆到达并执行访问的位置。由坐标或地点 ID 定义。
cost 数值 如果求解器选择此特定访问请求,则会产生的费用。
departureLocation object (LatLng) 出发地点的地理位置,以经纬度坐标表示。
departureWaypoint object (Waypoint) 车辆在完成访问后出发的位置。如果省略,则假定与 arrivalWaypoint 相同。
duration 时长 到访时长(服务时间),例如装载/卸载所需的时间。
label 字符串 此特定访问请求的用户定义标签,在响应中返回。
loadDemands 映射(键:字符串,值:Load) 指定此次到访时载重变化的需求(例如,-1 表示卸下一个包裹)。
tags[] 字符串数组 附加到此访问请求的标签。这些数据用于使用 transitionAttributes 计算此访问与其他访问之间的行程时间。
timeWindows[] 对象数组 (TimeWindow) 允许到达此到访地点的时间窗口。
visitTypes[] 字符串数组 描述访问类型的字符串(例如“送货”“安装”)。用于应用车辆模型的 extraVisitDurationForVisitType。
Vehicle
(属于 ShipmentModel)
breakRule object (BreakRule) 定义休息规则(例如,强制午休)。
costPerHour 数值 整个路线时长的每小时费用。
costPerKilometer 数值 每公里行驶费用。
costPerTraveledHour 数值 车辆行驶时的每小时费用。
endLocation object (LatLng) 地理终点位置,以经纬度坐标表示。
endTags[] 字符串数组 用于定义车辆最终状态的标记,用于过渡属性。
endTimeWindows[] 对象数组 (TimeWindow) 车辆结束路线的允许时间范围。
endWaypoint object (Waypoint) 使用航点(坐标或地点 ID)表示的地理位置终点。
extraVisitDurationForVisitType map(键:字符串,值:时长) 根据visitType为访问增加额外时长。
fixedCost 数值 如果使用车辆,则会产生固定费用,无论路线的距离或时长如何。
ignore 布尔值(true/false) 如果值为 true,则忽略相应车辆,且不会在优化中使用该车辆。
label 字符串 在响应中返回的车辆的用户定义标签。
loadLimits 映射(键:字符串,值:LoadLimit) 车辆容量(例如最大重量、最大体积)。
routeDistanceLimit 对象 (DistanceLimit) 车辆路线总距离的硬性或软性限制。
routeDurationLimit 对象 (DurationLimit) 车辆路线总时长的硬性或软性限制。
routeModifiers object (RouteModifiers) 一项或多项限制条件,例如避开收费站、高速公路或轮渡。
startLocation object (LatLng) 地理起始位置,以纬度/经度坐标表示。
startTags[] 字符串数组 定义车辆初始状态的标记,用于过渡属性。
startTimeWindows[] 对象数组 (TimeWindow) 允许车辆开始路线的时间范围。
startWaypoint object (Waypoint) 使用航点(坐标或地点 ID)表示的地理起始位置。
travelDurationLimit object (DurationLimit) 对车辆总行程时长(不包括等待/服务时间)的硬性或软性限制。
travelDurationMultiple 数值 应用于行程时间的乘数(例如,1.5 表示行程时间增加 50%)。
travelMode 枚举 (TravelMode) 出行方式(例如 DRIVING、WALKING)。会影响行程时间和距离。
unloadingPolicy 枚举 (UnloadingPolicy) 定义卸载顺序(例如,LIFO 或 LAST_IN_FIRST_OUT)。
usedIfRouteIsEmpty 布尔值(true/false) 如果值为 true,即使没有配送,车辆也会被视为已使用。它会产生固定费用,并在其起始位置和结束位置之间行驶。

响应正文

响应正文的数据结构。

响应正文包含以下元素,这些元素在右侧图表中进行了说明,并在下表中列出:

  • OptimizeToursResponse:包含优化后的路线和指标的顶级响应对象。
    • Metrics:解决方案的总体费用和执行统计信息。
    • ShipmentRoute:分配给单个车辆的访问顺序和行驶路线。
      • Visit:路线上的一个停靠点,用于取件或送货。
      • Transition:两个路线停靠点之间的行程路径和时长。
      • AggregatedMetrics:时长、距离和其他指标的总和。此元素可以同时存在于 Metrics 和 ShipmentRoute 中。
父级 参数 物业类型 说明
OptimizeToursResponse metrics 对象 (Metrics) 解决方案的汇总指标,包括总费用、总距离、总时长和车辆使用次数。
requestLabel 字符串 从请求的 label 字段复制的标签。用于将响应与原始请求相关联。
routes[] 对象数组 (ShipmentRoute) 为每辆车计算的路线列表。包含每个车辆的条目,无论其使用情况如何。
skippedShipments[] 对象数组 (SkippedShipment) 已跳过(未提供服务)的货件列表,以及跳过原因。
validationErrors[] 对象数组 (OptimizeToursValidationError) 在输入模型中发现的验证错误列表。如果 solvingMode 设置为 VALIDATE_ONLY,或者在求解过程中发生错误,则会填充此字段。
Metrics
(属于 OptimizeToursResponse)
aggregatedRouteMetrics object (AggregatedMetrics) 所有路线的汇总统计信息,例如总行程距离、总时长和等待时间。
costs map (key: string, value: number) 按类型(例如“model.vehicles.cost_per_kilometer”“model.shipments.penalty_cost”)细分的费用。
earliestVehicleStartTime 时间戳 所有已用车辆的最早开始时间。
latestVehicleEndTime 时间戳 所有已用车辆的最晚结束时间。
skippedMandatoryShipmentCount integer 跳过的强制配送数量。
totalCost 数值 解决方案的总费用,即所有路线费用和跳过配送罚金的总和。
usedVehicleCount integer 解决方案中使用的车辆数量。
AggregatedMetrics
(Metrics和ShipmentRoute的一部分)
breakDuration 时长 所有路线的休息总时长。
costs map (key: string, value: number) 按类型细分的费用(例如,“model.vehicles.cost_per_kilometer”“model.shipments.penalty_cost”)。
delayDuration 时长 所有路线的总延迟时长。
earliestVehicleStartTime 时间戳 所有已用车辆的最早开始时间。
latestVehicleEndTime 时间戳 所有已用车辆中最晚的结束时间。
maxLoads 映射(键:字符串,值:VehicleLoad) 在解决方案中的任何时间点,任何车辆承载的最大负载,按负载类型键控。
performedShipmentCount integer 所有车辆执行的配送总数。
skippedMandatoryShipmentCount integer 跳过的强制配送数量。
totalCost 数值 解决方案的总费用,即所有路线费用和跳过配送的罚款之和。
totalDuration 时长 所有路线的总时长(出行时间 + 等待时间 + 延迟时间 + 休息时间 + 拜访时间)。
travelDistanceMeters 数值 所有路线的总行程距离(以米为单位)。
travelDuration 时长 所有路线的总行程时长。
usedVehicleCount integer 解决方案中使用的车辆数量。
visitDuration 时长 在所有路线中执行到访(装载/卸载)所花费的总时长。
waitDuration 时长 所有路线的总等待时长。
ShipmentRoute
(属于 OptimizeToursResponse)
breaks[] 对象数组 (Break) 车辆在路线期间休息的列表。
hasTrafficInfeasibilities 布尔值 (true/false) 指明路线是否存在任何与路况相关的不可行性。
metrics object (AggregatedMetrics) 此路线特有的指标,例如总行程距离和时长。
routeCosts map(键:字符串,值:数字) 此路线的费用明细。键是费用类型(例如“cost_per_hour”),值是金额。
routePolyline object (EncodedPolyline) 编码多段线,表示路线的完整地理路径。
routeTotalCost 数值 路线的总费用,即 routeCosts 映射中所有费用的总和。
transitions[] 对象数组 (Transition) 连接各次造访的有序列表(行程航段)。
vehicleEndTime 时间戳 车辆完成路线的时间。
vehicleIndex integer 执行相应路线的源 ShipmentModel 中车辆的索引。
vehicleLabel 字符串 车辆的用户定义标签,从请求模型中复制。
vehicleStartTime 时间戳 车辆开始路线的时间。
visits[] 对象数组 (Visit) 车辆在此路线上执行的有序到访(接送和送货)序列。
Visit
(属于 ShipmentRoute)
detour 时长 与上一次和下一次到访之间的直接路径相比,此次到访产生的额外绕行时间。
isPickup 布尔值 (true/false) 如果值为 true,则表示相应访问是自提。如果为 false,则表示是送货。
loadDemands 映射(键:字符串,值:Load) 此到访满足的负载需求(例如,-1 表示送货)。这是相应 VisitRequest 负载需求的副本。
shipmentIndex integer 相应访问所服务的源模型中 Shipment 字段的索引。
shipmentLabel 字符串 从 ShipmentModel 复制的货件标签。
startTime 时间戳 预定的到访开始时间。
visitLabel 字符串 拜访请求的标签,从模型中的 VisitRequest 复制而来。
visitRequestIndex integer 相应访问所对应的货件取件或送货列表中的 VisitRequest 的索引。
Transition
(属于 ShipmentRoute)
breakDuration 时长 此过渡期间的休息时长。
delayDuration 时长 此过渡期间产生的延迟时长(例如,提前到达并等待时间窗口)。
routePolyline object (EncodedPolyline) 表示此特定过渡路径的编码多段线。
routeToken 字符串 一个不透明的令牌,可传递给 Google Navigation SDK 以在导航期间重建路线。
startTime 时间戳 相应过渡的开始时间。
totalDuration 时长 过渡的总时长,包括出行、等待、休息和延迟时间。
trafficInfoUnavailable 布尔值 (true/false) 如果为 true,则表示此转换没有可用的路况数据。
travelDistanceMeters 数值 相应过渡期间的行驶距离(以米为单位)。
travelDuration 时长 此过渡期间的行程时长。
vehicleLoads 映射(键:字符串,值:VehicleLoad) 车辆在此过渡期间承载的负载,按负载类型(例如“重量”)键控。
waitDuration 时长 在开始下一次访问之前等待的时长。