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
    • Zamanlar Unix zamanı cinsindendir: 1970-01-01T00:00:00+00:00'dan itibaren geçen saniye sayısı.
    • Saniye değeri [0, 253402300799] aralığında, yani [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00] aralığında olmalıdır.
    • nanos ayarlanmamalı veya 0 olarak ayarlanmalıdır.
  • google.protobuf.Duration
    • Saniye değeri [0, 253402300799] aralığında, yani [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00] aralığında olmalıdır.
    • nanos ayarlanmamalı veya 0 olarak ayarlanmalıdır.
  • google.type.LatLng
    • Enlem [-90,0, 90,0] aralığında olmalıdır.
    • Boylam [-180,0, 180,0] aralığında olmalıdır.
    • Enlem ve boylamdan en az biri sıfır olmamalı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 işlemdir (LRO). Optimizasyon için girişler (OptimizeToursRequest mesaj) ve çıkışlar (OptimizeToursResponse mesaj), kullanıcı tarafından belirtilen biçimde Cloud Storage'dan okunur ve Cloud Storage'a yazılır. OptimizeTours yönteminde olduğu gibi, her OptimizeToursRequest bir ShipmentModel içerir ve toplam maliyeti en aza indiren araçlar tarafından gerçekleştirilecek bir rota grubu olan ShipmentRoute alanlarını içeren bir OptimizeToursResponse döndürür.

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

LRO done alanı yanlışsa en az bir istek hâlâ işleniyor demektir. Diğer istekler başarıyla tamamlanmış olabilir ve sonuçları Cloud Storage'da bulunabilir.

LRO'nun done alanı doğruysa tüm istekler işlenmiştir. Başarıyla işlenen isteklerin sonuçları Cloud Storage'da kullanılabilir. Başarısız olan isteklerin sonuçları Cloud Storage'da kullanılamaz. LRO'nun error alanı ayarlanmışsa başarısız isteklerden birinin hatasını 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 iznini gerektirir:

  • 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'ler içeren bir OptimizeToursResponse döndürür. Bunlar, araçların toplam maliyeti en aza indirmek için izleyeceği bir dizi rotadır.

ShipmentModel modeli temel olarak, gerçekleştirilmesi gereken Shipmentlardan ve Shipmentları taşımak için kullanılabilecek Vehiclelardan oluşur. ShipmentRoute, Vehicle için Shipment atar. Daha açık belirtmek gerekirse her araca bir dizi Visit atarlar. Burada bir Visit, bir Shipment için teslim alma veya teslimat olan bir VisitRequest değerine karşılık gelir.

Amaç, ShipmentRoute'leri Vehicle'lere atayarak toplam maliyeti en aza indirmektir. Maliyet, ShipmentModel içinde tanımlanan birçok bileşenden oluşur.

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 iznini gerektirir:

  • routeoptimization.locations.use

Daha fazla bilgi için IAM belgelerini inceleyin.

OptimizeToursLongRunning

rpc OptimizeToursLongRunning(OptimizeToursRequest) returns (Operation)

Bu, büyük zaman aşımı değerlerine sahip optimizasyonlar için tasarlanmış OptimizeTours yönteminin bir varyantıdır. Birkaç dakikadan uzun süren optimizasyonlar için OptimizeTours yöntemine tercih edilmelidir.

Döndürülen long-running operation (LRO), <parent>/operations/<operation_id> biçiminde bir ada sahip olur ve hesaplamanın ilerleme durumunu izlemek için kullanılabilir. metadata alan türü OptimizeToursLongRunningMetadata. İşlem başarılı olursa response alan türü OptimizeToursResponse olur.

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 iznini gerektirir:

  • routeoptimization.operations.create

Daha fazla bilgi için IAM belgelerini inceleyin.

OptimizeToursUri

rpc OptimizeToursUri(OptimizeToursUriRequest) returns (Operation)

Bu, büyük zaman aşımı değerleri ve büyük giriş/çıkış boyutları içeren optimizasyonlar için tasarlanmış OptimizeToursLongRunning yönteminin bir varyantıdır.

İstemci, Google Cloud Storage'da depolanan OptimizeToursRequest URI'sini belirtir ve sunucu, OptimizeToursResponse değerini istemci tarafından belirtilen bir Google Cloud Storage URI'sine yazar.

Bu yöntem, birkaç dakikadan uzun süren optimizasyonlar ve 8 MB'tan büyük giriş/çıkış boyutları için OptimizeTours yöntemine tercih edilmelidir. Bununla birlikte, daha kısa ve daha küçük optimizasyonlar için de kullanılabilir.

Döndürülen long-running operation (LRO), <parent>/operations/<operation_id> biçiminde bir ada sahip olur ve hesaplamanın ilerleme durumunu izlemek için kullanılabilir. metadata alan türü OptimizeToursUriMetadata. İşlem başarılı olursa response alan türü OptimizeToursUriResponse olur.

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 iznini gerektirir:

  • routeoptimization.operations.create

Daha fazla bilgi için IAM belgelerini inceleyin.

AggregatedMetrics

Tüm Transition ve/veya Visit (veya tüm ShipmentRoute) öğeleri için ShipmentRoute (veya OptimizeToursResponse) ile ilgili toplu metrikler.

Alanlar
performed_shipment_count

int32

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

travel_duration

Duration

