以下页面包含 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 |
object (InjectedSolutionConstraint) |
将解决方案限制为与现有路线类似,指定必须保留哪些属性以及可以放宽哪些属性。 | |
interpretInjectedSolutionsUsingLabels |
布尔值(true/false) |
如果为 true,则按注入路线中的 label 而不是数组索引来匹配相应货物/车辆。 |
|
label |
字符串 | 用于标识请求的任意标签,会在响应中返回。 | |
maxValidationErrors |
整数 | 指定要返回的验证错误数量上限。如果未指定,则应用默认限制。 | |
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 |
整数 | 解决方案中允许处于有效状态的车辆数量上限。 | |
precedenceRules[] |
对象数组 (PrecedenceRule) |
用于定义特定货件之间顺序限制的规则。 | |
shipments[] |
对象数组 (Shipment) |
要处理的货件的列表。 | |
shipmentTypeIncompatibilities[] |
对象数组 (ShipmentTypeIncompatibility) |
规则,用于防止同一车辆运送某些类型的货物。 | |
shipmentTypeRequirements[] |
对象数组 (ShipmentTypeRequirement) |
要求使用同一车辆运送特定类型货件的规则。 | |
transitionAttributes[] |
对象数组 (TransitionAttributes) |
指定具有特定标记的访问之间的过渡的额外费用、延迟和距离限制。 | |
vehicles[] |
对象数组 (Vehicle) |
可用于执行货件运输的车辆列表。 | |
Shipment(属于 ShipmentModel) |
allowedVehicleIndices[] |
整数数组 | 允许执行相应配送任务的车辆的索引。 |
costsPerVehicle[] |
map(键:整数,值:数字) | 如果特定车辆提供此货件的运输服务,则会产生额外费用。 | |
costsPerVehicleIndices[] |
整数数组 | 应用 costsPerVehicle 值的车辆的索引。 |
|
deliveries[] |
对象数组 (VisitRequest) |
配送货件的替代方案。 | |
ignore |
布尔值(true/false) |
如果值为 true,则忽略相应配送信息,并且不会在优化中使用。 |
|
label |
字符串 | 用于标识货件的用户定义标签,在响应中返回。 | |
loadDemands |
map (key: string, value: Load) |
运输相应货物所需的容量(例如重量、体积)。 | |
penaltyCost |
数值 | 如果无法提供配送服务,则需支付的费用。如果未设置,则必须发货。 | |
pickups[] |
对象数组 (VisitRequest) |
取件的替代方案。 | |
pickupToDeliveryAbsoluteDetourLimit |
时长 | 与直达路线相比,允许的取货地点与送货地点之间的最大绝对绕行时间。 | |
pickupToDeliveryRelativeDetourLimit |
数值 | 允许货件的最大相对绕行时间(例如,值为 2.0 表示总时间最多可以是直达行程时间的 2 倍)。 | |
pickupToDeliveryTimeLimit |
时长 | 从取货开始到送货开始之间的最长允许时长。 | |
shipmentType |
字符串 | 用于不兼容规则和要求规则的类型分类。 | |
VisitRequest( Shipment 中 pickups 和 deliveries 的组成部分) |
arrivalLocation |
object (LatLng) |
地理到达位置(以纬度/经度坐标表示)。 |
arrivalWaypoint |
object (Waypoint) |
车辆到达以执行访问的位置。由坐标或地点 ID 定义。 | |
cost |
数值 | 如果求解器选择此特定访问请求,则会产生的费用。 | |
departureLocation |
object (LatLng) |
地理出发位置(以纬度/经度坐标表示)。 | |
departureWaypoint |
object (Waypoint) |
车辆在完成访问后出发的地点。如果省略,则假定与 arrivalWaypoint 相同。 |
|
duration |
时长 | 访问(服务时间)的持续时间,例如装货/卸货所需的时间。 | |
label |
字符串 | 此特定访问请求的用户定义标签,在响应中返回。 | |
loadDemands |
map (key: string, value: Load) |
指定本次访问的负荷变化的需求(例如,-1 表示要寄送包裹)。 | |
tags[] |
字符串数组 | 附加到此访问请求的标记。这些数据用于计算相应访问与使用 transitionAttributes 的其他访问之间的出行时间。 |
|
timeWindows[] |
对象数组 (TimeWindow) |
相应访问的允许到达时间窗口。 | |
visitTypes[] |
字符串数组 | 描述访问类型的字符串(例如,“delivery”“installation”)。用于应用车辆模型中的 extraVisitDurationForVisitType。 |
|
Vehicle(属于 ShipmentModel) |
breakRule |
object (BreakRule) |
定义了休息时间规则(例如强制性午休)。 |
costPerHour |
数值 | 每小时的费用,以整个路线的持续时间为准。 | |
costPerKilometer |
数值 | 每行驶 1 公里的费用。 | |
costPerTraveledHour |
数值 | 车辆行驶时的每小时费用。 | |
endLocation |
object (LatLng) |
地理位置的终点(以纬度/经度坐标表示)。 | |
endTags[] |
字符串数组 | 用于定义车辆结束状态的标记,用于过渡属性。 | |
endTimeWindows[] |
对象数组 (TimeWindow) |
车辆结束路线的允许时间窗口。 | |
endWaypoint |
object (Waypoint) |
使用航点(坐标或地点 ID)表示的地理位置终点。 | |
extraVisitDurationForVisitType |
map(键:字符串,值:时长) | 根据访问的 visitType 为访问添加额外时长。 |
|
fixedCost |
数值 | 如果车辆被使用,则无论路线的距离或时长如何,都会收取一笔固定费用。 | |
ignore |
布尔值(true/false) |
如果为 true,则忽略相应车辆,且不会在优化中使用该车辆。 |
|
label |
字符串 | 车辆的用户指定标签,在响应中返回。 | |
loadLimits |
map (key: string, value: LoadLimit) |
车辆容量(例如最大重量、最大体积)。 | |
routeDistanceLimit |
object (DistanceLimit) |
车辆路线总距离的硬性或软性限制。 | |
routeDurationLimit |
object (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 |
object (Metrics) |
解决方案的汇总指标,包括总费用、总距离、总时长和车辆使用次数。 |
requestLabel |
字符串 | 从请求的 label 字段复制的标签。用于将响应与原始请求相关联。 |
|
routes[] |
对象数组 (ShipmentRoute) |
为每辆车计算的路线列表。包含每辆车的条目,无论车辆是否被使用。 | |
skippedShipments[] |
对象数组 (SkippedShipment) |
被跳过(未提供服务)的货件列表,以及跳过原因。 | |
validationErrors[] |
对象数组 (OptimizeToursValidationError) |
输入模型中发现的验证错误列表。如果 solvingMode 设置为 VALIDATE_ONLY,或者在求解期间发生错误,则会填充此字段。 |
|
Metrics(属于 OptimizeToursResponse) |
aggregatedRouteMetrics |
object (AggregatedMetrics) |
所有路线的汇总统计信息,例如总行程距离、总时长和等待时间。 |
costs |
map(键:字符串,值:数字) | 按类型细分的费用(例如,“model.vehicles.cost_per_kilometer”“model.shipments.penalty_cost”)。 | |
earliestVehicleStartTime |
时间戳 | 所有已用车辆的最早开始时间。 | |
latestVehicleEndTime |
时间戳 | 所有已使用车辆中最晚的结束时间。 | |
skippedMandatoryShipmentCount |
整数 | 跳过的强制性配送次数。 | |
totalCost |
数值 | 解决方案的总费用,即所有路线费用和跳过配送的罚款之和。 | |
usedVehicleCount |
整数 | 解决方案中使用的车辆数量。 | |
AggregatedMetrics(属于 Metrics 和 ShipmentRoute) |
breakDuration |
时长 | 所有路线的休息总时长。 |
costs |
map(键:字符串,值:数字) | 按类型细分的费用(例如,“model.vehicles.cost_per_kilometer”“model.shipments.penalty_cost”)。 | |
delayDuration |
时长 | 所有路线的总延迟时长。 | |
earliestVehicleStartTime |
时间戳 | 所有已用车辆的最早开始时间。 | |
latestVehicleEndTime |
时间戳 | 所有已使用车辆中最晚的结束时间。 | |
maxLoads |
map (key: string, value: VehicleLoad) |
解决方案中任何车辆在任何时间点所载的最大负载,按负载类型键控。 | |
performedShipmentCount |
整数 | 所有车辆完成的配送总次数。 | |
skippedMandatoryShipmentCount |
整数 | 跳过的强制性配送次数。 | |
totalCost |
数值 | 解决方案的总费用,即所有路线费用和跳过配送的罚款之和。 | |
totalDuration |
时长 | 所有路线的总时长(出行 + 等待 + 延迟 + 休息 + 拜访)。 | |
travelDistanceMeters |
数值 | 所有路线的总出行距离(以米为单位)。 | |
travelDuration |
时长 | 所有路线的总出行时长。 | |
usedVehicleCount |
整数 | 解决方案中使用的车辆数量。 | |
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 |
整数 | 执行相应路线的源 ShipmentModel 中车辆的索引。 |
|
vehicleLabel |
字符串 | 车辆的用户定义标签,从请求模型复制而来。 | |
vehicleStartTime |
时间戳 | 车辆开始行驶路线的时间。 | |
visits[] |
对象数组 (Visit) |
车辆在此路线上执行的到访(取货和送货)顺序。 | |
Visit(属于 ShipmentRoute) |
detour |
时长 | 与前一次访问和下一次访问之间的直接路径相比,本次访问产生的额外绕行时间。 |
isPickup |
布尔值(true/false) |
如果值为 true,则表示相应访问是取货访问。如果为 false,则表示是交付。 |
|
loadDemands |
map (key: string, value: Load) |
相应访问所满足的负荷需求(例如,对于送货,值为 -1)。这是相应 VisitRequest 负载需求的副本。 |
|
shipmentIndex |
整数 | 相应来源模型中此访问所服务的 Shipment 字段的索引。 |
|
shipmentLabel |
字符串 | 从 ShipmentModel 复制的货件标签。 |
|
startTime |
时间戳 | 预约的开始时间。 | |
visitLabel |
字符串 | 访问请求的标签,从模型中的 VisitRequest 复制而来。 |
|
visitRequestIndex |
整数 | 相应访问所对应的货件取件或送货列表中的 VisitRequest 的索引。 |
|
Transition(属于 ShipmentRoute) |
breakDuration |
时长 | 此过渡期间的休息时长。 |
delayDuration |
时长 | 相应转换期间产生的延迟时长(例如,提前到达并等待时间窗口)。 | |
routePolyline |
object (EncodedPolyline) |
表示相应特定过渡路径的编码多段线。 | |
routeToken |
字符串 | 一个不透明的令牌,可传递给 Google Navigation SDK 以在导航期间重建路线。 | |
startTime |
时间戳 | 相应过渡的开始时间。 | |
totalDuration |
时长 | 过渡的总时长,包括旅途、等待、休息和延迟时间。 | |
trafficInfoUnavailable |
布尔值(true/false) |
如果值为 true,则表示相应过渡时段没有流量数据。 |
|
travelDistanceMeters |
数值 | 相应过渡期间的行驶距离(以米为单位)。 | |
travelDuration |
时长 | 此过渡期间的出行时长。 | |
vehicleLoads |
map (key: string, value: VehicleLoad) |
车辆在此过渡期间所载的负荷,按负荷类型(例如 “weight”)。 | |
waitDuration |
时长 | 在开始下一次访问之前等待的时长。 |