OptimizeToursResponse

Bir tur optimizasyonu probleminin çözümünden sonra, her aracın izlediği rotaları, atlanan kargoları ve çözümün toplam maliyetini içeren yanıt.

JSON gösterimi
{
  "routes": [
    {
      object (ShipmentRoute)
    }
  ],
  "requestLabel": string,
  "skippedShipments": [
    {
      object (SkippedShipment)
    }
  ],
  "validationErrors": [
    {
      object (OptimizeToursValidationError)
    }
  ],
  "metrics": {
    object (Metrics)
  }
}
Alanlar
routes[]

object (ShipmentRoute)

Her araç için hesaplanan rotalar; i. rota, modeldeki i. araca karşılık gelir.

requestLabel

string

İstekte bir etiket belirtilmişse OptimizeToursRequest.label öğesinin kopyası.

skippedShipments[]

object (SkippedShipment)

Atlanan tüm gönderimlerin listesi.

validationErrors[]

object (OptimizeToursValidationError)

Bağımsız olarak tespit edebildiğimiz tüm doğrulama hatalarının listesi. OptimizeToursValidationError mesajının "BİRDEN FAZLA HATA" açıklamasına bakın. solvingMode değeri DEFAULT_SOLVE olduğunda bu, hatalar yerine uyarılar içerir.

metrics

object (Metrics)

Bu çözüm için süre, mesafe ve kullanım metrikleri.

OptimizeToursValidationError

Bir OptimizeToursRequest doğrulanırken karşılaşılan hatayı veya uyarıyı açıklar.

JSON gösterimi
{
  "code": integer,
  "displayName": string,
  "fields": [
    {
      object (FieldReference)
    }
  ],
  "errorMessage": string,
  "offendingValues": string
}
Alanlar
code

integer

Doğrulama hatası, her zaman mevcut olan çift (code, displayName) tarafından tanımlanır.

Bu bölümün ardından gelen alanlar, hatayla ilgili daha fazla bağlam bilgisi sağlar.

BİRDEN ÇOK HATA: Birden çok hata olduğunda, doğrulama işlemi bunlardan birkaçının çıktısını almaya çalışır. Derleyiciye benzer şekilde, bu işlem de kusursuz değildir. Bazı doğrulama hataları "önemli"dir. Bu, doğrulama sürecinin tamamını durdurdukları anlamına gelir. Bu durum, diğerlerinin yanı sıra displayName="UNSPECIFIED" hataları için de geçerlidir. Bazı hatalar, doğrulama sürecinin diğer hataları atlamasına neden olabilir.

STability: code ve displayName son derece kararlı olmalıdır. Ancak zaman içinde yeni kodlar ve görünen adlar görünebilir. Bu da yeni hata eski hatayı gizlediği için belirli bir (geçersiz) isteğin farklı bir (code, displayName) çifti oluşturmasına neden olabilir. Örneğin, "ÇOKLU HATA"ya bakın.

displayName

string

Hatanın görünen adı.

fields[]

object (FieldReference)

Bir hata bağlamı 0, 1 (çoğu zaman) veya daha fazla alan içerebilir. Örneğin, 4 numaralı araç ve 2 numaralı gönderimin ilk teslim alma işlemi aşağıdaki gibi yapılabilir:

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

Bununla birlikte, belirli bir hata kodu için fields işlevinin kardinalitesinin değişmemesi gerektiğini unutmayın.

errorMessage

string

Hatayı açıklayan, kullanıcıların okuyabileceği dize. code ile errorMessage arasında 1:1 eşleme vardır (code != "UNSPECIFIED" olduğunda).

STABİLİTE: Kararlı değil: Belirli bir code ile ilişkili hata mesajı zaman içinde değişebilir (umarım daha net bir şekilde). Bunun yerine lütfen displayName ve code kullanın.

offendingValues

string

Alanların değerlerini içerebilir. Bu seçenek her zaman kullanılamaz. Bu yönteme kesinlikle güvenmemeli ve yalnızca manuel model hata ayıklama için kullanmalısınız.

FieldReference

Doğrulama hatası için bir bağlam belirtir. FieldReference, her zaman bu dosyada belirli bir alanı ifade eder ve aynı hiyerarşik yapıyı uygular. Örneğin, 5 numaralı aracın startTimeWindows öğesinin 2. öğesini şu şekilde belirtebiliriz:

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

Ancak mesajın kalabalık olmaması için OptimizeToursRequest veya ShipmentModel gibi üst düzey öğeler atlanır.

JSON gösterimi
{
  "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.
}
Alanlar
name

string

Alanın adı, ör. "vehicles".

subField

object (FieldReference)

Gerekirse yinelenen olarak iç içe yerleştirilmiş alt alan.

Birleştirme alanı index_or_key.

index_or_key yalnızca aşağıdakilerden biri olabilir:

index

integer

Tekrarlanırsa alanın dizini.

key

string

Alan bir harita ise anahtar.

Metrikler

Tüm rotalar için toplanan genel metrikler.

JSON gösterimi
{
  "aggregatedRouteMetrics": {
    object (AggregatedMetrics)
  },
  "skippedMandatoryShipmentCount": integer,
  "usedVehicleCount": integer,
  "earliestVehicleStartTime": string,
  "latestVehicleEndTime": string,
  "costs": {
    string: number,
    ...
  },
  "totalCost": number
}
Alanlar
aggregatedRouteMetrics

object (AggregatedMetrics)

Rotalar üzerinden toplanır. Her metrik, aynı ada sahip tüm ShipmentRoute.metrics alanlarının toplamıdır (veya yüklemeler için maksimum değerdir).

skippedMandatoryShipmentCount

integer

Atlanan zorunlu gönderi sayısı.

usedVehicleCount

integer

Kullanılan araç sayısı. Not: Bir araç rotası boşsa ve Vehicle.used_if_route_is_empty doğruysa araç kullanılmış kabul edilir.

earliestVehicleStartTime

string (Timestamp format)

İkinci el bir araç için en erken başlangıç zamanı. ShipmentRoute.vehicle_start_time değerindeki tüm ikinci el araçlar üzerinden minimum olarak hesaplanır.

RFC3339 UTC "Zulu" biçiminde, nanosaniye çözünürlüğüne ve en fazla dokuz kesirli basamağa sahip bir zaman damgası. Örnekler: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

latestVehicleEndTime

string (Timestamp format)

İkinci el bir araç için en geç bitiş zamanı. ShipmentRoute.vehicle_end_time değerindeki tüm ikinci el araçlar üzerinden maksimum değer olarak hesaplanır.

Nanosaniye çözünürlüğüne sahip ve en fazla dokuz kesirli basamak içeren RFC3339 UTC "Zulu" biçiminde bir zaman damgası. Örnekler: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

costs

map (key: string, value: number)

Maliyetle ilgili istek alanlarına göre ayrılmış çözüm maliyeti. Anahtarlar, OptimizeToursRequest girişine (ör. "model.shipments.pickups.cost") kıyasla proto yollarıdır.Değerler, ilgili maliyet alanı tarafından oluşturulan ve tüm çözüm genelinde toplanan toplam maliyettir. Başka bir deyişle maliyet["model.shipments.pickups.cost"], çözüm üzerinden tüm teslim alma maliyetlerinin toplamıdır. Modelde tanımlanan tüm maliyetler, 2022/01 itibarıyla yalnızca toplu olarak raporlanan TransitionAttributes ile ilgili maliyetler hariç burada ayrıntılı olarak raporlanır.

totalCost

number

Çözümün toplam maliyeti. Maliyet haritasındaki tüm değerlerin toplamı.