Bir rota veya çözüm için 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 mola 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 şunlara da 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 (veya çözümdeki) her bir miktar için tüm rota (veya çözüm) boyunca ulaşılan maksimum yük. Tüm Transition.vehicle_loads (veya ShipmentRoute.metrics.max_loads.

performed_mandatory_shipment_count

int32

Zorunlu gönderimlerin sayısı.

Deneysel: Bu alanın davranışı veya varlığı gelecekte değişebilir.

performed_shipment_penalty_cost_sum

double

Gerçekleştirilen gönderilerin Shipment.penalty_cost toplamı.

Deneysel: Bu alanın davranışı veya varlığı gelecekte değişebilir.

BatchOptimizeToursMetadata

Bu türün alanı yok.

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

BatchOptimizeToursRequest

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

Alanlar
parent

string

Zorunlu. Çağrı yapılacak hedef proje ve konum.

Biçim:

  • projects/{project-id}
  • projects/{project-id}/locations/-

Bölgesel {location-id} değerleri desteklenmez.

model_configs[]

AsyncModelConfig

Zorunlu. Her satın alma modeli için 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ıdır. Kullanıcı tarafından tanımlanan 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ürün alanı yok.

BatchOptimizeToursRequest için yanıt. Bu, işlem tamamlandıktan sonra uzun süreli işlemde döndürülür.

BreakRule

Bir araç için zaman araları (ör. öğle yemekleri) oluşturma kuralları. Mola, aracın mevcut konumunda boşta kaldığı ve herhangi bir ziyaret gerçekleştiremediği bitişik bir zaman dilimidir. Aşağıdaki durumlarda kesinti yaşanabilir:

  • İki ziyaret arasındaki seyahat sırasında (ziyaretten hemen önce veya hemen sonraki zamanı içerir ancak ziyaretin ortasındaki zamanı içermez). Bu durumda, ziyaretler arasındaki ilgili nakliye süresini uzatır.
  • veya araç çalıştırılmadan önce (araç, mola sırasında çalıştırılamayabilir). Bu durumda, aracın çalıştırılma zamanı etkilenmez.
  • veya araç bitişinden sonra (aynı şekilde, araç bitiş zamanıyla birlikte).
Alanlar
break_requests[]

BreakRequest

Ara dizisi. BreakRequest mesajını inceleyin.

frequency_constraints[]

FrequencyConstraint

Birden fazla FrequencyConstraint geçerli olabilir. Bu BreakRule'ın BreakRequest'leri tarafından tüm koşullar karşılanmalıdır. FrequencyConstraint sayfasına göz atabilirsiniz.

BreakRequest

Her araç için geçerli olan mola sırası (yani mola sayısı ve sırası) önceden bilinmelidir. Yinelenen BreakRequest, bu adım sırasını gerçekleşmesi gereken sırayla tanımlar. Zaman aralıkları (earliest_start_time / latest_start_time) çakışabilir ancak siparişle uyumlu olmalıdır (bu kontrol edilir).

Alanlar
earliest_start_time

Timestamp

Zorunlu. Aranın başlangıcı için alt sınır (dahil).

latest_start_time

Timestamp

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

min_duration

Duration

Zorunlu. Aranın minimum süresi. Pozitif olmalıdır.

FrequencyConstraint

Yukarıda belirtilen molaların sıklığı ve süresi, minimum mola sıklığı zorunlu kılınarak daha da kısıtlanabilir (ör. "Her 12 saatte bir en az 1 saat mola verilmelidir"). Bu kuralın "12 saatlik herhangi bir kayan zaman aralığında en az bir saatlik en az bir mola olmalıdır" şeklinde yorumlanabileceğini varsayarsak bu örnek aşağıdaki FrequencyConstraint değerine karşılık 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 içinde belirtilen zaman aralıkları ve minimum sürelere ek olarak bu tür tüm kısıtlamalara uyar.

FrequencyConstraint, uygulamada ardışık olmayan aralar için geçerli olabilir. Örneğin, aşağıdaki program "her 12 saatte bir 1 saat" örneğine uygundur:

  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 olmayan. FrequencyConstraint adlı yerin açıklamasını görüntüleyin.

max_inter_break_duration

Duration

Zorunlu. Rotada en azından kısmen duration >= min_break_duration mola içermeyen herhangi bir zaman aralığının izin verilen maksimum süresi. 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 olmamalıdır.
JSON JavaScript Nesne Gösterimi.
PROTO_TEXT Protokol arabellekleri metin biçimi. https://protobuf.dev/reference/protobuf/textformat-spec/ adresini ziyaret edin.

DistanceLimit

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

Esnek sınır tanımlanırsa hem soft_max_meters hem de cost_per_kilometer_above_soft_max tanımlanmalı ve negatif olmamalıdır.

Alanlar
max_meters

int64

Mesafe değerini en fazla max_meters olacak şekilde kısıtlayan kesin bir sınır. Sınır, negatif olmayan bir değer olmalıdır.

soft_max_meters

int64

Maksimum mesafe sınırını zorunlu kılmayan ancak ihlal edildiğinde modelde tanımlanan diğer maliyetlere aynı birimle eklenen bir maliyete neden olan esnek bir sınırdır.

Tanımlanmışsa soft_max_meters, max_meters'tan küçük ve negatif olmayan bir değer olmalıdır.

cost_per_kilometer_below_soft_max

double

Kilometre başına maliyet, soft_max_meters değerine kadar artar. Formül:

  min(distance_meters, soft_max_meters) / 1000.0 *
  cost_per_kilometer_below_soft_max.

Bu maliyet route_distance_limit dilinde 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 takdirde maliyeti hesaplamak için aşağıdaki formül kullanılır:

  (distance_meters - soft_max_meters) / 1000.0 *
  cost_per_kilometer_above_soft_max.

Maliyet negatif olmamalı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 nasıl kısıtlanması gerektiğiyle ilgili bilgiler de dahil olmak üzere isteğe eklenen çözüm.

Alanlar
routes[]

ShipmentRoute

Enjekte edilecek çözeltinin rotaları. Bazı rotalar orijinal çözümden çıkarılabilir. Rotalar ve atlanan gönderiler, injected_first_solution_routes için listelenen temel geçerlilik varsayımlarını karşılamalıdır.

skipped_shipments[]

SkippedShipment

Enjekte edilecek çözümün atlanan gönderimleri. 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 esnetileceğini belirtir. Bu alan boşsa boş olmayan tüm araç rotaları tamamen kısıtlanır.

ConstraintRelaxation

Bir araç grubu için ziyaretlerle ilgili kısıtlamaların hangi eşiklerde ve hangi düzeye kadar esnetileceğini belirtir. skipped_shipment alanında listelenen gönderiler atlanacak şekilde kısıtlanır. Diğer bir deyişle, bu gönderiler gerçekleştirilemez.

Alanlar
relaxations[]

Relaxation

vehicle_indices içindeki araçların bulunduğu rotalardaki ziyaretler için geçerli olacak tüm ziyaret kısıtlaması esnetmeleri.

vehicle_indices[]

int32

Ziyaret kısıtlamasının relaxations geçerli olduğu araç dizinlerini belirtir. Boş bırakılırsa bu varsayılan olarak kabul edilir ve relaxations, diğer constraint_relaxations öğelerinde belirtilmeyen tüm araçlar için geçerli olur. En fazla bir varsayılan değer olabilir. Diğer bir deyişle, en fazla bir kısıtlama gevşetme alanının boş bırakılmasına izin verilir vehicle_indices. Bir araç dizini, birden fazla 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 tarihindeki 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 (yani ziyaret içermediği ve modelde used_if_route_is_empty değerinin false olarak ayarlandığı durumlar hariç) routes cinsinden başlangıç ve bitiş zamanı tamamen kısıtlanır.

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

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

Benzer şekilde, aşağıdaki koşulları karşılıyorsa araç başlangıcı relaxations(i).level olarak gevşetilir:

  • vehicle_start_time >= relaxations(i).threshold_time VE
  • relaxations(i).threshold_visit_count == 0 ve araç bitişi, aşağıdaki koşulları karşılıyorsa relaxations(i).level değerine 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 ölçütünü karşılıyorsa esneklik düzeyi uygulamak için aynı level değerine sahip iki relaxations ekleyin: Biri yalnızca threshold_visit_count, diğeri ise yalnızca threshold_time ölçütüne ayarlanmış olmalıdır. Bir ziyaret birden fazla relaxations koşullarını karşılıyorsa en esnek düzey uygulanır. Sonuç olarak, aracın başlangıcından rota ziyaretleri boyunca aracın bitişine kadar esneklik seviyesi daha esnek hale gelir. Diğer bir deyişle, rota ilerledikçe esneklik seviyesi azalmaz.

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

Alanlar
level

Level

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

threshold_time

Timestamp

level gevşetmesinin uygulanabileceği zaman veya bu zamandan sonraki bir zaman.

threshold_visit_count

int32

level gevşetme işleminin uygulanabileceği ziyaret sayısı. threshold_visit_count 0 ise (veya ayarlanmamışsa) level doğrudan araç çalıştırıldığında uygulanabilir.

route.visits_size() + 1 ise level yalnızca aracın arka tarafına uygulanabilir. route.visits_size() + 1 değerinden fazlaysa level bu rota için hiç uygulanmaz.

Seviye

Bir ziyaret için uygulanan ve eşik koşullarını karşıladığında uygulanan farklı kısıtlama esnetme düzeylerini ifade eder.

Aşağıdaki numaralandırma, artan gevşeme sırasına göredir.

Sıralamalar
LEVEL_UNSPECIFIED

Dolaylı varsayılan esnetme düzeyi: Hiçbir kısıtlama esnetilmez. Diğer bir deyişle, tüm ziyaretler tamamen kısıtlanır.

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

RELAX_VISIT_TIMES_AFTER_THRESHOLD Ziyaret başlangıç zamanları ve araç başlangıç/bitiş zamanları esnetilir ancak her ziyaret aynı araca bağlı kalır ve ziyaret sırasına uyulması gerekir: Ziyaretlerin arasına veya önüne başka bir ziyaret eklenemez.
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD RELAX_VISIT_TIMES_AFTER_THRESHOLD ile aynıdır ancak ziyaret sırası da esnetilir: Ziyaretler yalnızca bu araç tarafından gerçekleştirilebilir ancak gerçekleştirilmeyebilir.
RELAX_ALL_AFTER_THRESHOLD RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD ile aynıdır ancak araç da rahattır: ziyaretler, eşik zamanında veya sonrasında tamamen ücretsizdir ve potansiyel olarak gerçekleştirilmeyebilir.

InputConfig

[BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours] için bir giriş belirtin.

Alanlar
data_format

DataFormat

Zorunlu. Giriş verisi biçimi.

source birleşik alanı. Zorunlu. source aşağıdakilerden yalnızca biri olabilir:
gcs_source

GcsSource

Google Cloud Storage konumu. Bu, tek bir nesne (dosya) olmalıdır.

Konum

Bir konumu (coğrafi nokta ve isteğe bağlı bir yön) kapsar.

Alanlar
lat_lng

LatLng

Ara noktanın coğrafi koordinatları.

heading

int32

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

OptimizeToursLongRunningMetadata

Bu türün alanı yok.

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

OptimizeToursRequest

Çözülecek gönderi modelini ve optimizasyon parametrelerini tanımlayan bir tur optimizasyonu çözücüsüne verilecek istek.

Alanlar
parent

string

Zorunlu. Arama yapmak için hedef projeyi veya konumu seçin.

Biçim:

  • projects/{project-id}
  • projects/{project-id}/locations/-

Bölgesel {location-id} değerleri desteklenmez.

timeout

Duration

Bu zaman aşımı ayarlanırsa sunucu, zaman aşımı süresi dolmadan veya senkronize istekler için sunucu son tarihine ulaşılmadan önce (hangisi daha önce gerçekleşirse) bir yanıt döndürür.

Asenkron isteklerde sunucu, zaman aşımı süresi dolmadan önce bir çözüm üretir (mümkünse).

model

ShipmentModel

Çözülecek gönderi modeli.

solving_mode

SolvingMode

Varsayılan olarak, çözme modu DEFAULT_SOLVE (0) şeklindedir.

search_mode

SearchMode

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

injected_first_solution_routes[]

ShipmentRoute

Optimizasyon algoritmasını, önceki bir çözüme benzer bir ilk çözüm bulmaya yönlendirin.

İlk çözüm oluşturulduğunda model kısıtlanır. Bir rotada gerçekleştirilmeyen gönderiler, 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ıkta olmalı ve yinelenmemelidir.
  • Tüm ziyaretler için shipment_index ve visit_request_index aralıkta olmalıdır.
  • Bir gönderiye yalnızca bir rotada referans verilebilir.
  • Teslim alma-teslimat gönderisinin teslim alınması, teslimattan önce gerçekleştirilmelidir.
  • Bir gönderinin birden fazla teslim alma alternatifi veya teslimat alternatifi gerçekleştirilemez.
  • Tüm rotalarda süreler artıyorsa (ör. vehicle_start_time <= visits[0].start_time <= visits[1].start_time ... <= vehicle_end_time).
  • Gönderim yalnızca izin verilen bir araçla yapılabilir. Shipment.allowed_vehicle_indices boşsa veya vehicle_index, Shipment.allowed_vehicle_indices içinde yer alıyorsa araca izin verilir.

Eklenen çözüm uygun değilse doğrulama hatası döndürülmeyebilir ve bunun yerine uygunsuzluğu belirten bir hata döndürülebilir.

injected_solution_constraint

InjectedSolutionConstraint

Optimizasyon algoritmasını, önceki bir çözüme benzer nihai bir çözüm bulacak şekilde kısıtlayın. Örneğin, bu özellik, rotaların tamamlanmış veya tamamlanacak ancak değiştirilmemesi gereken kısımlarını dondurmak için kullanılabilir.

Eklenen çözüm uygun değilse doğrulama hatası döndürülmeyebilir ve bunun yerine uygunsuzluğu belirten bir hata döndürülebilir.

refresh_details_routes[]

ShipmentRoute

Boş değilse verilen 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.

Kasım 2020 itibarıyla bu, yalnızca boş olmayan rotaların çoklu çizgilerini doldurur ve populate_polylines değerinin doğru olmasını gerektirir.

İletilen rotaların route_polyline alanları, transitions rotasıyla tutarsız olabilir.

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

Shipment.ignore ve Vehicle.ignore, davranış üzerinde etkili değildir. İlgili gönderilerin veya araçların yoksayılıp yoksayılmadığına bakılmaksızın, boş olmayan tüm rotalardaki tüm ziyaretler arasında çoklu çizgiler doldurulmaya devam eder.

interpret_injected_solutions_using_labels

bool

Doğruysa:

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

True (doğru) ise aşağıdaki kategorilerdeki etiketler, kendi kategorilerinde en fazla bir kez görünmelidir:

Eklenen çözümdeki bir vehicle_label, istek aracına karşılık gelmiyorsa ilgili rota, ziyaretleriyle birlikte çözümden kaldırılır. Eklenen çözümdeki bir shipment_label, istek gönderimiyle eşleşmiyorsa ilgili ziyaret çözümden kaldırılır. Eklenen çözümdeki bir SkippedShipment.label, istek gönderimiyle eşleşmiyorsa SkippedShipment çözümden kaldırılır.

Rota ziyaretlerini veya tüm rotaları eklenen bir çözümden kaldırmak, örtük kısıtlamaları etkileyebilir. Bu da çözümde değişikliğe, doğrulama hatalarına veya uygulanamazlığa yol açabilir.

NOT: Çağrıyı yapan taraf, her Vehicle.label (veya ) için Shipment.label), iki alakalı istekte kullanılan bir araç (veya gönderi) öğesini benzersiz şekilde tanımlar: eklenen çözümde kullanılan OptimizeToursResponse değerini üreten geçmiş istek ve eklenen çözümü içeren mevcut istek. Yukarıda açıklanan benzersizlik kontrolleri, bu şartın karşılanmasını garanti etmek için yeterli değildir.

consider_road_traffic

bool

ShipmentRoute alanları Transition.travel_duration, Visit.start_time ve vehicle_end_time hesaplanırken, ShipmentRoute.has_traffic_infeasibilities alanı ayarlanırken ve OptimizeToursResponse.total_cost alanı hesaplanırken trafik tahmini dikkate alınır.

populate_polylines

bool

Doğru ise yanıtlarda çoklu çizgiler doldurulur ShipmentRoute.

populate_transition_polylines

bool

Doğru ise yanıtta çoklu çizgiler ve rota jetonları doldurulur ShipmentRoute.transitions.

allow_large_deadline_despite_interruption_risk

bool

