Package google.maps.routeoptimization.v1

Dizin

RouteOptimization

Araç turlarını optimize etmeye yönelik bir hizmet.

Belirli alan türlerinin geçerliliği:

  • google.protobuf.Timestamp
    • Saatler Unix saatine göredir: 1970-01-01T00:00:00+00:00'dan itibaren saniyeler.
    • saniye, [0, 253402300799], ör. [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00] içinde olmalıdır.
    • nanos değeri ayarlanmalı veya 0 değerine ayarlanmalıdır.
  • google.protobuf.Duration
    • saniye, [0, 253402300799] aralığında (ör. [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00]) olmalıdır.
    • nanos değeri ayarlanmalı veya 0 değerine ayarlanmalıdır.
  • google.type.LatLng
    • enlem, [-90,0; 90,0] aralığında olmalıdır.
    • boylam [-180,0, 180,0] biçiminde olmalıdır.
    • En az biri sıfır olmayan enlem ve boylam değerleri olmalıdır.
BatchOptimizeTours

rpc BatchOptimizeTours(BatchOptimizeToursRequest) returns (Operation)

Bir veya daha fazla OptimizeToursRequest mesajı için araç turlarını toplu olarak optimize eder.

Bu yöntem Uzun Süreli bir İşlemdir (LRO). Optimizasyon girişleri (OptimizeToursRequest mesaj) ve çıkışlar (OptimizeToursResponse mesaj) kullanıcı tarafından belirtilen biçimde Cloud Storage'dan okunur/yazılır. OptimizeTours yönteminde olduğu gibi her OptimizeToursRequest, bir ShipmentModel içerir ve ShipmentRoute içeren bir OptimizeToursResponse döndürür. Bunlar, araçlar tarafından toplam maliyeti en aza indiren bir rota grubudur.

Kullanıcı, LRO'nun durumunu kontrol etmek için operations.get öğesini yoklayabilir:

LRO'nun done alanı yanlışsa en az bir isteğin işlenmeye devam ettiği anlamına gelir. Diğer istekler başarıyla tamamlanmış olabilir. Bu isteklerin sonuçlarına GCS'den ulaşılabilir.

LRO'nun done alanı doğruysa tüm istekler işlenmiştir. Başarılı bir şekilde işlenen isteklerin sonuçları GCS'de kullanılabilir olur. Başarısız olan isteklerin sonuçları GCS'de sunulmaz. LRO'nun error alanı ayarlanmışsa başarısız isteklerden birindeki hatayı içerir.

Yetkilendirme kapsamları

Aşağıdaki OAuth kapsamını gerektirir:

  • https://www.googleapis.com/auth/cloud-platform
IAM İzinleri

parent kaynağında aşağıdaki IAM izni gerekir:

  • routeoptimization.operations.create

Daha fazla bilgi için IAM belgelerini inceleyin.

OptimizeTours

rpc OptimizeTours(OptimizeToursRequest) returns (OptimizeToursResponse)

ShipmentModel içeren bir OptimizeToursRequest gönderir ve ShipmentRoute içeren bir OptimizeToursResponse döndürür. Bunlar, araçlar tarafından toplam maliyeti en aza indiren rota grubudur.

ShipmentModel modeli, esas olarak gerçekleştirilmesi gereken Shipment öğeleri ve Shipment öğelerini taşımak için kullanılabilecek Vehicle öğelerinden oluşur. ShipmentRoute öğeleri, Shipment öğelerini Vehicle öğelerine atar. Daha ayrıntılı olarak belirtmek gerekirse, her araca bir dizi Visit atanır. Bu Visit, bir Shipment için teslimat veya teslim alma işlemi olan bir VisitRequest'a karşılık gelir.

Amaç, ShipmentModel içinde tanımlanan birçok bileşenin maliyet olduğu durumlarda toplam maliyeti en aza indirecek biçimde Vehicle öğelerine ShipmentRoute atanmasını sağlamaktır.

Yetkilendirme kapsamları

Aşağıdaki OAuth kapsamını gerektirir:

  • https://www.googleapis.com/auth/cloud-platform
IAM İzinleri

parent kaynağında aşağıdaki IAM izni gerekir:

  • routeoptimization.locations.use

Daha fazla bilgi için IAM belgelerini inceleyin.

AggregatedMetrics

