费用模型

费用属性在 ShipmentModel.shipments.Shipment 和 ShipmentModel.vehicles.Vehicle 下定义

Route Optimization API 的主要目标是找到费用最低的路线。因此,成本模型是路线优化的主要驱动因素。

费用模型是一组属性,用于指定全局、车辆和配送费用。

费用模型属性支持以下类型的优化目标:

  • 高效的车辆分配和路线
  • 经济实惠的自提和送货时长
  • 优先处理重要货件

结构

如图所示,费用模型属性的结构如下:

本文档仅重点介绍重要的费用模型形参。如需查看完整的费用形参集,请参阅参考文档。

基本功能版核对清单

以下核对清单介绍了可避免潜在费用相关错误的基本知识。此列表可帮助您验证请求并排查响应问题。

属性

下表列出并介绍了费用模型属性。

父级 属性名称 物业类型 每次 属性说明
Shipment penaltyCost 数值 已跳过递送 跳过配送产生的费用。
如果完成运单的费用超过其惩罚费用,API 会跳过该运单。
  • 设置 penaltyCost 会优先配送费用较高的配送。
  • 如果不设置运单的 penaltyCost,则该运单为强制性运单。
  • 将运单 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 表示在路上时,您每小时需要为狗狗支付多少车辆空调费用。只要车辆处于静止状态,司机就可以打开后门并关闭空调。

根据费用参数,优化器可以做出对用户而言不明显但可以通过优化找到的权衡。

下图展示了一个示例,其中优化器可以选择一条更长但更快的路线(绿色虚线),以避开红色虚线上的交通拥堵。

车辆有两条可能的路线,一条由绿色虚线表示,这条路线较长,但没有任何突发事件;另一条由红色虚线表示,这条路线较短,但中间发生了车祸。

在这种情况下,两条路由的费用平衡如下:

除了提供经济实惠的路线之外,优化器还会在响应属性中提供配送路线的总费用。

请求示例

以下示例展示了基本 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 消息具有费用属性,用于描述在完成路线的过程中产生的费用: