Menafsirkan respons

Route Optimization API menampilkan rute untuk kendaraan di permintaan. Pengiriman ditetapkan ke kendaraan, atau dapat dilewati tergantung pada properti permintaan Anda.

Pesan OptimizeToursResponse (REST, gRPC) memiliki dua level teratas properti:

  • routes[] adalah rute untuk setiap kendaraan dengan pengiriman yang ditetapkan. Masing-masing Route berisi metrik yang mencerminkan properti setiap rute tersebut.
  • metrics adalah metrik gabungan untuk keseluruhan respons, di semua kendaraan dan rencana rute. Metrik tingkat teratas berisi properti yang sama dengan metrik per Rute, dengan nilai yang digabungkan di semua Rute.

Beberapa properti mungkin tidak selalu diisi bergantung pada hasil pengoptimalan:

  1. skippedShipments[] mencantumkan pengiriman yang tidak dilakukan oleh kendaraan mana pun. Pengiriman dapat dilewati jika tidak dapat dilakukan dalam waktu yang ditentukan kendala atau jika biaya pengiriman melebihi biaya penalti. Misalnya, jika pengambilan atau pengantaran kiriman memiliki timeWindow kendaraan mungkin tidak mungkin atau hemat biaya untuk melakukan kunjungan selama periode waktu yang ditentukan.
  2. validationErrors[] menentukan error yang membuat permintaan tidak valid atau tidak mungkin diselesaikan jika solvingMode permintaan disetel ke VALIDATE_ONLY Dalam mode DEFAULT_SOLVE normal, error validasi akan muncul dalam pesan {i>error<i}, alih-alih isi responsnya. Perlu diketahui bahwa Mode penyelesaian VALIDATE_ONLY dapat melaporkan beberapa error sekaligus, berguna untuk permintaan {i>debugging<i} dengan cepat.

Properti rute

Setiap entri routes[] adalah pesan ShipmentRoute (REST, gRPC). Masing-masing ShipmentRoute mewakili penetapan rute untuk kendaraan tertentu dari terhadap permintaan. Properti ShipmentRoute penting yang terkait dengan properti yang sesuai Vehicle mencakup:

  • vehicleIndex adalah indeks berbasis nol dari Vehicle dalam kolom pesan permintaan. Respons REST menghapus properti ini jika nilainya nol.
  • vehicleStartTime adalah waktu saat kendaraan harus memulai rutenya.
  • vehicleEndTime adalah waktu saat kendaraan diperkirakan selesai rute perjalanan.

Sebagai respons, routes akan terlihat seperti:

{
  "routes": [
    {
      "vehicleStartTime": "2024-02-13T00:00:00Z",
      "vehicleEndTime": "2024-02-13T00:38:42Z",
      "visits": [
        ...
      ],
      "transitions": [
        ...
      ],
      "metrics": {
        ...
      },
      ...
    }
  ],
  ...
}

Setiap ShipmentRoute berisi daftar visits yang diurutkan yang akan digunakan kendaraan selesai. Setiap Visit (REST, gRPC) mewakili VisitRequest (REST, gRPC) dari permintaan yang sesuai. Visit penting properti tersebut meliputi:

  • shipmentIndex adalah indeks berbasis nol dari pengiriman yang berada pada kunjungan ini dalam permintaan yang sesuai.
  • isPickup benar jika kunjungan adalah pengambilan dan salah jika kunjungan adalah pengiriman. Respons REST menghapus properti ini jika nilainya salah (false).
  • visitRequestIndex adalah indeks berbasis nol dari VisitRequest dari Shipment.pickups atau Shipment.deliveries dalam permintaan yang sesuai yang diwakili oleh Visit. Respons REST menghapus properti ini saat nilainya adalah nol.
  • startTime adalah waktu kunjungan diperkirakan akan dimulai.
  • loadDemands memetakan jenis pemuatan ke jumlah pemuatan yang diminta untuk menyelesaikan Visit. Jumlah muatan bernilai negatif untuk kunjungan pengiriman, yang menunjukkan beban dikeluarkan dari kendaraan.

