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

Nhà phát triển ở Khu vực kinh tế Châu Âu (EEA)

Như được 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 Model, ShipmentsVehicles dưới dạng các thực thể bắt buộc:

  • Model ghi lại các chế độ cài đặt và 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 cả VisitRequest nhận 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.
  • Phương tiện đại diện cho phương tiện, người lái xe hoặc nhân viên. Xe cũng có các chế độ cài đặt và hạn chế tại địa phương.

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 mức độ chi tiết cụ thể. Cá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 ràng buộc và thuộc tính được chỉ định trên lô hàng hoặc xe chỉ áp dụng cho một lô hàng hoặc xe duy nhất.

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

OptimizeToursRequest cơ sở lưu trú

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 có nên trả về giải pháp đầu tiên đáp ứng các 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 nhất định.
  • considerRoadTraffic xác định xem có sử dụng tình hình giao thông trực tiếp để định tuyến và ước tính thời gian đến hay không.
  • populateTransitionPolylines xác định xem các đường nhiều đoạn của tuyến đường và mã thông báo tuyến đường có được trả về 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 đường trên tất cả các phương tiện và lô hàng. Không có phương tiện nào được phép bắt đầu quá trình chuyển đổi và vận chuyển đầu tiên trước thời gian này.
  • globalEndTime thể hiện thời gian kết thúc mới nhất của các tuyến đường trên tất cả các phương tiện 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 gian này.

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

Cả 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 đưa ra yêu cầu Tối ưu hoá tuyến đường, bạn cần hiểu rõ sự khác biệt giữa hai phương thức này:

So sánh OptimizeTours và BatchOptimizeTours