Bu ayar belirlenirse isteğin son tarihi (https://grpc.io/blog/deadlines adresine bakın) 60 dakikaya kadar olabilir. Aksi takdirde, maksimum süre yalnızca 30 dakikadır. Uzun süreli isteklerin kesintiye uğrama riskinin çok daha yüksek (ancak yine de düşük) olduğunu unutmayın.

use_geodesic_distances

bool

Doğru ise seyahat mesafeleri Google Haritalar mesafeleri yerine jeodezik mesafeler kullanılarak hesaplanır ve seyahat süreleri, geodesic_meters_per_second tarafından tanımlanan bir hızla jeodezik mesafeler kullanılarak hesaplanır.

label

string

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

geodesic_meters_per_second

double

use_geodesic_distances true olduğunda bu alanın ayarlanması gerekir 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, solving_mode=VALIDATE_ONLY olmadığı sürece genellikle 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'dür ve 10.000 ile sınırlıdır.

SearchMode

Aramanın davranışını tanımlayan mod. Gecikme ile çözüm kalitesi arasında denge kurar. Tüm modlarda genel istek son tarihi uygulanır.

Sıralamalar
SEARCH_MODE_UNSPECIFIED Belirtilmemiş arama modu, RETURN_FAST ile eşdeğer.
RETURN_FAST İlk iyi çözümü bulduktan sonra aramayı durdurun.
CONSUME_ALL_AVAILABLE_TIME Daha iyi çözümler bulmak için mevcut zamanın tamamını harcamak

SolvingMode

Çözücünün isteği nasıl işlemesi gerektiğini tanımlar. VALIDATE_ONLY hariç tüm modlarda, istek geçersizse INVALID_REQUEST hatası alırsınız. Döndürülen hata sayısını sınırlamak için max_validation_errors bölümüne bakın.

Sıralamalar
DEFAULT_SOLVE Modeli çözün. [OptimizeToursResponse.validation_errors][google.cloud.optimization.v1.OptimizeToursResponse.validation_errors] içinde uyarılar verilebilir.
VALIDATE_ONLY Modeli çözmeden yalnızca doğrular: Mümkün olduğunca çok 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 (yanıtta status ve routes ayarlanmaz). injected_solution_constraint rotada uygunsuzluklar tespit edilirse bunlar OptimizeToursResponse.validation_errors alanına doldurulur ve OptimizeToursResponse.skipped_shipments boş bırakılır.

ÖNEMLİ: Uygun olmayan tüm gönderiler burada döndürülmez. Yalnızca ön işleme sırasında uygun olmadığı tespit edilen gönderiler döndürülür.

TRANSFORM_AND_RETURN_REQUEST

Bu mod yalnızca ShipmentModel.objectives boş değilse çalışır. İstek çözülmedi. Yalnızca doğrulanır ve belirli hedeflere karşılık gelen maliyetlerle doldurulur. ShipmentModel.objectives ile ilgili belgelere de göz atın. Sonuçta elde edilen istek OptimizeToursResponse.processed_request olarak döndürülür.

Deneysel: Daha fazla bilgi için https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request adresini ziyaret edin.

OptimizeToursResponse

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

Alanlar
routes[]

ShipmentRoute

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

request_label

string

İstekte bir etiket belirtilmişse OptimizeToursRequest.label 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. OptimizeToursValidationError mesajı için "MULTIPLE ERRORS" açıklamasına bakın. solving_mode, DEFAULT_SOLVE olduğunda hatalar yerine uyarılar gösterilir.

processed_request

OptimizeToursRequest

Bazı durumlarda, gelen isteği çözmeden önce değiştiririz (ör. maliyet ekleriz). solving_mode == TRANSFORM_AND_RETURN_REQUEST ise değiştirilen istek burada döndürülür.

Deneysel: Daha fazla bilgi için https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request adresini ziyaret edin.

metrics

Metrics

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

Metrikler

Tüm rotalar üzerinden toplanan genel metrikler.

Alanlar
aggregated_route_metrics

AggregatedMetrics

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

skipped_mandatory_shipment_count

int32

Atlanan zorunlu gönderim sayısı.

used_vehicle_count

int32

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

earliest_vehicle_start_time

Timestamp

İkinci el araçlar için en erken başlangıç zamanı. Tüm ikinci el araçların ShipmentRoute.vehicle_start_time değerinin minimumu olarak hesaplanır.

latest_vehicle_end_time

Timestamp

Kullanılan bir araç için en geç bitiş zamanı. Tüm kullanılan araçların maksimum ShipmentRoute.vehicle_end_time değeri olarak hesaplanır.

costs

map<string, double>

Çözümün maliyetle ilgili istek alanlarına göre dökümü alınmış maliyeti. Anahtarlar, giriş OptimizeToursRequest'e göre proto yollarıdır (ör. "model.shipments.pickups.cost"). Değerler ise ilgili maliyet alanı tarafından oluşturulan ve tüm çözüm genelinde toplanan toplam maliyettir. Başka bir deyişle, costs["model.shipments.pickups.cost"], çözümdeki tüm teslim alma masraflarının toplamıdır. Modelde tanımlanan tüm maliyetler, yalnızca 2022/01 itibarıyla 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ı.

OptimizeToursUriMetadata

Bu türün alanı yok.

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

OptimizeToursUriRequest

OptimizeToursUri yöntemi tarafından kullanılan bir istek.

Alanlar
parent

string

Zorunlu. Arama yapmak için hedef projeyi veya konumu seçin.

Biçim:

  • projects/{project-id}
  • projects/{project-id}/locations/-

Bölgesel {location-id} değerleri desteklenmez.

input

Uri

Zorunlu. OptimizeToursRequest içeren Cloud Storage nesnesinin URI'si.

output

Uri

Zorunlu. OptimizeToursResponse öğesini içerecek Cloud Storage nesnesinin URI'si.

OptimizeToursUriResponse

OptimizeToursUri yöntemi tarafından döndürülen yanıt.

Alanlar
output

Uri

İsteğe bağlıdır. JSON veya textproto olarak kodlanmış OptimizeToursResponse içeren Cloud Storage nesnesinin URI'si. Nesne JSON olarak kodlandıysa nesne adının uzantısı .json olur. Nesne, textproto olarak kodlanmışsa nesne adının uzantısı .txtpb olur.

Kaynağın crc32_checksum değeri, kaynak içeriğinin değiştirilmediğini doğrulamak için kullanılabilir.

OptimizeToursValidationError

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

Alanlar
code

int32

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

Bu bölümden sonraki alanlar, hatayla ilgili daha fazla bilgi sağlar.

BİRDEN FAZLA HATA: Birden fazla hata olduğunda doğrulama işlemi, bunlardan birkaçını göstermeye çalışır. Derleyicilerde olduğu gibi bu da kusursuz bir süreç değildir. Bazı doğrulama hataları "önemli"dir. Bu hatalar, doğrulama sürecinin tamamını durdurur. Bu durum, display_name="UNSPECIFIED" hataları için de geçerlidir. Bazı hatalar, doğrulama işleminin diğer hataları atlamasına neden olabilir.

KARARLILIK: code ve display_name çok kararlı olmalıdır. Ancak zaman içinde yeni kodlar ve görünen adlar görünebilir. Bu durum, yeni hata eskisini gizlediği için belirli bir (geçersiz) isteğin farklı bir (code, display_name) çifti oluşturmasına neden olabilir. Örneğin, "MULTIPLE ERRORS" (BİRDEN FAZLA HATA) ifadesini görebilirsiniz.

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ı araca ve 2 numaralı gönderinin ilk teslim alma işlemine şu şekilde referans verilebilir:

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

Ancak fields öğesinin kardinalitesinin belirli bir hata kodu için 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 bire bir eşleme vardır (kod != "UNSPECIFIED" olduğunda).

KARARLILIK: Kararlı değil: Belirli bir code ile ilişkili hata mesajı zaman içinde değişebilir (daha net hale getirmek için). Lütfen bunun yerine display_name ve code kullanın.

offending_values

string

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

FieldReference

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

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

Ancak mesajın kalabalık görünmemesi için OptimizeToursRequest veya ShipmentModel gibi üst düzey varlıkları dahil etmiyoruz.

Alanlar
name

string

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

sub_field

FieldReference

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

index_or_key birleşik alanı.

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

index

int32

Yineleniyorsa 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ış verisi biçimi.

destination birleşik alanı. Zorunlu. destination aşağıdakilerden yalnızca biri olabilir:
gcs_destination

GcsDestination

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

RouteModifiers

Araç rotaları hesaplanırken karşılanması gereken bir dizi isteğe bağlı koşulu kapsar. Bu, Google Haritalar Platformu Routes Preferred API'deki RouteModifiers ile benzerdir. https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers adresini inceleyin.

Alanlar
avoid_tolls

bool

Mümkün olduğunda paralı yollardan kaçınılıp kaçınılmayacağını belirtir. Paralı yol içermeyen rotalara öncelik verilir. Yalnızca motorlu seyahat modları için geçerlidir.

avoid_highways

bool

Mümkün olduğunda otoyollardan kaçınılıp kaçınılmayacağını belirtir. Otoyol içermeyen rotalara öncelik verilir. Yalnızca motorlu seyahat modları için geçerlidir.

avoid_ferries

bool

Mümkün olduğunda feribotlardan kaçınılıp kaçınılmayacağını belirtir. Feribotla seyahat içermeyen rotalara öncelik verilir. Yalnızca motorlu seyahat modları için geçerlidir.

avoid_indoor

bool

İsteğe bağlıdır. Mümkün olduğunda kapalı alanlarda gezinmekten kaçınılıp kaçınılmayacağını belirtir. Bina içi navigasyon içermeyen rotalara öncelik verilir. Yalnızca WALKING seyahat modu için geçerlidir.

Gönderim

Tek bir öğenin, teslim alma noktalarından birinden teslimat noktalarından birine gönderilmesi. Sevkiyatın gerçekleştirilmiş sayılması için benzersiz bir aracın, sevkiyatın teslim alma konumlarından birini ziyaret etmesi (ve yedek kapasitelerini buna göre azaltması), ardından teslimat konumlarından birini ziyaret etmesi (ve yedek kapasitelerini buna göre yeniden artırması) gerekir.

Alanlar
display_name

string

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

pickups[]

VisitRequest

Gönderiyle ilişkili teslim alma alternatifleri grubu. Belirtilmezse aracın yalnızca teslimatlara karşılık gelen bir konumu ziyaret etmesi gerekir.

deliveries[]

VisitRequest

Gönderiyle ilişkili teslimat alternatifleri grubu. Belirtilmezse aracın yalnızca teslim alma işlemlerine karşılık gelen bir konumu ziyaret etmesi gerekir.

load_demands

map<string, Load>

Gönderinin yük talepleri (ör. ağırlık, hacim, palet sayısı vb.) Eşlemedeki anahtarlar, ilgili yükün türünü açıklayan tanımlayıcılar olmalıdır. İdeal olarak birimleri de içermelidir. Örneğin: "weight_kg", "volume_gallons", "pallet_count" vb. Belirli bir anahtar haritada görünmüyorsa ilgili yük boş olarak kabul edilir.

allowed_vehicle_indices[]

int32

Bu sevkiyatı gerçekleştirebilecek araç grubu. Boş bırakılırsa tüm araçlar bu görevi gerçekleştirebilir. Araçlar, ShipmentModel öğesinin vehicles listesindeki dizinleriyle verilir.

costs_per_vehicle[]

double

Bu gönderi her bir araç tarafından teslim edildiğinde ortaya çıkan maliyeti belirtir. Belirtilmesi durumunda şunlardan biri olmalıdır:

  • costs_per_vehicle_indices ile aynı sayıda öğe içermelidir. costs_per_vehicle[i], modelin costs_per_vehicle_indices[i] aracına karşılık gelir.
  • Modeldeki araç sayısı kadar öğe içermelidir. i. öğe, modelin i numaralı aracına karşılık gelir.

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

costs_per_vehicle_indices[]

int32

costs_per_vehicle kısıtlamasının 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. Bir araç costs_per_vehicle_indices kapsamı dışında tutulursa maliyeti sıfır olur.

pickup_to_delivery_absolute_detour_limit

Duration

Teslim alma noktasından teslimat noktasına kadar olan en kısa yola kıyasla maksimum mutlak sapma süresini belirtir. Belirtilmişse negatif olmamalı ve gönderi en az bir teslim alma ve bir 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 ayarı şunları zorunlu kılar:

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

Aynı gönderi için hem göreceli hem de mutlak sınırlar belirtilirse her olası teslim alma/teslimat çifti için daha kısıtlayıcı sınır kullanılır. Ekim 2017 itibarıyla, sapmalar yalnızca seyahat süreleri araçlara bağlı olmadığında desteklenir.

pickup_to_delivery_time_limit

Duration

Bir gönderinin teslim alma başlangıcından teslimat başlangıcına kadar geçen maksimum süreyi belirtir. Belirtilmişse negatif olmamalı ve gönderi en az bir teslim alma ve bir teslimat içermelidir. Bu durum, teslim alma ve teslimat için hangi alternatiflerin seçildiğine veya araç 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önderi için "tür" belirten boş olmayan dize. Bu özellik, shipment_types arasındaki uyumsuzlukları veya gereksinimleri tanımlamak için kullanılabilir (ShipmentModel içindeki shipment_type_incompatibilities ve shipment_type_requirements bölümlerine bakın).

Tek bir ziyaret için belirtilen visit_types değerinden farklıdır: Aynı gönderiye ait tüm teslim alma/teslimat işlemleri aynı shipment_type değerini paylaşır.

label

string

Bu gönderi için bir etiket belirtir. Bu etiket, ilgili ShipmentRoute.Visit öğesinin shipment_label alanındaki yanıtta bildirilir.

ignore

bool

Doğru ise bu gönderiyi atla ancak penalty_cost uygulama.

Modelde shipment_type_requirements varsa bir gönderinin yoksayılması doğrulama hatasına neden olur.

injected_first_solution_routes veya injected_solution_constraint içinde gerçekleştirilen bir sevkiyatın yoksayılmasına izin verilir. Çözücü, ilgili teslim alma/teslimat ziyaretlerini gerçekleştirme rotasından kaldırır. Yoksayılan gönderilere referans veren precedence_rules da yoksayılır.

penalty_cost

double

Gönderim tamamlanmazsa bu ceza, rotaların toplam maliyetine eklenir. Teslim alma ve teslimat alternatiflerinden biri ziyaret edilirse gönderi tamamlanmış kabul edilir. Maliyet, modeldeki maliyetle ilgili diğer tüm alanlar için kullanılan birimle ifade edilebilir ve pozitif olmalıdır.

ÖNEMLİ: Bu ceza belirtilmezse sonsuz olarak kabul edilir. Diğer bir deyişle, gönderimin tamamlanması gerekir.

pickup_to_delivery_relative_detour_limit

double

Teslim alma noktasından teslimat noktasına kadar olan en kısa yola kıyasla maksimum göreceli sapma süresini belirtir. Belirtilmişse negatif olmamalı ve gönderi en az bir teslim alma ve bir 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önderi için hem göreceli hem de mutlak sınırlar belirtilirse her olası teslim alma/teslimat çifti için daha kısıtlayıcı sınır kullanılır. Ekim 2017 itibarıyla, sapmalar yalnızca seyahat süreleri araçlara bağlı olmadığında desteklenir.

Yükleme

Ziyaret gerçekleştirilirken, teslim alma işlemi söz konusuysa araç yüküne önceden tanımlanmış bir miktar eklenebilir veya teslimat söz konusuysa bu miktar çıkarılabilir. Bu mesajda söz konusu tutar belirtilir. Şu sayfaya göz atın: load_demands.

Alanlar
amount

int64

İlgili ziyareti gerçekleştiren aracın yükünün değişeceği miktar. Bu değer bir tam sayı olduğundan, kullanıcıların hassasiyet kaybını önlemek için uygun bir birim seçmeleri önerilir. 0'dan büyük veya 0'a eşit olmalıdır.

VisitRequest

Bir araç tarafından gerçekleştirilebilecek ziyaret isteği: Coğrafi konumu (veya iki konumu, aşağıya bakın), zaman aralıklarıyla temsil edilen açılış ve kapanış saatleri ve hizmet süresi (araç, ürünleri almak veya bırakmak için ulaştıktan sonra harcanan süre) vardır.

Alanlar
arrival_location

LatLng

Aracın bu VisitRequest işlemini gerçekleştirirken ulaştığı coğrafi konum. Gönderi modelinde süre mesafe matrisleri varsa arrival_location belirtilmemelidir.

arrival_waypoint

Waypoint

Aracın bu VisitRequest işlemini gerçekleştirirken ulaştığı ara nokta. Gönderi modelinde süre mesafe matrisleri varsa arrival_waypoint belirtilmemelidir.

departure_location

LatLng

Aracın bu VisitRequest tamamlandıktan sonra 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

Aracın bu VisitRequest tamamlandıktan sonra ayrıldığı ara nokta. arrival_waypoint ile aynıysa atlanabilir. Gönderi modelinde 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ış zamanını kısıtlayan zaman aralıkları. Bir aracın varış zaman aralığının dışında hareket edebileceğini unutmayın. Diğer bir deyişle, varış zamanı + sürenin bir zaman aralığı içinde olması gerekmez. Araç TimeWindow.start_time tarihinden önce gelirse bekleme süresi olabilir.

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

Zaman aralıkları ayrık olmalıdır. Yani hiçbir zaman aralığı birbiriyle çakışmamalı veya bitişik olmamalı 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, yani aracın varış ve ayrılış arasında geçirdiği süre (olası bekleme süresine eklenir; bkz. time_windows).

cost

double

Bir araç rotasında bu ziyaret isteğini yerine getirmenin maliyeti. Bu, 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 yük talepleri. Bu, Shipment.load_demands alanına benzer ancak tüm Shipment yerine yalnızca bu VisitRequest için geçerlidir. Burada listelenen talepler, Shipment.load_demands içinde listelenen taleplere eklenir.

visit_types[]

string

Ziyaret türlerini belirtir. Bu, bir aracın bu ziyareti tamamlaması için gereken ek süreyi tahsis etmek amacıyla kullanılabilir (bkz. Vehicle.extra_visit_duration_for_visit_type).

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

avoid_u_turns

bool

Bu konumdaki sürüş rotalarında U dönüşlerinden kaçınılıp kaçınılmayacağını belirtir. U dönüşünden kaçınma özelliği, en iyi sonucu vermeye çalışır ancak tamamen kaçınma garanti edilmez. Bu, deneysel bir özelliktir ve davranışında değişiklikler olabilir.

Deneysel: Daha fazla bilgi için https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request adresini ziyaret edin.

ShipmentModel

Gönderi modeli, bir dizi araç tarafından gerçekleştirilmesi gereken bir dizi gönderi içerir. Bu sırada, aşağıdakilerin toplamı olan genel maliyet en aza indirilir:

  • Araçların rotasını belirleme maliyeti (toplam süre başına maliyet, seyahat süresi başına maliyet ve tüm araçlar için sabit maliyetin toplamı).
  • gönderim cezaları uygulanır.
  • gönderimlerin toplam süresinin maliyeti
Alanlar
shipments[]

Shipment

Modelde gerçekleştirilmesi gereken gönderi grubu.

vehicles[]

Vehicle

Ziyaretleri gerçekleştirmek için kullanılabilecek araçlar.

objectives[]

Objective

Bu model için maliyetlere dönüştüreceğimiz hedef grubu. Boş değilse giriş modeli ücretsiz olmalıdır. Değiştirilen isteği almak için lütfen solving_mode = TRANSFORM_AND_RETURN_REQUEST kullanın. Bu durumda isteğin çözüme kavuşturulmayacağını unutmayın. İlgili belgelere bakın.

Deneysel: Daha fazla bilgi için https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request adresini ziyaret edin.

global_start_time

Timestamp

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

Modelin zaman aralığı bir yıldan kısa olmalıdır. Diğer bir deyişle, global_end_time ve global_start_time arasındaki fark 31.536.000 saniyeden az olmalıdır.

cost_per_*hour alanlarını kullanırken performansı artırmak için bu zaman aralığını daha küçük bir aralığa ayarlamak isteyebilirsiniz (ör. tek bir günü modelliyorsanız genel zaman sınırlarını o güne ayarlamanız gerekir). Ayarlanmazsa varsayılan olarak 00:00:00 UTC, 1 Ocak 1970 (yani saniye: 0, nanosaniye: 0) kullanılır.

global_end_time

Timestamp

Ayarlanmazsa varsayılan olarak 1 Ocak 1971, 00:00:00 UTC (yani saniye: 31536000, nanosaniye: 0) kullanılır.

global_duration_cost_per_hour

double

Genel planın "global süresi", tüm araçların en erken geçerli başlangıç zamanı ile en geç geçerli bitiş zamanı arasındaki farktır. Kullanıcılar, işi en kısa sürede tamamlamak için optimizasyon yapmak amacıyla bu miktara saatlik 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 Google Haritalar veya jeodezik mesafeler kullanılır. Boş değilse use_geodesic_distances doğru olamaz ve duration_distance_matrix_src_tags ile duration_distance_matrix_dst_tags boş olamaz.

Kullanım örnekleri:

  • İki konum vardır: locA ve locB.
  • 1 araç, rotasına locA'da başlayıp locA'da bitiriyor.
  • locB konumunda 1 teslim alma ziyareti 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 var: locA, locB ve locC.
  • "fast" matrisini kullanarak rotasına locA'da başlayıp locB'de bitiren 1 araç.
  • 1 araç, "yavaş" matrisini kullanarak rotasına locB'de başlayıp locB'de bitiriyor.
  • "Hızlı" matrisini kullanarak rotasına locB'de başlayıp locB'de biten 1 araç.
  • locC konumunda 1 teslim alma ziyareti 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) etiketli ziyaretlerden i matrisindeki diğer ziyaretlere olan süreleri ve mesafeleri tanımlar.