Contoh Visit terlihat seperti:

{
  "routes": [
    {
      ...
      "visits": [
        {
          "isPickup": true,
          "startTime": "2024-02-13T00:00:00Z",
          "detour": "0s"
        },
        ...
      ],
    },
    ...
  ],
  ...
}

Setiap ShipmentRoute berisi daftar urut transitions yang mewakili perjalanan antara visits untuk kendaraan tertentu. Pesan Transition penting Properti (REST, gRPC) mencakup:

  • startTime adalah waktu saat kendaraan akan mulai melakukan transisi.
  • travelDuration adalah durasi yang harus ditempuh kendaraan menyelesaikan transisi.
  • travelDistanceMeters adalah jarak dalam meter yang harus dilalui kendaraan untuk menyelesaikan transisi.
  • trafficInfoUnavailable menunjukkan apakah data lalu lintas tersedia untuk transisi.
  • waitDuration menunjukkan waktu tidak ada aktivitas yang dihabiskan kendaraan untuk menunggu sebelum dapat memulai Visit berikutnya. Hal ini mungkin timbul karena start_time mengikuti Visit.
  • totalDuration adalah total durasi transisi, termasuk perjalanan, waktu tunggu, waktu istirahat, dan penundaan.
  • vehicleLoads memetakan jenis muatan untuk memuat jumlah yang dibawa oleh kendaraan selama transisi ini.

Contoh Transition terlihat seperti:

{
  "routes": [
    {
      ...
      "transitions": [
        ...
        {
          "travelDuration": "1171s",
          "travelDistanceMeters": 9004,
          "waitDuration": "0s",
          "totalDuration": "1171s",
          "startTime": "2024-02-13T00:00:00Z"
        },
        ...
      ],
      ...
    }
  ],
  ...
}

Hubungan antara vists dan transitions dijelaskan di Pengoptimalan Pesanan Pengambilan dan Pengiriman, serta dalam Dokumentasi referensi ShipmentRoute (REST, gRPC).

Properti metrik

Pesan Metrics (REST, gRPC) merangkum seluruh solusi. Beberapa properti Metrics penting meliputi:

  • totalCost adalah total biaya yang dikeluarkan untuk menyelesaikan rute. Baca selengkapnya biaya di Parameter Model Biaya.
  • usedVehicleCount adalah jumlah total kendaraan yang digunakan dalam solusi ini. Kendaraan boleh memiliki rute kosong ketika pengoptimal menentukan bahwa penggunaannya tidak diperlukan.
  • skippedMandatoryShipmentCount adalah jumlah pengiriman yang dilewati yang "wajib". Pengiriman wajib tidak mencantumkan penaltyCost yang yang timbul jika pengiriman dilewati. Pengiriman wajib masih dapat dilakukan dilewati jika performanya tidak layak berdasarkan batasan yang ditentukan. Baca selengkapnya tentang biaya di Parameter Model Biaya.

Metrik tambahan dilaporkan sebagai pesan AggregatedMetrics (REST, gRPC). Jenis pesan AggregatedMetrics digunakan untuk properti Metrics.aggregatedRouteMetrics dan untuk ShipmentRoute.metrics properti Metrics.aggregatedRouteMetrics berisi metrik yang digabungkan di semua ShipmentRoute di OptimizeToursResponse. Setiap ShipmentRoute.metrics berisi metrik untuk ShipmentRoute spesifik tersebut.

