Các thông số mô hình chi phí

Thông báo OptimizeToursRequest (REST, gRPC) chứa một số thuộc tính có liên quan đến chi phí. Đồng thời, các thông số chi phí này thể hiện yêu cầu mô hình chi phí. Mô hình chi phí ghi nhận nhiều thông tin cấp cao của yêu cầu mục tiêu tối ưu hoá, chẳng hạn như:

  • Ưu tiên tuyến đường Vehicle nhanh hơn so với các tuyến đường ngắn hơn hoặc chiều ngược lại xung quanh
  • Quyết định xem chi phí để phân phối Shipment có xứng đáng với giá trị của Tỷ lệ hoàn thành Shipment
  • Chỉ thực hiện việc đến lấy hàng và giao hàng trong khung thời gian giao hàng tiết kiệm chi phí

Xem ví dụ về yêu cầu có chi phí

{
  "model": {
    "globalStartTime": "2023-01-13T16:00:00-08:00",
    "globalEndTime": "2023-01-14T16:00:00-08:00",
    "shipments": [
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.789456,
              "longitude": -122.390192
            },
            "duration": "250s"
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 100.0
      },
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.789116,
              "longitude": -122.395080
            },
            "duration": "250s"
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 5.0
      },
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.795242,
              "longitude": -122.399347
            },
            "duration": "250s"
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 50.0
      }
    ],
    "vehicles": [
      {
        "endLocation": {
          "latitude": 37.794465,
          "longitude": -122.394839
        },
        "startLocation": {
          "latitude": 37.794465,
          "longitude": -122.394839
        },
        "costPerHour": 40.0,
        "costPerKilometer": 10.0
      }
    ]
  }
}
    

Vehicle thuộc tính chi phí

Thông báo Vehicle (REST, gRPC) có một số thuộc tính chi phí:

  • Vehicle.cost_per_hour: thể hiện chi phí vận hành một chiếc xe mỗi giờ bao gồm phương tiện công cộng, thời gian chờ, thời gian tham quan và thời gian nghỉ.
  • Vehicle.cost_per_kilometer: thể hiện chi phí mỗi km mà khách đi lại chiếc xe.
  • Vehicle.cost_per_traveled_hour: thể hiện chi phí vận hành xe chỉ khi đang vận chuyển, ngoại trừ thời gian chờ, thời gian ghé thăm và thời gian nghỉ giải lao.

Các thông số chi phí này cho phép trình tối ưu hoá tạo khoảng cách so với thời gian so với khoảng cách đánh đổi. Chi phí phải chịu của tuyến đường được tối ưu hoá sẽ xuất hiện trong phản hồi gửi tin nhắn bằng địa chỉ metrics.costs:

Khi costPerHour tăng, trình tối ưu hoá sẽ cố gắng tìm các tuyến nhanh hơn mà có thể không phải là tuyến đường ngắn nhất. Trong ví dụ này, tuyến đường nhanh nhất xảy ra ngắn nhất, vì vậy, các thay đổi đối với thông số chi phí sẽ ít ảnh hưởng.

Shipment thuộc tính chi phí

Thông báo Shipment (REST, gRPC) cũng có một số tốn kém thông số:

  • Shipment.penalty_cost thể hiện chi phí phát sinh do bỏ qua chuyển hàng.
  • Shipment.VisitRequest.cost thể hiện chi phí của một hình thức đến lấy hàng cụ thể hoặc giao hàng, được sử dụng chủ yếu để cho phép đánh đổi chi phí giữa nhiều lần đến lấy hàng hoặc tùy chọn giao hàng cho một lô hàng duy nhất.

Thông số chi phí Shipment sử dụng cùng các đơn vị không có kích thước với chi phí Vehicle tham số. Chi phí phát sinh hoàn tất Shipment vượt quá chi phí hình phạt, chi phí Shipment không có trong bất kỳ tuyến đường nào của Vehicle mà thay vào đó sẽ xuất hiện trong Danh sách skipped_shipments trong tin nhắn phản hồi.

ShipmentModel thuộc tính chi phí

Thông báo ShipmentModel (REST, gRPC) bao gồm một chi phí duy nhất thuộc tính globalDurationCostPerHour. Chi phí này phát sinh dựa trên tổng số thời gian cần thiết để tất cả các phương tiện hoàn thành ShipmentRoute. Tăng globalDurationCostPerHour ưu tiên hoàn tất tất cả các gói hàng sớm hơn.

Thuộc tính chi phí phản hồi của tính năng Tối ưu hoá tuyến đường

Thông báo OptimizeToursResponse (REST, gRPC) có các thuộc tính chi phí thể hiện chi phí phát sinh trong quá trình hoàn thành ShipmentRoute. Thuộc tính metrics.costsmetrics.totalCost biểu thị số lượng đơn vị chi phí phát sinh trên tất cả lộ trình trong phản hồi. Mỗi mục routes có Các tài sản routeCostsrouteTotalCosts biểu thị chi phí cho loại tài sản đó tuyến đường cụ thể.

Xem phản hồi cho yêu cầu mẫu kèm theo chi phí