Etiketler VisitRequest.tags veya Vehicle.start_tags ile ilgilidir. Belirli bir VisitRequest veya Vehicle, bu alandaki tam olarak bir etiketle eşleşmelidir. Vehicle'nin kaynak, hedef ve matris etiketlerinin aynı olabileceğini, benzer şekilde VisitRequest'nin kaynak ve hedef etiketlerinin de aynı olabileceğini unutmayın. Tüm etiketler farklı olmalıdır ve boş dize olamaz. Bu alan boş değilse duration_distance_matrices 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) (veya duration_distance_matrices(i).rows(j).meters(k)), i matrisinde duration_distance_matrix_src_tags(j) etiketli ziyaretlerden duration_distance_matrix_dst_tags(k) etiketli ziyaretlere yapılan seyahatin süresini (veya mesafesini) tanımlar.

Etiketler VisitRequest.tags veya Vehicle.start_tags ile ilgilidir. Belirli bir VisitRequest veya Vehicle, bu alandaki tam olarak bir etiketle eşleşmelidir. Vehicle'nin kaynak, hedef ve matris etiketlerinin aynı olabileceğini, benzer şekilde VisitRequest'nin kaynak ve hedef etiketlerinin de aynı olabileceğini unutmayın. 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 kümeleri (ShipmentTypeIncompatibility bölümüne bakın).