ShipmentRoute için birleştirilmiş metrikler (tüm Transition ve/veya Visit (tüm ShipmentRoute) öğeleri üzerinden OptimizeToursResponse için sorumlu.

Alanlar
performed_shipment_count

int32

Gerçekleştirilen gönderim sayısı. Teslim alma ve teslimat çiftinin yalnızca bir kez sayıldığını unutmayın.

travel_duration

Duration

Bir rota veya çözümün toplam seyahat süresi.

wait_duration

Duration

Bir rota veya çözüm için toplam bekleme süresi.

delay_duration

Duration

Bir rota veya çözüm için toplam gecikme süresi.

break_duration

Duration

Bir rota veya çözüm için toplam ara süresi.

visit_duration

Duration

Bir rota veya çözüm için toplam ziyaret süresi.

total_duration

Duration

Toplam süre, yukarıdaki tüm sürelerin toplamına eşit olmalıdır. Rotalar için aşağıdakilere de karşılık gelir:

[ShipmentRoute.vehicle_end_time][google.maps.routeoptimization.v1.ShipmentRoute.vehicle_end_time] - [ShipmentRoute.vehicle_start_time][google.maps.routeoptimization.v1.ShipmentRoute.vehicle_start_time]
travel_distance_meters

double

Bir rota veya çözüm için toplam seyahat mesafesi.

max_loads

map<string, VehicleLoad>

Bu rotadaki her miktar (ilgili çözüm) için rotanın tamamı boyunca elde edilen maksimum yük (sorumlu çözüm) ve Transition.vehicle_loads değerinin tamamı üzerinden maksimum değer olarak hesaplanır. ShipmentRoute.metrics.max_loads.

BatchOptimizeToursMetadata

Bu türde alan yok.

BatchOptimizeToursRequest çağrıları için işlem meta verileri.

BatchOptimizeToursRequest

Turları eşzamansız bir işlem olarak toplu olarak optimize etme isteği. Her giriş dosyası bir OptimizeToursRequest içermelidir ve her çıkış dosyası bir OptimizeToursResponse içermelidir. İstek, dosyaları okuma/yazma ve ayrıştırma ile ilgili bilgileri içerir. Tüm giriş ve çıkış dosyaları aynı projede olmalıdır.

Alanlar
parent

string

Zorunlu. Arama yapmak için hedef proje ve konum.

Biçim: * projects/{project-id} * projects/{project-id}/locations/{location-id}

Konum belirtilmezse otomatik olarak bir bölge seçilir.

model_configs[]

AsyncModelConfig

Zorunlu. Her satın alma modelinde giriş/çıkış bilgileri (ör. dosya yolları ve veri biçimleri).

AsyncModelConfig

Bir optimizasyon modelini eşzamansız olarak çözmeyle ilgili bilgiler.

Alanlar
display_name

string

İsteğe bağlı. Kullanıcı tanımlı model adı, kullanıcılar tarafından modelleri takip etmek için takma ad olarak kullanılabilir.

input_config

InputConfig

Zorunlu. Giriş modeliyle ilgili bilgiler.

output_config

OutputConfig

Zorunlu. İstenen çıkış konumu bilgileri.

BatchOptimizeToursResponse

Bu türde alan yok.

BatchOptimizeToursRequest için yanıt. Bu kimlik, işlem tamamlandıktan sonra Uzun Süreli İşlemde döndürülür.

BreakRule

Bir araç için molalar (ör. öğle yemeği molaları) oluşturmaya yönelik kurallar. Ara, aracın mevcut konumunda sabit durduğu ve herhangi bir ziyaret gerçekleştiremediği kesintisiz bir zaman aralığıdır. Süreçte kesinti yaşanabilir:

  • iki ziyaret arasındaki seyahat sırasında (ziyaretten hemen önceki veya hemen sonraki süreyi içerir, ancak ziyaretin ortasında değil) bu durumda ziyaretler arasındaki nakliye süresini uzatır.
  • veya araç çalıştırılmadan önce (araç, aranın ortasında çalıştırılamaz) yapılırsa araç çalıştırma zamanını etkilemez.
  • araç bitiş tarihinden sonra (araç bitiş zamanıyla birlikte).
Alanlar
break_requests[]

BreakRequest

Aralar dizisi. BreakRequest mesajını inceleyin.

frequency_constraints[]

FrequencyConstraint

Birkaç FrequencyConstraint geçerli olabilir. Hepsi bu BreakRule BreakRequest ile uyumlu olmalıdır. FrequencyConstraint hükümlerini inceleyin.

BreakRequest

Her araç için geçerli olan araların sırası (yani sayısı ve sırası) önceden bilinmelidir. Tekrarlanan BreakRequest'ler, bu sırayı gerçekleşmeleri gereken sırayla tanımlar. Aralarındaki zaman aralıkları (earliest_start_time / latest_start_time) çakışabilir ancak siparişle uyumlu olmalıdır (bu seçenek işaretlidir).

Alanlar
earliest_start_time

Timestamp

Zorunlu. Aranın başlangıcındaki alt sınır (dahil).

latest_start_time

Timestamp

Zorunlu. Aranın başlangıcındaki üst sınır (dahil).

min_duration

Duration

Zorunlu. Minimum ara süresi. Pozitif olmalıdır.

FrequencyConstraint

"Her 12 saatte en az 1 saatlik ara olmalıdır" gibi bir minimum ara sıklığı uygulayarak yukarıda belirtilen araların sıklığını ve süresini daha da kısıtlayabilirsiniz. Bunun, "12 saatlik herhangi bir kaydırma zaman aralığında, en az bir saatlik en az bir ara olması gerekir" şeklinde yorumlanabileceği varsayıldığında, bu örnek FrequencyConstraint anlamına gelir:

{
   min_break_duration { seconds: 3600 }         # 1 hour.
   max_inter_break_duration { seconds: 39600 }  # 11 hours (12 - 1 = 11).
}

Çözümdeki araların zamanlaması ve süresi, BreakRequest politikasında önceden belirtilen zaman aralıkları ile minimum sürelere ek olarak bu tür kısıtlamalara da uyar.

FrequencyConstraint, ardışık olmayan aralar için pratikte geçerli olabilir. Örneğin, aşağıdaki program "her 12 saatte 1 saat"i dikkate alır örnek:

  04:00 vehicle start
   .. performing travel and visits ..
  09:00 1 hour break
  10:00 end of the break
   .. performing travel and visits ..
  12:00 20-min lunch break
  12:20 end of the break
   .. performing travel and visits ..
  21:00 1 hour break
  22:00 end of the break
   .. performing travel and visits ..
  23:59 vehicle end
Alanlar
min_break_duration

Duration

Zorunlu. Bu kısıtlama için minimum ara süresi. Negatif değil. FrequencyConstraint açıklamasına bakın.

max_inter_break_duration

Duration

Zorunlu. Rotada en azından kısmen duration >= min_break_duration arası bulunmayan herhangi bir zaman aralığı için izin verilen maksimum aralık. Pozitif olmalıdır.

DataFormat

Giriş ve çıkış dosyaları için veri biçimleri.

Sıralamalar
DATA_FORMAT_UNSPECIFIED Geçersiz değer. Biçim, UNSPECIFIED (BELİRTİLMEMİŞ) olmalıdır.
JSON JavaScript Nesne Gösterimi.
PROTO_TEXT Protokol Arabellekleri metin biçimi. https://protobuf.dev/reference/protobuf/textformat-spec/ adresine göz atın.

DistanceLimit

Katedilebilecek maksimum mesafeyi tanımlayan sınır. Sert veya yumuşak olabilir.

Yumuşak sınır tanımlanmışsa hem soft_max_meters hem de cost_per_kilometer_above_soft_max tanımlanmalı ve sıfırdan büyük olmalıdır.

Alanlar
max_meters

int64

Mesafeyi en fazla max_meters olacak şekilde kısıtlayan katı bir sınır. Sınır pozitif olmalıdır.

soft_max_meters

int64

Maksimum mesafe sınırı uygulanmayan, ancak ihlal edildiğinde modelde tanımlanan ve aynı birimdeki diğer maliyetlerin toplamına eşit bir maliyet ortaya çıkar.

Tanımlanmışsa soft_max_meters, max_metreden küçük olmalı ve negatif olmamalıdır.

cost_per_kilometer_below_soft_max

double

Formülle birlikte, artan kilometre başına maliyet soft_max_meters değerine kadar artacak:

  min(distance_meters, soft_max_meters) / 1000.0 *
  cost_per_kilometer_below_soft_max.

Bu maliyet route_distance_limit bölgesinde desteklenmiyor.

cost_per_kilometer_above_soft_max

double

Mesafe soft_max_meters sınırının üzerindeyse kilometre başına maliyet. Mesafe sınırın altındaysa ek maliyet 0 olur. Aksi durumda maliyeti hesaplamak için kullanılan formül aşağıdaki gibi olur:

  (distance_meters - soft_max_meters) / 1000.0 *
  cost_per_kilometer_above_soft_max.

Maliyet pozitif olmalıdır.

GcsDestination

Çıkış dosyalarının yazılacağı Google Cloud Storage konumu.

Alanlar
uri

string

Zorunlu. Google Cloud Storage URI'si.

GcsSource

Giriş dosyasının okunacağı Google Cloud Storage konumu.

Alanlar
uri

string

Zorunlu. gs://bucket/path/to/object biçiminde bir Google Cloud Storage nesnesinin URI'si.

InjectedSolutionConstraint

Hangi ziyaretlerin kısıtlanması gerektiği ve nasıl kısıtlanması gerektiği ile ilgili bilgileri de içeren isteğe eklenen çözümdür.

Alanlar
routes[]

ShipmentRoute

Yerleştirme çözümünün rotaları. Bazı rotalar orijinal çözümden çıkarılabilir. Rotalar ve atlanan gönderiler, injected_first_solution_routes için listelenen temel doğruluk varsayımlarını karşılamalıdır.

skipped_shipments[]

SkippedShipment

Eklenecek çözümün gönderimi atlandı. Bazıları orijinal çözümden çıkarılabilir. routes alanına bakın.

constraint_relaxations[]

ConstraintRelaxation

Sıfır veya daha fazla araç grubu için kısıtlamaların ne zaman ve ne kadar gevşetileceğini belirtir. Bu alan boşsa, boş olmayan tüm araç rotaları tamamen sınırlandırılır.

ConstraintRelaxation

Bir araç grubu için, ziyaretlerle ilgili kısıtlamaların hangi eşiklerde ve hangi düzeyde gevşetileceğini belirtir. skipped_shipment alanında listelenen gönderimlerin atlanması zorunludur; Yani gerçekleştirilemez.

Alanlar
relaxations[]

Relaxation

vehicle_indices bölgesindeki araç bulunan rotalardaki ziyaretler için geçerli olacak tüm ziyaret kısıtlaması hafifletmeleri.

vehicle_indices[]

int32

relaxations ziyaret kısıtlamasının geçerli olduğu araç dizinlerini belirtir. Bu değer boşsa varsayılan olarak kabul edilir ve relaxations diğer constraint_relaxations özelliğinde belirtilmeyen tüm araçlar için geçerlidir. En fazla bir varsayılan olabilir. Yani en fazla bir kısıtlama gevşetme alanına boş vehicle_indices izin verilir. Bir araç dizini birkaç constraint_relaxations içinde olsa bile yalnızca bir kez listelenebilir.

interpret_injected_solutions_using_labels doğruysa araç dizini ShipmentRoute.vehicle_index ile aynı şekilde eşlenir (fields yorumuna bakın).

Dinlenme

relaxations boşsa routes'teki tüm ziyaretlerin başlangıç zamanı ve sırası tamamen kısıtlanır ve bu rotalara yeni ziyaret eklenemez. Ayrıca, araç boş olmadığı sürece (ör. ziyareti yoksa ve modelde used_if_route_is_empty yanlış olarak ayarlanmışsa) aracın routes'teki başlangıç ve bitiş zamanı tamamen kısıtlanır.

relaxations(i).level, aşağıdaki koşulları karşılayan #j ziyaretine uygulanan kısıtlama hafifletme düzeyini belirtir:

  • route.visits(j).start_time >= relaxations(i).threshold_time VE
  • j + 1 >= relaxations(i).threshold_visit_count

Benzer şekilde, aracın çalıştırılması gereken koşullar aşağıdaki koşulları karşılıyorsa relaxations(i).level değerine ayarlanır:

  • vehicle_start_time >= relaxations(i).threshold_time VE
  • relaxations(i).threshold_visit_count == 0 ve araç sonu, aşağıdaki koşulları karşılıyorsa relaxations(i).level olarak gevşetilir:
  • vehicle_end_time >= relaxations(i).threshold_time VE
  • route.visits_size() + 1 >= relaxations(i).threshold_visit_count

Bir ziyaret threshold_visit_count VEYA threshold_time koşulunu karşılıyorsa bir rahatlama düzeyi uygulamak için aynı level ile iki relaxations ekleyin: Biri yalnızca threshold_visit_count, diğeri yalnızca threshold_time ayarlıdır. Bir ziyaret birden fazla relaxations koşullarını karşılıyorsa en esnek seviye uygulanır. Sonuç olarak, aracın başlangıcından rota ziyaretleri boyunca aracın bitişine kadar rahatlama seviyesi daha rahat hale gelir. Diğer bir deyişle, rota ilerledikçe rahatlama seviyesi azalmaz.

Herhangi bir relaxations'nin eşik koşullarını karşılamayan rota ziyaretlerinin zamanlaması ve sırası tamamen kısıtlanır ve bu sıralamalara ziyaret eklenemez. Ayrıca, aracın başlangıcı veya bitişi herhangi bir gevşeme koşullarını karşılamıyorsa araç boş olmadığı sürece süre sabittir.

Alanlar
level

Level

threshold_time ve en az threshold_visit_count öncesi koşullar karşılandığında geçerli olan kısıtlama hafifletme düzeyi.

threshold_time

Timestamp

Gevşetme level'nın uygulanabileceği veya bundan sonra uygulanabileceği zaman.

threshold_visit_count

int32

Gevşetme level'nin uygulanabileceği ziyaret sayısı veya ziyaretten sonraki ziyaret sayısı. threshold_visit_count değeri 0 ise (veya ayarlanmazsa) level doğrudan araç çalıştırıldığında uygulanabilir.

route.visits_size() + 1 ise level yalnızca araç ucuna uygulanabilir. route.visits_size() + 1 değerinden büyükse, söz konusu rota için level uygulanmaz.

Seviye

Bir ziyarete uygulanan ve eşik koşullarını karşıladığında gerçekleşen farklı kısıtlama gevşetme düzeylerini ifade eder.

Aşağıdaki numaralandırma, gevşetmeyi artırmak içindir.

Sıralamalar
LEVEL_UNSPECIFIED

Örtülü varsayılan rahatlama seviyesi: Hiçbir kısıtlama gevşetilemez, diğer bir deyişle tüm ziyaretler tamamen sınırlandırılmıştır.

Bu değer, level içinde açıkça kullanılmamalıdır.

RELAX_VISIT_TIMES_AFTER_THRESHOLD Ziyaret başlangıç ve araç başlangıç/bitiş zamanları gevşetilir ancak her ziyaret aynı araca bağlı kalır ve ziyaret sırasına dikkat edilmelidir: Aralarına veya öncesine hiçbir ziyaret eklenemez.
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD RELAX_VISIT_TIMES_AFTER_THRESHOLD ile aynıdır, ancak ziyaret dizisi de esnektir: Ziyaretler yalnızca bu araç tarafından gerçekleştirilebilir, ancak potansiyel olarak gerçekleştirilemeyebilir.
RELAX_ALL_AFTER_THRESHOLD RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD ile aynı, ancak araç aynı zamanda rahat. Eşik zamanında veya sonrasında ziyaretler tamamen ücretsizdir ve potansiyel olarak kötü performansa neden olabilir.

InputConfig

[BatchOptimizeTours][google.maps.routeeligibility.v1.RouteOptimizedService.BatchOptimizeTours] için bir giriş belirtin.

Alanlar
data_format

DataFormat

Zorunlu. Giriş verilerinin biçimi.

Birleştirme alanı source. Zorunlu. source şunlardan yalnızca biri olabilir:
gcs_source

GcsSource

Google Cloud Storage konumu. Tek bir nesne (dosya) olmalıdır.

Konum

Bir konumu (coğrafi nokta ve isteğe bağlı başlık) kapsar.

Alanlar
lat_lng

LatLng

Yol noktasının coğrafi koordinatları.

heading

int32

Trafiğin akış yönüyle ilişkilendirilen pusula başlığı. Bu değer, teslim alma ve bırakma için kullanılacak yolun tarafını belirtmek için kullanılır. Yön değerleri 0 ile 360 arasında olabilir. 0 değeri kuzey yönünü, 90 değeri doğu yönünü vb. belirtir.

OptimizeToursRequest

Çözülecek gönderim modelini ve optimizasyon parametrelerini tanımlayan bir tur optimizasyonu çözücüye verilme isteği.

Alanlar
parent

string

Zorunlu. Arama yapmak için projeyi veya konumu hedefleyin.

Biçim: * projects/{project-id} * projects/{project-id}/locations/{location-id}

Konum belirtilmezse bölge otomatik olarak seçilir.

timeout

Duration

Bu zaman aşımı ayarlanırsa sunucu, zaman aşımı süresi dolmadan veya senkronize isteklerin sunucu için son tarihi dolmadan önce (hangisi önceyse) bir yanıt döndürür.

Eşzamansız istekler için sunucu, zaman aşımı dolmadan önce bir çözüm (mümkünse) oluşturur.

model

ShipmentModel

Çözülmesi gereken gönderim modeli.

solving_mode

SolvingMode

Çözme modu varsayılan olarak DEFAULT_SOLVE (0) şeklindedir.

search_mode

SearchMode

İsteği çözmek için kullanılan arama modu.

injected_first_solution_routes[]

ShipmentRoute

Önceki bir çözüme benzer ilk çözümü bulma konusunda optimizasyon algoritmasına rehberlik edin.

Model, ilk çözüm oluşturulduğunda kısıtlanır. Bir rotada gerçekleştirilmeyen tüm gönderimler ilk çözümde dolaylı olarak atlanır ancak sonraki çözümlerde gerçekleştirilebilir.

Çözüm, bazı temel geçerlilik varsayımlarını karşılamalıdır:

  • tüm rotalar için vehicle_index aralık içinde olmalı ve kopyalanmamalıdır.
  • tüm ziyaretler için shipment_index ve visit_request_index aralık dahilinde olmalıdır.
  • bir gönderime yalnızca bir rotada referans verilebilir.
  • Teslim alınacak kargonun teslim alınması, teslimattan önce yapılmalıdır.
  • bir kargo için en fazla bir teslim alma veya teslimat alternatifi gerçekleştirilemez.
  • tüm rotalar için süre artıyor (ör. vehicle_start_time <= visits[0].start_time <= visits[1].start_time ... <= vehicle_end_time) bilgileri gösterilir.
  • Gönderim yalnızca izin verilen bir araçta yapılabilir. Shipment.allowed_vehicle_indices boşsa veya vehicle_index özelliği Shipment.allowed_vehicle_indices içinde bulunuyorsa araca izin verilir.

Yerleştirilen çözüm uygulanabilir değilse doğrulama hatası her zaman döndürülmez ve bunun yerine uygulanabilir olmadığını belirten bir hata döndürülebilir.

injected_solution_constraint

InjectedSolutionConstraint

Önceki bir çözüme benzer nihai bir çözüm bulmak için optimizasyon algoritmasını kısıtlayın. Örneğin bu, tamamlanmış veya tamamlanmak üzere olan ancak değiştirilmemesi gereken rota bölümlerini dondurmak için kullanılabilir.

Yerleştirilen çözüm uygulanabilir değilse doğrulama hatası her zaman döndürülmez ve bunun yerine uygulanabilir olmadığını belirten bir hata döndürülebilir.

refresh_details_routes[]

ShipmentRoute

Boş olmayan rotalar, temel ziyaret sıraları veya seyahat süreleri değiştirilmeden yenilenir, yalnızca diğer ayrıntılar güncellenir. Bu işlem modeli çözmez.

2020/11 itibarıyla, bu yalnızca boş olmayan rotaların çoklu çizgilerini dolduruyor ve populate_polylines değerinin doğru olmasını gerektiriyor.

İletilen rotaların route_polyline alanları, transitions rotasıyla tutarlı olmayabilir.

Bu alan, injected_first_solution_routes veya injected_solution_constraint ile birlikte kullanılmamalıdır.

Shipment.ignore ve Vehicle.ignore öğelerinin davranış üzerinde herhangi bir etkisi yoktur. İlgili gönderilerin veya araçların yoksayılıp sayılmadığından bağımsız olarak, boş olmayan tüm rotalardaki tüm ziyaretler arasında çoklu çizgiler doldurulmaya devam eder.

interpret_injected_solutions_using_labels

bool

Doğruysa:

Bu yorum injected_first_solution_routes, injected_solution_constraint ve refresh_details_routes alanları için geçerlidir. Çözüm oluşturulduktan sonra istekteki gönderi veya araç dizinleri değiştiğinde (ör. gönderi veya araçlar istekten kaldırıldığı veya isteğe eklendiği için) kullanılabilir.

Doğru değerine ayarlanırsa aşağıdaki kategorilerdeki etiketler, kategorilerinde en fazla bir kez görünmelidir:

Enjekte edilen çözümdeki vehicle_label bir istek aracına karşılık gelmiyorsa ilgili rota, ziyaretleriyle birlikte çözümden kaldırılır. Yerleştirilen çözümdeki bir shipment_label, bir istek gönderimine karşılık gelmiyorsa ilgili ziyaret çözümden kaldırılır. Yerleştirilen çözümdeki bir SkippedShipment.label, istek gönderimine karşılık gelmiyorsa SkippedShipment çözümden kaldırılır.

Yerleştirilen bir çözümden rota ziyaretlerini veya rotaların tamamını kaldırmak, ima edilen kısıtlamaları etkileyebilir ve bu da çözümde, doğrulama hatalarında veya uygulanabilirlikte değişikliğe yol açabilir.

NOT: Arayan, her bir Vehicle.label (resp. Shipment.label), iki ilgili istekte kullanılan araç (resp. sevkiyat) tüzel kişiliğini benzersiz bir şekilde tanımlar: enjekte edilen çözümde kullanılan OptimizeToursResponse öğesini üreten geçmiş istek ve eklenen çözümü içeren mevcut istek. Yukarıda açıklanan benzersizlik kontrolleri, bu koşulu garanti etmek için yeterli değildir.

consider_road_traffic

bool

ShipmentRoute alanları Transition.travel_duration, Visit.start_time ve vehicle_end_time'i hesaplarken, ShipmentRoute.has_traffic_infeasibilities alanını ayarlarken ve OptimizeToursResponse.total_cost alanını hesaplarken trafik tahminini göz önünde bulundurun.

populate_polylines

bool

Doğru değerine ayarlanırsa yanıt ShipmentRoute'lerinde çoklu çizgiler doldurulur.

populate_transition_polylines

bool

Doğru değerine ayarlanırsa ShipmentRoute.transitions yanıtında çoklu çizgiler doldurulur.

allow_large_deadline_despite_interruption_risk

bool

Bu ayarlanırsa isteğin son tarihi 60 dakikadır (bkz. https://grpc.io/blog/deadlines). Aksi takdirde, maksimum son tarih yalnızca 30 dakikadır. Uzun süreli isteklerin çok daha büyük (ancak yine de küçük) kesinti riskinin olduğunu unutmayın.

use_geodesic_distances

bool

Doğru değerine ayarlanırsa seyahat mesafeleri, Google Haritalar'daki mesafeler yerine jeodezik mesafeler kullanılarak ve seyahat süreleri, geodesic_meters_per_second tarafından tanımlanan hıza sahip jeodezik mesafeler kullanılarak hesaplanır.

label

string

Bu isteği tanımlamak için kullanılabilecek etiket. OptimizeToursResponse.request_label içinde bildirilir.

geodesic_meters_per_second

double

use_geodesic_distances doğru olduğunda bu alan ayarlanmalıdır ve seyahat sürelerini hesaplamak için uygulanan hızı tanımlar. Değeri en az 1,0 metre/saniye olmalıdır.

max_validation_errors

int32

Döndürülen doğrulama hatalarının sayısını kısaltır. Bu hatalar genellikle solving_mode=VALIDATE_ONLY olmadığı sürece INVALID_ARGUMENT hata yüküne BadRequest hata ayrıntısı (https://cloud.google.com/apis/design/errors#error_details) olarak eklenir: OptimizeToursResponse.validation_errors alanına bakın. Bu değer varsayılan olarak 100'e ayarlanır ve üst sınır 10.000'dir.

SearchMode

Arama davranışını tanımlayan, gecikmeyi çözüm kalitesinden uzaklaştıran mod. Tüm modlarda, genel istek son tarihi uygulanır.

Sıralamalar
SEARCH_MODE_UNSPECIFIED Belirtilmemiş arama modu. RETURN_FAST ile eşdeğerdir.
RETURN_FAST İlk iyi çözümü bulduktan sonra aramayı durdurun.
CONSUME_ALL_AVAILABLE_TIME Mevcut zamanınızı daha iyi çözümler aramaya harcayın.

SolvingMode

Çözümleyicinin isteği nasıl işlemesi gerektiğini tanımlar. VALIDATE_ONLY dışındaki tüm modlarda, istek geçersizse INVALID_REQUEST hatası alırsınız. Döndürülen hata sayısını sınırlandırmak için max_validation_errors politikasına bakın.

Sıralamalar
DEFAULT_SOLVE Modeli çözün. [OptimizeToursResponse.validation_errors][google.cloud.optimization.v1.OptimizeToursResponse.validation_errors] alanında uyarılar verilebilir.
VALIDATE_ONLY Modeli çözmeden yalnızca doğrular: Mümkün olduğunca çok sayıda OptimizeToursResponse.validation_errors doldurur.
DETECT_SOME_INFEASIBLE_SHIPMENTS

Yalnızca OptimizeToursResponse.validation_errors veya OptimizeToursResponse.skipped_shipments değerini doldurur ve isteğin geri kalanını çözmez (status ve routes, yanıtta ayarlanmamıştır). injected_solution_constraint rotalarında uygulanamazlık algılanırsa OptimizeToursResponse.validation_errors alanına doldurulur ve OptimizeToursResponse.skipped_shipments boş bırakılır.

ÖNEMLİ: Uygulanabilir olmayan tüm gönderiler buraya iade edilir. Yalnızca ön işleme sırasında uygulanabilir olmadığı belirlenenler buraya iade edilir.

OptimizeToursResponse

Her bir aracın izlediği rotaları, atlanan gönderileri ve çözümün toplam maliyetini içeren bir tur optimizasyonu problemini çözdükten sonra verilen yanıt.

Alanlar
routes[]

ShipmentRoute

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

request_label

string

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

skipped_shipments[]

SkippedShipment

Atlanan tüm gönderilerin listesi.

validation_errors[]

OptimizeToursValidationError

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

metrics

Metrics

Bu çözümün süresi, mesafesi ve kullanım metrikleri.

Metrikler

Tüm rotalar için toplanmış genel metrikler.

Alanlar
aggregated_route_metrics

AggregatedMetrics

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

skipped_mandatory_shipment_count

int32

Atlanan zorunlu kargo sayısı.

used_vehicle_count

int32

Kullanılan araç sayısı. Not: Araç rotasının boş olması ve Vehicle.used_if_route_is_empty değerinin doğru olması durumunda araç kullanılmış olarak kabul edilir.

earliest_vehicle_start_time

Timestamp

İ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.

latest_vehicle_end_time

Timestamp

İ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.

costs

map<string, double>

Maliyetle ilgili istek alanlarına göre ayrılmış çözüm maliyeti. Anahtarlar, OptimizeToursRequest girişine göre proto yollarıdır (ör. "model.shipments.pickups.cost"tur. 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ç olmak üzere burada ayrıntılı olarak raporlanır.

total_cost

double

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

OptimizeToursValidationError

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

Alanlar
code

int32

Doğrulama hatası, her zaman mevcut olan (code, display_name) çifti ile tanımlanır.

Diğer alanlar (aşağıda) hatayla ilgili daha fazla bilgi 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. Tıpkı bir derleyici gibi, bu da kusursuz bir süreç değildir. Bazı doğrulama hataları "önemli" olur. Bu, doğrulama işleminin tamamını durduracağı anlamına gelir. Bu durum, diğerlerinde olduğu gibi display_name="UNSPECIFIED" hataları için de geçerlidir. Bazıları, doğrulama sürecinde diğer hataların atlanmasına neden olabilir.

STability: code ve display_name 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ğinde belirli bir (geçersiz) isteğin farklı bir (code, display_name) çifti oluşturmasına neden olabilir (bkz. "ÇOKLU HATA").

REFERANS: Tüm (kod, ad) çiftlerinin listesi:

  • UNSPECIFIED (BELİRTİLMEMİŞ) = 0;
  • VALIDATION_TIMEOUT_ERROR = 10; Doğrulama işlemi, verilen son tarih içinde tamamlanamadı.
  • REQUEST_OPTIONS_ERROR = 12;

    • REQUEST_OPTIONS_INVALID_SOLVING_MODE = 1201;
    • REQUEST_OPTIONS_INVALID_MAX_VALIDATION_ERRORS = 1203;
    • REQUEST_OPTIONS_INVALID_GEODESIC_METERS_PER_SECOND = 1204;
    • REQUEST_OPTIONS_GEODESIC_METERS_PER_SECOND_TOO_SMALL = 1205;
    • REQUEST_OPTIONS_MISSING_GEODESIC_METERS_PER_SECOND = 1206;
    • REQUEST_OPTIONS_POPULATE_PATHFINDER_TRIPS_AND_GEODESIC_DISTANCE = 1207;
    • REQUEST_OPTIONS_COST_MODEL_OPTIONS_AND_GEODESIC_DISTANCE = 1208;
    • REQUEST_OPTIONS_TRAVEL_MODE_INCOMPATIBLE_WITH_TRAFFIC = 1211;
    • REQUEST_OPTIONS_MULTIPLE_TRAFFIC_FLAVORS = 1212;
    • REQUEST_OPTIONS_INVALID_TRAFFIC_FLAVOR = 1213;
    • REQUEST_OPTIONS_TRAFFIC_ENABLED_WITHOUT_GLOBAL_START_TIME = 1214;
    • REQUEST_OPTIONS_TRAFFIC_ENABLED_WITH_PRECEDENCES = 1215;
    • REQUEST_OPTIONS_TRAFFIC_PREFILL_MODE_INVALID = 1216;
    • REQUEST_OPTIONS_TRAFFIC_PREFILL_ENABLED_WITHOUT_TRAFFIC = 1217;
  • INJECTED_SOLUTION_ERROR = 20;
    • INJECTED_SOLUTION_MISSING_LABEL = 2000;
    • INJECTED_SOLUTION_DUPLICATE_LABEL = 2001;
    • INJECTED_SOLUTION_AMBIGUOUS_INDEX = 2002;
    • INJECTED_SOLUTION_INFEASIBLE_EXPIRATION_GETting_TRAVEL_TIMES = 2003;
    • INJECTED_SOLUTION_TRANSITION_INCONSISTENT_WITH_ACTUAL_TRAVEL = 2004;
    • INJECTED_SOLUTION_CONCURRENT_SOLUTION_TYPES = 2005;
    • INJECTED_SOLUTION_MORE_THAN_ONE_PER_TYPE = 2006;
    • INJECTED_SOLUTION_REFRESH_WITHOUT_POPULATE = 2008;
    • INJECTED_SOLUTION_CONSTRAINED_ROUTE_PORTION_INFEASIBLE = 2010;
  • SHIPMENT_MODEL_ERROR = 22;
    • SHIPMENT_MODEL_TOO_LARGE = 2200;
    • SHIPMENT_MODEL_TOO_MANY_CAPACITY_TYPES = 2201;
    • SHIPMENT_MODEL_GLOBAL_START_TIME_NEGATIVE_OR_NAN = 2202;
    • SHIPMENT_MODEL_GLOBAL_END_TIME_TOO_LARGE_OR_NAN = 2203;
    • SHIPMENT_MODEL_GLOBAL_START_TIME_FALSE_GLOBAL_END_TIME = 2204;
    • SHIPMENT_MODEL_GLOBAL_DURATION_TOO_LONG = 2205;
    • SHIPMENT_MODEL_MAX_ACTIVE_VEHICLES_NOT_POSITIVE = 2206;
    • SHIPMENT_MODEL_DURATION_MATRIX_TOO_LARGE = 2207;
  • INDEX_ERROR = 24;
  • TAG_ERROR = 26;
  • TIME_WINDOW_ERROR = 28;
    • TIME_WINDOW_INVALID_START_TIME = 2.800;
    • TIME_WINDOW_INVALID_END_TIME = 2801;
    • TIME_WINDOW_INVALID_SOFT_START_TIME = 2802;
    • TIME_WINDOW_INVALID_SOFT_END_TIME = 2803;
    • TIME_WINDOW_OUTSIDE_GLOBAL_TIME_WINDOW = 2804;
    • TIME_WINDOW_START_TIME_AFTER_END_TIME = 2805;
    • TIME_WINDOW_INVALID_COST_PER_HOUR_BEFORE_SOFT_START_TIME = 2806;
    • TIME_WINDOW_INVALID_COST_PER_HOURS_EXPIRATION_SOFT_END_TIME = 2807;
    • TIME_WINDOW_COST_BEFORE_SOFT_START_TIME_WITHOUT_SOFT_START_TIME = 2808;
    • TIME_WINDOW_COST_EXPIRATION_SOFT_END_TIME_WITHOUT_SOFT_END_TIME = 2809;
    • TIME_WINDOW_SOFT_START_TIME_WITHOUT_COST_BEFORE_SOFT_START_TIME = 2810;
    • TIME_WINDOW_SOFT_END_TIME_WITHOUT_COST_EVAL_SOFT_END_TIME = 2811;
    • TIME_WINDOW_OVERLAPPING_ADJACENT_OR_EARLIER_THAN_PREVIOUS = 2.812;
    • TIME_WINDOW_START_TIME_EXPIRATION_SOFT_START_TIME = 2813;
    • TIME_WINDOW_SOFT_START_TIME_OUTSIDE_GLOBAL_TIME_WINDOW = 2819;
    • TIME_WINDOW_SOFT_END_TIME_OUTSIDE_GLOBAL_TIME_WINDOW = 2820;
    • TIME_WINDOW_SOFT_END_TIME_FALSE_END_TIME = 2816;
    • TIME_WINDOW_COST_BEFORE_SOFT_START_TIME_SET_AND_MULTIPLE_WINDOWS = 2817;
    • TIME_WINDOW_COST_EXPIRATION_SOFT_END_TIME_SET_AND_MULTIPLE_WINDOWS = 2818;
    • TRANSITION_ATTRIBUTES_ERROR = 30;
    • TRANSITION_ATTRIBUTES_INVALID_COST = 3000;
    • TRANSITION_ATTRIBUTES_INVALID_COST_PER_KILOMETER = 3001;
    • TRANSITION_ATTRIBUTES_DUPLICATE_TAG_PAIR = 3002;
    • TRANSITION_ATTRIBUTES_DISTANCE_LIMIT_MAX_METERS_UNSUPPORTED = 3003;
    • TRANSITION_ATTRIBUTES_UNSPECIFIED_SOURCE_TAGS = 3004;
    • TRANSITION_ATTRIBUTES_CONFLIC bulunduğunuz_SOURCE_TAGS_FIELDS = 3005;
    • TRANSITION_ATTRIBUTES_UNSPECIFIED_VAR_TAGS = 3006;
    • TRANSITION_ATTRIBUTES_CONFLICTING_DESTINATION_TAGS_FIELDS = 3007;
    • TRANSITION_ATTRIBUTES_EmailAddress_DURATION_NEGATIVE_OR_NAN = 3008;
    • TRANSITION_ATTRIBUTES_EmailAddress_DURATION_EXCEEDS_GLOBAL_DURATION = 3009;
  • AMOUNT_ERROR = 31;
    • AMOUNT_NEGATIVE_VALUE = 3100;
  • LOAD_LIMIT_ERROR = 33;
    • LOAD_LIMIT_INVALID_COST_ABOVE_SOFT_MAX = 3303;
    • LOAD_LIMIT_SOFT_MAX_WITHOUT_COST_ABOVE_SOFT_MAX = 3304;
    • LOAD_LIMIT_COST_ABOVE_SOFT_MAX_WITHOUT_SOFT_MAX = 3305;
    • LOAD_LIMIT_NEGATIVE_SOFT_MAX = 3306;
    • LOAD_LIMIT_MIXED_DEMAND_TYPE = 3307;
    • LOAD_LIMIT_MAX_LOAD_NEGATIVE_VALUE = 3308;
    • LOAD_LIMIT_SOFT_MAX_ABOVE_MAX = 3309;
  • INTERVAL_ERROR = 34;
    • INTERVAL_MIN_EXCEEDS_MAX = 3401;
    • INTERVAL_NEGATIVE_MIN = 3402;
    • INTERVAL_NEGATIVE_MAX = 3403;
    • INTERVAL_MIN_EXCEEDS_CAPACITY = 3404;
    • INTERVAL_MAX_EXCEEDS_CAPACITY = 3405;
  • DISTANCE_LIMIT_ERROR = 36;
    • DISTANCE_LIMIT_INVALID_COST_FALSE_SOFT_MAX = 3601;
    • DISTANCE_LIMIT_SOFT_MAX_WITHOUT_COST_EVAL_SOFT_MAX = 3602;
    • DISTANCE_LIMIT_COST_AFTER_SOFT_MAX_WITHOUT_SOFT_MAX = 3603;
    • DISTANCE_LIMIT_NEGATIVE_MAX = 3604;
    • DISTANCE_LIMIT_NEGATIVE_SOFT_MAX = 3605;
    • DISTANCE_LIMIT_SOFT_MAX_LARGER_THAN_MAX = 3606;
  • DURATION_LIMIT_ERROR = 38;
    • DURATION_LIMIT_MAX_DURATION_NEGATIVE_OR_NAN = 3.800;
    • DURATION_LIMIT_SOFT_MAX_DURATION_NEGATIVE_OR_NAN = 3801;
    • DURATION_LIMIT_INVALID_COST_PER_HOUR_EXPIRATION_SOFT_MAX = 3802;
    • DURATION_LIMIT_SOFT_MAX_WITHOUT_COST_FALSE_SOFT_MAX = 3803;
    • DURATION_LIMIT_COST_EVAL_SOFT_MAX_WITHOUT_SOFT_MAX = 3804;
    • DURATION_LIMIT_QUADRATIC_SOFT_MAX_DURATION_NEGATIVE_OR_NAN = 3805;
    • DURATION_LIMIT_INVALID_COST_EXPIRATION_QUADRATIC_SOFT_MAX = 3806;
    • DURATION_LIMIT_QUADRATIC_SOFT_MAX_WITHOUT_COST_PER_SQUARE_HOUR = 3807;
    • DURATION_LIMIT_COST_PER_SQUARE_HOUR_WITHOUT_QUADRATIC_SOFT_MAX = 3808;
    • DURATION_LIMIT_QUADRATIC_SOFT_MAX_WITHOUT_MAX = 3809;
    • DURATION_LIMIT_SOFT_MAX_LARGER_THAN_MAX = 3810;
    • DURATION_LIMIT_QUADRATIC_SOFT_MAX_LARGER_THAN_MAX = 3811;
    • DURATION_LIMIT_IDFA_BETWEEN_MAX_AND_QUADRATIC_SOFT_MAX_TOO_LARGE = 3812;
    • DURATION_LIMIT_MAX_DURATION_EXCEEDS_GLOBAL_DURATION = 3813;
    • DURATION_LIMIT_SOFT_MAX_DURATION_EXCEEDS_GLOBAL_DURATION = 3814;
    • DURATION_LIMIT_QUADRATIC_SOFT_MAX_DURATION_EXCEEDS_GLOBAL_DURATION = 3815;
  • SHIPMENT_ERROR = 40;
    • SHIPMENT_PD_LIMIT_WITHOUT_PICKUP_AND_DELIVERY = 4014;
    • SHIPMENT_PD_ABSOLUTE_DETOUR_LIMIT_DURATION_NEGATIVE_OR_NAN = 4000;
    • SHIPMENT_PD_ABSOLUTE_DETOUR_LIMIT_DURATION_EXCEEDS_GLOBAL_DURATION = 4001;
    • SHIPMENT_PD_RELATIVE_DETOUR_LIMIT_INVALID = 4015;
    • SHIPMENT_PD_DETOUR_LIMIT_AND_EXTRA_VISIT_DURATION = 4016;
    • SHIPMENT_PD_TIME_LIMIT_DURATION_NEGATIVE_OR_NAN = 4002;
    • SHIPMENT_PD_TIME_LIMIT_DURATION_EXCEEDS_GLOBAL_DURATION = 4003;
    • SHIPMENT_EMPTY_SHIPMENT_TYPE = 4004 [gönderim_EMPTY_SHIPMENT_TYPE] = 4004;
    • SHIPMENT_NO_PICKUP_NO_DELIVERY = 4005;
    • SHIPMENT_INVALID_PENALTY_COST = 4006;
    • SHIPMENT_ALLOWED_VEHICLE_INDEX_OUT_OF_BOUNDS = 4007;
    • SHIPMENT_DUPLICATE_ALLOWED_VEHICLE_INDEX = 4008;
    • SHIPMENT_INCONSISTENT_COST_FOR_VEHICLE_SIZE_WITHOUT_INDEX = 4009;
    • SHIPMENT_INCONSISTENT_COST_FOR_VEHICLE_SIZE_WITH_INDEX = 4010;
    • SHIPMENT_INVALID_COST_FOR_VEHICLE = 4011;
    • SHIPMENT_COST_FOR_VEHICLE_INDEX_OUT_OF_BOUNDS = 4012;
    • SHIPMENT_DUPLICATE_COST_FOR_VEHICLE_INDEX = 4013;
  • VEHICLE_ERROR = 42;
    • VEHICLE_EMPTY_REQUIRED_OPERATOR_TYPE = 4200;
    • VEHICLE_DUPLICATE_REQUIRED_OPERATOR_TYPE = 4201;
    • VEHICLE_NO_OPERATOR_WITH_REQUIRED_OPERATOR_TYPE = 4202;
    • VEHICLE_EMPTY_START_TAG = 4203;
    • VEHICLE_DUPLICATE_START_TAG = 4204;
    • VEHICLE_EMPTY_END_TAG = 4205;
    • VEHICLE_DUPLICATE_END_TAG = 4206;
    • VEHICLE_Extra_VISIT_DURATION_NEGATIVE_OR_NAN = 4207;
    • VEHICLE_Extra_VISIT_DURATION_EXCEEDS_GLOBAL_DURATION = 4208;
    • VEHICLE_Extra_VISIT_DURATION_EMPTY_KEY = 4209;
    • VEHICLE_FIRST_SHIPMENT_INDEX_OUT_OF_BOUNDS = 4210;
    • VEHICLE_FIRST_SHIPMENT_IGNORED = 4211;
    • VEHICLE_FIRST_SHIPMENT_NOT_BOUND = 4212;
    • VEHICLE_LAST_SHIPMENT_INDEX_OUT_OF_BOUNDS = 4213;
    • VEHICLE_LAST_SHIPMENT_IGNORED = 4214;
    • VEHICLE_LAST_SHIPMENT_NOT_BOUND = 4215;
    • VEHICLE_IGNORED_WITH_USE_IF_ROUTE_IS_EMPTY = 4216;
    • VEHICLE_INVALID_COST_PER_KILOMETER = 4217;
    • VEHICLE_INVALID_COST_PER_HOUR = 4218;
    • VEHICLE_INVALID_COST_PER_TRAVELED_HOUR = 4219;
    • VEHICLE_INVALID_FIXED_COST = 4220;
    • VEHICLE_INVALID_TRAVEL_DURATION_MULTIPLE = 4221;
    • VEHICLE_TRAVEL_DURATION_MULTIPLE_WITH_SHIPMENT_PD_DETOUR_LIMITS = 4223;
    • VEHICLE_MATRIX_INDEX_WITH_SHIPMENT_PD_DETOUR_LIMITS = 4224;
    • VEHICLE_bin_DURATION_LONGER_THAN_DURATION_LIMIT = 4222;
  • VISIT_REQUEST_ERROR = 44;
    • VISIT_REQUEST_EMPTY_TAG = 4400;
    • VISIT_REQUEST_DUPLICATE_TAG = 4401;
    • VISIT_REQUEST_DURATION_NEGATIVE_OR_NAN = 4404;
    • VISIT_REQUEST_DURATION_EXCEEDS_GLOBAL_DURATION = 4405;
  • PRECEDENCE_ERROR = 46;
    • PRECEDENCE_RULE_MISSING_FIRST_INDEX = 4600;
    • PRECEDENCE_RULE_MISSING_SECOND_INDEX = 4601;
    • PRECEDENCE_RULE_FIRST_INDEX_OUT_OF_BOUNDS = 4602;
    • PRECEDENCE_RULE_SECOND_INDEX_OUT_OF_BOUNDS = 4603;
    • PRECEDENCE_RULE_DUPLICATE_INDEX = 4604;
    • PRECEDENCE_RULE_INEXISTENT_FIRST_VISIT_REQUEST = 4605;
    • PRECEDENCE_RULE_INEXISTENT_SECOND_VISIT_REQUEST = 4606;
  • BREAK_ERROR = 48;
    • BREAK_RULE_EMPTY = 4800;
    • BREAK_REQUEST_UNSPECIFIED_DURATION = 4801;
    • BREAK_REQUEST_UNSPECIFIED_EARLIEST_START_TIME = 4802;
    • BREAK_REQUEST_UNSPECIFIED_LATEST_START_TIME = 4803;
    • BREAK_REQUEST_DURATION_NEGATIVE_OR_NAN = 4804; = 4804;
    • BREAK_REQUEST_LATEST_START_TIME_BEFORE_EARLIEST_START_TIME = 4805;
    • BREAK_REQUEST_EARLIEST_START_TIME_BEFORE_GLOBAL_START_TIME = 4806;
    • BREAK_REQUEST_LATEST_END_TIME_AFTER_GLOBAL_END_TIME = 4807;
    • BREAK_REQUEST_NON_SCHEDULABLE = 4808;
    • BREAK_FREQUENCY_MAX_INTER_BREAK_DURATION_NEGATIVE_OR_NAN = 4.809;
    • BREAK_FREQUENCY_MIN_BREAK_DURATION_NEGATIVE_OR_NAN = 4.810;
    • BREAK_FREQUENCY_MIN_BREAK_DURATION_EXCEEDS_GLOBAL_DURATION = 4.811;
    • BREAK_FREQUENCY_MAX_INTER_BREAK_DURATION_EXCEEDS_GLOBAL_DURATION = 4.812;
    • BREAK_REQUEST_DURATION_EXCEEDS_GLOBAL_DURATION = 4813;
    • BREAK_FREQUENCY_MISSING_MAX_INTER_BREAK_DURATION = 4814;
    • BREAK_FREQUENCY_MISSING_MIN_BREAK_DURATION = 4.815;
  • SHIPMENT_TYPE_INCOMPATIBILITY_ERROR = 50;
    • SHIPMENT_TYPE_INCOMPATIBILITY_EMPTY_TYPE = 5001;
    • SHIPMENT_TYPE_INCOMPATIBILITY_LESS_THAN_TWO_TYPES = 5002;
    • SHIPMENT_TYPE_INCOMPATIBILITY_DUPLICATE_TYPE = 5003;
    • SHIPMENT_TYPE_INCOMPATIBILITY_INVALID_INCOMPATIBILITY_MODE = 5004;
    • SHIPMENT_TYPE_INCOMPATIBILITY_TOO_MANY_INCOMPATIBILITIES = 5005;
  • SHIPMENT_TYPE_REQUIREMENT_ERROR = 52;
    • SHIPMENT_TYPE_REQUIREMENT_NO_REQUIRED_TYPE = 52001;
    • SHIPMENT_TYPE_REQUIREMENT_NO_DEPENDENT_TYPE = 52002;
    • SHIPMENT_TYPE_REQUIREMENT_INVALID_REQUIREMENT_MODE = 52003;
    • SHIPMENT_TYPE_REQUIREMENT_TOO_MANY_REQUIREMENTS = 52004;
    • SHIPMENT_TYPE_REQUIREMENT_EMPTY_REQUIRED_TYPE = 52005;
    • SHIPMENT_TYPE_REQUIREMENT_DUPLICATE_REQUIRED_TYPE = 52006;
    • SHIPMENT_TYPE_REQUIREMENT_NO_REQUIRED_TYPE_FOUND = 52007;
    • SHIPMENT_TYPE_REQUIREMENT_EMPTY_DEPENDENT_TYPE = 52008;
    • SHIPMENT_TYPE_REQUIREMENT_DUPLICATE_DEPENDENT_TYPE = 52009;
    • SHIPMENT_TYPE_REQUIREMENT_SELF_DEPENDENT_TYPE = 52010;
    • SHIPMENT_TYPE_REQUIREMENT_GRAPH_HAS_CYCLES = 52011;
  • VEHICLE_OPERATOR_ERROR = 54;
    • VEHICLE_OPERATOR_EMPTY_TYPE = 5400;
    • VEHICLE_OPERATOR_MULTIPLE_START_TIME_WINDOWS = 5401;
    • VEHICLE_OPERATOR_SOFT_START_TIME_WINDOW = 5402;
    • VEHICLE_OPERATOR_MULTIPLE_END_TIME_WINDOWS = 5403;
    • VEHICLE_OPERATOR_SOFT_END_TIME_WINDOW = 5404;
  • DURATION_SECONDS_MATRIX_ERROR = 56;
    • DURATION_SECONDS_MATRIX_DURATION_NEGATIVE_OR_NAN = 5.600;
    • DURATION_SECONDS_MATRIX_DURATION_EXCEEDS_GLOBAL_DURATION = 5601;
  • UYARI = 9;
    • WARNING_INJECTED_FIRST_SOLUTION = 90;
      • WARNING_INJECTED_FIRST_SOLUTION_INFEASIBLE_SHIPMENTS_REMOVED = 9000;
      • WARNING_INJECTED_FIRST_SOLUTION_INFEASIBLE_EXPIRATION_GETting_TRAVEL_TIMES = 9001;
display_name

string

Hatanın görünen adı.

fields[]

FieldReference

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 sub_field {name: "pickups" index: 0} }

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

error_message

string

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

STRATEJİ: Kararlı değil: Belirli bir code ile ilişkili hata mesajı zaman içinde değişebilir (açıklık getirilecektir). Bunun yerine lütfen display_name ve code kullanın.

offending_values

string

Alanların değerlerini içerebilir. Bu özellik her zaman kullanılamayabilir. Bu modele kesinlikle güvenmemeniz ve yalnızca manuel model hata ayıklaması için kullanmanız gerekir.

AlanReferansı

Doğrulama hatası için bağlamı belirtir. FieldReference her zaman bu dosyadaki belirli bir alanı ifade eder ve aynı hiyerarşik yapıyı izler. Örneğin, 5 numaralı aracın start_time_windows numaralı öğesini aşağıdakileri kullanarak belirtebiliriz:

name: "vehicles" index: 5 sub_field { name: "end_time_windows" index: 2 }

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

Alanlar
name

string

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

sub_field

FieldReference

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

Birlik alanı index_or_key.

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

index

int32

Tekrarlanırsa alanın dizini.

key

string

Alan bir haritaysa anahtar.

OutputConfig

[BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours] sonuçları için bir hedef belirtin.

Alanlar
data_format

DataFormat

Zorunlu. Çıkış verilerinin biçimi.

Birleştirme alanı destination. Zorunlu. destination şunlardan yalnızca biri olabilir:
gcs_destination

GcsDestination

Çıkışın yazılacağı Google Cloud Storage konumu.

RouteModifiers

Araç rotaları hesaplanırken uyulması gereken bir dizi isteğe bağlı koşulu içerir. Bu, Google Haritalar Platformu Routes Preferred API'sindeki RouteModifiers ile benzer; Şu adrese bakın: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers.

Alanlar
avoid_tolls

bool

Makul olduğu durumlarda paralı yollardan kaçınılıp kaçınılmayacağını belirtir. Ücretli yol içermeyen rotalara öncelik verilir. Yalnızca motorlu ulaşım şekilleri için geçerlidir.

avoid_highways

bool

Makul olduğu durumlarda otoyollardan kaçınılıp kaçınılmayacağını belirtir. Otoyol içermeyen rotalar tercih edilir. Yalnızca motorlu ulaşım şekilleri için geçerlidir.

avoid_ferries

bool

Makul olduğu durumlarda feribotlardan kaçınılıp kaçınılmayacağını belirtir. Feribotla seyahat içermeyen rotalar tercih edilir. Yalnızca motorlu seyahat modları için geçerlidir.

avoid_indoor

bool

İsteğe bağlı. Makul olduğu durumlarda iç mekanlarda gezinmekten kaçınılıp kaçınılmayacağını belirtir. Kapalı mekan navigasyonu içermeyen rotalara öncelik verilir. Yalnızca WALKING ulaşım şekli için geçerlidir.

Gönderim

Tek bir öğenin, teslim alma alanlarından birinden teslimatlarına kadar gönderilmesi. Gönderimin gerçekleştirilmiş olarak kabul edilmesi için benzersiz bir aracın, teslim alma konumlarından birini ziyaret etmesi (ve yedek kapasitelerini buna göre azaltması) ve daha sonra teslimat konumlarından birini ziyaret etmesi (ve yedek kapasitelerini buna göre yeniden artırması) gerekir.

Alanlar
display_name

string

Gönderinin kullanıcı tanımlı görünen adı. En fazla 63 karakter uzunluğunda olabilir ve UTF-8 karakterleri kullanabilir.

pickups[]

VisitRequest

Gönderimle ilişkili teslim alma alternatifleri grubu. Belirtilmemişse aracın yalnızca teslimatlarla ilgili bir konumu ziyaret etmesi gerekir.

deliveries[]

VisitRequest

Kargoyla ilişkili teslimat alternatifleri grubu. Belirtilmemişse aracın yalnızca teslim alma noktalarına karşılık gelen bir konumu ziyaret etmesi gerekir.

load_demands

map<string, Load>

Gönderinin taleplerini yüklemek (ör. ağırlık, hacim, palet sayısı vb.). Haritadaki anahtarlar, karşılık gelen yükün türünü (tercihen birimleri de içeren) açıklayan tanımlayıcılar olmalıdır. Örneğin: "weight_kg", "quantity_galon", "pallet_count" vb. Belirli bir anahtar haritada görünmezse karşılık gelen yükleme null olarak kabul edilir.

allowed_vehicle_indices[]

int32

Bu gönderimi gerçekleştirebilecek araç grubu. Boşsa tüm araçlar bu işlemi gerçekleştirebilir. Araçlar, ShipmentModel vehicles listesinde kendi indekslerine göre gösterilir.

costs_per_vehicle[]

double

Bu gönderim her araç tarafından teslim edildiğinde ortaya çıkan maliyeti belirtir. Belirtilmişse:

  • costs_per_vehicle_indices ile aynı sayıda öğe. costs_per_vehicle[i], modelin costs_per_vehicle_indices[i] aracına karşılık gelir.
  • öğelerin sayısı modelde mevcuttur. i'inci öğe, modelin araç #i'sine karşılık gelir.

Bu maliyetler, penalty_cost ile aynı birimde olmalı ve negatif olmamalıdır. Bu tür bir maliyet yoksa bu alanı boş bırakın.

costs_per_vehicle_indices[]

int32

costs_per_vehicle özelliğinin geçerli olduğu araçların dizinleri. Boş değilse costs_per_vehicle ile aynı sayıda öğeye sahip olmalıdır. Bir araç dizini birden fazla kez belirtilemez. costs_per_vehicle_indices hariç tutulan araçların maliyeti sıfırdır.

pickup_to_delivery_absolute_detour_limit

Duration

Teslim alma ile teslimat arasındaki en kısa yola kıyasla maksimum mutlak sapma süresini belirtir. Belirtilmişse negatif olmamalıdır ve kargo en azından bir teslim alma ve teslimat içermelidir.

Örneğin, t, seçilen teslim alma alternatifinden doğrudan seçilen teslimat alternatifine gitmek için gereken en kısa süre olsun. Ardından pickup_to_delivery_absolute_detour_limit ayarlandığında şu yaptırımlar uygulanır:

start_time(delivery) - start_time(pickup) <=
t + pickup_to_delivery_absolute_detour_limit

Aynı gönderimde hem göreli hem de mutlak sınırlar belirtilirse olası her teslim alma/teslimat çifti için daha kısıtlayıcı sınır kullanılır. 2017/10 tarihi itibarıyla, yalnızca seyahat süreleri araçlara bağlı olmadığında rota değişikliği desteklenmektedir.

pickup_to_delivery_time_limit

Duration

Teslim almanın başlangıcından gönderimin başlangıcına kadar maksimum süreyi belirtir. Belirtilmişse negatif olmamalıdır ve kargo en azından bir teslim alma ve teslimat içermelidir. Bu, teslim alma ve teslimat için seçilen alternatiflerin veya aracın hızına bağlı değildir. Bu, maksimum sapma kısıtlamalarıyla birlikte belirtilebilir; çözüm her iki spesifikasyona da uyar.

shipment_type

string

Bu gönderim için "tür" belirten boş olmayan dize. Bu özellik, shipment_types (ShipmentModel'daki shipment_type_incompatibilities ve shipment_type_requirements'ye bakın) arasında uyumsuzlukları veya koşulları tanımlamak için kullanılabilir.

Tek bir ziyaret için belirtilen visit_types değerinden farklıdır: Aynı kargoya ait tüm teslim alma/teslimatlar aynı shipment_type öğesini paylaşır.

label

string

Bu gönderim için bir etiket belirtir. Bu etiket, ilgili ShipmentRoute.Visit öğesinin shipment_label bölümünde yer alan yanıtta bildirilmiştir.

ignore

bool

True (doğru) ise bu gönderimi atlayın, ancak penalty_cost uygulamayın.

Bir gönderimin göz ardı edilmesi, modelde herhangi bir shipment_type_requirements olduğunda doğrulama hatasına neden olur.

injected_first_solution_routes veya injected_solution_constraint içinde gerçekleştirilen bir gönderimi göz ardı etmeye izin verilir; çözücü, ilgili teslim alma/teslimat ziyaretlerini performans rotasından kaldırır. Yoksayılan gönderimlere referans veren precedence_rules de yoksayılır.

penalty_cost

double

Sevkiyat tamamlanmazsa bu ceza, rotaların toplam maliyetine eklenir. Teslim alma ve teslimat alternatiflerinden birinin ziyaret edilmesi durumunda kargo tamamlanmış olarak kabul edilir. Maliyet, modeldeki maliyetle ilgili diğer tüm alanlar için kullanılan birim içinde ifade edilebilir ve pozitif olmalıdır.

ÖNEMLİ: Bu ceza belirtilmezse sonsuz olarak kabul edilir, yani gönderimin tamamlanması gerekir.

pickup_to_delivery_relative_detour_limit

double

Alıştan teslimata kadar olan en kısa yola kıyasla maksimum göreli ek süreyi belirtir. Belirtilmişse negatif olmamalıdır ve kargo en azından bir teslim alma ve teslimat içermelidir.

Örneğin, t, seçilen teslim alma alternatifinden doğrudan seçilen teslimat alternatifine gitmek için gereken en kısa süre olsun. Ardından pickup_to_delivery_relative_detour_limit ayarı şunları zorunlu kılar:

start_time(delivery) - start_time(pickup) <=
std::ceil(t * (1.0 + pickup_to_delivery_relative_detour_limit))

Aynı gönderimde hem göreceli hem de mutlak sınırlar belirtilirse her olası teslim alma/teslim etme çifti için daha kısıtlayıcı olan sınır kullanılır. 2017/10 tarihi itibarıyla, yalnızca seyahat süreleri araçlara bağlı olmadığında rota değişikliği desteklenmektedir.

Yükle

Bir ziyaret gerçekleştirirken, teslim alma için araç yüküne önceden tanımlanmış bir tutar eklenebilir, teslimatsa bu tutar çıkarılabilir. Bu mesaj söz konusu tutarı tanımlar. Şu sayfaya göz atın: load_demands.

Alanlar
amount

int64

İlgili ziyareti gerçekleştiren aracın yükü değişiklik gösterir. Bu bir tam sayı olduğundan, hassasiyet kaybını önlemek için kullanıcıların uygun bir birim seçmeleri önerilir. ≥ 0 olmalıdır.

VisitRequest

Araç tarafından yapılabilecek bir ziyaret isteği: Aracın coğrafi konumu (veya iki tanesi aşağıya bakın), zaman aralıklarıyla gösterilen açılış ve kapanış zamanları ve hizmet süresi (ürünlerin teslim alınması veya teslim edilmesi için vardığı araç tarafından harcanan süre) belirtilmelidir.

Alanlar
arrival_location

LatLng

Bu VisitRequest işlemini gerçekleştirirken aracın ulaştığı coğrafi konum. Gönderim modelinin süre mesafe matrisleri varsa arrival_location belirtilmemelidir.

arrival_waypoint

Waypoint

Bu VisitRequest gerçekleştirilirken aracın vardığı ara nokta. Gönderim modelinin süre mesafe matrisleri varsa arrival_waypoint belirtilmemelidir.

departure_location

LatLng

Bu VisitRequest tamamlandıktan sonra aracın ayrıldığı coğrafi konum. arrival_location ile aynıysa atlanabilir. Gönderi modelinde süre mesafe matrisleri varsa departure_location belirtilmemelidir.

departure_waypoint

Waypoint

Bu VisitRequest tamamlandıktan sonra aracın yola çıktığı yol noktası. arrival_waypoint ile aynıysa atlanabilir. Gönderim modelinin süre mesafe matrisleri varsa departure_waypoint belirtilmemelidir.

tags[]

string

Ziyaret isteğine eklenen etiketleri belirtir. Boş veya yinelenen dizelere izin verilmez.

time_windows[]

TimeWindow

Ziyarete varış saatini sınırlayan zaman aralıkları. Bir aracın, varış zamanı aralığının dışında hareket edebileceğini unutmayın. Yani varış zamanı + sürenin bir zaman aralığında olması gerekmez. Araç TimeWindow.start_time tarihinden önce gelirse bekleme süresine neden olabilir.

TimeWindow değerinin olmaması, aracın bu ziyareti istediği zaman gerçekleştirebileceği anlamına gelir.

Zaman aralıkları birbirinden ayrı olmalıdır. Yani, zaman aralıkları başka bir zaman aralığıyla çakışmamalı veya bitişik olmamalıdır ve artan sırada olmalıdır.

cost_per_hour_after_soft_end_time ve soft_end_time yalnızca tek bir zaman aralığı varsa ayarlanabilir.

duration

Duration

Ziyaret süresi, ör.varış ile kalkış arasında aracın harcadığı süre (olası bekleme süresine eklenir, bkz. time_windows).

cost

double

Araç rotasında bu ziyaret isteğini yerine getirmenin maliyeti. Bu seçenek, bir gönderinin her alternatif teslim alma veya teslimat seçeneği için farklı maliyetler ödemek amacıyla kullanılabilir. Bu maliyet, Shipment.penalty_cost ile aynı birimde olmalı ve negatif olmamalıdır.

load_demands

map<string, Load>

Bu ziyaret isteğinin isteklerini yükleyin. Bu, Shipment alanının tamamı yerine yalnızca bu VisitRequest için geçerli olması dışında Shipment.load_demands alanına benzer. Burada listelenen talepler, Shipment.load_demands içinde listelenen taleplere eklenir.

visit_types[]

string

Ziyaretin türlerini belirtir. Bu, bir aracın bu ziyareti tamamlaması için gereken ek süreyi tahsis etmek amacıyla kullanılabilir (Vehicle.extra_visit_duration_for_visit_type bölümüne bakın).

Bir tür yalnızca bir kez görünebilir.

label

string

Bu VisitRequest için bir etiket belirtir. Bu etiket, yanıtta ilgili ShipmentRoute.Visit içinde visit_label olarak bildirilmiştir.

ShipmentModel

Gönderim modeli, bir grup araç tarafından gerçekleştirilmesi gereken bir dizi gönderim içerir ve toplam maliyeti en aza indirir. Bu durumda toplam maliyet, toplamda şu olur:

  • araçları yönlendirme maliyeti (toplam süre başına maliyet, seyahat süresi başına maliyet ve tüm araçlar üzerindeki sabit maliyet).
  • sorumlu tutulamaz.
  • Global sevkiyat süresinin maliyeti
Alanlar
shipments[]

Shipment

Modelde yapılması gereken kargolar grubu.

vehicles[]

Vehicle

Ziyaret yapmak için kullanılabilecek araç grubu.

global_start_time

Timestamp

Modelin genel başlangıç ve bitiş zamanı: Bu aralığın dışındaki hiçbir zaman geçerli olarak kabul edilemez.

Modelin zaman aralığı bir yıldan kısa olmalıdır.Diğer bir deyişle, global_end_time ile global_start_time arasında en fazla 31536. 000 saniye olmalıdır.

cost_per_*hour alanlarını kullanırken performansı artırmak için bu aralığı daha kısa bir aralığa ayarlamak isteyebilirsiniz (ör. tek bir gün modelleme yapıyorsanız genel saat sınırlarını o güne ayarlamanız gerekir). Ayarlanmadan bırakılırsa 1 Ocak 1970, 00:00:00 UTC (yani saniye: 0, nanos: 0) varsayılan olarak kullanılır.

global_end_time

Timestamp

Ayarlanmadan bırakılırsa 1 Ocak 1971, 00:00:00 UTC (yani saniye: 31536000, nanos: 0) varsayılan olarak kullanılır.

global_duration_cost_per_hour

double

"Global süre" toplam planın en erken geçerli başlangıç zamanı ile tüm araçların geçerli en geç bitiş zamanı arasındaki farktır. Örneğin kullanıcılar, işin en kısa sürede tamamlanması için optimizasyon yapmak amacıyla bu miktara bir saat başına maliyet atayabilir. Bu maliyet, Shipment.penalty_cost ile aynı birimde olmalıdır.

duration_distance_matrices[]

DurationDistanceMatrix

Modelde kullanılan süre ve mesafe matrislerini belirtir. Bu alan boşsa, use_geodesic_distances alanının değerine bağlı olarak bunun yerine Google Haritalar veya jeodezik mesafeler kullanılır. Boş değilse use_geodesic_distances doğru olamaz ve duration_distance_matrix_src_tags veya duration_distance_matrix_dst_tags boş olamaz.

Kullanım örnekleri:

  • İki konum vardır: locA ve locB.
  • Rotasını locA adresinde başlatıp locA'da sonlandıran 1 araç.
  • locB adresinde 1 teslim alma ziyaret isteği isteği.
model {
  vehicles { start_tags: "locA"  end_tags: "locA" }
  shipments { pickups { tags: "locB" } }
  duration_distance_matrix_src_tags: "locA"
  duration_distance_matrix_src_tags: "locB"
  duration_distance_matrix_dst_tags: "locA"
  duration_distance_matrix_dst_tags: "locB"
  duration_distance_matrices {
    rows {  # from: locA
      durations { seconds: 0 }   meters: 0    # to: locA
      durations { seconds: 100 } meters: 1000 # to: locB
    }
    rows {  # from: locB
      durations { seconds: 102 } meters: 990 # to: locA
      durations { seconds: 0 }   meters: 0   # to: locB
    }
  }
}
  • Üç konum vardır: locA, locB ve locC.
  • "Hızlı" matrisini kullanarak rotasını locA'da başlatıp locB'de bitiren 1 araç.
  • Rotasını locB'de başlatıp locB'de sonlandıran "yavaş" matrisini kullanan 1 araç.
  • Rotasını locB'de başlatıp locB'de sonlandıran "hızlı" matrisi kullanan 1 araç.
  • locC'de 1 teslim alma ziyaret isteği isteği.
model {
  vehicles { start_tags: "locA" end_tags: "locB" start_tags: "fast" }
  vehicles { start_tags: "locB" end_tags: "locB" start_tags: "slow" }
  vehicles { start_tags: "locB" end_tags: "locB" start_tags: "fast" }
  shipments { pickups { tags: "locC" } }
  duration_distance_matrix_src_tags: "locA"
  duration_distance_matrix_src_tags: "locB"
  duration_distance_matrix_src_tags: "locC"
  duration_distance_matrix_dst_tags: "locB"
  duration_distance_matrix_dst_tags: "locC"
  duration_distance_matrices {
    vehicle_start_tag: "fast"
    rows {  # from: locA
      durations { seconds: 1000 } meters: 2000 # to: locB
      durations { seconds: 600 }  meters: 1000 # to: locC
    }
    rows {  # from: locB
      durations { seconds: 0 }   meters: 0    # to: locB
      durations { seconds: 700 } meters: 1200 # to: locC
    }
    rows {  # from: locC
      durations { seconds: 702 } meters: 1190 # to: locB
      durations { seconds: 0 }   meters: 0    # to: locC
    }
  }
  duration_distance_matrices {
    vehicle_start_tag: "slow"
    rows {  # from: locA
      durations { seconds: 1800 } meters: 2001 # to: locB
      durations { seconds: 900 }  meters: 1002 # to: locC
    }
    rows {  # from: locB
      durations { seconds: 0 }    meters: 0    # to: locB
      durations { seconds: 1000 } meters: 1202 # to: locC
    }
    rows {  # from: locC
      durations { seconds: 1001 } meters: 1195 # to: locB
      durations { seconds: 0 }    meters: 0    # to: locC
    }
  }
}
duration_distance_matrix_src_tags[]

string

Süre ve mesafe matrislerinin kaynaklarını tanımlayan etiketler; duration_distance_matrices(i).rows(j), duration_distance_matrix_src_tags(j) etiketine sahip ziyaretlerden i matrisindeki diğer ziyaretlere kadar olan süreleri ve mesafeleri tanımlar.

Etiketler VisitRequest.tags veya Vehicle.start_tags'a karşılık gelir. Belirli bir VisitRequest veya Vehicle, bu alandaki bir etiketle tam olarak eşleşmelidir. Bir Vehicle'nin kaynak, hedef ve matris etiketlerinin aynı olabileceğini unutmayın. Benzer şekilde, bir VisitRequest'nin kaynak ve hedef etiketleri de aynı olabilir. Tüm etiketler farklı olmalıdır ve boş dize olamaz. Bu alan boş değilse duration_distance_matrices de boş olmamalıdır.

duration_distance_matrix_dst_tags[]

string

Süre ve mesafe matrislerinin hedeflerini tanımlayan etiketler duration_distance_matrices(i).rows(j).durations(k) (sorumlu duration_distance_matrices(i).rows(j).meters(k)), matris i'de duration_distance_matrix_src_tags(j) etiketine sahip olan ziyaretlerden duration_distance_matrix_dst_tags(k) etiketine sahip ziyaretlere kadar olan seyahatin süresini (mesafe) tanımlar.

Etiketler VisitRequest.tags veya Vehicle.start_tags'a karşılık gelir. Belirli bir VisitRequest veya Vehicle, bu alandaki tam olarak bir etiketle eşleşmelidir. Vehicle etiketinin kaynak, hedef ve matris etiketlerinin aynı olabileceğini unutmayın; benzer şekilde, VisitRequest öğesinin kaynak ve hedef etiketleri aynı olabilir. Tüm etiketler farklı olmalıdır ve boş dize olamaz. Bu alan boş değilse duration_distance_matrices boş olmamalıdır.

transition_attributes[]

TransitionAttributes

Modele geçiş özellikleri eklendi.

shipment_type_incompatibilities[]

ShipmentTypeIncompatibility

Uyumsuz shipment_types grupları (ShipmentTypeIncompatibility bölümüne bakın).

shipment_type_requirements[]

ShipmentTypeRequirement

shipment_type gereksinimleri grupları (bkz. ShipmentTypeRequirement).

precedence_rules[]

PrecedenceRule

Modelde uygulanması gereken öncelik kuralları grubu.

max_active_vehicles

int32

Maksimum etkin araç sayısını kısıtlar. Rotasında en az bir gönderim yapılan araçlar etkindir. Bu özellik, araçlardan daha az sürücünün bulunduğu ve araç filosunun heterojen olduğu durumlarda rota sayısını sınırlandırmak için kullanılabilir. Ardından optimizasyon, kullanılacak en iyi araç alt kümesini seçer. Tamamen olumlu olmalıdır.

DurationDistanceMatrix

Ziyaret ve araç başlangıç konumlarından ziyaret ve araç bitiş konumlarına kadar bir süre ve mesafe matrisi belirtir.

Alanlar
rows[]

Row

Süre ve mesafe matrisinin satırlarını belirtir. ShipmentModel.duration_distance_matrix_src_tags kadar öğe içermelidir.

vehicle_start_tag

string

Bu süre ve mesafe matrisinin hangi araçlar için geçerli olduğunu tanımlayan etiket. Boşsa tüm araçlar için geçerlidir ve yalnızca tek bir matris olabilir.

Her araç başlangıcı tam olarak bir matrisle eşleşmelidir. Diğer bir deyişle, start_tags alanındaki tam olarak bir tanesi, bir matrisin (ve sadece o matrisin) vehicle_start_tag değeri ile eşleşmelidir.

Tüm matrisler farklı bir vehicle_start_tag değerine sahip olmalıdır.

Satır

Süre ve mesafe matrisinin satırını belirtir.

Alanlar
durations[]

Duration

Belirli bir satırın süre değerleri. ShipmentModel.duration_distance_matrix_dst_tags kadar öğe içermelidir.

meters[]

double

Belirli bir satır için mesafe değerleri. Modeldeki mesafelere atıfta bulunan hiçbir maliyet veya kısıtlama yoksa bu alan boş bırakılabilir. Aksi takdirde durations kadar öğe içermelidir.

PrecedenceRule

İki etkinlik arasındaki öncelik kuralı (her etkinlik bir gönderinin alınması veya teslim edilmesidir): "İkinci" etkinliğin, "ilk" etkinlikten en az offset_duration sonra başlaması gerekir.

Birden fazla öncelik aynı (veya ilgili) etkinliklere işaret edebilir, ör. "B teslimi, A tesliminden sonra gerçekleşir" ve "C teslimi, B tesliminden sonra gerçekleşir".

Ayrıca, öncelikler yalnızca her iki gönderim de gerçekleştirildiğinde uygulanır ve aksi takdirde göz ardı edilir.

Alanlar
first_is_delivery

bool

"İlk"in bir teslimattır.

second_is_delivery

bool

"İkinci" etkinliğin bir yayın olup olmadığını belirtir.

offset_duration

Duration

"ilk" ve "ikinci" etkinlik arasındaki ofset. Negatif olabilir.

first_index

int32

"İlk"in gönderim dizini unutmayın. Bu alan belirtilmelidir.

second_index

int32

"Saniye"nin gönderim dizini unutmayın. Bu alan belirtilmelidir.

ShipmentRoute

Bir aracın rotası, zaman ekseninde aşağıdaki gibi ayrıştırılabilir (n ziyaret olduğunu varsayarız):

  |            |            |          |       |  T[2], |        |      |
  | Transition |  Visit #0  |          |       |  V[2], |        |      |
  |     #0     |    aka     |   T[1]   |  V[1] |  ...   | V[n-1] | T[n] |
  |  aka T[0]  |    V[0]    |          |       | V[n-2],|        |      |
  |            |            |          |       | T[n-1] |        |      |
  ^            ^            ^          ^       ^        ^        ^      ^
vehicle    V[0].start   V[0].end     V[1].   V[1].    V[n].    V[n]. vehicle
 start     (arrival)   (departure)   start   end      start    end     end

Aşağıdakiler arasında bir fark yaptığımızı unutmayın:

  • Araç başlangıç ve bitiş zamanı ile her ziyaretin başlangıç ve bitiş zamanı (yani varış ve ayrılış) gibi "düzenli etkinlikler". Belirli bir saniyede gerçekleşir.
  • "zaman aralıkları" (ör. ziyaretler ve ziyaretler arasındaki geçiş). Zaman aralıkları bazen sıfır süreye sahip olabilse de (ör. aynı saniyede başlangıç ve bitişte) ancak genellikle pozitif bir süreye sahiptirler.

Sabit değerler:

  • n ziyaret varsa n+1 geçişi vardır.
  • Bir ziyaret her zaman kendisinden önceki bir geçiş (aynı dizin) ve kendisinden sonraki bir geçiş (dizin + 1) ile çevrilidir.
  • Araç başlangıcından sonra her zaman #0 geçişi gelir.
  • Araç sonundan önce her zaman #n geçişi gelir.

Yakınlaştırıldığında, Transition ve Visit sırasında neler olur?

---+-------------------------------------+-----------------------------+-->
   |           TRANSITION[i]             |           VISIT[i]          |
   |                                     |                             |
   |  * TRAVEL: the vehicle moves from   |      PERFORM the visit:     |
   |    VISIT[i-1].departure_location to |                             |
   |    VISIT[i].arrival_location, which |  * Spend some time:         |
   |    takes a given travel duration    |    the "visit duration".    |
   |    and distance                     |                             |
   |                                     |  * Load or unload           |
   |  * BREAKS: the driver may have      |    some quantities from the |
   |    breaks (e.g. lunch break).       |    vehicle: the "demand".   |
   |                                     |                             |
   |  * WAIT: the driver/vehicle does    |                             |
   |    nothing. This can happen for     |                             |
   |    many reasons, for example when   |                             |
   |    the vehicle reaches the next     |                             |
   |    event's destination before the   |                             |
   |    start of its time window         |                             |
   |                                     |                             |
   |  * DELAY: *right before* the next   |                             |
   |    arrival. E.g. the vehicle and/or |                             |
   |    driver spends time unloading.    |                             |
   |                                     |                             |
---+-------------------------------------+-----------------------------+-->
   ^                                     ^                             ^
V[i-1].end                           V[i].start                    V[i].end

Son olarak, geçiş sırasında SEYAHAT, PARÇALAR, GECİKME ve BEKLEME işlevlerinin nasıl ayarlanabileceği burada açıklanmaktadır.

  • Bunlar çakışmaz.
  • Gecikme benzersizdir ve bir sonraki ziyaretten (veya araç sonundan) hemen önceki kesintisiz bir süre olmalıdır. Dolayısıyla, gecikme süresinin başlangıç ve bitiş zamanını bilmek yeterli olacaktır.
  • ARALAR ardışık ve örtüşmeyen zaman aralıklarıdır. Yanıt, her bir aranın başlangıç zamanını ve süresini belirtir.
  • TRAVEL ve WAIT değerleri "öncelikli"dir: Bu geçiş sırasında birkaç kez kesintiye uğrayabilirler. Müşteriler, seyahatin "mümkün olan en kısa sürede" gerçekleşeceğini varsayabilir ve bu "bekleyen" kalan süreyi doldurur.

Bir (karmaşık) örnek:

                               TRANSITION[i]
--++-----+-----------------------------------------------------------++-->
  ||     |       |           |       |           |         |         ||
  ||  T  |   B   |     T     |       |     B     |         |    D    ||
  ||  r  |   r   |     r     |   W   |     r     |    W    |    e    ||
  ||  a  |   e   |     a     |   a   |     e     |    a    |    l    ||
  ||  v  |   a   |     v     |   i   |     a     |    i    |    a    ||
  ||  e  |   k   |     e     |   t   |     k     |    t    |    y    ||
  ||  l  |       |     l     |       |           |         |         ||
  ||     |       |           |       |           |         |         ||
--++-----------------------------------------------------------------++-->
Alanlar
vehicle_index

int32

Rotayı gerçekleştiren araç (ShipmentModel kaynağındaki diziniyle tanımlanır).

vehicle_label

string

Bu rotayı gerçekleştiren aracın etiketi (belirtilmişse ShipmentModel.vehicles(vehicle_index).label).

vehicle_start_time

Timestamp

Aracın rotasına başladığı zaman.

vehicle_end_time

Timestamp

Aracın rotasını tamamladığı zaman.

visits[]

Visit

Bir rotayı temsil eden sıralı ziyaret dizisi. ziyaret[i], rotadaki i. ziyarettir. Bu alan boşsa araç kullanılmıyor olarak kabul edilir.

transitions[]

Transition

Rotanın sıralı geçiş listesi.

has_traffic_infeasibilities

bool

OptimizeToursRequest.consider_road_traffic doğru değerine ayarlandığında bu alan, rota zamanlamalarındaki tutarsızlıkların trafiğe dayalı seyahat süresi tahminleri kullanılarak tahmin edildiğini gösterir. Ziyaretler arasında, ilk ziyaretten önce veya son ziyaretten sonra, trafiğe göre ayarlanmış seyahat, gecikme ve molaları tamamlamak ve yine de ziyaret ve araç süresi aralıklarından memnun kalmak için yeterli zaman olmayabilir. Örneğin,

  start_time(previous_visit) + duration(previous_visit) +
  travel_duration(previous_visit, next_visit) > start_time(next_visit)

Trafik nedeniyle travel_duration(previous_visit, next_visit) oranındaki seyahat süresi tahmini arttığından, next_visit'e varış, muhtemelen mevcut zaman aralığından daha geç olacak. Ayrıca, seyahat süresi tahminlerindeki artış ve ziyaret ya da ara verme zaman aralığı kısıtlamalarındaki artış nedeniyle, aranın ziyaretle çakışması zorunlu olabilir.

route_polyline

EncodedPolyline

Rotanın kodlanmış çoklu çizgi gösterimi. Bu alan yalnızca OptimizeToursRequest.populate_polylines doğru değerine ayarlanırsa doldurulur.

breaks[]

Break

Bu rotayı gerçekleştiren araç için programlanan aralar. breaks dizisi, her biri karşılık gelen start_time ile başlayan ve duration saniye süren zaman aralıklarını temsil eder.

metrics

AggregatedMetrics

Bu rota için süre, mesafe ve yük metrikleri. AggregatedMetrics alanları, bağlama bağlı olarak tüm ShipmentRoute.transitions veya ShipmentRoute.visits üzerinden toplanır.

route_costs

map<string, double>

Maliyetle ilgili istek alanlarına göre ayrılmış rota maliyeti. Anahtarlar, OptimizeToursRequest girişine göre proto yollarıdır (ör. "model.shipments.pickups.cost"tur. Değerler, ilgili maliyet alanı tarafından oluşturulan ve tüm rota boyunca toplanan toplam maliyettir. Başka bir deyişle maliyet["model.shipments.pickups.cost"], rota üzerindeki tüm teslim alma maliyetlerinin toplamıdır. 01.01.2022 itibarıyla yalnızca toplu şekilde raporlanan TransitionAttributes ile ilgili maliyetler hariç olmak üzere, modelde tanımlanan tüm maliyetler burada ayrıntılı olarak raporlanmaktadır.

route_total_cost

double

Rotanın toplam maliyeti. Maliyet haritasındaki tüm maliyetlerin toplamı.

Ara

Aranın yürütülmesini temsil eden veriler.

Alanlar
start_time

Timestamp

Aranın başlangıç zamanı.

duration

Duration

Ara süresi.

EncodedPolyline

Bir çoklu çizginin kodlanmış gösterimi. Çoklu çizgi kodlaması hakkında daha fazla bilgiyi şu adreste bulabilirsiniz: https://developers.google.com/maps/documentation/utilities/polylinealgorithm https://developers.google.com/maps/documentation/javascript/reference/geometry#encoding.

Alanlar
points

string

Çoklu çizginin kodlanmış noktalarını temsil eden dize.

Geçiş

Rota üzerindeki iki etkinlik arasındaki geçiş. ShipmentRoute açıklamasına bakın.

Araçta start_location ve/veya end_location yoksa ilgili seyahat metrikleri 0'dır.

Alanlar
travel_duration

Duration

Bu geçiş sırasındaki seyahat süresi.

travel_distance_meters

double

Geçiş sırasında katedilen mesafe.

traffic_info_unavailable

bool

OptimizeToursRequest.consider_road_traffic üzerinden trafik istendiğinde ve Transition için trafik bilgileri alınamadığında bu boole değeri true (doğru) olarak ayarlanır. Bu durum geçici (gerçek zamanlı trafik sunucularında nadir görülen bir aksaklık) veya kalıcı (bu konum için veri yok) olabilir.

delay_duration

Duration

Bu geçişe uygulanan gecikme sürelerinin toplamı. Varsa bir sonraki etkinlikten (ziyaret veya araç sonu) tam olarak delay_duration saniye önce gecikme başlar. Şu sayfaya göz atın: TransitionAttributes.delay.

break_duration

Duration

Bu geçiş sırasında gerçekleşen araların süresinin toplamı (varsa). Her aranın başlangıç zamanı ve süresiyle ilgili ayrıntılar ShipmentRoute.breaks içinde depolanır.

wait_duration

Duration

Bu geçiş sırasında harcanan süre. Bekleme süresi, boşta kalma süresine karşılık gelir ve mola süresini içermez. Ayrıca bu bekleme süresinin, birbirine bitişik olmayan birkaç aralığa bölünebileceğini unutmayın.

total_duration

Duration

Kolaylık olması açısından geçişin toplam süresi. Eşittir:

  • sonraki ziyaret start_time (veya son geçişse vehicle_end_time) - bu geçişin start_time;
  • ShipmentRoute.has_traffic_infeasibilities yanlışsa şu da geçerli olur: `total_duration = travel_duration + delay_duration
  • break_duration + Wait_duration".
start_time

Timestamp

Bu geçişin başlangıç zamanı.

route_polyline

EncodedPolyline

Geçiş sırasında takip edilen rotanın kodlanmış çoklu çizgi gösterimi. Bu alan yalnızca populate_transition_polylines doğru değerine ayarlanırsa doldurulur.

vehicle_loads

map<string, VehicleLoad>

Bu geçiş sırasında araç yüklemeleri. Bu araçta Vehicle.load_limits görünen veya bu rotada yapılan bazı gönderimlerde sıfır olmayan Shipment.load_demands değerine sahip her tür için.

İlk geçiş sırasındaki yüklemeler, araç rotasının başlangıç yüklemeleridir. Ardından her ziyaretten sonra, ziyaretin teslim alma mı yoksa teslimat mı olduğuna bağlı olarak sonraki geçişin yüklemelerini elde etmek için ziyarete ait load_demands eklenir veya çıkarılır.

VehicleLoad

Belirli bir tür için rotanın bir noktasında aracın gerçek yükünü bildirir (bkz. Transition.vehicle_loads).

Alanlar
amount

int64

Belirli bir tür için araçtaki yük miktarı. Yük birimi genellikle türe göre gösterilir. Şu sayfaya göz atın: Transition.vehicle_loads.

Ziyaret edin

Bir rotada gerçekleştirilen ziyaret. Bu ziyaret, Shipment adlı müşterinin teslim alınmasına veya teslimatına karşılık gelir.

Alanlar
shipment_index

int32

ShipmentModel kaynağındaki shipments alanının dizini.

is_pickup

bool

Doğruysa ziyaret, Shipment teslim alma işlemine karşılık gelir. Aksi takdirde, bir yayınlama anlamına gelir.

visit_request_index

int32

Shipment öğesinin teslim alma veya teslimat alanındaki VisitRequest dizini (is_pickup bölümüne bakın).

start_time

Timestamp

Ziyaretin başladığı zaman. Aracın ziyaret konumuna bu saatten daha erken ulaşabileceğini unutmayın. Saatler ShipmentModel ile tutarlı.

load_demands

map<string, Load>

Gönderim ve ziyaret isteğinin toplamı olarak load_demands toplam ziyaret yükü talebi. Ziyaret bir yayınlamaysa değerler negatif olur. Talepler, Transition.loads ile aynı türlerde raporlanır (bu alana bakın).

detour

Duration

Ziyaretten önce rotada ziyaret edilen gönderimler ve zaman aralıklarının neden olduğu olası bekleme süresi nedeniyle ek rota izleme süresi. Ziyaret bir teslimatsa ek rota, ilgili teslim alma ziyaretine göre hesaplanır ve şuna eşittir:

start_time(delivery) - start_time(pickup)
- (duration(pickup) + travel duration from the pickup location
to the delivery location).

Aksi takdirde start_location aracından hesaplanır ve şuna eşittir:

start_time - vehicle_start_time - travel duration from
the vehicle's `start_location` to the visit.
shipment_label

string

Shipment'te belirtilmişse ilgili Shipment.label öğesinin kopyası.

visit_label

string

VisitRequest içinde belirtilmişse ilgili VisitRequest.label öğesinin kopyası.

ShipmentTypeIncompatibility

delivery_type [gönderim_tür] bağlı olarak gönderimler arasındaki uyumsuzlukları belirtir. Aynı rotadaki uyumsuz gönderimlerin görünümü, uyumsuzluk moduna göre kısıtlanır.

Alanlar
types[]

string

Uyumsuz türlerin listesi. Listelenenler arasından farklı shipment_types değerine sahip iki gönderi "uyumsuz".

incompatibility_mode

IncompatibilityMode

Uyumsuzluğa mod uygulandı.

IncompatibilityMode

Uyumsuz gönderimlerin aynı rotada nasıl kısıtlanacağını tanımlayan modlar.

Sıralamalar
INCOMPATIBILITY_MODE_UNSPECIFIED Belirtilmemiş uyumsuzluk modu. Bu değer hiçbir zaman kullanılmamalıdır.
NOT_PERFORMED_BY_SAME_VEHICLE Bu modda, uyumsuz türlere sahip iki gönderim hiçbir zaman aynı aracı paylaşamaz.
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY

NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY uyumsuzluk moduyla uyumlu olmayan türlere sahip iki gönderim için:

  • Her ikisi de yalnızca teslim alma hizmeti sunuyorsa (teslimat içermiyorsa) veya teslimat ise (teslim alma hariç) aynı aracı paylaşamazlar.
  • Gönderilerden biri teslimat, diğeri ise teslim alma işlemi gerektiriyorsa ve ilk gönderi ikinci gönderiden önce teslim edilirse iki gönderi aynı aracı paylaşabilir.

ShipmentTypeRequirement

shipping_type [gönderim_türü] temelinde gönderimler arasındaki şartları belirtir. Şartın ayrıntıları, gereksinim modu ile tanımlanır.

Alanlar
required_shipment_type_alternatives[]

string

dependent_shipment_types tarafından zorunlu kılınan alternatif kargo türlerinin listesi.

dependent_shipment_types[]

string

dependent_shipment_types alanında türü required_shipment_type_alternatives olan tüm gönderimlerin, aynı rotada required_shipment_type_alternatives türündeki en az bir gönderimin ziyaret edilmesi gerekir.

NOT: shipment_type öğesinin kendisine bağlı olduğu gibi koşul zincirlerine izin verilmez.

requirement_mode

RequirementMode

Mod, koşula uygulandı.

RequirementMode

Bağımlı gönderilerin rota üzerindeki görünümünü tanımlayan modlar.

Sıralamalar
REQUIREMENT_MODE_UNSPECIFIED Belirtilmemiş gereksinim modu. Bu değer hiçbir zaman kullanılmamalıdır.
PERFORMED_BY_SAME_VEHICLE Bu modda, tüm "bağımlı" Gönderiler, "gerekli" koşullardan en az biriyle aynı aracı paylaşmalıdır sevkiyatlar.
IN_SAME_VEHICLE_AT_PICKUP_TIME

IN_SAME_VEHICLE_AT_PICKUP_TIME modunda, tüm "bağlı" gönderimlerin, teslim alınma sırasında araçta en az bir "zorunlu" gönderim bulunması gerekir.

"Bağımlı" kuruluş Dolayısıyla kargodan teslim alma şunlardan birine sahip olmalıdır:

  • Yalnızca teslimat "zorunlu" kargodan sonra rotada teslim edilir veya
  • "Gerekli" kargodan önce rotadan alınmıştır ve "gerekliyse" gönderimin teslimatı varsa, bu teslimat "bağımlı" belirlemek için kullanılır.
IN_SAME_VEHICLE_AT_DELIVERY_TIME "Bağımlı" olanlar hariç öncekiyle aynı gönderimlerde "zorunlu" teslimat sırasında araçlarına gönderim yapmış olmaları.

SkippedShipment

Çözümdeki başarılı olmayan gönderimlerin ayrıntılarını belirtir. Önemsiz durumlar için ve/veya atlama nedenini belirleyebiliyorsak nedenini burada bildiririz.

Alanlar
index

int32

Dizin, ShipmentModel kaynağındaki gönderinin dizinine karşılık gelir.

label

string

Shipment içinde belirtilmişse ilgili Shipment.label öğesinin kopyası.

reasons[]

Reason

Gönderimin neden atlandığını açıklayan nedenlerin listesi. Reason üzerindeki yoruma bakın. Bir gönderimin neden atlandığını anlayamazsak nedenler ayarlanmaz.

Neden

Gönderimin neden atlandığını açıklayabilirsek nedenler burada listelenir. Neden tüm araçlar için aynı değilse reason, 1'den fazla öğe içerir. Atlanan bir gönderinin yinelenen nedenleri olamaz (example_vehicle_index dışında tüm alanların aynı olduğu). Örnek:

reasons {
  code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
  example_vehicle_index: 1
  example_exceeded_capacity_type: "Apples"
}
reasons {
  code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
  example_vehicle_index: 3
  example_exceeded_capacity_type: "Pears"
}
reasons {
  code: CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT
  example_vehicle_index: 1
}

Atlanan gönderi, tüm araçlarla uyumlu değil. Nedenler tüm araçlar için farklı olabilir ancak en az bir aracın "Elma" kapasitesi aşılmış olur (1. araç dahil), en az bir aracın "Armut" kapasitesi aşılmış olur (3. araç dahil) ve en az bir aracın mesafe sınırı aşılmış olur (1. araç dahil).

Alanlar
code

Code

Kod'daki açıklamalara bakın.

example_exceeded_capacity_type

string

Neden kodu DEMAND_EXCEEDS_VEHICLE_CAPACITY ise aşılan bir kapasite türünü belirtir.

example_vehicle_index

int32

Neden, gönderim aracıyla ilgili bir uyumsuzlukla ilgiliyse bu alanda ilgili bir aracın dizini sağlanır.

Kod

Neden türünü tanımlayan kod. Buradaki sıra anlamsızdır. Özellikle, belirli bir nedenin (her ikisi de geçerliyse) çözümde bir diğer nedenden önce görünüp görünmeyeceğini belirtmez.

Sıralamalar
CODE_UNSPECIFIED Bu ifade hiçbir zaman kullanılmamalıdır.
NO_VEHICLE Modelde, tüm sevkiyatları uygulanamaz hale getiren bir araç bulunmuyor.
DEMAND_EXCEEDS_VEHICLE_CAPACITY Kargo talebi, biri example_exceeded_capacity_type olan bazı kapasite türleri için aracın kapasitesini aşıyor.
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT

Bu sevkiyatı gerçekleştirmek için gereken minimum mesafe (ör. aracın start_location konumundan gönderinin teslim alma ve/veya teslimat konumlarına) aracın bitiş konumuna kadar olan minimum mesafe, aracın route_distance_limit değerini aşıyor.

Bu hesaplamada jeodezik mesafeleri kullandığımıza dikkat edin.

CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT

Seyahat süresi, bekleme süresi ve servis süresi dahil olmak üzere bu gönderimi gerçekleştirmek için gereken minimum süre, aracın route_duration_limit değerini aşıyor.

Not: Seyahat süresi en iyi senaryo, yani jeodezik mesafe x 36 m/sn (yaklaşık 130 km/saat) şeklinde hesaplanır.

CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT Yukarıdakiyle aynı ancak yalnızca minimum seyahat süresi ile aracın travel_duration_limit değerini karşılaştırıyoruz.
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS Araç en erken başlangıç zamanında başlıyorsa en iyi durum senaryosunda (zaman hesaplaması için CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT) bu gönderimi gerçekleştiremez: Toplam süre, aracın en son bitiş zamanından sonra bitmesine neden olur.
VEHICLE_NOT_ALLOWED Gönderimin allowed_vehicle_indices alanı boş değil ve bu araç ona ait değil.

TimeWindow

Zaman aralıkları, ziyaretin varış saati veya bir aracın başlangıç ve bitiş zamanı gibi bir etkinliğin zamanını kısıtlar.

Sabit zaman aralığı sınırları (start_time ve end_time), etkinliğin en erken ve en geç zamanını (start_time <= event_time <= end_time gibi) zorunlu kılar. Yumuşak zaman aralığı alt sınırı soft_start_time, etkinliğin soft_start_time değerinden ne kadar süre önce gerçekleştiğiyle orantılı bir maliyete neden olarak etkinliğin soft_start_time tarihinde veya sonrasında gerçekleşmesini tercih ettiğinizi ifade eder. Yumuşak zaman aralığı üst sınırı soft_end_time, etkinliğin soft_end_time'ten ne kadar süre sonra gerçekleştiğine orantılı bir maliyete neden olarak etkinliğin soft_end_time'te veya öncesinde gerçekleşmesini tercih ettiğinizi ifade eder. start_time, end_time, soft_start_time ve soft_end_time, genel zaman sınırları içinde olmalı (bkz. ShipmentModel.global_start_time ve ShipmentModel.global_end_time) ve şunlara uymalıdır:

  0 <= `start_time` <= `end_time` and
  0 <= `start_time` <= `soft_start_time` and
  0 <= `soft_end_time` <= `end_time`.
Alanlar
start_time

Timestamp

Zor zaman aralığının başlangıç zamanı. Belirtilmemişse ShipmentModel.global_start_time olarak ayarlanır.

end_time

Timestamp

Zor zaman aralığı bitiş zamanı. Belirtilmemişse ShipmentModel.global_end_time olarak ayarlanır.

soft_start_time

Timestamp

Zaman aralığının esnek başlangıç zamanı.

soft_end_time

Timestamp

Zaman aralığının geçici bitiş zamanı.

cost_per_hour_before_soft_start_time

double

Etkinlik soft_start_time tarihinden önce gerçekleşirse modeldeki diğer maliyetlere eklenen saat başına maliyet. Bu değer şu şekilde hesaplanır:

   max(0, soft_start_time - t.seconds)
                          * cost_per_hour_before_soft_start_time / 3600,
t being the time of the event.

Bu maliyet pozitif olmalıdır ve alan yalnızca soft_start_time ayarlandıysa ayarlanabilir.

cost_per_hour_after_soft_end_time

double

Etkinlik soft_end_time tarihinden sonra gerçekleşirse modeldeki diğer maliyetlere eklenen saat başına maliyet. Şu şekilde hesaplanır:

   max(0, t.seconds - soft_end_time.seconds)
                    * cost_per_hour_after_soft_end_time / 3600,
t being the time of the event.

Bu maliyet pozitif olmalıdır ve alan yalnızca soft_end_time ayarlanmışsa ayarlanabilir.

TransitionAttributes

Bir rota üzerinde art arda iki ziyaret arasındaki geçişlerin özelliklerini belirtir. Aynı geçiş için birkaç TransitionAttributes geçerli olabilir: Bu durumda, tüm ek maliyetler toplanır ve en katı kısıtlama veya sınır geçerli olur (doğal "VE" anlamının gereği).

Alanlar
src_tag

string

Bu özelliklerin geçerli olduğu (src->dst) geçiş grubunu tanımlayan etiketler.

Kaynak ziyareti veya araç başlangıcı, VisitRequest.tags veya Vehicle.start_tags src_tag içeriyorsa ya da excluded_src_tag içermiyorsa (bu iki alandan hangisinin boş olmadığına bağlı olarak) eşleşir.

excluded_src_tag

string

Şu sayfaya göz atın: src_tag. Tam olarak src_tag ve excluded_src_tag değerlerinden biri boş bırakılamaz.

dst_tag

string

Hedef ziyareti veya araç sonu, VisitRequest.tags veya Vehicle.end_tags dst_tag içeriyorsa ya da excluded_dst_tag içermiyorsa (bu iki alandan hangisinin boş olmadığına bağlı olarak) eşleşir.

excluded_dst_tag

string

Şu sayfaya göz atın: dst_tag. dst_tag ve excluded_dst_tag'den tam olarak biri boş olmamalıdır.

cost

double

Bu geçişin maliyetini belirtir. Bu değer, modeldeki diğer tüm maliyetlerle aynı birimdir ve negatif olmamalıdır. Diğer tüm mevcut maliyetlerin üzerine uygulanır.

cost_per_kilometer

double

Bu geçiş sırasında kat edilen mesafeye uygulanan kilometre başına maliyeti belirtir. Araçlarda belirtilen tüm Vehicle.cost_per_kilometer ile toplanır.

distance_limit

DistanceLimit

Bu geçiş gerçekleştirilirken katedilen mesafeyle ilgili bir sınırı belirtir.

06.06.2021 itibarıyla yalnızca geçici sınırlar desteklenmektedir.

delay

Duration

Bu geçiş gerçekleştirilirken oluşan gecikmeyi belirtir.

Bu gecikme her zaman kaynak ziyareti bittikten sonra ve hedef ziyaretin başlamasından önce gerçekleşir.

Araç

Gönderim sorunu olan bir aracı modelleme. Gönderim sorunu çözüldüğünde bu araç için start_location ile başlayıp end_location itibarıyla biten bir rota oluşturulur. Rota, ziyaretlerden oluşan bir sıradır (ShipmentRoute bölümüne bakın).

Alanlar
display_name

string

Aracın kullanıcı tanımlı görünen adı. En fazla 63 karakter uzunluğunda olabilir ve UTF-8 karakterleri kullanabilir.

travel_mode

TravelMode

Aracın kullanabileceği yolları ve hızını etkileyen ulaşım şekli. Ayrıca bkz. travel_duration_multiple.

route_modifiers

RouteModifiers

Belirli bir araç için rotaların hesaplanma yöntemini etkileyen, karşılanacak bir dizi koşul.

start_location

LatLng

Araç, kargoyu teslim almaya başlamadan önce hangi coğrafi konumdadır? Belirtilmemişse araç ilk teslimatında başlar. Gönderim modelinin süre ve mesafe matrisleri varsa start_location belirtilmemelidir.

start_waypoint

Waypoint

Aracın herhangi bir gönderimi teslim almadan önce çalışmaya başladığı coğrafi konumu temsil eden ara nokta. start_waypoint veya start_location belirtilmezse araç ilk teslim alındığında başlar. Gönderi modelinde süre ve mesafe matrisleri varsa start_waypoint belirtilmemelidir.

end_location

LatLng

Aracın son VisitRequest'ünü tamamladıktan sonra sona erdiği coğrafi konum. Belirtilmezse aracın ShipmentRoute özelliği son VisitRequest işlemini tamamladığında sona erer. Gönderim modelinin süre ve mesafe matrisleri varsa end_location belirtilmemelidir.

end_waypoint

Waypoint

Aracın son VisitRequest adımını tamamladıktan sonra sona erdiği coğrafi konumu temsil eden ara nokta. end_waypoint veya end_location belirtilmezse aracın ShipmentRoute cihazı son VisitRequest işlemini tamamladığında hemen sona erer. Gönderim modelinin süre ve mesafe matrisleri varsa end_waypoint belirtilmemelidir.

start_tags[]

string

Aracın rotasının başına eklenen etiketleri belirtir.

Boş veya yinelenen dizelere izin verilmez.

end_tags[]

string

Aracın rotasının sonuna eklenen etiketleri belirtir.

Boş veya yinelenen dizelere izin verilmez.

start_time_windows[]

TimeWindow

Aracın başlangıç konumundan ayrılabileceği zaman aralıkları. Genel zaman sınırları dahilinde olmalıdırlar (ShipmentModel.global_* alanlarına bakın). Belirtilmemişse bu genel zaman sınırları dışında herhangi bir sınırlama yoktur.

Aynı tekrarlanan alana ait zaman aralıkları ayrı olmalıdır. Yani zaman aralığı başka bir zaman aralığıyla çakışamaz ya da bitişik olamaz ve kronolojik sırada olmalıdır.

cost_per_hour_after_soft_end_time ve soft_end_time yalnızca tek bir zaman aralığı varsa ayarlanabilir.

end_time_windows[]

TimeWindow

Aracın bitiş konumuna varabileceği zaman aralıkları. Genel zaman sınırları dahilinde olmalıdırlar (ShipmentModel.global_* alanlarına bakın). Belirtilmemişse bu genel zaman sınırları dışında herhangi bir sınırlama yoktur.

Aynı tekrarlanan alana ait zaman aralıkları ayrı olmalıdır. Yani zaman aralığı başka bir zaman aralığıyla çakışamaz ya da bitişik olamaz ve kronolojik sırada olmalıdır.

cost_per_hour_after_soft_end_time ve soft_end_time yalnızca tek bir zaman aralığı varsa ayarlanabilir.

unloading_policy

UnloadingPolicy

Araçta uygulanan kaldırma politikası.

load_limits

map<string, LoadLimit>

Aracın kapasiteleri (ör. ağırlık, hacim, palet sayısı). Haritadaki anahtarlar, Shipment.load_demands alanının anahtarlarıyla tutarlı olan yükleme türünün tanımlayıcılarıdır. Bu haritada belirli bir anahtar eksikse karşılık gelen kapasitenin sınırsız olduğu kabul edilir.

cost_per_hour

double

Araç maliyetleri: Tüm maliyetler toplanır ve Shipment.penalty_cost ile aynı birimde olmalıdır.

Araç rotasının saatlik maliyeti. Bu maliyet, rotanın toplam süresine uygulanır ve seyahat süresi, bekleme süresi ve ziyaret süresini içerir. Yalnızca cost_per_traveled_hour yerine cost_per_hour kullanılması ek gecikmeye neden olabilir.

cost_per_traveled_hour

double

Araç rotasında katedilen saat başına maliyet. Bu maliyet, yalnızca rotanın aldığı seyahat süresine (ShipmentRoute.transitions cinsinden bildirilen) uygulanır ve bekleme süresi ile ziyaret süresi hariç tutulur.

cost_per_kilometer

double

Araç rotasının kilometre başına maliyeti. Bu maliyet, ShipmentRoute.transitions içinde raporlanan mesafeye uygulanır ve tek bir VisitRequest'ın arrival_location ile departure_location arasında dolaylı olarak kat edilen mesafe için geçerli değildir.

fixed_cost

double

Bu araç bir gönderiyi işlemek için kullanılıyorsa uygulanan sabit maliyet.

used_if_route_is_empty

bool

Bu alan, yalnızca rotalarında herhangi bir sevkiyat hizmeti sunulmayan araçlar için geçerlidir. Bu durumda aracın kullanılmış olarak kabul edilip edilmeyeceğini belirtir.

True (doğru) ise araç, herhangi bir sevkiyat hizmeti vermese bile başlangıç konumundan bitiş konumuna kadar gider ve başlangıcından itibaren zaman ve mesafe maliyetleri oluşturur --> dikkate alınır.

Aksi takdirde, bu araç için başlangıç noktasından bitiş konumuna kadar gitmez ve bu araç için break_rule veya gecikme (TransitionAttributes kalkışlı) planlanmaz. Bu durumda aracın ShipmentRoute özelliği, araç dizini ve etiketi dışında herhangi bir bilgi içermez.

route_duration_limit

DurationLimit

Sınır, aracın rotasının toplam süresine uygulanır. Belirli bir OptimizeToursResponse için aracın rota süresi, vehicle_end_time ile vehicle_start_time arasındaki farktır.

travel_duration_limit

DurationLimit

Sınır, aracın rotasının seyahat süresine uygulanır. Belirli bir OptimizeToursResponse için rota seyahat süresi, tüm transitions.travel_duration değerlerinin toplamıdır.

route_distance_limit

DistanceLimit

Aracın rotasının toplam mesafesine uygulanan sınır. Belirli bir OptimizeToursResponse için rota mesafesi, tüm transitions.travel_distance_meters noktalarının toplamıdır.

extra_visit_duration_for_visit_type

map<string, Duration>

Visit_types dizelerinden sürelere kadar olan bir haritayı belirtir. Süre, belirtilen visit_types ile ziyaretlerde VisitRequest.duration öğesine ek olarak alınacak süredir. Bu ek ziyaret süresi, cost_per_hour belirtilirse maliyet ekler. Anahtarlar (ör. visit_types) boş dize olamaz.

Bir ziyaret isteğinin birden fazla türü varsa haritadaki her tür için bir süre eklenir.

break_rule

BreakRule

Bu araçta uygulanacak ara programını açıklar. Boş bırakılırsa bu araç için ara verme planlanmaz.

label

string

Bu araç için bir etiket belirtir. Bu etiket, yanıtta karşılık gelen ShipmentRoute öğesinin vehicle_label öğesi olarak bildirildi.

ignore

bool

Değer true ise used_if_route_is_empty false (yanlış) değerine ayarlanmalıdır ve bu araç kullanılmadan kalır.

injected_first_solution_routes bölgesinde yoksayılan araç tarafından bir gönderim yapılırsa bu işlem ilk çözümde atlanır ancak yanıtta ücretsiz olarak gerçekleştirilebilir.

injected_solution_constraint içinde yoksayılan bir araç tarafından bir gönderim yapılırsa ve ilgili teslim alma/teslimat araçta kalacak şekilde kısıtlanırsa (ör. RELAX_ALL_AFTER_THRESHOLD seviyesine gevşetilmezse) yanıtta atlanır. Bir gönderide allowed_vehicle_indices alanı boş değilse ve izin verilen tüm araçlar yok sayılırsa yanıtta atlanır.

travel_duration_multiple

double

Bu aracın seyahat sürelerini artırmak veya azaltmak için kullanılabilen çarpma faktörünü belirtir. Örneğin bu değerin 2.0 olarak ayarlanması, bu aracın daha yavaş olduğu ve seyahat sürelerinin standart araçlardakinin iki katı olduğu anlamına gelir. Bu katsayı, ziyaret sürelerini etkilemez. cost_per_hour veya cost_per_traveled_hour belirtilirse maliyeti etkiler. [0,001, 1000.0] aralığında olmalıdır. Politika ayarlanmadan bırakılırsa araç standarttır, bu katsayı ise 1, 0 olarak kabul edilir.

UYARI: Bu katsayı uygulandıktan sonra herhangi bir sayısal işlem yapılmadan önce seyahat süreleri en yakın saniyeye yuvarlanır. Bu nedenle, küçük bir sayının katsayısı hassasiyet kaybına neden olabilir.

Ayrıca aşağıdaki extra_visit_duration_for_visit_type bölümüne bakın.

DurationLimit

Bir aracın rotanın maksimum süresini tanımlayan sınır. Sert veya yumuşak olabilir.

Bir esnek sınır alanı tanımlandığında, hem esnek maksimum eşiği hem de ilişkili maliyeti birlikte tanımlanmalıdır.

Alanlar
max_duration

Duration

Süreyi en fazla max_duration olacak şekilde sınırlayan kesin bir sınır.

soft_max_duration

Duration

Maksimum süre sınırı uygulanmayan, ancak ihlal edildiğinde rotanın ücretlendirilen bir sınırı olan sabit bir sınır. Bu maliyet, aynı birimle modelde tanımlanan diğer maliyetlere eklenir.

Tanımlanmışsa soft_max_duration pozitif olmalıdır. max_duration da tanımlanmışsa soft_max_duration, max_duration'dan kısa olmalıdır.

quadratic_soft_max_duration

Duration

Maksimum süre sınırı uygulamayan ancak ihlal edildiğinde rotanın süreye bağlı olarak karesel bir maliyete maruz kalmasına neden olan yumuşak sınır. Bu maliyet, modelde tanımlanan diğer maliyetlerle (aynı birimde) toplanır.

Tanımlanmışsa quadratic_soft_max_duration negatif olmayan bir sayı olmalıdır. max_duration de tanımlıysa quadratic_soft_max_duration, max_duration değerinden küçük ve fark bir günden fazla olmamalıdır:

max_duration - quadratic_soft_max_duration <= 86400 seconds

cost_per_hour_after_soft_max

double

soft_max_duration eşiğinin ihlal edilmesi durumunda oluşan saat başına maliyet. Süre eşiğin altındaysa ek maliyet 0 olur. Aksi takdirde maliyet, süreye aşağıdaki şekilde bağlı olur:

  cost_per_hour_after_soft_max * (duration - soft_max_duration)

Maliyet negatif olmamalıdır.

cost_per_square_hour_after_quadratic_soft_max

double

quadratic_soft_max_duration eşiği ihlal edilirse metrekare başına saatlik maliyet.

Süre eşik değerinin altındaysa ek maliyet 0'dır. Aksi takdirde maliyet, süreye bağlı olarak aşağıdaki gibidir:

  cost_per_square_hour_after_quadratic_soft_max *
  (duration - quadratic_soft_max_duration)^2

Maliyet negatif olmamalıdır.

LoadLimit

Bir araç için geçerli olan yük sınırını tanımlar (ör. "bu kamyon yalnızca 3.500 kg ağırlığa kadar yük taşıyabilir"). Şu sayfaya göz atın: load_limits.

Alanlar
soft_max_load

int64

Düşük bir yük sınırı. Şu sayfaya göz atın: cost_per_unit_above_soft_max.

cost_per_unit_above_soft_max

double

Yük, bu aracın rotasında soft_max_load değerini aşarsa şu maliyet cezası uygulanır (araç başına yalnızca bir kez): (yük - soft_max_load) * cost_per_unit_above_soft_max. Tüm maliyetler toplanır ve Shipment.penalty_cost ile aynı birimde olmalıdır.

start_load_interval

Interval

Rotanın başlangıcında aracın kabul edilebilir yük aralığı.

end_load_interval

Interval

Rotanın sonundaki aracın kabul edilebilir yük aralığı.

max_load

int64

Kabul edilebilir maksimum yük miktarı.

Aralık

Kabul edilebilir yükleme miktarlarının aralığı.

Alanlar
min

int64

Minimum kabul edilebilir yük. ≥ 0 olmalıdır. Her ikisi de belirtilmişse min, max'ten küçük olmalıdır.

max

int64

Maksimum kabul edilebilir yük. ≥ 0 olmalıdır. Belirtilmemişse maksimum yükleme bu ileti tarafından kısıtlanmaz. Her ikisi de belirtilmişse min, max'ten küçük olmalıdır.

TravelMode

Araçlar tarafından kullanılabilen ulaşım şekilleri.

Bunlar, Google Haritalar Platformu Routes Preferred API seyahat modlarının bir alt kümesi olmalıdır. Şu sayfaya göz atın: https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteTravelMode.

Sıralamalar
TRAVEL_MODE_UNSPECIFIED Belirtilmemiş ulaşım şekli. DRIVING ile eşdeğerdir.
DRIVING Arabayla yol tariflerine karşılık gelen ulaşım şekli (araba, ...).
WALKING Yaya yol tarifine karşılık gelen ulaşım modu.

UnloadingPolicy

Araçların nasıl indirilebileceğiyle ilgili politika. Yalnızca hem teslim alma hem de teslimat içeren gönderimler için geçerlidir.

Diğer gönderimler, unloading_policy bağımsız olarak rotanın herhangi bir yerinde ücretsiz olacaktır.

Sıralamalar
UNLOADING_POLICY_UNSPECIFIED Belirtilmemiş boşaltma politikası; teslimatlar, ilgili teslim alma işlemlerinden hemen sonra gerçekleşmelidir.
LAST_IN_FIRST_OUT Teslimatlar, teslim alma sırası tersten yapılmalıdır
FIRST_IN_FIRST_OUT Teslimatlar, teslim alma siparişleriyle aynı sırayla yapılmalıdır

Ara nokta

Bir referans noktasını içerir. Referans noktaları, Ziyaret İstekleri'nin varış ve kalkış konumları ile Araçların başlangıç ve bitiş konumlarını gösterir.

Alanlar
side_of_road

bool

İsteğe bağlı. Bu yol işaretinin konumunun, aracın yolun belirli bir tarafında durması için tercih edildiğini belirtir. Bu değeri ayarladığınızda rota, konumdan geçer. Böylece araç, konumun merkezine göre ağırlık verdiği yol kenarında durabilir. Bu seçenek "YÜRÜYÜŞ" seyahat modunda kullanılamaz.

Birlik alanı location_type. Bir konumu temsil etmenin farklı yolları. location_type şunlardan yalnızca biri olabilir:
location

Location

İsteğe bağlı bir başlık da dahil olmak üzere coğrafi koordinatlar kullanılarak belirtilen bir nokta.

place_id

string

Referans noktasıyla ilişkilendirilen ÖY yer kimliği.