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ề tối ưu hoá tuyến đường, một yêu cầu cơ bản bao gồm Mẫu, Lô hàngXe là pháp nhân 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 thể hiện các nhiệm vụ hoặc lô hàng thực tế bao gồm cả việc đến lấy hàng và giao hàng vào VisitRequest giây. 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 cài đặt và 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.

Để 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 dành cho 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ác hình nhiều đường có tuyến đường hay khô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 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ận chuyển và quá trình vận chuyển. 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 được giao và quá trình chuyển đổi 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[] đại diện cho nơi bạn có thể đến lấy hàng hoặc đã bỏ ngang. Cả hai thuộc tính pickups[]deliveries[] đều sử dụng phương thức 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 một chuyển hàng. Phương tiện di chuyển load_limits tương ứng (REST, gRPC) thuộc tính thể hiện tải trọng một chiếc xe có thể chứa được 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 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. Cơ sở lưu trú này là tuỳ chọn. 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 cuối cùng được giao.
  • startTimeWindows[] biểu thị thời điểm một phương tiện có thể bắt đầu tuyến đường. Chiến dịch 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 của xe để đáp ứng yêu cầu vận chuyển tải. Đọ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.

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 các 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ối ưu hoá tuyến đường yêu cầu, điều quan trọng là phải hiểu sự khác biệt giữa hai phương thức:

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