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 thể hiện các nhiệm vụ hoặc lô hàng thực tế bao gồm VisitRequest đến 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 phương tiện vận chuyển, người lái xe hoặc nhân viên. Xe cũng có các quy tắc cài đặt và hạn chế cục bộ.

Các thuộc tính của mỗi thực thể mô tả một phần của một vấn đề tối ưu hoá ở mức độ 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 mọi lô hàng và phương tiện vận chuyển, trong khi các quy tắc ràng buộc và thuộc tính được chỉ định trên các lô hàng hoặc phương tiện vận chuyển là dành riêng cho một lô hàng hoặc phương tiện.

Để xem 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 các thông báo ShipmentModel (REST, gRPC), Shipment (REST, gRPC) và Vehicle (REST, gRPC).

OptimizeToursRequest tài sản

Sau đây là 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):

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

Thuộc tính mô hình

Dưới đây là một số thuộc tính thường dùng của thông báo ShipmentModel (REST, gRPC):

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

Thuộc tính vận chuyển

Dưới đây là một số thuộc tính thường dùng của thông báo Shipment (REST, gRPC):

  • 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 chiếc xe hoàn thành việc vận chuyển. Thuộc tính load_limits (REST, gRPC) tương ứng của xe cho biết tải trọng của một chiếc xe tại một thời điểm. Đọ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 thêm về chi phí trong bài viết Tham số mô hình chi phí.

Thuộc tính xe

Dưới đây là một số thuộc tính thường dùng của thông báo Vehicle (REST, gRPC):

  • startLocation biểu thị vị trí mà một phương tiện 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 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 không được chỉ định, tuyến đường của xe sẽ kết thúc tại vị trí của chuyến 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[] 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. Bạn không bắt buộc phải sử dụng cả hai thuộc tính này.
  • 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. Đọc thêm về nhu cầu và giới hạn tải trong bài viết Nhu cầu và giới hạn tải.

Một 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 đưa ra yêu cầu Tối ưu hoá tuyến đường, bạn cần nắm được sự khác biệt giữa 2 phương thức:

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