Parameter model biaya

Developer Wilayah Ekonomi Eropa (EEA)

Pesan OptimizeToursRequest (REST, gRPC) berisi sejumlah properti yang terkait dengan biaya. Bersama-sama, parameter biaya ini merepresentasikan model biaya permintaan. Model biaya mencakup banyak tujuan pengoptimalan tingkat tinggi permintaan, seperti:

  • Memprioritaskan rute Vehicle yang lebih cepat daripada rute yang lebih pendek atau sebaliknya
  • Memutuskan apakah biaya untuk menyelesaikan Shipment sepadan dengan nilai penyelesaian Shipment
  • Melakukan pengambilan dan pengiriman dalam jangka waktu tertentu hanya jika hal tersebut hemat biaya

Lihat contoh permintaan dengan biaya

{
  "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
      }
    ]
  }
}
    

Properti biaya Vehicle

Pesan Vehicle (REST, gRPC) memiliki beberapa properti biaya:

  • Vehicle.cost_per_hour: mewakili biaya pengoperasian kendaraan per jam, termasuk waktu transit, menunggu, berkunjung, dan istirahat.
  • Vehicle.cost_per_kilometer: menunjukkan biaya per kilometer yang ditempuh oleh kendaraan.
  • Vehicle.cost_per_traveled_hour: mewakili biaya pengoperasian kendaraan hanya saat dalam perjalanan, tidak termasuk waktu menunggu, berkunjung, dan istirahat.

Parameter biaya ini memungkinkan pengoptimal membuat pertukaran waktu versus jarak yang ditempuh. Biaya yang dikeluarkan oleh rute yang dioptimalkan muncul dalam pesan respons sebagai metrics.costs:

Seiring bertambahnya costPerHour, pengoptimal berupaya menemukan rute yang lebih cepat yang mungkin bukan rute terpendek. Dalam contoh ini, rute tercepat ternyata juga merupakan rute terpendek, sehingga perubahan pada parameter biaya hanya memberikan sedikit efek.

Properti biaya Shipment

Pesan Shipment (REST, gRPC) juga memiliki beberapa parameter biaya:

  • Shipment.penalty_cost menunjukkan biaya yang dikeluarkan karena melewati pengiriman. Tidak menyetel parameter penalty_cost pengiriman akan membuat pengiriman menjadi wajib, yang berarti pengiriman hanya akan dilewati jika tidak dapat diselesaikan mengingat batasan yang ditentukan.
  • Shipment.VisitRequest.cost mewakili biaya pengambilan atau pengiriman tertentu, yang terutama digunakan untuk memungkinkan pertukaran biaya antara beberapa opsi pengambilan atau pengiriman untuk satu pengiriman.

Parameter biaya Shipment menggunakan unit tanpa dimensi yang sama dengan parameter biaya Vehicle. Biaya yang dikeluarkan untuk menyelesaikan Shipment melebihi biaya penaltinya, maka Shipment tidak disertakan dalam rute Vehicle mana pun dan akan muncul dalam daftar skipped_shipments di pesan respons.

Properti biaya ShipmentModel

Pesan ShipmentModel (REST, gRPC) mencakup satu properti biaya, globalDurationCostPerHour. Biaya ini dikeluarkan berdasarkan total waktu yang diperlukan semua kendaraan untuk menyelesaikan ShipmentRoutes. Meningkatkan globalDurationCostPerHour akan memprioritaskan penyelesaian semua pengiriman lebih awal.

Properti biaya respons Pengoptimalan Rute

Pesan OptimizeToursResponse (REST, gRPC) memiliki properti biaya yang mewakili biaya yang dikeluarkan dalam proses penyelesaian ShipmentRoute. Properti metrics.costs dan metrics.totalCost mewakili jumlah unit biaya yang dikeluarkan di semua rute dalam respons. Setiap entri routes memiliki properti routeCosts dan routeTotalCosts yang mewakili biaya untuk rute tertentu tersebut.

Melihat respons terhadap contoh permintaan dengan biaya

{
  "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
    }
  }
}
    

Dalam contoh respons, metrics.costs tingkat teratas adalah:

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

Nilai model.shipments.penalty_cost mewakili biaya yang dikeluarkan karena pengiriman yang dilewati. Properti skippedShipments mencantumkan pengiriman yang dilewati.

Dalam contoh ini, hanya model.shipments[1] dalam contoh permintaan yang dilewati. model.shipments[1] memiliki biaya penalti sebesar 5 unit, yang cocok dengan kunci model.shipments.penalty_cost total dalam contoh respons. penaltyCost pengiriman yang rendah dibandingkan dengan costPerHour 40,0 dan costPerKilometer 10,0 Vehicle membuat pengiriman lebih hemat biaya untuk dilewati daripada diselesaikan.

Topik lanjutan: biaya dan batasan ringan

Beberapa properti pesan OptimizeToursRequest (REST, gRPC) merepresentasikan batasan ringan, yaitu batasan yang menimbulkan biaya jika tidak dapat dipenuhi.

Misalnya, batasan kendaraan LoadLimit (REST, gRPC) memiliki properti softMaxLoad dan costPerUnitAboveSoftMax. Bersama-sama, hal ini menimbulkan biaya yang sebanding dengan unit pemuatan yang melebihi softMaxLoad, sehingga batas hanya dapat dilampaui jika hal itu masuk akal dari sudut pandang biaya.

Demikian pula, batasan TimeWindow (REST, gRPC) memiliki properti soft_start_time dan soft_end_time, dengan cost_per_hour_before_soft_start_time dan cost_per_hour_after_soft_end_time yang sesuai yang dikenakan berdasarkan seberapa awal atau terlambat peristiwa yang dibatasi terjadi sehubungan dengan TimeWindow.

Seperti semua parameter model biaya, biaya batasan ringan dinyatakan dalam unit tanpa dimensi yang sama dengan parameter biaya lainnya.

Batasan LoadLimit dibahas secara mendetail dalam Permintaan dan Batas Beban. Batasan TimeWindow dibahas secara mendetail dalam Batasan Jendela Waktu Pengambilan dan Pengiriman.