Tải nhu cầu và giới hạn

Thuộc tính loadDemands được xác định trong ShipmentModel.shipments.Shipment và thuộc tính loadLimits được xác định trong ShipmentModel.vehicles.Vehicle.

Nhu cầu và giới hạn về tải là một loại quy tắc ràng buộc mà bạn có thể dùng để quản lý công suất. Quy tắc ràng buộc này chỉ định công suất bắt buộc của lô hàng và công suất tối đa của xe, cho phép bạn tối ưu hoá việc chỉ định tuyến đường dựa trên các quy tắc ràng buộc này.

Nhu cầu và giới hạn về tải có thể hỗ trợ các mục tiêu như:

  • Ngăn xe bị quá tải.
  • Theo dõi cách tải trọng của xe thay đổi khi các lô hàng được nhận và giao.
  • Ưu tiên việc ghép nối xe tải hạng nặng với các lô hàng có tải trọng lớn.

Nhu cầu và giới hạn về tải được chỉ định trong các thuộc tính sau:

  • loadDemands chỉ định lượng công suất mà một lô hàng cụ thể yêu cầu.
  • loadLimits chỉ định công suất tối đa cho một xe cụ thể.

Cấu trúc

Như minh hoạ trong sơ đồ, nhu cầu và giới hạn về tải được cấu trúc như sau:

Danh sách kiểm tra các yếu tố cần thiết

Danh sách kiểm tra sau đây mô tả những kiến thức cần thiết giúp ngăn ngừa các lỗi tiềm ẩn liên quan đến tải. Danh sách này có thể giúp bạn xác thực yêu cầu và khắc phục sự cố về phản hồi.

Thuộc tính

Phần này mô tả các thuộc tính cho nhu cầu và giới hạn về tải, bao gồm:

  • Loại tải: Thuộc tính dùng chung giữa nhu cầu và giới hạn về tải.
  • Load và LoadLimit: Các thuộc tính riêng biệt có trong nhu cầu và giới hạn về tải tương ứng.

Loại tải

Loại tải là một khoá chuỗi mà bạn áp dụng đồng đều cho các lô hàng và xe. Một loại tải duy nhất áp dụng cho nhu cầu về tải của lô hàng cũng như giới hạn về tải của xe.

Các loại tải sử dụng cú pháp loại bản đồ Vùng đệm giao thức. Khi đặt tên cho loại tải, hãy sử dụng các mã nhận dạng mô tả loại tải và đơn vị của loại tải đó. Ví dụ: weightKg, volume_gallons, palletcount hoặc frequencyDaily.

Load và LoadLimit

Các đối tượng Load và LoadLimit chứa các thuộc tính cụ thể để xác định các yêu cầu về công suất cho lô hàng và xe. Bảng sau đây mô tả các thuộc tính này:

Đối tượng Cha mẹ Thuộc tính Loại khách sạn Mô tả thuộc tính
Load loadDemands amount chuỗi (định dạng int64) Xác định yêu cầu về công suất của lô hàng theo loại được chỉ định.
LoadLimit loadLimits maxLoad chuỗi (định dạng int64) Xác định công suất tải tối đa của xe theo loại được chỉ định.

Ví dụ

Phần này trình bày 3 loại ví dụ:

  • Mã mẫu minh hoạ cấu trúc của các thuộc tính nhu cầu và giới hạn về tải.
  • Tình huống ví dụ cho thấy một cách sử dụng nhu cầu và giới hạn về tải trong yêu cầu API.
  • Ví dụ về yêu cầu bao gồm các giá trị được đặt trong tình huống ví dụ.

Mã mẫu

Ví dụ sau đây cho thấy cấu trúc của nhu cầu về tải, trong đó bạn có thể đặt loại loadDemands thành chuỗi và thuộc tính amount thành chuỗi ở định dạng int64:

{
  "model": {
    "shipments": [ ...
      {
        "loadDemands": {
          "MATCHING_LOAD_TYPE": {
            "amount": "YOUR_LOAD_AMOUNT"
          }
        }
      }
    ],
    "vehicles": [ ...
    ]
  }
}

Ví dụ sau đây cho thấy cấu trúc cơ bản nhất của giới hạn về tải, trong đó bạn có thể đặt loại loadLimits thành chuỗi và thuộc tính maxLoad thành chuỗi ở định dạng int64:

{
  "model": {
    "shipments": [ ...
    ],
    "vehicles": [ ...
      {
        "loadLimits": {
          "MATCHING_LOAD_TYPE": {
            "maxLoad": "YOUR_MAX_LOAD"
          }
        }
      }
    ]
  }
}

Tình huống ví dụ

Phần này mô tả một tình huống trong đó bạn có một doanh nghiệp trông giữ chó và bạn đang tối ưu hoá tuyến đường để vận chuyển một vài chú chó trên một chiếc xe có số lượng lồng hạn chế.

Mỗi lô hàng đại diện cho một điểm dừng nơi bạn nhận một số lượng chó nhất định. Trong ví dụ này, mỗi lô hàng có một địa điểm nhận khác nhau (nhà của những chú chó mà bạn chăm sóc) và tất cả các lô hàng đều có cùng một địa điểm giao (toà nhà trông giữ chó của bạn).

Đối với ví dụ này, các giá trị thuộc tính trong yêu cầu của bạn là:

