負載需求和限制是一種限制條件,可用於管理容量。這項限制會指定貨運的必要容量和車輛的最大容量,方便您根據這些限制,將路線指派作業最佳化。
負載需求和限制可支援下列目標:
- 避免車輛超載。
- 監控車輛載貨量在取貨和送貨時的變化。
- 優先將重型車輛與重型貨物配對。
負載需求和限制會在下列屬性中指定:
loadDemands指定特定貨件所需的容量。loadLimits:指定特定車輛的最大容量。
結構
如圖所示,負載需求和限制的結構如下:
loadDemands是Shipment的屬性。一個Shipment可以有多個負載需求。loadLimits是Vehicle的屬性。一個Vehicle可以有多個負載限制。
基本檢查清單
以下檢查清單說明重要知識,可避免潛在的載入相關錯誤。這份清單可協助您驗證要求,並排解回應問題。
屬性
本節說明負載需求和限制的屬性,如下所示:
負載類型
負載類型是字串鍵,適用於貨運和車輛。單一負載類型適用於貨運的負載需求,以及車輛的負載限制。
負載類型使用通訊協定緩衝區地圖類型語法。命名負載類型時,請使用描述負載類型及其單位的 ID。例如:weightKg、volume_gallons、palletcount 或 frequencyDaily。
Load和LoadLimit
Load 和 LoadLimit 物件包含特定屬性,可定義貨件和車輛的容量需求,下表說明這些屬性:
| 物件 | 父項 | 屬性 | 物業類型 | 房源說明 |
|---|---|---|---|---|
Load |
loadDemands |
amount |
字串 (64 位元整數格式) | 定義指定類型出貨的容量需求。 |
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 |
指定定義的負載類型數量。在這個範例中,您定義了兩筆運送訂單,第一筆訂單要載運一隻狗,第二筆訂單要載運 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 } } }