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 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 sức chứa bắt buộc của lô hàng và sức chứa tối đa của phương tiện, giú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 chở quá tải.
  • Theo dõi mức thay đổi của tải trọng xe khi các lô hàng được lấy và giao.
  • Ưu tiên ghép xe tải hạng nặng với các chuyến hàng có tải trọng lớn.

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

  • loadDemands chỉ định lượng sức chứa mà một lô hàng cụ thể yêu cầu.
  • loadLimits chỉ định sức chứa tối đa cho một phương tiện nhất định.

Cấu trúc

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

Danh sách kiểm tra về các yếu tố thiết yếu

Danh sách kiểm tra sau đây mô tả kiến thức cần thiết để ngăn ngừa các lỗi có thể xảy ra 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 tải, cụ thể như sau:

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

Loại cửa

Loại hàng là một khoá chuỗi mà bạn áp dụng cho cả lô hàng và xe. Một loại tải duy nhất áp dụng cho nhu cầu tải của lô hàng cũng như giới hạn 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 giá trị 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

Đối tượng Load và LoadLimit chứa các thuộc tính cụ thể để xác định yêu cầu về sức chứa 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 Nội dung mô tả về cơ sở lưu trú
Load loadDemands amount chuỗi (định dạng int64) Xác định yêu cầu về sức chứa của lô hàng theo loại được chỉ định.
LoadLimit loadLimits maxLoad chuỗi (định dạng int64) Xác định tải trọng tối đa của phương tiện theo loại đã 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 giới hạn và nhu cầu tải.
  • Một tình huống ví dụ cho thấy một cách sử dụng nhu cầu và giới hạn tải trong một yêu cầu API.
  • Ví dụ về yêu cầu bao gồm các giá trị được đặt trong trường hợp ví dụ.

Mã mẫu

Ví dụ sau đây cho thấy cấu trúc của một nhu cầu tải, trong đó bạn có thể đặt loại loadDemands dưới dạng chuỗi và thuộc tính amount dưới dạng 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 tải, trong đó bạn có thể đặt loại loadLimits dưới dạng chuỗi và thuộc tính maxLoad dưới dạng 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 trường hợp trong đó bạn có một doanh nghiệp chăm sóc chó ban ngày 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 chuồng hạn chế.

Mỗi chuyến hàng đại diện cho một điểm dừng, nơi bạn đó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 lấy hàng khác nhau, đó là nhà của những chú chó mà bạn chăm sóc, và tất cả lô hàng đều có cùng một địa điểm giao hàng, đó là toà nhà của dịch vụ chăm sóc chó ban ngày.

Trong ví dụ này, các giá trị thuộc tính trong yêu cầu của bạn như sau:

Cha mẹ Thuộc tính Loại Giá trị Trường hợp
loadDemands loại cửa 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 thứ nhất: 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 hai lô hàng, trong lô hàng đầu tiên, bạn sẽ đón một chú chó, trong lô hàng thứ hai, bạn sẽ đón 3 chú chó.
loadLimits loại cửa chuỗi dogUnit Xác định loại giới hạn tải trọng áp dụng cho xe. Giá trị này phải khớp với loại tải của lô hàng để giới hạn này có liên quan.
loadLimits maxLoad số 6 Chỉ định số lượng tối đa của loại tải trọng mà xe có thể chở. Trong ví dụ này, bạn chỉ có một xe với sức chứa 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 tải của xe, nhu cầu tải của mỗi lô hàng và cách mỗi lô hàng sử dụng giới hạn 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à 4 trong số 6 chỗ hiện đã có người ngồi, còn lại 2 chỗ trống.

Trong ví dụ này, nhu cầu tải của mỗi lô hàng và giới hạn 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 con chó và bạn chỉ đón 4 con chó.

  • Giới hạn tải trọng của xe là 6 dogUnit cũng có nghĩa là bạn chỉ có thể chở thêm hai chú chó trên chiếc xe này.

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

Xin lưu ý 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ó sang đơ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ó. Tính linh hoạt này cho phép bạn điều chỉnh nhu cầu và giới hạn 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 một yêu cầu optimizeTours cơ bản kết hợp các giá trị của tình huống trong 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 của ví dụ này, một lô hàng có thể có nhiều nhu cầu về tải và một chiếc 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 xem xét khi tối ưu hoá các tuyến đường của đội xe.

Giới hạn tải trọng mềm

Bạn có thể đặt giới hạn tải làm quy tắc ràng buộc mềm 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 trọng tối đa của xe với một mức chi phí, ưu tiên việc hoàn thành tuyến đường hơn là tuân thủ nghiêm ngặt giới hạn tải trọng.

Bạn có thể sử dụng cả maxLoad và softMaxLoad để đặt cả giới hạn tải cứng và mềm. 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 sử dụng cả hai, maxLoad phải lớn hơn softMaxLoad.

Thuộc tính

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

Cha mẹ Tên tài sản Loại khách sạn Nội dung mô tả về cơ sở lưu trú
loadLimits softMaxLoad chuỗi (định dạng int64) Tải trọng tối đa ưu tiên cho một xe. Nếu tải trọng của xe vượt quá giá trị này, thì sẽ phát sinh chi phí.
loadLimits costPerUnitAboveSoftMax số Chi phí cho mỗi đơn vị tải trọng vượt quá softMaxLoad. Trường này là bắt buộc 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 ràng buộc mềm của loadLimits:

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