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:所有路线的总费用汇总。