shipment_type_requirements[]

ShipmentTypeRequirement

shipment_type şartları (ShipmentTypeRequirement bölümüne bakın).

precedence_rules[]

PrecedenceRule

Modelde uygulanması gereken öncelik kuralları kümesi.

ÖNEMLİ: Öncelik kurallarının kullanılması, optimize edilebilecek sorunun boyutunu sınırlar. Çok sayıda gönderi içeren öncelik kurallarını kullanan istekler reddedilebilir.

max_active_vehicles

int32

Etkin araçların maksimum sayısını kısıtlar. Rotası en az bir sevkiyat gerçekleştiriyorsa araç etkindir. Bu, sürücü sayısının araç sayısından az olduğu ve araç filosunun heterojen olduğu durumlarda rota sayısını sınırlamak için kullanılabilir. Optimizasyon, kullanılacak en iyi araç alt kümesini seçer. Kesinlikle pozitif olmalıdır.

DurationDistanceMatrix

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

Alanlar
rows[]

Row

Süre ve mesafe matrisinin satırlarını belirtir. ShipmentModel.duration_distance_matrix_src_tags kadar öğeye sahip olmalıdır.

vehicle_start_tag

string

Bu süre ve mesafe matrisinin hangi araçlar için geçerli olduğunu tanımlayan etiket. Boş bırakılırsa bu, tüm araçlar için geçerli olur ve yalnızca tek bir matris olabilir.

Her araç başlangıcı tam olarak bir matrisle eşleşmelidir. Yani start_tags alanlarından tam olarak biri, bir matrisin (ve yalnızca o matrisin) vehicle_start_tag değeriyle eşleşmelidir.

Tüm matrislerin farklı bir vehicle_start_tag değeri olmalıdır.

Satır

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

Alanlar
durations[]

Duration

Belirli bir satırın süre değerleri. ShipmentModel.duration_distance_matrix_dst_tags kadar öğeye sahip olmalıdır.

meters[]

double

Belirli bir satırın mesafe değerleri. Modeldeki mesafelerle ilgili herhangi bir maliyet veya kısıtlama yoksa bu alan boş bırakılabilir. Aksi takdirde, durations kadar öğe içermelidir.

Hedef

Hedefler, maliyet modelinin yerini tamamen alır ve bu nedenle önceden var olan maliyetlerle uyumlu değildir. Her hedef, önceden tanımlanmış bir dizi maliyetle (ör. araçlar, gönderiler veya geçiş özellikleri) eşlenir.

Deneysel: Daha fazla bilgi için https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request adresini ziyaret edin.

Alanlar
type

Type

Hedefin türü.

weight

double

Bu hedefin diğerlerine kıyasla ne kadar önemli olduğu. Bu, negatif olmayan herhangi bir sayı olabilir. Ağırlıkların toplamının 1 olması gerekmez. Ağırlıklar varsayılan olarak 1,0 değerine ayarlanır.

Tür

Bir maliyet grubuyla eşlenecek hedef türü.

Sıralamalar
DEFAULT Makul bir çözüm sağlamak için varsayılan bir maliyet grubu kullanılır. Not: Bu hedef tek başına kullanılabilir ancak kullanıcı tarafından belirtilen hedeflere her zaman 1,0 ağırlıkla eklenir (henüz mevcut değilse).
MIN_DISTANCE "MIN" hedefleri. Katedilen toplam mesafeyi en aza indirin.
MIN_WORKING_TIME Tüm araçların toplam çalışma süresini en aza indirin.
MIN_TRAVEL_TIME Yukarıdakiyle aynıdır ancak yalnızca seyahat süresine odaklanır.
MIN_NUM_VEHICLES Kullanılan araç sayısını en aza indirme

PrecedenceRule

İki etkinlik arasındaki öncelik kuralı (her etkinlik, bir gönderinin teslim alınması veya teslim edilmesidir): "İkinci" etkinlik, "birinci" etkinlik başladıktan en az offset_duration sonra başlamalıdır.

Birden fazla öncelik aynı (veya ilgili) etkinliklere başvurabilir. Örneğin, "B'nin teslim alınması, A'nın teslimatından sonra gerçekleşir" ve "C'nin teslim alınması, B'nin teslim alınmasından sonra gerçekleşir".

Ayrıca, öncelikler yalnızca her iki gönderim de gerçekleştirildiğinde geçerli olur, aksi takdirde yoksayılır.

Alanlar
first_is_delivery

bool

"İlk" etkinliğin teslimat olup olmadığını gösterir.

second_is_delivery

bool

"İkinci" etkinliğin bir teslimat olup olmadığını gösterir.

offset_duration

Duration

"İlk" ve "ikinci" etkinlik arasındaki fark. Negatif olabilir.

first_index

int32

"İlk" etkinliğin gönderi dizini. Bu alan belirtilmelidir.

second_index

int32

"İkinci" etkinliğin gönderi dizini. Bu alan belirtilmelidir.

ShipmentRoute

Bir aracın rotası, zaman ekseni boyunca şu şekilde ayrıştırılabilir (n ziyaret olduğunu varsayıyoruz):

  |            |            |          |       |  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 ayrım yaptığımızı unutmayın:

  • Aracın başlangıç ve bitişi ile her ziyaretin başlangıç ve bitişi (varış ve ayrılış olarak da bilinir) gibi "dakik etkinlikler". Belirli bir saniyede gerçekleşirler.
  • "zaman aralıkları" (ör. ziyaretlerin kendileri ve ziyaretler arasındaki geçiş) Zaman aralıklarının süresi bazen sıfır olabilir (ör. aynı saniyede başlayıp biter) ancak genellikle pozitif bir süreye sahiptir.

Değişmezler:

  • n ziyaret varsa n+1 geçiş vardır.
  • Bir ziyaret her zaman öncesinde bir geçiş (aynı dizin) ve sonrasında bir geçiş (dizin + 1) ile çevrilidir.
  • Araç çalıştırma işlemini her zaman 0 numaralı geçiş takip eder.
  • Araç bitişinden önce her zaman geçiş #n gelir.

Yakından incelediğimizde, Transition ve Visit sırasında şunlar gerçekleşir:

---+-------------------------------------+-----------------------------+-->
   |           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, MOLA, GECİKME ve BEKLEME durumlarının nasıl düzenlenebileceğini aşağıda görebilirsiniz.

  • Çakışmazlar.
  • DELAY benzersizdir ve bir sonraki ziyaretten (veya araç bitişinden) hemen önce bitişik bir zaman dilimi olmalıdır. Bu nedenle, başlangıç ve bitiş zamanını öğrenmek için gecikme süresini bilmek yeterlidir.
  • BREAKS, bitişik ve çakışmayan zaman dilimleridir. Yanıtta her molanın başlangıç zamanı ve süresi belirtiliyor.
  • TRAVEL ve WAIT "kesintiye uğratılabilir" durumdadır: 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ştiğini ve kalan sürenin "bekleme" ile doldurulduğunu varsayabilir.

Karmaşık bir ö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ç, kaynak ShipmentModel içindeki diziniyle tanımlanır.

vehicle_label

string

Belirtilmişse bu rotayı izleyen aracın etiketi (ShipmentModel.vehicles(vehicle_index).label değerine eşittir).

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. visits[i], rotadaki i. ziyarettir. Bu alan boşsa araç kullanılmamış olarak kabul edilir.

transitions[]

Transition

Rota için sıralı geçiş listesi.

has_traffic_infeasibilities

bool

OptimizeToursRequest.consider_road_traffic, "true" olarak 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. Ziyaret ve araç zaman aralıkları karşılanırken ilk ziyaretten önce veya son ziyaretten sonra trafiğe göre ayarlanmış seyahat, gecikme ve ziyaretler arasındaki molaları tamamlamak için yeterli süre olmayabilir. Örneğin,

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

Trafik nedeniyle seyahat süresi tahmini travel_duration(previous_visit, next_visit) arttığından, next_visit noktasına varış muhtemelen mevcut zaman aralığından daha geç gerçekleşecek. Ayrıca, seyahat süresi tahminlerindeki artış ve ziyaret veya mola zaman aralığı kısıtlamaları nedeniyle bir mola, ziyaretle çakışmaya zorlanabilir.

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ı izleyen araç için planlanan molalar. breaks dizisi, her biri ilgili start_time değerinde 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 için toplanır.

vehicle_fullness

VehicleFullness

VehicleFullness alanı, sınırlı metriklerin ilgili araç sınırlarına ne kadar yakın olduğunu hesaplamak için kullanılır. Alanları, sınırlı bir metrik alanı (ör. AggregatedMetrics.travel_distance_meters) ile ilgili araç sınırı (ör. Vehicle.route_distance_limit) arasındaki oranlardır.

Deneysel: Bu alanın davranışı veya varlığı gelecekte değişebilir.

route_costs

map<string, double>

Maliyetle ilgili istek alanlarına göre dökümü alınmış rota maliyeti. Anahtarlar, giriş OptimizeToursRequest'e göre proto yollarıdır (ör. "model.shipments.pickups.cost"). Değerler ise ilgili maliyet alanı tarafından oluşturulan ve tüm rota üzerinden toplanan toplam maliyettir. Diğer bir deyişle, costs["model.shipments.pickups.cost"], rota üzerindeki tüm teslim alma masraflarının toplamıdır. Modelde tanımlanan tüm maliyetler, yalnızca 2022/01 itibarıyla toplu olarak raporlanan TransitionAttributes ile ilgili maliyetler hariç olmak üzere burada ayrıntılı olarak raporlanır.

route_total_cost

double

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

Ara

Bir aranın yürütülmesini temsil eden veriler.

Alanlar
start_time

Timestamp

Aranın başlangıç zamanı.

duration

Duration

Molanın süresi.

EncodedPolyline

Çoklu çizginin kodlanmış temsili. Çoklu çizgi kodlama hakkında daha fazla bilgiyi https://developers.google.com/maps/documentation/utilities/polylinealgorithm https://developers.google.com/maps/documentation/javascript/reference/geometry#encoding adresinde bulabilirsiniz.

Alanlar
points

string

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

Geçiş

Rotadaki iki etkinlik arasında geçiş. ShipmentRoute açıklamasını inceleyin.

Araçta start_location ve/veya end_location yoksa ilgili seyahat metrikleri 0 olur.

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

