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 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: chỉ thể hiện chi phí vận hành xe trong khi đang vận chuyển, không bao gồm thời gian chờ, thời gian thăm và thời gian nghỉ.

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át sinh do tuyến đường được tối ưu hoá sẽ xuất hiện trong thông báo phản hồi dưới dạng 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.

Các tham số chi phí Shipment sử dụng cùng một đơn vị không thứ nguyên như các tham số chi phí Vehicle. Chi phí phát sinh khi hoàn tất một Shipment vượt quá chi phí phạt, thì Shipment sẽ không được đưa vào tuyến đường của Vehicle nào và thay vào đó sẽ xuất hiện trong danh sách skipped_shipments trong thông báo 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í đại diện cho các chi phí phát sinh trong quá trình hoàn tất 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à quy tắc ràng buộc mềm

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. Tổng cộng, các chi phí này sẽ tăng lên theo tỷ lệ với các đơn vị tải vượt quá softMaxLoad, cho phép vượt quá giới hạn chỉ khi việc nà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ả các thông số mô hình chi phí, chi phí ràng buộc mềm được biểu thị bằng cùng một đơn vị không có kích thước như 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 điều kiện ràng buộc TimeWindow được đề cập chi tiết trong phần Điều kiện ràng buộc về khung giờ lấy hàng và giao hàng.