Parameter Model Biaya

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

  • Memprioritaskan rute Vehicle yang lebih cepat daripada rute yang lebih pendek atau sebaliknya
  • Menentukan apakah biaya pengiriman Shipment sepadan dengan nilai penyelesaian Shipment
  • Melakukan pengambilan dan pengiriman dalam jangka waktu hanya jika melakukannya dapat menghemat 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
      }
    ]
  }
}
    

Vehicle properti biaya

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

  • Vehicle.cost_per_hour: menunjukkan biaya pengoperasian kendaraan per jam termasuk waktu transit, waktu tunggu, kunjungan, dan waktu istirahat.
  • Vehicle.cost_per_kilometer: menunjukkan biaya per kilometer yang ditempuh dengan kendaraan.
  • Vehicle.cost_per_traveled_hour: menunjukkan biaya pengoperasian kendaraan hanya selama perjalanan, tidak termasuk waktu tunggu, kunjungan, dan waktu istirahat.

Parameter biaya ini memungkinkan pengoptimal untuk melakukan kompromi jarak waktu versus jarak tempuh. Biaya yang dikeluarkan oleh rute yang dioptimalkan muncul dalam pesan respons sebagai metrics.costs:

Seiring meningkatnya costPerHour, pengoptimal mencoba menemukan rute lebih cepat yang mungkin bukan rute terpendek. Dalam contoh ini, rute tercepat kebetulan adalah yang terpendek, sehingga perubahan pada parameter biaya hanya memiliki sedikit pengaruh.

Shipment properti biaya

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

  • Shipment.penalty_cost menunjukkan biaya yang timbul karena melewatkan pengiriman.
  • Shipment.VisitRequest.cost menunjukkan biaya pengambilan atau pengiriman tertentu, terutama yang digunakan untuk mengaktifkan kompromi biaya antara beberapa opsi pengambilan atau pengiriman untuk satu pengiriman.

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

ShipmentModel properti biaya

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

Properti biaya respons Pengoptimalan Rute

Pesan OptimizeToursResponse (REST, gRPC) memiliki properti biaya yang mewakili biaya yang timbul 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 spesifik tersebut.

Lihat 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 menunjukkan biaya yang timbul karena pengiriman yang dilewati. Properti skippedShipments mencantumkan pengiriman mana yang dilewati.

Dalam contoh ini, hanya model.shipments[1] dalam contoh permintaan yang dilewati. model.shipments[1] memiliki biaya penalti 5 unit, yang cocok dengan total kunci model.shipments.penalty_cost dalam contoh respons. Pengiriman yang rendah penaltyCost dibandingkan dengan Vehicle sebesar 40.0 costPerHour dan 10.0 costPerKilometer membuatnya lebih hemat biaya untuk melewati pengiriman daripada menyelesaikannya.

Topik lanjutan: biaya dan batasan kecil

Beberapa properti pesan OptimizeToursRequest (REST, gRPC) mewakili batasan ringan, yang merupakan batasan yang dikenai biaya jika tidak dapat dipenuhi.

Misalnya, batasan LoadLimit kendaraan (REST, gRPC) memiliki properti softMaxLoad dan costPerUnitAboveSoftMax. Bersama-sama, keduanya dikenai biaya yang sebanding dengan unit beban yang melebihi softMaxLoad, sehingga batas dapat dilampaui hanya jika hal tersebut wajar 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 terkait yang terjadi berdasarkan seberapa awal atau akhir peristiwa terbatas tersebut terjadi terkait TimeWindow.

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

Batasan LoadLimit ditangani secara mendetail di Permintaan dan Batas Beban. Batasan TimeWindow ditangani secara mendetail di Batasan Periode Waktu Pengambilan dan Pengiriman.