OptimizeToursResponse

Respons setelah menyelesaikan 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. Error ini akan menyertakan peringatan, bukan error, 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 yang mengikuti bagian ini memberikan lebih banyak konteks tentang error tersebut.

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 antaranya. 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 "KESALAHAN BEBERAPA".

displayName

string

Nama tampilan error.

fields[]

object (FieldReference)

Konteks error dapat melibatkan 0, 1 (sebagian besar waktu), atau beberapa kolom. Misalnya, merujuk pada pengambilan pertama kendaraan #4 dan 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 menjelaskan error dan dapat dibaca manusia. Ada pemetaan 1:1 antara code dan errorMessage (saat kode != "UNSPECIFIED").

STABILITAS: Tidak stabil: pesan error yang terkait dengan code tertentu dapat berubah (semoga untuk memperjelasnya) dari waktu ke waktu. Sebagai gantinya, harap andalkan 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 hierarki yang sama. Misalnya, kami dapat menetapkan 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, mis., "vehicles".

subField

object (FieldReference)

Sub-kolom bersarang rekursif, jika diperlukan.

Kolom union index_or_key.

index_or_key hanya dapat berupa salah satu dari yang berikut:

index

integer

Indeks kolom jika diulang.

key

string

Kunci jika kolomnya adalah peta.

Metrik

Metrik keseluruhan, yang digabungkan dari 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 berdasarkan 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, yang dihitung sebagai waktu mulai minimum untuk semua kendaraan bekas sebesar ShipmentRoute.vehicle_start_time.

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

latestVehicleEndTime

string (Timestamp format)

Waktu berakhir terbaru untuk kendaraan bekas, yang dihitung sebagai waktu berakhir maksimum untuk semua kendaraan bekas sebesar 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 terkait TransitionAttributes yang hanya dilaporkan secara agregat mulai 01/2022.

totalCost

number

Total biaya solusi. Jumlah semua nilai dalam peta biaya.