Route Optimization API 的主要目标是找到费用最低的路线。因此,成本模型是路线优化的主要驱动因素。
费用模型是一组属性,用于指定全局、车辆和配送费用。
费用模型属性支持以下类型的优化目标:
- 高效的车辆分配和路线
- 经济实惠的自提和送货时长
- 优先处理重要货件
结构
如图所示,费用模型属性的结构如下:
Shipment包含penaltyCost属性。Vehicle包含以下属性:
本文档仅重点介绍重要的费用模型形参。如需查看完整的费用形参集,请参阅参考文档。
基本功能版核对清单
以下核对清单介绍了可避免潜在费用相关错误的基本知识。此列表可帮助您验证请求并排查响应问题。
属性
下表列出并介绍了费用模型属性。
| 父级 | 属性名称 | 物业类型 | 每次 | 属性说明 |
|---|---|---|---|---|
Shipment |
penaltyCost |
数值 | 已跳过递送 | 跳过配送产生的费用。 如果完成运单的费用超过其惩罚费用,API 会跳过该运单。
|
Vehicle |
fixedCost |
数值 | 发货 | 如果使用此车辆处理配送,则会应用固定费用。 |
costPerHour |
数值 | 小时 | 车辆每小时的运营成本,包括运输、等待、访问和休息时间。 随着此成本的增加,优化器会尝试寻找可能不是最短路线的更快路线。 此属性简单且完整,可以作为有效的独立每车成本。 |
|
costPerKilometer |
数值 | 公里 | 车辆每行驶一公里的费用,可以代表燃料费用或摊销的车辆维护费用。 | |
costPerTraveledHour |
数值 | 小时 | 仅在运输途中每小时运营车辆的费用,不包括等待、访问和休息时间。这样会优先选择更快的路线,而不是更短的路线。 |
示例
本部分涵盖三种类型的示例:
代码示例
以下代码示例展示了 Shipment 中费用模型属性的结构:
{ "model": { "shipments": [ ... { "penaltyCost": PENALTY_COST } ], "vehicles": [ ... ] } }
以下代码示例展示了 Vehicle 中费用模型属性的结构:
{ "model": { "shipments": [ ... ], "vehicles": [ ... { "fixedCost": FIXED_COST, "costPerKilometer": KILOMETER_COST, "costPerHour": HOUR_COST, "costPerTraveledHour": TRAVELED_HOUR_COST } ] } }
示例场景
本部分介绍了一个场景,其中您经营着一家狗狗日托业务。您正在优化卡车的路线,以便从狗狗的家中接它们。在这种情况下,您希望优化器在提供路线时考虑与接送狗狗和车辆运营相关的费用。
在本示例中,一个费用单位代表 1 美元。这意味着,请求中的费用模型属性值如下:
| 属性 | 值 | 场景 |
|---|---|---|
penaltyCost |
10 | 表示您向客户提供的罚金,用于惩罚客户未在预定日期接走宠物狗。如果您在预定日期没有接狗,客户的服务总费用将扣减 40 美元。 |
fixedCost |
30 | 表示您每天的车贷还款费用,即每天 30 美元。 |
costPerKilometer |
0.08 | 表示您的车辆每公里消耗的汽油量。您的车辆每公里需要消耗 0.04 加仑燃料,而您所在地区的燃料价格为每加仑 2 美元。 |
costPerHour |
27 | 表示您为司机驾驶您的车辆而支付的费用。您需要向司机支付每小时 27 美元的费用。 |
costPerTraveledHour |
2.5 | 表示在路上时,您每小时需要为狗狗支付多少车辆空调费用。只要车辆处于静止状态,司机就可以打开后门并关闭空调。 |
根据费用参数,优化器可以做出对用户而言不明显但可以通过优化找到的权衡。
下图展示了一个示例,其中优化器可以选择一条更长但更快的路线(绿色虚线),以避开红色虚线上的交通拥堵。

在这种情况下,两条路由的费用平衡如下:
绿色虚线的
costPerHour和costPerTraveledHour较低,因为它是一条避开拥堵的快速路线,即使costPerKilometer较高,也更具成本效益。红色虚线路线的
costPerKilometer较低,因为它是一条直达路线,但由于交通等待时间,costPerHour和costPerTraveledHour太高,因此它是最昂贵的路线。
除了提供经济实惠的路线之外,优化器还会在响应属性中提供配送路线的总费用。
请求示例
以下示例展示了基本 optimizeTours 请求的结构,其中包含示例场景中设置的值:
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.8024, "longitude": -122.4058 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ] "penaltyCost": 40 } ], "vehicles": [ { "startLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "endLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "fixedCost": 30, "costPerKilometer": 0.08, "costPerHour": 27, "costPerTraveledHour": 2.5 } ] } }
响应属性
OptimizeToursResponse 消息具有费用属性,用于描述在完成路线的过程中产生的费用:
metrics.costs:所有路线的总费用,按 与费用相关的请求字段细分。metrics.totalCost:所有路线的总费用。