{
  "routes": [
    {
      "vehicleStartTime": "2023-01-14T00:00:00Z",
      "vehicleEndTime": "2023-01-14T00:28:22Z",
      "visits": [
        {
          "isPickup": true,
          "startTime": "2023-01-14T00:00:00Z",
          "detour": "0s"
        },
        {
          "shipmentIndex": 2,
          "isPickup": true,
          "startTime": "2023-01-14T00:02:30Z",
          "detour": "150s"
        },
        {
          "startTime": "2023-01-14T00:08:55Z",
          "detour": "150s"
        },
        {
          "shipmentIndex": 2,
          "startTime": "2023-01-14T00:21:21Z",
          "detour": "572s"
        }
      ],
      "transitions": [
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2023-01-14T00:00:00Z"
        },
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2023-01-14T00:02:30Z"
        },
        {
          "travelDuration": "235s",
          "travelDistanceMeters": 795,
          "waitDuration": "0s",
          "totalDuration": "235s",
          "startTime": "2023-01-14T00:05:00Z"
        },
        {
          "travelDuration": "496s",
          "travelDistanceMeters": 1893,
          "waitDuration": "0s",
          "totalDuration": "496s",
          "startTime": "2023-01-14T00:13:05Z"
        },
        {
          "travelDuration": "171s",
          "travelDistanceMeters": 665,
          "waitDuration": "0s",
          "totalDuration": "171s",
          "startTime": "2023-01-14T00:25:31Z"
        }
      ],
      "metrics": {
        "performedShipmentCount": 2,
        "travelDuration": "902s",
        "waitDuration": "0s",
        "delayDuration": "0s",
        "breakDuration": "0s",
        "visitDuration": "800s",
        "totalDuration": "1702s",
        "travelDistanceMeters": 3353
      },
      "routeCosts": {
        "model.vehicles.cost_per_kilometer": 33.53,
        "model.vehicles.cost_per_hour": 18.911111111111111
      },
      "routeTotalCost": 52.441111111111113
    }
  ],
  "skippedShipments": [
    {
      "index": 1
    }
  ],
  "metrics": {
    "aggregatedRouteMetrics": {
      "performedShipmentCount": 2,
      "travelDuration": "902s",
      "waitDuration": "0s",
      "delayDuration": "0s",
      "breakDuration": "0s",
      "visitDuration": "800s",
      "totalDuration": "1702s",
      "travelDistanceMeters": 3353
    },
    "usedVehicleCount": 1,
    "earliestVehicleStartTime": "2023-01-14T00:00:00Z",
    "latestVehicleEndTime": "2023-01-14T00:28:22Z",
    "totalCost": 57.441111111111113,
    "costs": {
      "model.vehicles.cost_per_kilometer": 33.53,
      "model.vehicles.cost_per_hour": 18.911111111111111,
      "model.shipments.penalty_cost": 5
    }
  }
}
    

Trong phản hồi mẫu, metrics.costs cấp cao nhất là:

{
  "metrics": {
    ...
    "costs": {
      "model.vehicles.cost_per_hour": 18.911111111111111,
      "model.vehicles.cost_per_kilometer": 33.53,
      "model.shipments.penalty_cost": 5
    }
  }
}

Giá trị model.shipments.penalty_cost thể hiện chi phí phát sinh do lô hàng đã bỏ qua. Thuộc tính skippedShipments liệt kê các lô hàng đã vận chuyển đã bỏ qua.

Trong ví dụ này, chỉ model.shipments[1] trong yêu cầu mẫu bị bỏ qua. model.shipments[1] có chi phí phạt là 5 đơn vị, khớp với tổng chi phí Khoá model.shipments.penalty_cost trong phản hồi mẫu. Lô hàng sắp hết penaltyCost so với 40,0 costPerHour và 10,0 của Vehicle costPerKilometer giúp tiết kiệm chi phí hơn là bỏ qua việc vận chuyển để hoàn thành.

Chủ đề nâng cao: chi phí và những ràng buộc thường

Một số thuộc tính OptimizeToursRequest (REST, gRPC) thể hiện những ràng buộc mềm. Đây là những ràng buộc phát sinh chi phí khi họ không thể đáp ứng.

Ví dụ: các quy tắc ràng buộc của xe LoadLimit (REST, gRPC) có Thuộc tính softMaxLoadcostPerUnitAboveSoftMax. Việc kết hợp các chỉ số này sẽ tạo ra chi phí tương ứng với các đơn vị tải vượt quá softMaxLoad, cho phép chỉ được vượt quá giới hạn nếu làm như vậy hợp lý về mặt chi phí.

Tương tự, các quy tắc ràng buộc của TimeWindow (REST, gRPC) có Thuộc tính soft_start_timesoft_end_time, tương ứng với cost_per_hour_before_soft_start_timecost_per_hour_after_soft_end_time phát sinh dựa trên việc sự kiện bị ràng buộc xảy ra sớm hay muộn với đối với TimeWindow.

Giống như tất cả thông số của mô hình chi phí, chi phí ràng buộc mềm được biểu thị trong cùng một đơn vị không có thứ nguyên với các thông số chi phí khác.

Các quy tắc ràng buộc đối với LoadLimit được giải quyết chi tiết trong Yêu cầu và giới hạn tải. Các quy tắc ràng buộc đối với TimeWindow được giải quyết chi tiết trong Ràng buộc cửa sổ thời gian đến lấy hàng và giao hàng.