路线优化 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 | 表示车辆每公里消耗的汽油量。您的车辆每行驶 1 公里需要 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
:所有路线的总费用之和。