Trafik OptimizeToursRequest.consider_road_traffic üzerinden istendiğinde ve trafik bilgileri Transition için alınamadığında bu boole değeri "true" olarak ayarlanır. Bu durum geçici (gerçek zamanlı trafik sunucularında nadiren 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ı. Gecikme varsa bir sonraki etkinlikten (ziyaret veya araç sonu) tam olarak delay_duration saniye önce başlar. Şu sayfaya göz atın: TransitionAttributes.delay.

break_duration

Duration

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

wait_duration

Duration

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

total_duration

Duration

Geçişin toplam süresi (kolaylık sağlamak için verilmiştir). Şuna eşittir:

  • sonraki ziyaret start_time (veya bu son geçişse vehicle_end_time) - bu geçişin start_time;
  • ShipmentRoute.has_traffic_infeasibilities yanlışsa aşağıdakiler de geçerlidir: `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 izlenen rotanın kodlanmış çoklu çizgi gösterimi. Bu alan yalnızca populate_transition_polylines doğru değerine ayarlanırsa doldurulur.

route_token

string

Yalnızca çıkış. Navigasyon sırasında rotayı yeniden oluşturmak ve yeni rota çizilmesi durumunda rota oluşturulurkenki asıl niyeti dikkate almak için Navigation SDK'ya iletilebilen opak bir jeton. Bu jetonu opak bir blob olarak değerlendirin. Hizmet tam olarak aynı rotayı döndürse bile değeri değişebileceğinden, istekler arasında değerini karşılaştırmayın. 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, bu aracın Vehicle.load_limits değerinde görünen veya bu rotada gerçekleştirilen bazı gönderilerde sıfır olmayan Shipment.load_demands değerine sahip her tür için araç yükleri.

İlk geçiş sırasındaki yükler, araç rotasının başlangıç yükleridir. Ardından, her ziyaretten sonra, ziyaretin load_demands, ziyaretin teslim alma veya teslimat olmasına bağlı olarak bir sonraki geçişin yüklerini elde etmek için eklenir veya çıkarılır.

VehicleLoad

Belirli bir tür için rota boyunca bir noktada aracın gerçek yükünü bildirir (Transition.vehicle_loads bölümüne bakın).

Alanlar
amount

int64

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

Ziyaret edin

Rota sırasında yapılan ziyaret. Bu ziyaret, bir Shipment teslim alma veya teslim etme işlemine karşılık gelir.

Alanlar
shipment_index

int32

Kaynak ShipmentModel içindeki shipments alanının dizini.

is_pickup

bool

Doğruysa ziyaret, Shipment teslim alma işlemine karşılık gelir. Aksi takdirde bir teslimata karşılık 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 yerine bu saatten daha erken varabileceğini unutmayın. Saatler ShipmentModel ile tutarlıdır.

load_demands

map<string, Load>

Toplam ziyaret yükü talebi, gönderi ve ziyaret isteğinin toplamıdır load_demands. Ziyaret bir teslimat ise değerler negatiftir. Talepler, Transition.loads ile aynı türler için raporlanır (bu alana bakın).

detour

Duration

Ziyaretten önce rotada ziyaret edilen gönderiler ve zaman aralıklarının neden olduğu potansiyel bekleme süresi nedeniyle ek rota değiştirme süresi. Ziyaret bir teslimat ise sapma, ilgili teslim alma ziyaretinden 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, araç start_location değerinden 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 içinde belirtilmişse ilgili Shipment.label öğesinin kopyası.

visit_label

string

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

visit_type

VisitType

İsteğe bağlıdır. Ziyaretin türünü belirtir. Visit.is_pickup alanını geçersiz kılar.

injected_solution_location_token

int32

Ziyaret edilen konumla ilgili bilgileri temsil eden opak bir jeton.

Bu ziyaret için VisitRequest.avoid_u_turns true olarak ayarlandıysa veya OptimizeToursRequest isteğinde ShipmentModel.avoid_u_turns true olarak ayarlandıysa bu alan, sonuç rotalarının ziyaretlerinde doldurulabilir.

Deneysel: Daha fazla bilgi için https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request adresini ziyaret edin.

VisitType

Ziyaretin teslim alma, teslimat veya Stop ziyareti olup olmadığını gösterir. Bir durağa yapılan ziyaretler yalnızca çoklu mod optimizasyonu etkinleştirildiğinde kullanılır.

Sıralamalar
VISIT_TYPE_UNSPECIFIED Ziyaret türü belirtilmedi.
PICKUP_SHIPMENT Ziyaret, gönderinin teslim alınmasına karşılık gelir.
DELIVER_SHIPMENT Ziyaret, gönderi teslimatına karşılık gelir.

ShipmentTypeIncompatibility

Gönderilerin shipment_type değerine bağlı olarak gönderiler arasındaki uyumsuzlukları belirtir. Uyumsuz gönderilerin aynı rotada görünmesi, uyumsuzluk moduna göre kısıtlanır.

Alanlar
types[]

string

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

incompatibility_mode

IncompatibilityMode

Uyumsuzluğa uygulanan mod.

IncompatibilityMode

Uyumsuz gönderilerin görünümünün 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önderi hiçbir zaman aynı aracı paylaşamaz.
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY

Bu modda, uyumsuz türlere sahip iki gönderi hiçbir zaman aynı anda aynı araçta bulunamaz:

  • Aynı aracı yalnızca biri teslim edildikten sonra diğeri teslim alınacaksa paylaşabilirler.
  • Her iki gönderi de yalnızca teslim alma (teslimat yok) veya yalnızca teslimat (teslim alma yok) ise aynı aracı paylaşamaz.

ShipmentTypeRequirement

shipment_type değerine göre gönderiler arasındaki koşulları belirtir. Şartın ayrıntıları, şart modu tarafından tanımlanır.

Alanlar
required_shipment_type_alternatives[]

string

dependent_shipment_types için gereken alternatif gönderim türlerinin listesi.

dependent_shipment_types[]

string

dependent_shipment_types alanında bir tür bulunan tüm gönderiler için aynı rotada en az bir required_shipment_type_alternatives türü gönderinin ziyaret edilmesi gerekir.

NOT: Bir shipment_type öğesinin kendisine bağlı olduğu şart zincirlerine izin verilmez.

requirement_mode

RequirementMode

Şarta uygulanan mod.

RequirementMode

Bir rotadaki bağımlı gönderilerin görünümünü tanımlayan modlar.

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

IN_SAME_VEHICLE_AT_PICKUP_TIME modunda, tüm "bağımlı" gönderilerin teslim alma sırasında araçlarında en az bir "gerekli" gönderi olması gerekir.

Bu nedenle, "bağımlı" bir gönderi teslim alma işlemi şunlardan birine sahip olmalıdır:

  • Yalnızca teslimat yapılan "gerekli" bir gönderinin rotada daha sonra teslim edilmesi veya
  • "Gerekli" gönderi, rotada kendisinden önce teslim alınır ve "gerekli" gönderinin bir teslimatı varsa bu teslimat, "bağımlı" gönderinin teslim alınmasından sonra gerçekleştirilmelidir.
IN_SAME_VEHICLE_AT_DELIVERY_TIME "Bağımlı" gönderilerin teslimat sırasında araçlarında "gerekli" bir gönderi olması gerektiği dışında, öncekiyle aynıdır.

SkippedShipment

Bir çözümde gerçekleştirilmeyen gönderilerin ayrıntılarını belirtir. Önemsiz durumlarda ve/veya atlama nedenini belirleyebildiğimizde nedeni burada bildiririz.

Alanlar
index

int32

Dizin, kaynak ShipmentModel içindeki 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. Yukarıdaki Reason yorumuna bakın. Bir gönderimin neden atlandığını anlayamazsak nedenler ayarlanmaz.

penalty_cost

double

Bu, Shipment.penalty_cost kopyasıdır ve atlanan bir gönderimin önem derecesini daha kolay görmenizi sağlamak için buraya eklenmiştir.

Deneysel: Bu alanın davranışı veya varlığı gelecekte değişebilir.

estimated_incompatible_vehicle_ratio

double

Aşağıdaki nedenlerden en az biri nedeniyle bu sevkiyatı gerçekleştiremeyen araçların tahmini oranı. Not: Bu alan yalnızca nedenler bir araçla ilgili olduğunda doldurulur.

Deneysel: Bu alanın davranışı veya varlığı gelecekte değişebilir.

Neden

Gönderimin neden atlandığını açıklayabiliyorsak nedenler burada listelenir. Neden tüm araçlar için aynı değilse reason birden fazla öğe içerir. Atlanan bir gönderinin yinelenen nedenleri olamaz (ör. example_vehicle_index hariç tüm alanların aynı olduğu durumlar). Ö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 hiçbir araçla uyumlu değil. Nedenler tüm araçlar için farklı olabilir ancak en az bir aracın "Elma" kapasitesi (1. araç dahil), en az bir aracın "Armut" kapasitesi (3. araç dahil) ve en az bir aracın mesafe sınırı (1. araç dahil) aşılır.

Alanlar
code

Code

Kodun yorumlarına bakın.

example_vehicle_indices[]

int32

example_vehicle_index ile aynıdır ancak tanımlanan birden fazla aracın listesini sağlarız. Bu liste tam kapsamlı olmayabilir. Bu alan yalnızca [fill_example_vehicle_indices_in_skipped_reasons][] doğru olduğunda doldurulur.

Deneysel: Bu alanın davranışı veya varlığı gelecekte değişebilir.

example_exceeded_capacity_type

string

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

example_vehicle_index

int32

Neden, gönderi-araç uyumsuzluğuyla ilgiliyse bu alan, ilgili bir aracın dizinini sağlar.

Kod

Neden türünü tanımlayan kod. Buradaki sıralamanın bir anlamı yoktur. Özellikle, her iki neden de geçerliyse belirli bir nedenin çözümde diğerinden önce görünüp görünmeyeceğine dair bir gösterge sunmaz.

Sıralamalar
CODE_UNSPECIFIED Bu hiçbir zaman kullanılmamalıdır.
NO_VEHICLE Modelde araç bulunmadığından hiçbir gönderim yapılamıyor.
DEMAND_EXCEEDS_VEHICLE_CAPACITY Sevkiyatın talebi, bir aracın bazı kapasite türleri için kapasitesini aşıyor. Bunlardan biri example_exceeded_capacity_type.
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT

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

Bu hesaplama için jeodezik mesafeleri kullandığımızı unutmayın.

CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT

Seyahat süresi, bekleme süresi ve hizmet 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 durum senaryosuna göre hesaplanır. Yani jeodezik mesafe x 36 m/sn (yaklaşık 130 km/saat) olarak hesaplanır.

CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT Yukarıdakiyle aynıdır ancak yalnızca minimum seyahat süresi ile aracın travel_duration_limit değeri karşılaştırılır.
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS Araç, en erken başlangıç zamanında başlarsa en iyi senaryoda bu sevkiyatı gerçekleştiremez (zaman hesaplaması için CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT bölümüne bakın): Toplam süre, aracın en geç bitiş zamanından sonra bitmesine neden olur.
VEHICLE_NOT_ALLOWED Gönderinin allowed_vehicle_indices alanı boş değil ve bu araç bu alana ait değil.
VEHICLE_IGNORED

Aracın ignore alanı doğru.

Deneysel: Bu alanın davranışı veya varlığı gelecekte değişebilir.

SHIPMENT_IGNORED

Gönderinin ignore alanı doğru.

Deneysel: Bu alanın davranışı veya varlığı gelecekte değişebilir.

SKIPPED_IN_INJECTED_SOLUTION_CONSTRAINT

Gönderim injected_solution_constraint içinde atlanır.

Deneysel: Bu alanın davranışı veya varlığı gelecekte değişebilir.

VEHICLE_ROUTE_IS_FULLY_SEQUENCE_CONSTRAINED

injected_solution_constraint içinde belirtilen araç rotası esnetmesi, herhangi bir ziyaretin eklenmesine izin vermiyor.

Deneysel: Bu alanın davranışı veya varlığı gelecekte değişebilir.

ZERO_PENALTY_COST

Gönderinin ceza maliyeti sıfırdır. Bu, gelişmiş bir modelleme seçeneği olarak yararlı olabilir ancak bir gönderinin neden atlandığını sonradan açıklamak için de kullanılabilir.

Deneysel: Bu alanın davranışı veya varlığı gelecekte değişebilir.

TimeWindow

Zaman pencereleri, bir etkinliğin zamanını (ör. bir ziyarete varış zamanı veya bir aracın başlangıç ve bitiş zamanı) kısıtlar.

start_time ve end_time şeklindeki kesin zaman aralığı sınırları, etkinliğin en erken ve en geç zamanını start_time <= event_time <= end_time olacak şekilde zorunlu kılar. Esnek zaman aralığının alt sınırı olan soft_start_time, etkinliğin soft_start_time tarihinde veya sonrasında gerçekleşmesi tercihini ifade eder. Bu tercih, etkinliğin soft_start_time'dan ne kadar önce gerçekleştiğiyle orantılı bir maliyet doğurur. Esnek zaman aralığı üst sınırı (soft_end_time), etkinliğin soft_end_time tarihinde veya daha önce gerçekleşmesi tercihini ifade eder. Bu tercih, etkinliğin soft_end_time tarihinden ne kadar sonra gerçekleştiğiyle orantılı bir maliyet doğurur. start_time, end_time, soft_start_time ve soft_end_time, genel zaman sınırları içinde olmalı (ShipmentModel.global_start_time ve ShipmentModel.global_end_time bölümlerine bakın) 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

Kesin zaman aralığının başlangıç zamanı. Belirtilmezse ShipmentModel.global_start_time olarak ayarlanır.

end_time

Timestamp

Kesin zaman aralığının bitiş zamanı. Belirtilmezse 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 esnek bitiş zamanı.

cost_per_hour_before_soft_start_time

double

Etkinlik soft_start_time'dan önce gerçekleşirse modeldeki diğer maliyetlere eklenen saat başına maliyet ş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 ayarlanmışsa 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 rotadaki art arda iki ziyaret arasındaki geçişlerin özelliklerini belirtir. Aynı geçiş için birden fazla TransitionAttributes geçerli olabilir. Bu durumda, tüm ek maliyetler toplanır ve en katı kısıtlama veya sınır uygulanır (doğal "VE" semantiği izlenir).

Alanlar
src_tag

string

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

Kaynak ziyaret veya araç başlangıcı, yalnızca VisitRequest.tags ya da Vehicle.start_tags değerinin src_tag değerini içermesi veya excluded_src_tag değerini içermemesi durumunda (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. src_tag ve excluded_src_tag alanlarından yalnızca biri boş olmamalıdır.

dst_tag

string

Bir varış noktası ziyareti veya araç sonu, yalnızca VisitRequest.tags ya da Vehicle.end_tags değeri dst_tag değerini içeriyorsa veya excluded_dst_tag değerini 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 alanlarından yalnızca biri boş olmamalıdır.

cost

double

Bu geçişi gerçekleştirmenin maliyetini belirtir. Bu değer, modeldeki diğer tüm maliyetlerle aynı birimdedir ve negatif olmamalıdır. Bu ücret, mevcut diğer tüm maliyetlere ek olarak uygulanır.

cost_per_kilometer

double

Bu geçiş gerçekleştirilirken kat edilen mesafeye uygulanan kilometre başına maliyeti belirtir. Araçlarda belirtilen Vehicle.cost_per_kilometer değerine eklenir.

distance_limit

DistanceLimit

Bu geçişi gerçekleştirirken kat edilen mesafe için bir sınır belirtir.

Haziran 2021 itibarıyla yalnızca esnek sınırlar desteklenmektedir.

delay

Duration

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

Bu gecikme her zaman kaynak ziyaret tamamlandıktan sonra ve hedef ziyaret başlamadan önce gerçekleşir.

Uri

Route Optimization API tarafından okunabilen ve yazılabilen bir kaynağı işaret eden tek tip kaynak tanımlayıcısı.

Alanlar
uri

string

Kaynağın URI'si. Kaynak henüz mevcut olmayabilir.

Kaynağın içeriği JSON veya textproto olarak kodlanır. Yalnızca Google Cloud Storage kaynakları desteklenir. Kaynak JSON olarak kodlanmışsa kaynak adının sonuna .json eklenmelidir. Kaynak, textproto olarak kodlanmışsa kaynak adının sonuna .txtpb eklenmelidir. Örneğin, JSON kodlu bir dosyanın Google Cloud Storage URI'si şu şekilde görünebilir: gs://bucket/path/input/object.json.

Araç

Sevkiyat problemindeki bir aracı modeller. Bir gönderi sorununun çözülmesi, bu araç için start_location ile başlayıp end_location ile biten bir rota oluşturur. Rota, bir dizi ziyarettir (ShipmentRoute bölümüne bakın).

Alanlar
display_name

string

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

travel_mode

TravelMode

Aracın kullanabileceği yolları ve hızını etkileyen seyahat modu. travel_duration_multiple başlıklı makaleyi de inceleyin.

route_modifiers

RouteModifiers

Belirli bir araç için rotaların hesaplanma şeklini etkileyen ve karşılanması gereken bir dizi koşul.

start_location

LatLng

Aracın herhangi bir gönderiyi teslim almadan önce yola çıktığı coğrafi konum. Belirtilmezse araç ilk teslim alma noktasından başlar. Gönderi modelinde süre ve mesafe matrisleri varsa start_location belirtilmemelidir.

start_waypoint

Waypoint

Aracın herhangi bir gönderiyi teslim almadan önce başladığı coğrafi konumu temsil eden yol noktası. start_waypoint veya start_location belirtilmezse araç ilk teslim alma noktasından başlar. Gönderi modelinde süre ve mesafe matrisleri varsa start_waypoint belirtilmemelidir.

end_location

LatLng

Aracın son VisitRequest görevini tamamladıktan sonra ulaştığı coğrafi konum. Belirtilmezse aracın ShipmentRoute, son VisitRequest tamamlandığında hemen sona erer. Gönderi modelinde süre ve mesafe matrisleri varsa end_location belirtilmemelidir.

end_waypoint

Waypoint

Aracın son VisitRequest görevini tamamladıktan sonra ulaştığı coğrafi konumu temsil eden ara nokta. end_waypoint veya end_location belirtilmezse aracın ShipmentRoute, son VisitRequest tamamlandığında hemen sona erer. Gönderi modelinde süre ve mesafe matrisleri varsa end_waypoint belirtilmemelidir.

start_tags[]

string

Aracın rotasının başlangıcı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ı içinde olmalıdır (ShipmentModel.global_* alanlarına bakın). Belirtilmezse bu genel zaman sınırları dışında bir sınırlama yoktur.

Aynı yinelenen alana ait zaman pencereleri birbirinden ayrı olmalıdır. Diğer bir deyişle, hiçbir zaman penceresi birbiriyle çakışamaz veya bitişik olamaz ve kronolojik sırayla 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ı içinde olmalıdır (ShipmentModel.global_* alanlarına bakın). Belirtilmezse bu genel zaman sınırları dışında bir sınırlama yoktur.

Aynı yinelenen alana ait zaman pencereleri birbirinden ayrı olmalıdır. Diğer bir deyişle, hiçbir zaman penceresi birbiriyle çakışamaz veya bitişik olamaz ve kronolojik sırayla 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 boşaltma politikası uygulanıyor.

load_limits

map<string, LoadLimit>

Aracın kapasitesi (ör. ağırlık, hacim, palet sayısı) Eşlemedeki anahtarlar, Shipment.load_demands alanının anahtarlarıyla tutarlı olan yük türünün tanımlayıcılarıdır. Belirli bir anahtar bu eşlemede yoksa ilgili kapasite sınırsız olarak 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 saat başına 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 kullanmak ek gecikmeye neden olabilir.

cost_per_traveled_hour

double

Araç rotasının seyahat edilen saat başına maliyeti. Bu maliyet yalnızca rota tarafından kullanılan seyahat süresine (yani ShipmentRoute.transitions içinde bildirilen süreye) uygulanır ve bekleme süresi ile ziyaret süresini hariç tutar.

cost_per_kilometer

double

Araç rotasının kilometre başına maliyeti. Bu maliyet, ShipmentRoute.transitions içinde bildirilen mesafeye uygulanır ve tek bir VisitRequest için arrival_location ile departure_location arasında dolaylı olarak kat edilen mesafeye uygulanmaz.

fixed_cost

double

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

used_if_route_is_empty

bool

Bu alan, yalnızca rotaları herhangi bir gönderiye hizmet vermeyen araçlar için geçerlidir. Bu durumda aracın ikinci el olarak kabul edilip edilmeyeceğini belirtir.

Doğru ise araç, herhangi bir gönderi teslim etmese bile başlangıç konumundan bitiş konumuna gider ve başlangıç --> bitiş yolculuğundan kaynaklanan zaman ve mesafe maliyetleri hesaba katılır.

Aksi takdirde, başlangıç konumundan bitiş konumuna gitmez ve bu araç için break_rule veya gecikme (TransitionAttributes üzerinden) planlanmaz. Bu durumda, aracın ShipmentRoute öğesi, araç dizini ve etiketi dışında herhangi bir bilgi içermez.

route_duration_limit

DurationLimit

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

travel_duration_limit

DurationLimit

Aracın rotasının seyahat süresine uygulanan sını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 değerlerinin toplamıdır.

extra_visit_duration_for_visit_type

map<string, Duration>

visit_types dizelerinden sürelere bir eşleme belirtir. Süre, belirtilen visit_types ile yapılan ziyaretlerde VisitRequest.duration değerine ek olarak harcanacak süredir. cost_per_hour belirtilirse bu ek ziyaret süresi maliyeti artırır. Anahtarlar (ör. visit_types) boş dize olamaz.

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

break_rule

BreakRule

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

label

string

Bu araç için bir etiket belirtir. Bu etiket, yanıtta ilgili ShipmentRoute öğesinin vehicle_label değeri olarak bildirilir.

ignore

bool

Doğru ise used_if_route_is_empty yanlış olmalıdır ve bu araç kullanılmaz.

injected_first_solution_routes içinde yok sayılan bir araç tarafından gerçekleştirilen sevkiyatlar ilk çözümde atlanır ancak yanıtta gerçekleştirilebilir.

injected_solution_constraint içinde yok sayılan bir araç tarafından bir sevkiyat gerçekleştirilirse ve ilgili teslim alma/teslimat, araçta kalacak şekilde kısıtlanırsa (yani RELAX_ALL_AFTER_THRESHOLD düzeyine gevşetilmezse) yanıtta atlanır. Bir gönderinin allowed_vehicle_indices alanı boş değilse ve izin verilen tüm araçlar yoksayılırsa yanıtta bu gönderi atlanır.

travel_duration_multiple

double

Bu aracın seyahat sürelerini artırmak veya azaltmak için kullanılabilecek bir çarpma faktörü belirtir. Örneğin, bu değeri 2,0 olarak ayarlarsanız bu araç daha yavaş olur ve seyahat süreleri standart araçların iki katı olur. Bu çarpan, ziyaret sürelerini etkilemez. cost_per_hour veya cost_per_traveled_hour belirtilmişse maliyeti etkiler. Bu değer [0,001, 1000,0] aralığında olmalıdır. Bu değer ayarlanmazsa araç standarttır ve bu çarpan 1,0 olarak kabul edilir.

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

Aşağıdaki extra_visit_duration_for_visit_type bölümüne de bakın.

DurationLimit

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

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

Alanlar
max_duration

Duration

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

soft_max_duration

Duration

Maksimum süre sınırını zorunlu kılmayan ancak ihlal edildiğinde rotanın maliyetini artıran esnek bir sınırdır. Bu maliyet, modelde tanımlanan diğer maliyetlere aynı birimle eklenir.

Tanımlanmışsa soft_max_duration negatif olmamalıdır. max_duration da tanımlanmışsa soft_max_duration, max_duration'dan küçük olmalıdır.

quadratic_soft_max_duration

Duration

Maksimum süre sınırını zorunlu kılmayan ancak ihlal edildiğinde rotanın maliyetini artıran esnek bir sınır. Bu maliyet, sürenin karesiyle orantılıdır. Bu maliyet, modelde tanımlanan diğer maliyetlere aynı birimle eklenir.

quadratic_soft_max_duration ayarlanırsa aşağıdaki koşulların karşılanması gerekir:

  • Negatif olmamalıdır.
  • max_duration tanımlanmalıdır.
  • quadratic_soft_max_duration, max_duration değerinden küçük olmalıdır.
  • Fark en fazla bir gün olmalıdır: max_duration - quadratic_soft_max_duration <= 86400 seconds
cost_per_hour_after_soft_max

double

soft_max_duration eşiği ihlal edilirse saatlik maliyet. Süre eşiğin altındaysa ek maliyet 0 olur. Aksi takdirde maliyet, süreye bağlı olarak aşağıdaki gibi değişir:

  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 tahakkuk eden saat başına maliyet.

Süre eşiğin altındaysa ek maliyet 0 olur. Aksi takdirde maliyet, süreye bağlı olarak aşağıdaki gibi hesaplanır:

  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 kadar yük taşıyabilir"). Şu sayfaya göz atın: load_limits.

Alanlar
soft_max_load

int64

Yükün sanal sınırı. Şu sayfaya göz atın: cost_per_unit_above_soft_max.

cost_per_unit_above_soft_max

double

Bu aracın rotası boyunca yük 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. Esnek sınırlar, yalnızca model genelinde yalnızca teslim alma veya yalnızca teslimat için geçerli olan türlerde tanımlanabilir.

start_load_interval

Interval

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

end_load_interval

Interval

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

max_load

int64

Kabul edilebilir maksimum yük miktarı.

cost_per_kilometer

LoadCost

Bu araç için bir birim yükün bir kilometre taşınmasının maliyeti. Bu, yakıt tüketimi için bir proxy olarak kullanılabilir: Yük bir ağırlıksa (Newton cinsinden), yük*kilometre bir enerji boyutuna sahiptir.

Deneysel: Daha fazla bilgi için https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request adresini ziyaret edin.

cost_per_traveled_hour

LoadCost

Bu araç için bir saat boyunca bir birim yükle seyahat etmenin maliyeti.

Deneysel: Daha fazla bilgi için https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request adresini ziyaret edin.

Aralık

Kabul edilebilir yük miktarı aralığı.

Alanlar
min

int64

Kabul edilebilir minimum yük. 0 veya daha büyük olmalıdır. Her ikisi de belirtilmişse min, max değerinden küçük veya bu değere eşit olmalıdır.

max

int64

Kabul edilebilir maksimum yük. 0 veya daha büyük olmalıdır. Belirtilmezse maksimum yük bu mesajla kısıtlanmaz. Her ikisi de belirtilmişse min, max değerinden küçük veya bu değere eşit olmalıdır.

LoadCost

Transition boyunca bir birim yük taşımanın maliyeti. Belirli bir yük için maliyet iki bölümün toplamıdır:

  • min(yük, load_threshold) * cost_per_unit_below_threshold
  • maks(0, yük - load_threshold) * cost_per_unit_above_threshold

Bu maliyetle çözümler, önce yüksek talepleri teslim etmeyi veya eşdeğer olarak yüksek talepleri en son almayı tercih eder. Örneğin, bir araçta

load_limit {
  key: "weight"
  value {
    cost_per_kilometer {
      load_threshold: 15
      cost_per_unit_below_threshold: 2.0
      cost_per_unit_above_threshold: 10.0
    }
  }
}

ve rotası başlangıç,teslim alma,teslim alma,teslimat,teslimat,bitiş şeklindedir ve geçişler şöyledir:

transition { vehicle_load['weight'] { amount: 0 }
             travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
             travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 20 }
             travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
             travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
             travel_distance_meters: 1000.0 }

Bu LoadCost tarafından yapılan maliyet (cost_below * load_below * kilometers + cost_above * load_above * kms) olur.

  • geçiş 0: 0,0
  • geçiş 1: 2,0 * 10 * 1,0 + 10,0 * 0 * 1,0 = 20,0
  • geçiş 2: 2,0 * 15 * 1,0 + 10,0 * (20 - 15) * 1,0 = 80,0
  • geçiş 3: 2,0 * 10 * 1,0 + 10,0 * 0 * 1,0 = 20,0
  • geçiş 4: 0,0

Bu nedenle, rota üzerindeki LoadCost 120,0 olur.

Ancak rota başlangıç, teslim alma, teslimat, teslim alma, teslimat, bitiş ise ve geçişler varsa:

transition { vehicle_load['weight'] { amount: 0 }
             travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
             travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
             travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
             travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
             travel_distance_meters: 1000.0 }

Bu LoadCost tarafından yapılan harcama

  • geçiş 0: 0,0
  • geçiş 1: 2,0 * 10 * 1,0 + 10,0 * 0 * 1,0 = 20,0
  • geçiş 2: 0,0
  • 3. geçiş: 2,0 * 10 * 1,0 + 10,0 * 0 * 1,0 = 20,0
  • geçiş 4: 0,0

Burada rota üzerindeki LoadCost 40,0'dır.

LoadCost, ağır yüklü geçişler içeren çözümleri daha pahalı hale getirir.

Deneysel: Daha fazla bilgi için https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request adresini ziyaret edin.

Alanlar
load_threshold

int64

Bir yük birimini taşıma maliyetinin cost_per_unit_below_threshold değerinden cost_per_unit_above_threshold değerine değiştiği yük miktarı. 0'dan büyük veya 0'a eşit olmalıdır.

cost_per_unit_below_threshold

double

0 ile eşik arasındaki her birim için bir yük birimini taşıma maliyeti. Sonlu bir değer ve >= 0 olmalıdır.

cost_per_unit_above_threshold

double

Eşik değerin üzerindeki her birim için bir yük birimini taşıma maliyeti. Eşik = 0 olan özel durumda bu, birim başına sabit bir maliyettir. Sonlu bir değer ve >= 0 olmalıdır.

TravelMode

Araçlar tarafından kullanılabilen seyahat modları.

Bunlar, Google Haritalar Platformu Routes API seyahat modlarının bir alt kümesi olmalıdır. Bkz. https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteTravelMode

Not: WALKING rotaları beta sürümündedir ve bazen net kaldırımlar veya yaya yolları eksik olabilir. Uygulamanızda gösterdiğiniz tüm yaya rotaları için kullanıcıya bu uyarıyı göstermeniz gerekir.

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

UnloadingPolicy

Aracın nasıl boşaltılabileceğine dair politika. Yalnızca hem teslim alma hem de teslimat içeren gönderiler için geçerlidir.

Diğer gönderiler, unloading_policy değerinden bağımsız olarak rotanın herhangi bir yerinde gerçekleşebilir.

Sıralamalar
UNLOADING_POLICY_UNSPECIFIED Belirtilmemiş boşaltma politikası; teslimatlar, ilgili teslim almalardan sonra yapılmalıdır.
LAST_IN_FIRST_OUT Teslimatlar, teslim almaların tersi sırayla yapılmalıdır.
FIRST_IN_FIRST_OUT Teslimatlar, teslim almalarla aynı sırada gerçekleşmelidir.

VehicleFullness

VehicleFullness, bir aracın ne kadar dolu olduğunu hesaplayan bir metriktir. Her VehicleFullness alanı 0 ile 1 arasındadır ve sınırlı bir metrik alanı (ör. AggregatedMetrics.travel_distance_meters) ile ilgili araç sınırı (ör. Vehicle.route_distance_limit) arasındaki oran olarak hesaplanır (varsa). Aksi takdirde doluluk oranı ayarlanmadan kalır. Sınır 0 ise alan 1 olarak ayarlanır. Not: Bir rota trafikle ilgili uygunsuzluklara tabi olduğunda bazı ham doluluk oranları 1, 0'ı aşabilir (ör. araç, mesafe sınırını aşabilir). Bu durumlarda, doluluk değerlerini 1,0 ile sınırlandırırız.

Alanlar
max_fullness

double

Bu mesajdaki diğer tüm alanların maksimum değeri.

distance

double

AggregatedMetrics.travel_distance_meters ile Vehicle.route_distance_limit arasındaki oran. Vehicle.route_distance_limit ayarlanmazsa bu alan da ayarlanmaz.

travel_duration

double

[AggregatedMetrics.travel_duration_seconds][] ile Vehicle.travel_duration_limit arasındaki oran. Vehicle.travel_duration_limit ayarlanmazsa bu alan da ayarlanmaz.

active_duration

double

[AggregatedMetrics.total_duration_seconds][] ile Vehicle.route_duration_limit arasındaki oran. Vehicle.route_duration_limit ayarlanmazsa bu alan da ayarlanmaz.

max_load

double

Tüm [AggregatedMetrics.max_load][] türleri ve ilgili Vehicle.load_limits arasındaki maksimum oran. Tüm Vehicle.load_limits alanları ayarlanmamışsa bu alan da ayarlanmaz.

active_span

double

Belirli bir araç için (vehicle_end_time - vehicle_start_time) / (latest_vehicle_end_time - earliest_vehicle_start_time) oranı. Payda yoksa bunun yerine (ShipmentModel.global_end_time - ShipmentModel.global_start_time) kullanılır.

Ara nokta

Bir ara noktayı kapsar. Yol noktaları, VisitRequest'lerin varış ve ayrılış konumlarını, araçların ise başlangıç ve bitiş konumlarını belirtir.

Alanlar
side_of_road

bool

İsteğe bağlıdır. Bu ara noktanın konumu, aracın yolun belirli bir tarafında durması için bir tercih olduğunu gösterir. Bu değeri ayarladığınızda rota, konumdan geçer. Böylece araç, yolun merkezinden konuma doğru eğimli olan tarafında durabilir. Bu seçenek, "YÜRÜYEREK" seyahat modu için kullanılamaz.

vehicle_stopover

bool

Ara noktanın, araçların yolcu almak veya indirmek için durması gereken bir yer olduğunu gösterir. Bu seçenek yalnızca "SÜRÜŞ" seyahat modu ve "location_type" değeri "location" olduğunda kullanılabilir.

Deneysel: Bu alanın davranışı veya varlığı gelecekte değişebilir.

location_type birleşik alanı. Bir konumu temsil etmenin farklı yolları. location_type aşağıdakilerden 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

Ara noktayla ilişkili ÖY yer kimliği.

Bir VisitRequest'in varış veya kalkış konumunu belirtmek için yer kimliği kullanırken, yere navigasyon için LatLng konumunu belirleyecek kadar spesifik bir yer kimliği kullanın. Örneğin, bir binayı temsil eden yer kimliği uygundur ancak bir yolu temsil eden yer kimliği önerilmez.