载荷需求和限制是一种可用于管理容量 的限制。此限制指定了货件的所需容量和 一辆车辆的最大容量,让您可以根据这些限制优化路线分配。
载荷需求和限制可以支持以下目标:
- 防止车辆超载。
- 监控车辆载荷在货件取货和送货时的变化情况。
- 优先将重型车辆与重载货件配对。
载荷需求和限制在以下属性中指定:
loadDemands指定特定货件 所需的容量。loadLimits指定给定车辆 的最大容量。
结构
如图所示,载荷需求和限制的结构如下:
loadDemands是Shipment的属性。一个Shipment可以有多个载荷需求。loadLimits是Vehicle的属性。一个Vehicle可以 有多个载荷限制。
基本要素核对清单
以下核对清单介绍了可防止潜在载荷相关错误的必要知识。此清单可帮助您验证请求并排查响应问题。
属性
本部分介绍了载荷需求和限制的属性,具体如下:
载荷类型
载荷类型是您同样应用于货件和车辆的字符串键。单个载荷类型适用于货件的载荷需求以及车辆的载荷限制。
载荷类型使用协议缓冲区映射类型语法。为载荷类型命名时,请使用描述载荷类型及其单位的标识符。例如:weightKg、volume_gallons、palletcount或 frequencyDaily。
Load 和 LoadLimit
`Load` 和 `LoadLimit` 对象包含用于
定义货件和车辆容量要求的特定属性,下表
介绍了这些属性:
| 对象 | 有子女 | 属性 | 属性类型 | 属性说明 |
|---|---|---|---|---|
Load |
loadDemands |
amount |
字符串(int64 格式) | 定义货件在指定类型中的容量要求。 |
LoadLimit |
loadLimits |
maxLoad |
字符串(int64 格式) | 定义车辆在指定类型中的最大载荷容量。 |
示例
本部分涵盖三种类型的示例:
代码示例
以下示例展示了载荷需求的结构,您可以在其中将
loadDemands类型设置为字符串,并将 amount 属性设置为 int64 格式的字符串:
{ "model": { "shipments": [ ... { "loadDemands": { "MATCHING_LOAD_TYPE": { "amount": "YOUR_LOAD_AMOUNT" } } } ], "vehicles": [ ... ] } }
以下示例展示了载荷限制的最基本结构,您可以在其中将 loadLimits 类型设置为字符串,并将 maxLoad 属性设置为 int64 格式的字符串:
{ "model": { "shipments": [ ... ], "vehicles": [ ... { "loadLimits": { "MATCHING_LOAD_TYPE": { "maxLoad": "YOUR_MAX_LOAD" } } } ] } }
示例场景
本部分介绍了一个场景,您经营一家狗狗日托所,并且正在优化路线,以便在装有少量板条箱的车辆中运送几只狗狗。
每个货件代表一个停靠点,您可以在该停靠点接送一定数量的狗狗。在此示例中,每个货件都有不同的取货地点(即您照顾的狗狗的家),并且所有货件都有相同的送货地点(您的狗狗日托所的建筑物)。
对于此示例,请求中的属性值如下:
| 有子女 | 属性 | 类型 | 值 | 场景 |
|---|---|---|---|---|
loadDemands |
载荷类型 | 字符串 | dogUnit |
定义货件的载荷类型。此示例使用 dogUnit,其中每个 dogUnit 代表一只狗狗。 |
loadDemands |
amount |
数值 | 第一个货件:1第二个货件: 3 |
指定定义的载荷类型的数量。在此示例中,您定义了两个货件,第一个货件中您接送一只狗狗,第二个货件中您接送 3 只狗狗。 |
loadLimits |
载荷类型 | 字符串 | dogUnit |
定义应用于车辆的载荷限制类型。此类型必须与 货件的载荷类型匹配,限制才相关。 |
loadLimits |
maxLoad |
数值 | 6 |
指定车辆可以携带的载荷类型的最大数量。在此示例中,您只有一辆车辆,最大容量为 6 个 dogUnit,其中每个 dogUnit 代表一个狗狗板条箱。 |
下图说明了车辆的载荷限制、每个货件的载荷需求以及每个货件如何占用车辆的载荷限制:

在此示例中,每个货件的载荷需求和车辆的载荷限制具有以下影响:
优化器不会有问题 ,因为车辆最多可以携带 6 只狗狗,而您只接送 4 只狗狗,所以优化器会为车辆生成一条运送狗狗的路线。
车辆的载荷限制为 6 个
dogUnit,这也意味着您只能在这辆特定车辆上再携带两只狗狗 。如果狗狗的数量大于载荷限制,优化器将跳过其中一个取货点 或将其分配给合适的车辆。
请注意,没有一组预定义的类型。在此示例中,您可以将载荷类型从狗狗单位更改为重量单位,以限制狗狗的重量,也可以将其更改为线性测量单位,以限制狗狗的宽度或高度。这种灵活性让您可以根据自己的特定需求定制载荷需求和限制。
请求示例
以下示例展示了包含示例场景值的基本 optimizeTours 请求的结构:
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.8024, "longitude": -122.4058 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ], "label": "One bernese mountain dog", "loadDemands": { "dogUnit": { "amount": "1" } } }, { "pickups": [ { "arrivalLocation": { "latitude": 37.7359, "longitude": -122.5011 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ], "label": "Three chihuahuas", "loadDemands": { "dogUnit": { "amount": "3" } } } ], "vehicles": [ { "startLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "endLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "loadLimits": { "dogUnit": { "maxLoad": "6" } }, "costPerKilometer": 1.0 } ] } }
请注意,与此示例的情况不同,一个货件可以有多个载荷需求,一辆车辆可以有多个载荷限制,让您可以提供复杂的限制,以便在优化车队的路线时加以考虑。
软性载荷限制
您可以通过在车辆的 loadLimits 上添加 softMaxLoad 和
costPerUnitAboveSoftMax,将载荷限制设置为软性限制。这样,优化器就可以在付出一定费用的情况下超出车辆的最大载荷,优先完成路线,而不是严格遵守载荷限制。
您可以同时使用 maxLoad 和 softMaxLoad 来设置硬性
和软性载荷限制。在这种情况下,softMaxLoad 设置可以
超出的载荷,而 maxLoad 设置无法超出的硬性限制。如果同时使用这两个属性,maxLoad 必须大于 softMaxLoad。
属性
下表介绍了载荷需求和限制的软性限制属性。
| 有子女 | 属性名称 | 属性类型 | 属性说明 |
|---|---|---|---|
loadLimits |
softMaxLoad |
字符串(int64 格式) | 车辆的首选最大载荷。如果车辆的载荷超过此值,则会产生费用。 |
loadLimits |
costPerUnitAboveSoftMax |
数值 | 超出 softMaxLoad 的每单位载荷的费用。使用 softMaxLoad 时,此字段是必需的。如需详细了解费用,请参阅费用模型关键概念。 |
代码示例
以下示例展示了 loadLimits 的软性限制属性的结构:
{ "loadLimits": { "LOAD_TYPE": { "softMaxLoad": "LOAD_AMOUNT", "costPerUnitAboveSoftMax": COST_PER_UNIT } } }