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

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

  • Mô hình ghi lại các chế độ cài đặt và hạn chế 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à hạn chế cục bộ.
  • 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 bài toán tối ưu hoá tại một mức độ chi tiết cụ thể. Các điều kiện ràng buộc trên toàn mô hình được áp dụng cho tất cả lô hàng và phương tiện vận chuyển, trong khi những ràng buộc và tài sản được quy định trên lô hàng hoặc phương tiện vận chuyển dành riêng cho một lô hàng hoặc chiế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ề đáp án đầu tiên đáp ứng hay không các điều kiện ràng buộc đã chỉ định hoặc tìm giải pháp tốt nhất có thể trong một tập hợp hạn cuối.
  • considerRoadTraffic xác định liệu lưu lượng truy cập trực tiếp có được sử dụng hay không để định tuyến và ước tính thời gian đến dự kiến.
  • populateTransitionPolylines xác định liệu có định tuyến hình nhiều đường và mã thông báo tuyến đường được trả về trong phản hồi.

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 chiếc xe nào có thể bắt đầu quá trình chuyển đổi đầu tiên và các gói hàng trước thời điểm này.
  • globalEndTime biểu thị thời gian kết thúc muộn nhất của tuyến đường trên tất cả phương tiện và vận chuyển. 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 vận chuyển

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[] thể hiện nơi có thể nhận hoặc giao hàng. Cả thuộc tính pickups[]deliveries[] đều sử dụng thông báo VisitRequest (REST, gRPC).
  • loadDemands biểu thị tải 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 là chi phí phát sinh nếu việc vận chuyển bị bỏ qua. Đã đọc các thông tin khác về chi phí trong 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í mà một phương tiện phải bắt đầu tuyến đường. Chiến dịch này là không bắt buộc. Nếu không được chỉ định, tuyến đường của xe bắt đầu tại vị trí của lô hàng được giao đầu tiên.
  • endLocation thể hiện nơi 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 bạn không 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 phương tiện có thể bắt đầu tuyến đường. Thuộc tính này là không bắt buộc.
  • endTimeWindows[] biểu thị thời điểm một xe 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 của xe để đáp ứng nhu cầu tải của các lô hàng. Đọc thêm về nhu cầu và giới hạn tải trong bài viết Nhu cầu tải và Giới hạn.

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