负载需求和限制是一种可用于管理容量的限制。此限制条件用于指定货件的所需容量和车辆的最大容量,以便您根据这些限制条件优化路线分配。
负载需求和限制可以支持以下目标:
- 防止车辆超载。
- 监控车辆负荷在取货和送货期间的变化情况。
- 优先安排重型车辆运输重型货物。
以下属性用于指定负载需求和限制:
loadDemands
用于指定特定货件所需的容量。loadLimits
用于指定给定车辆的最大容量。
结构
如图所示,负载需求和限制的结构如下:
loadDemands
是Shipment
的属性。一个Shipment
可以有多个负载需求。loadLimits
是Vehicle
的属性。一个Vehicle
可以有多个负载限制。
基本功能核对清单
以下核对清单介绍了可防止潜在负载相关错误的必备知识。此列表可帮助您验证请求并排查响应方面的问题。
属性
本部分介绍了负载需求和限制的属性,如下所示:
负载类型
载荷类型是一个字符串键,可同时应用于货件和车辆。单一的装载类型适用于货件的装载需求以及车辆的装载限制。
负载类型使用 Protocol Buffers map 类型语法。在命名负载类型时,请使用描述负载类型及其单位的标识符。例如: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 次发货:1 第 2 次发货: 3 |
指定所定义负载类型的数量。在此示例中,您要定义两批货物,第一批货物要提取 1 只狗,第二批货物要提取 3 只狗。 |
loadLimits |
负载类型 | 字符串 | dogUnit |
定义应用于车辆的载重限制类型。此值必须与相应货件的装载类型一致,相应限额才有效。 |
loadLimits |
maxLoad |
数值 | 6 |
指定车辆可载运的最大负载类型数量。在此示例中,您只有一辆车辆,最大容量为 6 dogUnit ,其中每个 dogUnit 代表一个狗笼。 |
下图展示了车辆的载重限制、每批货物的载重需求,以及每批货物如何消耗车辆的载重限制:
在此示例中,每批货物的装载需求和车辆的装载限制具有以下影响:
优化器不会有问题,因为车辆最多可搭载 6 只狗,而您只需接送 4 只狗,因此可以为车辆生成接送狗的路线。
车辆的载重限制为 6
dogUnit
,这意味着您只能在这辆特定车辆上再载 2 只狗。如果狗的数量超过了载重限制,优化器会跳过一次接送,或者将其分配给合适的车辆。
请注意,没有预定义类型集。在此示例中,您可以将负荷类型从“狗单位”更改为“重量单位”,以限制狗的重量;也可以将其更改为“线性测量单位”,以限制狗的宽度或高度。这种灵活性可让您根据自己的具体需求调整负载需求和限制。
请求示例
以下示例展示了包含示例场景值的基本 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 } ] } }
请注意,与此示例不同,一次装货可能有多项装货需求,一辆车可能有多项载重限制,因此您可以提供复杂的限制条件,以便在优化车队路线时加以考虑。