OptimizeToursResponse

Respons setelah memecahkan masalah pengoptimalan tur yang berisi rute yang diikuti oleh setiap kendaraan, pengiriman yang telah dilewati, dan biaya keseluruhan solusi.

Representasi JSON
{
  "routes": [
    {
      object (ShipmentRoute)
    }
  ],
  "requestLabel": string,
  "skippedShipments": [
    {
      object (SkippedShipment)
    }
  ],
  "validationErrors": [
    {
      object (OptimizeToursValidationError)
    }
  ],
  "metrics": {
    object (Metrics)
  }
}
Kolom
routes[]

object (ShipmentRoute)

Rute yang dihitung untuk setiap kendaraan; rute ke-i sesuai dengan kendaraan ke-i dalam model.

requestLabel

string

Salinan OptimizeToursRequest.label, jika label ditentukan dalam permintaan.

skippedShipments[]

object (SkippedShipment)

Daftar semua pengiriman yang dilewati.

validationErrors[]

object (OptimizeToursValidationError)

Daftar semua error validasi yang dapat kami deteksi secara independen. Lihat penjelasan "MULTIPLE ERRORS" untuk pesan OptimizeToursValidationError. Sebagai ganti error, tindakan ini akan menyertakan peringatan jika solvingMode adalah DEFAULT_SOLVE.

metrics

object (Metrics)

Metrik durasi, jarak, dan penggunaan untuk solusi ini.

OptimizeToursValidationError

Menjelaskan error atau peringatan yang dialami saat memvalidasi OptimizeToursRequest.

Representasi JSON
{
  "code": integer,
  "displayName": string,
  "fields": [
    {
      object (FieldReference)
    }
  ],
  "errorMessage": string,
  "offendingValues": string
}
Kolom
code

integer

Error validasi ditentukan oleh pasangan (code, displayName) yang selalu ada.

Kolom setelah bagian ini memberikan konteks selengkapnya tentang error.

MULTIPLE ERRORS: Jika ada beberapa error, proses validasi akan mencoba menampilkan beberapa error tersebut. Sama seperti compiler, ini adalah proses yang tidak sempurna. Beberapa error validasi akan bersifat "fatal", yang berarti error tersebut menghentikan seluruh proses validasi. Hal ini berlaku untuk error displayName="UNSPECIFIED", di antara lainnya. Beberapa error dapat menyebabkan proses validasi melewati error lainnya.

STABILITAS: code dan displayName harus sangat stabil. Namun, kode dan nama tampilan baru dapat muncul dari waktu ke waktu, yang dapat menyebabkan permintaan tertentu (tidak valid) menghasilkan pasangan (code, displayName) yang berbeda karena error baru menyembunyikan error lama. Misalnya, lihat "BERBAGAI ERROR".

displayName

string

Nama tampilan error.

fields[]

object (FieldReference)

Konteks error dapat melibatkan 0, 1 (sebagian besar waktu), atau beberapa kolom. Misalnya, merujuk pada kendaraan #4 dan pengambilan pertama pengiriman #2 dapat dilakukan sebagai berikut:

fields { name: "vehicles" index: 4}
fields { name: "shipments" index: 2 subField {name: "pickups" index: 0} }

Namun, perhatikan bahwa kardinalitas fields tidak boleh berubah untuk kode error tertentu.

errorMessage

string

String yang dapat dibaca manusia yang menjelaskan error. Terdapat pemetaan 1:1 antara code dan errorMessage (jika kode != "UNSPECIFIED").

STABILITAS: Tidak stabil: pesan error yang terkait dengan code tertentu dapat berubah (semoga untuk memperjelasnya) dari waktu ke waktu. Sebagai gantinya, gunakan displayName dan code.

offendingValues

string

Dapat berisi nilai kolom. Fitur ini tidak selalu tersedia. Anda tidak boleh mengandalkannya dan hanya menggunakannya untuk proses debug model manual.

