負載需求和限制

loadDemands 屬性定義於 ShipmentModel.shipments.Shipment 下方,loadLimits 屬性則定義於 ShipmentModel.vehicles.Vehicle 下方。

負載需求和限制是可用於管理容量的限制類型。這項限制會指定貨運必要容量車輛最大容量,方便您根據這些限制條件,將路線指派作業最佳化。

負載需求和限制可支援下列目標:

  • 避免車輛超載。
  • 監控車輛裝載量在取貨和送貨時的變化。
  • 優先將重型車輛與重型貨物配對。

這些屬性會指定負載需求和限制:

結構

如圖所示,負載需求和限制的結構如下:

基本檢查清單

以下檢查清單說明可避免潛在載入相關錯誤的基本知識。這份清單可協助您驗證要求及排解回應問題。

屬性

本節說明負載需求和限制的屬性,包括:

  • 載入類型:載入需求和限制之間的共用屬性。
  • LoadLoadLimit分別存在於負載需求和負載限制中的獨特屬性。

負載類型

貨物類型是字串鍵,適用於貨運和車輛。單一負載類型適用於貨運的負載需求,以及車輛的負載限制。

載入類型會使用 Protocol Buffers 地圖類型語法。命名負載類型時,請使用描述負載類型及其單位的 ID。例如:weightKgvolume_gallonspalletcountfrequencyDaily

LoadLoadLimit

LoadLoadLimit 物件包含特定屬性,可定義貨件和車輛的容量需求,下表說明這些屬性:

物件 有子女 屬性 房源類型 房源說明
Load loadDemands amount 字串 (int64 格式) 定義指定類型出貨的容量需求。
LoadLimit loadLimits maxLoad 字串 (int64 格式) 定義車輛在指定類型中的最大載重能力。

範例

本節將介紹三種範例:

  • 程式碼範例,說明負載需求和限制屬性的結構。
  • 情境示例:說明如何在 API 要求中使用負載需求和限制。
  • 要求範例,其中包含在範例情境中設定的值。

程式碼範例

以下範例顯示載入需求的結構,您可以在其中將 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 個空白位置,代表車輛的負重限制。第一批貨需要一個狗籠的空間,第二批貨則需要三個狗籠的空間。車輛的最終狀態是 6 個空間中有 4 個已有人佔用,剩下 2 個空位。

在本例中,每批貨物的負載需求和車輛的負載限制會產生下列影響:

  • 由於車輛最多可載 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
      }
    ]
  }
}

請注意,與本範例不同的是,出貨作業可能有多項裝載需求,車輛也可能有多項裝載限制,因此您可以提供複雜的限制,在規劃車隊路線時納入考量。