Parameter Model Biaya

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

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

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 istirahat..
  • Vehicle.cost_per_kilometer: menunjukkan biaya per kilometer yang ditempuh oleh yang digunakan untuk kendaraan.
  • Vehicle.cost_per_traveled_hour: menunjukkan biaya pengoperasian kendaraan hanya selama transit, kecuali waktu tunggu, kunjungan, dan waktu istirahat.

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

Seiring meningkatnya costPerHour, pengoptimal mencoba menemukan rute yang lebih cepat yang mungkin bukan rute terpendek. Dalam contoh ini rute tercepat terjadi menjadi yang terpendek, jadi 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 mewakili biaya pengambilan atau pengiriman tertentu, yang terutama digunakan untuk memungkinkan kompromi biaya antara beberapa opsi pengambilan atau pengiriman untuk satu pengiriman.

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

ShipmentModel properti biaya

Pesan ShipmentModel (REST, gRPC) mencakup satu biaya , globalDurationCostPerHour. Biaya ini dikeluarkan berdasarkan total waktu yang dibutuhkan semua kendaraan untuk menyelesaikan ShipmentRoute. Meningkat globalDurationCostPerHour 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 properti tersebut rute tertentu.

Melihat respons untuk 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 akibat pengiriman yang terlewat. 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 sama dengan total model.shipments.penalty_cost dalam contoh respons. Pengiriman rendah penaltyCost dibandingkan dengan 40.0 costPerHour dan 10.0 Vehicle costPerKilometer membuat melewati pengiriman lebih hemat biaya daripada melakukannya menyelesaikannya.

Topik lanjutan: biaya dan batasan kecil

Beberapa properti pesan OptimizeToursRequest (REST, gRPC) mewakili batasan lunak, yang merupakan batasan yang menimbulkan biaya saat tidak dapat dipenuhi.

Misalnya, batasan kendaraan LoadLimit (REST, gRPC) memiliki softMaxLoad dan costPerUnitAboveSoftMax. Bersama-sama, kedua hal tersebut menimbulkan biaya sebanding dengan unit beban yang melebihi softMaxLoad, sehingga memungkinkan untuk dilampaui hanya 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 kolom yang sesuai cost_per_hour_before_soft_start_time dan cost_per_hour_after_soft_end_time yang timbul berdasarkan seberapa awal atau akhir peristiwa terbatas itu terjadi dengan terhadap TimeWindow.

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

LoadLimit batasan dibahas secara mendetail di Muat Permintaan dan Batas. Batasan TimeWindow ditangani secara mendetail di Batasan Periode Waktu Pengambilan dan Pengiriman.