费用模型

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