FieldReference

Menentukan konteks untuk error validasi. FieldReference selalu merujuk ke kolom tertentu dalam file ini dan mengikuti struktur hierarkis yang sama. Misalnya, kita dapat menentukan elemen #2 dari startTimeWindows kendaraan #5 menggunakan:

name: "vehicles" index: 5 subField { name: "endTimeWindows" index: 2 }

Namun, kami menghilangkan entitas tingkat atas seperti OptimizeToursRequest atau ShipmentModel untuk menghindari pesan yang terlalu panjang.

Representasi JSON
{
  "name": string,
  "subField": {
    object (FieldReference)
  },

  // Union field index_or_key can be only one of the following:
  "index": integer,
  "key": string
  // End of list of possible types for union field index_or_key.
}
Kolom
name

string

Nama kolom, misalnya, "vehicles".

subField

object (FieldReference)

Sub-kolom bertingkat secara rekursif, jika diperlukan.

Kolom union index_or_key.

index_or_key hanya dapat berupa salah satu dari hal berikut:

index

integer

Indeks kolom jika diulang.

key

string

Kunci jika kolom adalah peta.

Metrik

Metrik keseluruhan, yang digabungkan di semua rute.

Representasi JSON
{
  "aggregatedRouteMetrics": {
    object (AggregatedMetrics)
  },
  "skippedMandatoryShipmentCount": integer,
  "usedVehicleCount": integer,
  "earliestVehicleStartTime": string,
  "latestVehicleEndTime": string,
  "costs": {
    string: number,
    ...
  },
  "totalCost": number
}
Kolom
aggregatedRouteMetrics

object (AggregatedMetrics)

Digabungkan di seluruh rute. Setiap metrik adalah jumlah (atau maksimum, untuk pemuatan) di semua kolom ShipmentRoute.metrics dengan nama yang sama.

skippedMandatoryShipmentCount

integer

Jumlah pengiriman wajib yang dilewati.

usedVehicleCount

integer

Jumlah kendaraan yang digunakan. Catatan: jika rute kendaraan kosong dan Vehicle.used_if_route_is_empty benar, kendaraan dianggap digunakan.

earliestVehicleStartTime

string (Timestamp format)

Waktu mulai paling awal untuk kendaraan bekas, dihitung sebagai minimum dari semua kendaraan bekas ShipmentRoute.vehicle_start_time.

Stempel waktu dalam format RFC3339 UTC "Zulu", dengan resolusi nanodetik dan hingga sembilan digit pecahan. Contoh: "2014-10-02T15:01:23Z" dan "2014-10-02T15:01:23.045123456Z".

latestVehicleEndTime

string (Timestamp format)

Waktu akhir terbaru untuk kendaraan bekas, dihitung sebagai maksimum dari semua kendaraan bekas ShipmentRoute.vehicle_end_time.

Stempel waktu dalam format RFC3339 UTC "Zulu", dengan resolusi nanodetik dan hingga sembilan digit pecahan. Contoh: "2014-10-02T15:01:23Z" dan "2014-10-02T15:01:23.045123456Z".

costs

map (key: string, value: number)

Biaya solusi, yang dikelompokkan berdasarkan kolom permintaan terkait biaya. Kuncinya adalah jalur proto, yang relatif terhadap input OptimizeToursRequest, misalnya "model.shipments.pickups.cost", dan nilainya adalah total biaya yang dihasilkan oleh kolom biaya yang sesuai, yang digabungkan di seluruh solusi. Dengan kata lain, costs["model.shipments.pickups.cost"] adalah jumlah semua biaya pengambilan di seluruh solusi. Semua biaya yang ditentukan dalam model dilaporkan secara mendetail di sini, kecuali biaya yang terkait dengan TransitionAttributes yang hanya dilaporkan secara gabungan mulai 01/2022.

totalCost

number

Total biaya solusi. Jumlah semua nilai dalam peta biaya.