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 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ý sức chứa. Quy tắc ràng buộc này chỉ định sức chứa bắt buộc của lô hàngsức chứa tối đa của phương tiện, 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 phương tiện bị quá tải.
  • Theo dõi cách tải trọng của phương tiện thay đổi khi lô hàng được nhận và giao.
  • Ưu tiên việc ghép nối phương tiện 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 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ư 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: Một thuộc tính được chia sẻ giữa nhu cầu và giới hạn về tải.
  • LoadLoadLimit: Các thuộc tính duy nhấ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à phương tiện. 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 phương tiện.

Các loại tải sử dụng cú pháp loại bản đồ Protocol Buffers. Khi đặt tên cho một 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.

LoadLoadLimit

Các đối tượng LoadLoadLimit chứa các thuộc tính cụ thể để xác định các yêu cầu về sức chứa cho lô hàng và phương tiện. 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ề 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 sức chứa tải tối đa của phương tiện theo loại được chỉ định.

Ví dụ

Phần này trình bày 3 loại 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á một tuyến đường để vận chuyển một vài chú chó trên một phương tiện 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 đến lấy 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 (là 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 hàng (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à như sau:

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 là nhận một chú chó và lô hàng thứ hai là 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 được áp dụng cho phương tiện. 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à phương tiện có thể chở. Trong ví dụ này, bạn chỉ có một phương tiện có 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 về tải của phương tiện, nhu cầu về tải của mỗi lô hàng và cách mỗi lô hàng tiêu thụ giới hạn về tải của phương tiện:

Xe bắt đầu hành trình với 6 ô trống biểu thị 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ỗ đã có người ngồi và còn lại 2 chỗ trống.

Trong ví dụ này, nhu cầu về tải của mỗi lô hàng và giới hạn về tải của phương tiện 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 để phương tiện vận chuyển chó, vì phương tiện 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 phương tiện cũng có nghĩa là bạn chỉ có thể chở thêm 2 chú chó trên phương tiện 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 lần nhận hoặc chỉ định cho một phương tiện 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 một yêu cầu optimizeTours cơ bản kết hợp các giá trị 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 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 phương tiện 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 để xem xét 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 softMaxLoadcostPerUnitAboveSoftMax vào loadLimits của phương tiện. Điều này cho phép trình tối ưu hoá vượt quá tải tối đa của phương tiện 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 maxLoadsoftMaxLoad 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 một phương tiện. Nếu tải của phương tiện 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 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
        }
      }
}