Properti AggregatedMetrics penting meliputi:

  • performedShipmentCount adalah jumlah pengiriman yang dilakukan oleh kendaraan atas seluruh rute mereka.
  • travelDuration adalah total waktu yang dihabiskan kendaraan dalam transportasi umum saat menyelesaikan rute mereka.
  • waitDuration adalah total waktu yang dihabiskan kendaraan untuk menunggu saat menyelesaikan rute mereka.
  • delayDuration adalah total waktu tunda kendaraan. Hal ini biasanya nol kecuali jika TransitionAttributes digunakan dalam permintaan.
  • breakDuration adalah total waktu yang dihabiskan kendaraan untuk beristirahat saat menyelesaikan rute mereka.
  • visitDuration adalah total waktu yang dihabiskan kendaraan untuk melakukan kunjungan saat menyelesaikan rute mereka. Jumlah ini secara efektif adalah jumlah dari semua Nilai VisitRequest.duration untuk VisitRequest yang sesuai dengan Visit untuk kendaraan yang sesuai.
  • totalDuration adalah total durasi yang dibutuhkan untuk menyelesaikan kendaraan rute perjalanan.
  • travelDistanceMeters adalah total jarak yang ditempuh kendaraan saat menyelesaikan rute mereka.
  • maxLoads memetakan jenis pemuatan ke jumlah beban maksimum yang dibawa oleh kendaraan di titik mana pun pada rute mereka.

Contoh pesan Metrics terlihat seperti:

{
  "routes": [
    ...
  ],
  "metrics": {
    "aggregatedRouteMetrics": {
      "performedShipmentCount": 1,
      "travelDuration": "2322s",
      "waitDuration": "0s",
      "delayDuration": "0s",
      "breakDuration": "0s",
      "visitDuration": "0s",
      "totalDuration": "2322s",
      "travelDistanceMeters": 18603
    },
    "usedVehicleCount": 1,
    "earliestVehicleStartTime": "2024-02-13T00:00:00Z",
    "latestVehicleEndTime": "2024-02-13T00:38:42Z",
    "totalCost": 18.603,
    "costs": {
      "model.vehicles.cost_per_kilometer": 18.603
    }
  }
}

Contoh lengkap

Contoh respons lengkap untuk permintaan dari Membuat Permintaan terlihat seperti:

{
  "routes": [
    {
      "vehicleStartTime": "2024-02-13T00:00:00Z",
      "vehicleEndTime": "2024-02-13T00:38:42Z",
      "visits": [
        {
          "isPickup": true,
          "startTime": "2024-02-13T00:00:00Z",
          "detour": "0s"
        },
        {
          "startTime": "2024-02-13T00:19:31Z",
          "detour": "0s"
        }
      ],
      "transitions": [
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2024-02-13T00:00:00Z"
        },
        {
          "travelDuration": "1171s",
          "travelDistanceMeters": 9004,
          "waitDuration": "0s",
          "totalDuration": "1171s",
          "startTime": "2024-02-13T00:00:00Z"
        },
        {
          "travelDuration": "1151s",
          "travelDistanceMeters": 9599,
          "waitDuration": "0s",
          "totalDuration": "1151s",
          "startTime": "2024-02-13T00:19:31Z"
        }
      ],
      "metrics": {
        "performedShipmentCount": 1,
        "travelDuration": "2322s",
        "waitDuration": "0s",
        "delayDuration": "0s",
        "breakDuration": "0s",
        "visitDuration": "0s",
        "totalDuration": "2322s",
        "travelDistanceMeters": 18603
      },
      "routeCosts": {
        "model.vehicles.cost_per_kilometer": 18.603
      },
      "routeTotalCost": 18.603
    }
  ],
  "metrics": {
    "aggregatedRouteMetrics": {
      "performedShipmentCount": 1,
      "travelDuration": "2322s",
      "waitDuration": "0s",
      "delayDuration": "0s",
      "breakDuration": "0s",
      "visitDuration": "0s",
      "totalDuration": "2322s",
      "travelDistanceMeters": 18603
    },
    "usedVehicleCount": 1,
    "earliestVehicleStartTime": "2024-02-13T00:00:00Z",
    "latestVehicleEndTime": "2024-02-13T00:38:42Z",
    "totalCost": 18.603,
    "costs": {
      "model.vehicles.cost_per_kilometer": 18.603
    }
  }
}