Cha mẹ Thuộc tính Loại Giá trị Trường hợp
loadDemands loại tải chuỗi dogUnit Xác định loại tải cho lô hàng. Ví dụ này sử dụng dogUnit, trong đó mỗi dogUnit đại diện cho một chú chó.
loadDemands amount số Lô hàng đầu tiên: 1
Lô hàng thứ hai: 3
Chỉ định số lượng của loại tải đã xác định. Trong ví dụ này, bạn đang xác định 2 lô hàng, trong đó lô hàng đầu tiên bạn nhận một chú chó, lô hàng thứ hai bạn nhận 3 chú chó.
loadLimits loại tải chuỗi dogUnit Xác định loại giới hạn về tải áp dụng cho xe. Loại này phải khớp với loại tải của lô hàng để giới hạn có liên quan.
loadLimits maxLoad số 6 Chỉ định số lượng tối đa của loại tải mà xe có thể chở. Trong ví dụ này, bạn chỉ có một chiếc xe có công suất tối đa là 6 dogUnit, trong đó mỗi dogUnit đại diện cho một lồng chó.

Sơ đồ sau đây minh hoạ giới hạn về tải của xe, nhu cầu về tải của từng lô hàng và cách mỗi lô hàng tiêu thụ giới hạn về tải của xe:

Xe bắt đầu tuyến đường với 6 chỗ trống, đại diện cho giới hạn tải trọng của xe. Lô hàng đầu tiên cần không gian cho một chú chó, lô hàng thứ hai cần không gian cho ba chú chó. Trạng thái cuối cùng của xe là có 4 trong số 6 chỗ đã được lấp đầy, còn lại 2 chỗ trống.

Trong ví dụ này, nhu cầu về tải của từng lô hàng và giới hạn về tải của xe có các tác động sau:

  • Trình tối ưu hoá sẽ không gặp vấn đề khi tạo tuyến đường cho xe để vận chuyển chó, vì xe có thể chở tối đa 6 chú chó và bạn chỉ nhận 4 chú chó.

  • Việc có giới hạn về tải là 6 dogUnit trên xe cũng có nghĩa là bạn chỉ có thể chở thêm 2 chú chó trên chiếc xe cụ thể này.

  • Nếu số lượng chó lớn hơn giới hạn về tải, thì trình tối ưu hoá sẽ bỏ qua một trong các điểm nhận hoặc chỉ định điểm nhận đó cho một chiếc xe phù hợp.

Hãy nhớ rằng không có tập hợp các loại được xác định trước. Trong ví dụ này, bạn có thể thay đổi loại tải từ đơn vị chó thành đơn vị trọng lượng để giới hạn trọng lượng của chó hoặc thay đổi thành số đo tuyến tính để giới hạn chiều rộng hoặc chiều cao của chúng. Tính linh hoạt này cho phép bạn điều chỉnh nhu cầu và giới hạn về tải theo nhu cầu cụ thể của mình.

Ví dụ về yêu cầu

Ví dụ sau đây cho thấy cấu trúc của yêu cầu optimizeTours cơ bản kết hợp các giá trị trong tình huống ví dụ:

{
  "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
      }
    ]
  }
}

Hãy nhớ rằng, không giống như trường hợp trong ví dụ này, một lô hàng có thể có nhiều nhu cầu về tải và một xe có thể có nhiều giới hạn về tải, cho phép bạn cung cấp các quy tắc ràng buộc phức tạp để cân nhắc khi tối ưu hoá tuyến đường của đội xe.

Giới hạn linh hoạt về tải

Bạn có thể đặt giới hạn về tải làm quy tắc ràng buộc linh hoạt bằng cách thêm softMaxLoad và costPerUnitAboveSoftMax vào loadLimits của xe. Điều này cho phép trình tối ưu hoá vượt quá tải tối đa của xe với một chi phí, ưu tiên hoàn thành tuyến đường hơn là tuân thủ nghiêm ngặt giới hạn về tải.

Bạn có thể sử dụng maxLoad và softMaxLoad cùng nhau để đặt cả giới hạn về tải cố định và giới hạn về tải linh hoạt. Trong trường hợp này, softMaxLoad đặt tải có thể vượt quá và maxLoad đặt giới hạn cố định không thể vượt quá. Khi cả hai đều được sử dụng, maxLoad phải lớn hơn softMaxLoad.

Thuộc tính

Bảng sau đây mô tả các thuộc tính quy tắc ràng buộc linh hoạt cho nhu cầu và giới hạn về tải.

Cha mẹ Tên tài sản Loại khách sạn Mô tả thuộc tính
loadLimits softMaxLoad chuỗi (định dạng int64) Tải tối đa ưu tiên cho xe. Nếu tải của xe vượt quá giá trị này, thì sẽ phát sinh chi phí.
loadLimits costPerUnitAboveSoftMax số Chi phí trên mỗi đơn vị tải vượt quá softMaxLoad. Bạn phải điền trường này khi sử dụng softMaxLoad. Hãy xem khái niệm chính về Mô hình chi phí để tìm hiểu thêm về chi phí.

Mã mẫu

Ví dụ sau đây cho thấy cấu trúc của các thuộc tính quy tắc ràng buộc linh hoạt của loadLimits:

{
   "loadLimits": {
        "LOAD_TYPE": {
          "softMaxLoad": "LOAD_AMOUNT",
          "costPerUnitAboveSoftMax": COST_PER_UNIT
        }
      }
}