以下页面包含 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 |
时长 | 在开始下一次访问之前等待的时长。 |