费用模型

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

路线优化 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 表示车辆每公里消耗的汽油量。您的车辆每行驶 1 公里需要 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 消息具有描述完成路线过程中产生的费用的费用属性: