Tạo một thông báo yêu cầu

Như được mô tả ngắn gọn trong bài viết Tổng quan về hoạt động tối ưu hoá tuyến đường, yêu cầu cơ bản bao gồm Mẫu, Lô hàngXe là thực thể bắt buộc:

  • Mô hình ghi lại các chế độ cài đặt và quy tắc ràng buộc cho toàn bộ yêu cầu, bao gồm cả ShipmentsVehicles.
  • Lô hàng đại diện cho các tác vụ hoặc lô hàng thực tế bao gồm cả VisitRequest lấy hàng và giao hàng. Lô hàng có các chế độ cài đặt và quy tắc hạn chế tại địa phương.
  • Xe đại diện cho xe, tài xế hoặc nhân viên. Xe cũng có các chế độ cài đặt và quy tắc ràng buộc cục bộ.

Các thuộc tính của mỗi thực thể mô tả một phần của vấn đề tối ưu hoá ở một cấp độ chi tiết cụ thể. Các quy tắc ràng buộc trên toàn mô hình được áp dụng cho tất cả các lô hàng và xe, trong khi các quy tắc ràng buộc và thuộc tính được chỉ định trên lô hàng hoặc xe chỉ dành riêng cho một lô hàng hoặc xe.

Để biết tài liệu đầy đủ về từng loại thông báo, hãy xem tài liệu tham khảo cho thông báo ShipmentModel (REST, gRPC), Shipment (REST, gRPC) và Vehicle (REST, gRPC).

OptimizeToursRequest cơ sở lưu trú

Một số thuộc tính thường dùng của thông báo OptimizeToursRequest cấp cao nhất (REST, gRPC) bao gồm:

  • searchMode cho biết liệu có trả về giải pháp đầu tiên đáp ứng các điều kiện ràng buộc đã chỉ định hay tìm giải pháp tốt nhất có thể trong một thời hạn đã đặt hay không.
  • considerRoadTraffic xác định xem có sử dụng lưu lượng truy cập trực tiếp hay không để định tuyến và ước tính ETA.
  • populateTransitionPolylines xác định xem có trả về hình nhiều đường định tuyến và mã thông báo định tuyến trong phản hồi hay không.

Thuộc tính mô hình

Một số thuộc tính thường dùng của thông báo ShipmentModel (REST, gRPC) bao gồm:

  • globalStartTime biểu thị thời gian bắt đầu sớm nhất của các tuyến trên tất cả xe và lô hàng. Không có xe nào được bắt đầu quá trình chuyển đổi và vận chuyển đầu tiên trước thời điểm này.
  • globalEndTime thể hiện thời gian kết thúc mới nhất của các tuyến trên tất cả xe và lô hàng. Tất cả các lô hàng và quá trình chuyển đổi được chỉ định phải hoàn tất trước thời điểm này.

Thuộc tính lô hàng

Một số thuộc tính thường dùng của thông báo Shipment (REST, gRPC) bao gồm:

  • pickups[]deliveries[] đại diện cho nơi có thể nhận hoặc trả hàng. Cả hai thuộc tính pickups[]deliveries[] đều sử dụng thông báo VisitRequest (REST, gRPC).
  • loadDemands thể hiện tải trọng cần thiết để một xe hoàn tất một lô hàng. Thuộc tính load_limits (REST, gRPC) tương ứng của xe cho biết lượng tải mà một xe có thể chứa cùng một lúc. Đọc thêm về tải trong Nhu cầu và giới hạn tải.
  • penalty_cost thể hiện chi phí phát sinh nếu một lô hàng bị bỏ qua. Đọc thêm về chi phí trong phần Thông số mô hình chi phí.

Thuộc tính xe

Một số thuộc tính thường dùng của thông báo Vehicle (REST, gRPC) bao gồm:

  • startLocation biểu thị vị trí xe phải bắt đầu tuyến đường. Thuộc tính này là không bắt buộc. Nếu không được chỉ định, tuyến đường của xe sẽ bắt đầu tại vị trí của lô hàng được chỉ định đầu tiên.
  • endLocation thể hiện vị trí xe phải kết thúc tuyến đường. Thuộc tính này là không bắt buộc. Nếu không được chỉ định, tuyến đường của xe sẽ kết thúc tại vị trí của lô hàng được chỉ định gần đây nhất.
  • startTimeWindows[] biểu thị thời điểm một xe có thể bắt đầu hành trình. Thuộc tính này là không bắt buộc.
  • endTimeWindows[] thể hiện thời điểm một phương tiện có thể bắt đầu và kết thúc tuyến đường. Cả hai thuộc tính này đều không bắt buộc.
  • loadLimits thể hiện sức chứa hiện có của xe để đáp ứng nhu cầu tải của lô hàng. Hãy đọc thêm về nhu cầu tải và giới hạn tải trong phần Nhu cầu tải và giới hạn tải.

Yêu cầu mẫu hoàn chỉnh ở định dạng JSON sẽ có dạng như sau:

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.73881799999999,
              "longitude": -122.4161
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.79581,
              "longitude": -122.4218856
            }
          }
        ]
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.73881799999999,
          "longitude": -122.4161
        },
        "endLocation": {
          "latitude": 37.73881799999999,
          "longitude": -122.4161
        },
        "costPerKilometer": 1.0
      }
    ],
   "globalStartTime": "2024-02-13T00:00:00.000Z",
   "globalEndTime": "2024-02-14T06:00:00.000Z"
  }
}

OptimizeToursBatchOptimizeTours đều sử dụng thông báo yêu cầu như ví dụ ở trên, nhưng theo những cách khác nhau. Trước khi tạo yêu cầu Tối ưu hoá tuyến đường, bạn cần hiểu sự khác biệt giữa hai phương thức:

So sánh OptimizeChuyến và BatchOptimizeChuyến