加载需求和限制

loadDemands 属性在 ShipmentModel.shipments.Shipment 下定义,loadLimits 属性在 ShipmentModel.vehicles.Vehicle 下定义。

负载需求和限制是一种可用于管理容量的约束条件。它们用于指定运输订单的所需载重量和车辆的载重量上限,以便您根据这些约束条件优化路线分配。

负载需求和限制可支持以下目标:

  • 防止车辆超载。
  • 监控随着运输车辆上货和送货的变化,车辆载重情况如何变化。
  • 限制车辆可以访问特定地点的次数。

负载需求和限制在以下属性中指定:

  • loadDemands 用于指定特定运输订单所需的容量。
  • loadLimits 用于指定给定车辆的载客量上限。

结构

如图所示,负载需求和限制的结构如下:

属性

本部分介绍了负载需求和限制的属性,具体如下:

  • 负载类型:负载需求和限制之间的共享属性。
  • LoadLoadLimit:分别在载荷需求和载荷限制中存在的唯一属性。

加载类型

载荷类型是字符串键,用于标识运输的载荷需求类型和车辆的载荷限制。加载类型具有以下重要特征:

  • 用户定义:您可以定义加载类型。没有针对加载类型的预定义系统变量。
  • 共享:装载类型在运输和车辆之间共享。这意味着,只有在运输的货物类型与车辆的载货类型相符时,运输任务才会使车辆的载货量达到上限。如果车辆未为特定类型指定任何载重限制,则可以携带无限量的该类型载荷。

表示加载类型的字符串键使用 Protocol Buffers 映射类型语法。为避免出现问题,这些字符串键不得为 null。在命名负载类型时,建议使用描述负载类型及其单位的标识符。例如:weightKgvolume_gallonspalletcountfrequencyDaily

LoadLoadLimit

LoadLoadLimit 对象包含用于定义运输和车辆载重要求的特定属性,下表介绍了这些属性:

对象 育有子女 属性 物业类型 房源说明
Load loadDemands amount string(int64 格式) 指定类型中的运输容量要求。
LoadLimit loadLimits maxLoad string(int64 格式) 定义指定类型的车辆的最大载重量。

示例

以下示例展示了负载需求的结构,您可以将 loadDemands 类型设置为字符串,并将 amount 属性设置为 int64 格式的字符串:

"loadDemands": {
  "MATCHING_LOAD_TYPE": {
    "amount": "YOUR_LOAD_AMOUNT"
  }
}

以下示例展示了负载限制的最基本结构,您可以将 loadLimits 类型设置为字符串,并将 maxLoad 属性设置为 int64 格式的字符串:

"loadLimits": {
  "MATCHING_LOAD_TYPE": {
    "maxLoad": "YOUR_MAX_LOAD"
  }
}

试试看

使用上面的代码示例创建一个虚构场景。在此场景中,您有一个重 10 千克的运输包裹,以及一辆可运载 100 千克的车辆:

  1. loadDemands 示例中,将加载类型定义为 weightKg

    完成此操作后,loadLimits 示例中的负载类型也会填充,并共享负载类型。请注意,loadDemandsloadLimits 的类型必须匹配,才能使运输消耗车辆的配额。

  2. 在同一 loadDemands 示例中,将 amount 属性设为 10

    这意味着,包裹的重量为 10 公斤。

  3. loadLimits 示例中,将 maxLoad 属性设置为 100

    这意味着车辆最多可载重 100 公斤。

请注意,没有一组预定义的类型。在此示例中,您可以将千克更改为磅,或将其更改为线性测量值(而非重量)。这种灵活性可让您根据自己的具体需求量身定制负载需求和限制。

请求示例

以下示例展示了基本 optimizeTours 请求的结构,其中包含在运输中使用 loadDemands 和在车辆中使用 loadLimits

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 00.000000,
              "longitude": 00.000000
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 00.000000,
              "longitude": 00.000000
            }
          }
        ],
        "loadDemands": {
          "MATCHING_LOAD_TYPE": {
            "amount": "YOUR_LOAD_AMOUNT"
          }
        }
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 00.000000,
          "longitude": 00.000000
        },
        "endLocation": {
          "latitude": 00.000000,
          "longitude": 00.000000
        },
        "costPerKilometer": 1.0,
        "loadLimits": {
          "MATCHING_LOAD_TYPE": {
            "maxLoad": "YOUR_MAX_LOAD"
          }
        }
      }
    ]
  }
}

请注意,运输中可以有多个装载需求,车辆可以有多个装载限制,这样您就可以提供复杂的约束条件,以便在优化车队路线时加以考虑。