Package google.maps.routeoptimization.v1

Dizin

RouteOptimization

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

Belirli alan türlerinin geçerliliği:

  • google.protobuf.Timestamp
    • Saatler Unix saatindedir: 1970-01-01T00:00:00+00:00 itibarıyla saniye.
    • saniye, [0, 253402300799] aralığında (ör. [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00]) olmalıdır.
    • nanos ayarının kaldırılması veya 0 olarak ayarlanması gerekir.
  • google.protobuf.Duration
    • saniye, [0, 253402300799] aralığında (ör. [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00]) olmalıdır.
    • nanos ayarının kaldırılması veya 0 olarak ayarlanması gerekir.
  • google.type.LatLng
    • enlem, [-90,0; 90,0] aralığında olmalıdır.
    • boylam, [-180,0; 180,0] aralığında olmalıdır.
    • En az biri sıfır olmayan enlem ve boylam değerleri olmalıdır.
BatchOptimizeTours

rpc BatchOptimizeTours(BatchOptimizeToursRequest) returns (Operation)

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

Bu yöntem, uzun süreli bir işlemdir (LRO). Optimizasyon girişleri (OptimizeToursRequest mesajları) ve çıkışları (OptimizeToursResponse mesajları), 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 indirecek şekilde araçlar tarafından gerçekleştirilecek bir rota grubu olan ShipmentRoute alanları içeren bir OptimizeToursResponse döndürür.

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

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

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 birindeki hatayı içerir.

Yetkilendirme kapsamları

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

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

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

  • routeoptimization.operations.create

Daha fazla bilgi için IAM belgelerini inceleyin.

OptimizeTours

rpc OptimizeTours(OptimizeToursRequest) returns (OptimizeToursResponse)

Bir ShipmentModel içeren bir OptimizeToursRequest gönderir ve toplam maliyeti en aza indirecek şekilde araçlar tarafından gerçekleştirilecek bir rota grubu olan ShipmentRoute içeren bir OptimizeToursResponse döndürür.

ShipmentModel modeli, temel olarak yapılması gereken Shipment'lerden ve Shipment'leri taşımak için kullanılabilecek Vehicle'lerden oluşur. ShipmentRoute, Shipment'leri Vehicle'lere atar. Daha ayrıntılı olarak belirtmek gerekirse, her araca bir dizi Visit atanır. Bu Visit, bir Shipment için teslimat veya teslim alma işlemi olan bir VisitRequest'a karşılık gelir.

Amaç, maliyetin ShipmentModel içinde tanımlanmış birçok bileşene sahip olduğu toplam maliyeti en aza indiren bir ShipmentRoute'lerin Vehicle'lere atanmasını sağlamaktır.

Yetkilendirme kapsamları

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

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

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

  • routeoptimization.locations.use

Daha fazla bilgi için IAM belgelerini inceleyin.

AggregatedMetrics

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

Alanlar
performed_shipment_count

int32

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

travel_duration

Duration

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

wait_duration

Duration

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

delay_duration

Duration

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

break_duration

Duration

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

visit_duration

Duration

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

total_duration

Duration

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

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

double

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

max_loads

map<string, VehicleLoad>

Bu rotadaki (sırasıyla çözümdeki) her bir miktar için rotanın (sırasıyla çözümün) tamamında elde edilen maksimum yük. Tüm Transition.vehicle_loads (sırasıyla ShipmentRoute.metrics.max_loads.

BatchOptimizeToursMetadata

Bu türde alan yoktur.

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

BatchOptimizeToursRequest

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

Alanlar
parent

string

Zorunlu. Telefon görüşmesi yapmak için projeyi ve konumu hedefleyin.

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

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

model_configs[]

AsyncModelConfig

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

AsyncModelConfig

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

Alanlar
display_name

string

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

input_config

InputConfig

Zorunlu. Giriş modeli hakkında bilgi.

output_config

OutputConfig

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

BatchOptimizeToursResponse

Bu türde alan yoktur.

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

BreakRule

Bir araç için ara verme zamanları (ör. öğle yemeği araları) oluşturmaya yönelik kurallar. Ara, aracın mevcut konumunda sabit durduğu ve hiçbir ziyaret gerçekleştiremediği kesintisiz bir zaman aralığıdır. Aşağıdaki durumlarda ara verilebilir:

  • iki ziyaret arasında seyahat sırasında (ziyaretten hemen önce veya hemen sonra olan süreyi içerir ancak ziyaretin ortasını kapsamaz) ziyaretler arasındaki ilgili geçiş süresini uzatır.
  • veya araç çalıştırılmadan önce (araç, aranın ortasında çalıştırılamaz) yapılırsa araç çalıştırma zamanını etkilemez.
  • veya araç sona erdikten sonra (araç sona erme zamanı da aynı şekilde).
Alanlar
break_requests[]

BreakRequest

Araların sırası. BreakRequest mesajını inceleyin.

frequency_constraints[]

FrequencyConstraint

Birkaç FrequencyConstraint geçerli olabilir. Bu BreakRule'un BreakRequest'leri tarafından tümü karşılanmalıdır. FrequencyConstraint inceleyin.

BreakRequest

Her araç için geçerli olan ara verme sırası (ör. sayısı ve sırası) önceden bilinmelidir. Tekrarlanan BreakRequest'ler, bu sırayı gerçekleşmeleri gereken sırayla tanımlar. Zaman aralıkları (earliest_start_time / latest_start_time) çakışma yapabilir ancak siparişle uyumlu olmalıdır (bu kontrol edilir).

Alanlar
earliest_start_time

Timestamp

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

latest_start_time

Timestamp

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

min_duration

Duration

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

FrequencyConstraint

"12 saatte en az 1 saatlik ara verilmelidir" gibi minimum ara sıklıklarını zorunlu kılarak yukarıda belirtilen araların sıklığını ve süresini daha da kısıtlayabilirsiniz. Bunun "12 saatlik herhangi bir kayan zaman aralığında en az bir saatlik en az bir ara verilmelidir" şeklinde yorumlanabileceği varsayıldığında, bu örnek aşağıdaki FrequencyConstraint ile çevrilir:

{
   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 önceden belirtilen zaman aralıklarını ve minimum süreleri de dikkate alarak bu tür tüm kısıtlamalara uyar.

FrequencyConstraint, pratikte art arda olmayan aralar için geçerli olabilir. Örneğin, aşağıdaki programda "12 saatte 1 saat" örneği dikkate alınmıştır:

  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. Sıfırdan büyük. FrequencyConstraint öğesinin açıklamasını inceleyin.

max_inter_break_duration

Duration

Zorunlu. Rotadaki, en azından kısmen duration >= min_break_duration ara vermeden geçen herhangi bir zaman aralığı için izin verilen maksimum süre. 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/ adresine bakın.

DistanceLimit

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

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

Alanlar
max_meters

int64

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

soft_max_meters

int64

Maksimum mesafe sınırı uygulamayan ancak ihlal edildiğinde modelde tanımlanan diğer maliyetlerle aynı birimde toplanan bir maliyete neden olan yumuşak sınır.

Tanımlanmışsa soft_max_meters, max_meters değerinden küçük ve pozitif olmalıdır.

cost_per_kilometer_below_soft_max

double

Aşağıdaki formül kullanılarak soft_max_meters'e kadar artan, kilometre başına maliyet:

  min(distance_meters, soft_max_meters) / 1000.0 *
  cost_per_kilometer_below_soft_max.

Bu maliyet route_distance_limit'te 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'dır. Aksi takdirde maliyeti hesaplamak için kullanılan formül şudur:

  (distance_meters - soft_max_meters) / 1000.0 *
  cost_per_kilometer_above_soft_max.

Maliyet pozitif olmalıdır.

GcsDestination

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

Alanlar
uri

string

Zorunlu. Google Cloud Storage URI'si.

GcsSource

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

Alanlar
uri

string

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

InjectedSolutionConstraint

Hangi ziyaretlerin kısıtlanması gerektiği ve nasıl kısıtlanacağı hakkında bilgiler içeren, isteğe yerleştirilen çözüm.

Alanlar
routes[]

ShipmentRoute

Enjekte edilecek çözümün yolları. Bazı rotalar orijinal çözümden çıkarılabilir. Rotalar ve atlanan gönderimler, 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 gevşetileceğ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üzeyde gevşetileceğini belirtir. skipped_shipment alanında listelenen gönderimler atlanacak şekilde kısıtlanmıştır. Yani bu gönderimler gerçekleştirilemez.

Alanlar
relaxations[]

Relaxation

vehicle_indices'te araç bulunan rotalardaki ziyaretler için geçerli olacak tüm ziyaret kısıtlaması kolaylaştırmaları.

vehicle_indices[]

int32

Ziyaret kısıtlamasının relaxations uygulandığı araç dizinlerini belirtir. Boş bırakılırsa 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 olabilir. Yani en fazla bir kısıtlama gevşetme alanının boş olmasına izin verilir vehicle_indices. Bir araç dizini, birden fazla constraint_relaxations içinde olsa bile yalnızca bir kez listelenmelidir.

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

Dinlenme

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

relaxations(i).level, #j ziyaretine uygulanan ve aşağıdaki koşulları karşılayan kısıtlama gevşetme 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ç çalıştırma süresi relaxations(i).level olarak gevşetilir:

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

Bir ziyaret threshold_visit_count VEYA threshold_time koşulunu karşılıyorsa bir rahatlama düzeyi uygulamak için aynı level ile iki relaxations ekleyin: Biri yalnızca threshold_visit_count, diğeri yalnızca threshold_time ayarlıdır. Bir ziyaret birden fazla relaxations koşulunu karşılıyorsa en gevşek düzey uygulanır. Sonuç olarak, araç başlangıcından rota ziyaretleri boyunca araç sonuna kadar rahatlama seviyesi daha rahat hale gelir: Yani rota ilerledikçe rahatlama seviyesi azalmaz.

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

Alanlar
level

Level

threshold_time veya sonrasındaki koşullar VE en az threshold_visit_count koşulu karşılandığında geçerli olan kısıtlama gevşetme düzeyi.

threshold_time

Timestamp

Gevşemenin level uygulanabileceği zaman veya bu zaman sonrasındaki süre.

threshold_visit_count

int32

Gevşetme level'nin uygulanabileceği ziyaret sayısı veya bu ziyaretten sonraki ziyaret sayısı. threshold_visit_count 0 ise (veya ayarlanmamışsa) level doğrudan aracın başlatılmasında uygulanabilir.

route.visits_size() + 1 ise level yalnızca araç tarafına uygulanabilir. route.visits_size() + 1'ten fazlaysa level bu rota için hiç uygulanmaz.

Seviye

Bir ziyaret için uygulanan ve eşik koşulları karşılandığında sonraki ziyaretler için uygulanan farklı kısıtlama gevşetme düzeylerini ifade eder.

Aşağıdaki liste, rahatlama düzeyinin artması sırasına göre düzenlenmiştir.

Sıralamalar
LEVEL_UNSPECIFIED

Örtük varsayılan gevşeme düzeyi: Hiçbir kısıtlama gevşetilmez, yani 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ıç saatleri ve araç başlangıç/bitiş saatleri için daha esnek bir yaklaşım uygulanacak ancak her ziyaret aynı araca bağlı olmaya devam edecek ve ziyaret sırasına uyulması gerekecek: Ziyayetler arasına veya ziyaretlerden önce başka ziyaret eklenemez.
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD RELAX_VISIT_TIMES_AFTER_THRESHOLD ile aynıdır ancak ziyaret sırası da gevşetilmiştir: Ziyaretler yalnızca bu araç tarafından gerçekleştirilebilir ancak potansiyel olarak iptal edilebilir.
RELAX_ALL_AFTER_THRESHOLD RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD ile aynıdır ancak araçta da esneklik vardır: Ziyaretler, eşik zamanda 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.

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

GcsSource

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

Konum

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

Alanlar
lat_lng

LatLng

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

heading

int32

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

OptimizeToursRequest

Çözülecek kargo modelini ve optimizasyon parametrelerini tanımlayan bir tur optimizasyonu çözümleyicisine gönderilecek istek.

Alanlar
parent

string

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

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

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

timeout

Duration

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

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

model

ShipmentModel

Çözülecek gönderim modeli.

solving_mode

SolvingMode

Çözüm modu varsayılan olarak DEFAULT_SOLVE (0) şeklindedir.

search_mode

SearchMode

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

injected_first_solution_routes[]

ShipmentRoute

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

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

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

  • tüm rotalar için vehicle_index aralık içinde olmalı ve kopyalanmamalıdır.
  • tüm ziyaretler için shipment_index ve visit_request_index aralıkta olmalıdır.
  • Kargo yalnızca bir rotada referans verilebilir.
  • Alım ve teslimat işleminin yapıldığı gönderimlerde teslimat öncesinde teslim alma işlemi yapılmalıdır.
  • Bir gönderim için en fazla bir teslim alma veya teslimat alternatifi gerçekleştirilebilir.
  • tüm rotalar için süreler artıyor (ör. vehicle_start_time <= visits[0].start_time <= visits[1].start_time ... <= vehicle_end_time).
  • Gönderim yalnızca izin verilen bir araçta yapılabilir. Shipment.allowed_vehicle_indices boşsa veya vehicle_index değeri Shipment.allowed_vehicle_indices içindeyse araca izin verilir.

Enjekte edilen çözüm uygun değilse doğrulama hatası döndürülmeyebilir ve bunun yerine uygun olmadığını belirten bir hata döndürülebilir.

injected_solution_constraint

InjectedSolutionConstraint

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

Enjekte edilen çözüm uygun değilse doğrulama hatası döndürülmeyebilir ve bunun yerine uygun olmadığını belirten bir hata döndürülebilir.

refresh_details_routes[]

ShipmentRoute

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

2020/11 itibarıyla bu işlev 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 tutarlı olmayabilir.

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

Shipment.ignore ve Vehicle.ignore'un davranış üzerinde herhangi bir etkisi yoktur. İlgili gönderimlerin veya araçların yoksayılıp yoksayılmamasına bakılmaksızın, boş olmayan tüm rotalardaki tüm ziyaretler arasında çoklu çizgiler doldurulur.

interpret_injected_solutions_using_labels

bool

Doğruysa:

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

Bu değer doğruysa aşağıdaki kategorilerdeki etiketler kategorilerinde en fazla bir kez görünmelidir:

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

Rota ziyaretlerinin veya rotaların tamamının enjekte edilmiş bir çözümden kaldırılması, ima edilen kısıtlamaları etkileyebilir. Bu da çözümde değişikliğe, doğrulama hatalarına veya uygulanamazlığa neden olabilir.

NOT: Arayan, her Vehicle.label (veya Shipment.label), ilgili iki istekte kullanılan bir araç (veya gönderi) öğesini benzersiz şekilde tanımlar: Enjekte edilen çözümde kullanılan OptimizeToursResponse öğesini oluşturan geçmiş istek ve enjekte edilen çözümü içeren mevcut istek. Yukarıda açıklanan benzersizlik kontrolleri, bu koşulu garanti etmek için yeterli değildir.

consider_road_traffic

bool

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

populate_polylines

bool

Doğru ise yanıt ShipmentRoute'lerine çoklu çizgiler doldurulur.

populate_transition_polylines

bool

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

allow_large_deadline_despite_interruption_risk

bool

Bu ayar belirlenirse istek için 60 dakikaya kadar bir son tarih (https://grpc.io/blog/deadlines adresine bakın) belirlenebilir. Aksi takdirde, maksimum son tarih yalnızca 30 dakikadır. Uzun süreli isteklerin kesinti riskinin önemli ölçüde daha yüksek (ancak yine de küçü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 bildirilir.

geodesic_meters_per_second

double

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

max_validation_errors

int32

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

SearchMode

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

Sıralamalar
SEARCH_MODE_UNSPECIFIED Belirtilmemiş arama modu. RETURN_FAST ile eşdeğerdir.
RETURN_FAST İlk iyi çözümü bulduktan sonra aramayı durdurun.
CONSUME_ALL_AVAILABLE_TIME Daha iyi çözümler aramak için tüm zamanınızı kullanın.

SolvingMode

Çözümleyicinin isteği nasıl işleyeceğini tanımlar. VALIDATE_ONLY dışındaki tüm modlarda, istek geçersizse INVALID_REQUEST hatası alırsınız. Döndürülen hata sayısını sını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] alanında uyarılar verilebilir.
VALIDATE_ONLY Modeli çözmeden yalnızca doğrular: Mümkün olduğunca çok sayıda OptimizeToursResponse.validation_errors doldurur.
DETECT_SOME_INFEASIBLE_SHIPMENTS

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

ÖNEMLİ: Burada, uygulanamayan tüm gönderiler değil, yalnızca ön işleme sırasında uygulanamaz olarak algılananlar döndürülür.

OptimizeToursResponse

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

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önderimlerin listesi.

validation_errors[]

OptimizeToursValidationError

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

metrics

Metrics

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

Metrikler

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

Alanlar
aggregated_route_metrics

AggregatedMetrics

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

skipped_mandatory_shipment_count

int32

Atlanan zorunlu gönderi 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ış kabul edilir.

earliest_vehicle_start_time

Timestamp

ShipmentRoute.vehicle_start_time marka ikinci el araçların en erken başlangıç zamanı.

latest_vehicle_end_time

Timestamp

Bir ikinci el aracın en son bitiş zamanı. ShipmentRoute.vehicle_end_time türündeki tüm ikinci el araçlar için maksimum değer olarak hesaplanır.

costs

map<string, double>

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

total_cost

double

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

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) çifti ile tanımlanır.

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

MULTIPLE ERRORS: Birden fazla hata olduğunda doğrulama işlemi, bunların birkaçını döndürmeye çalışır. Derleyiciye benzer şekilde, bu işlem de kusursuz değildir. Bazı doğrulama hataları "önemli"dir. Bu, doğrulama sürecinin tamamını durdurdukları anlamına gelir. Bu durum, diğerlerinin yanı sıra display_name="UNSPECIFIED" hataları için de geçerlidir. Bazı hatalar, doğrulama sürecinin diğer hataları atlamasına neden olabilir.

KARARLILIĞ: 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 eski hatayı gizlediği için belirli bir (geçersiz) isteğin farklı bir (code, display_name) çifti oluşturmasına neden olabilir. Örneğin, "ÇOKLU HATA"ya bakın.

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 teslimine referans verilebilir:

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

Ancak fields değerinin belirli bir hata kodu için değişmeyeceğini unutmayın.

error_message

string

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

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

offending_values

string

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

FieldReference

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

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

Ancak mesajın kalabalıklaşmasını önlemek için OptimizeToursRequest veya ShipmentModel gibi üst düzey varlıkları atlıyoruz.

Alanlar
name

string

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

sub_field

FieldReference

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

Birlik alanı index_or_key.

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

index

int32

Yinelenen alanın dizini.

key

string

Alan bir harita ise anahtar.

OutputConfig

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

Alanlar
data_format

DataFormat

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

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

GcsDestination

Çıktını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 Rotalar Tercih Edilen API'sindeki RouteModifiers ile benzerdir. https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers adresine bakın.

Alanlar
avoid_tolls

bool

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

avoid_highways

bool

Makul olduğunda otoyolların kullanılıp kullanılmayacağını belirtir. Otoyol içermeyen rotalara öncelik verilir. Yalnızca motorlu seyahat modları için geçerlidir.

avoid_ferries

bool

Makul olduğunda feribotlardan kaçınılıp kaçınılmayacağını belirtir. Feribot seyahati içermeyen rotalara öncelik verilir. Yalnızca motorlu seyahat modları için geçerlidir.

avoid_indoor

bool

İsteğe bağlı. Mümkün olduğunda kapalı alanlarda gezinmekten kaçınılmasını belirtir. Kapalı mekan navigasyonu içermeyen rotalara öncelik verilir. Yalnızca WALKING seyahat modu için geçerlidir.

Gönderim

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

Alanlar
display_name

string

Gönderinin kullanıcı tanımlı görünen adı. 63 karaktere kadar uzun olabilir ve UTF-8 karakterleri içerebilir.

pickups[]

VisitRequest

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

deliveries[]

VisitRequest

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

load_demands

map<string, Load>

Gönderinin yükleme talepleri (ör. ağırlık, hacim, palet sayısı vb.). Haritadaki anahtarlar, ilgili yükün türünü açıklayan tanımlayıcılardır (ideal 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 geçersiz olarak kabul edilir.

allowed_vehicle_indices[]

int32

Bu gönderimi gerçekleştirebilecek araç grubu. Boşsa tüm araçlar tarafından gerçekleştirilebilir. Araçlar, ShipmentModel'nın vehicles listesinde yer alan dizinlerine göre verilir.

costs_per_vehicle[]

double

Bu gönderim her araç tarafından teslim edildiğinde ortaya çıkan maliyeti belirtir. Belirtilmişse ŞUNLARDAN BİRİNİ içermelidir:

  • 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 olmalıdır. i. öğe, modelin i. 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 değerinin geçerli olduğu araçların dizinleri. Boş değilse costs_per_vehicle ile aynı sayıda öğeye sahip olmalıdır. Araç dizini birden fazla kez belirtilemez. costs_per_vehicle_indices hariç tutulan araçların maliyeti sıfırdır.

pickup_to_delivery_absolute_detour_limit

Duration

Alınma noktasından teslimat noktasına giden en kısa yola kıyasla maksimum mutlak ek süreyi belirtir. Belirtiliyse pozitif olmalıdır ve gönderim en az bir teslim alma ve teslimat içermelidir.

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

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

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

pickup_to_delivery_time_limit

Duration

Bir gönderinin teslim alınma başlangıcından teslimat başlangıcına kadar geçen maksimum süreyi belirtir. Belirtiliyse pozitif olmalıdır ve gönderim en az bir teslim alma ve teslimat içermelidir. Bu süre, teslimat ve teslim alma 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önderim için "tür" belirten boş olmayan dize. Bu özellik, shipment_types (ShipmentModel'teki shipment_type_incompatibilities ve shipment_type_requirements'ye bakın) arasında uyumsuzlukları veya koşulları tanımlamak için kullanılabilir.

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

label

string

Bu gönderim için bir etiket belirtir. Bu etiket, yanıtta ilgili ShipmentRoute.Visit öğesinin shipment_label alanında raporlanır.

ignore

bool

Doğruysa bu gönderimi atlayın ancak penalty_cost uygulamayın.

Modelde shipment_type_requirements varsa bir gönderim göz ardı edildiğinde doğrulama hatası oluşur.

injected_first_solution_routes veya injected_solution_constraint'te gerçekleştirilen bir gönderinin yoksayılmasına izin verilir; çözümleyici, ilgili teslim alma/teslim etme ziyaretlerini gerçekleştiren rotadan kaldırır. precedence_rules yoksayılan gönderimlere atıfta bulunanlar da yoksayılır.

penalty_cost

double

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

ÖNEMLİ: Bu ceza belirtilmezse sonsuz olarak kabul edilir. Yani gönderim tamamlanmalıdır.

pickup_to_delivery_relative_detour_limit

double

Alınma noktasından teslimat noktasına giden en kısa yola kıyasla maksimum göreli ek süreyi belirtir. Belirtiliyse pozitif olmalıdır ve gönderim en az bir teslim alma ve teslimat içermelidir.

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

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

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

Yükle

Bir ziyaret gerçekleştirirken, teslimat ise araç yüküne önceden tanımlanmış bir tutar eklenebilir veya teslimat ise araç yükünden çıkarılabilir. Bu mesajda bu tutar tanımlanır. Şu sayfaya göz atın: load_demands.

Alanlar
amount

int64

İlgili ziyareti gerçekleştiren aracın yükünün ne kadar değişeceği. Tam sayı olduğundan kullanıcıların, hassasiyet kaybı yaşamamak için uygun bir birim seçmeleri önerilir. ≥ 0 olmalıdır.

VisitRequest

Bir araçla yapılabilen ziyaret isteği: Coğrafi konumu (veya iki tane, aşağıya bakın), zaman aralıkları ile gösterilen açılış ve kapanış saatleri ve hizmet süresi (araç, malları teslim almaya veya teslim etmeye geldikten sonra harcadığı süre) vardır.

Alanlar
arrival_location

LatLng

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

arrival_waypoint

Waypoint

Bu VisitRequest işlemini gerçekleştirirken aracın ulaştığı yol noktası. Gönderi modelinde süre mesafe matrisleri varsa arrival_waypoint belirtilmemelidir.

departure_location

LatLng

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

departure_waypoint

Waypoint

Bu VisitRequest tamamlandıktan sonra aracın ayrıldığı yol noktası. 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

Ziyaretlerin varış zamanını kısıtlayan zaman aralıkları. Bir aracın, varış zamanı aralığının dışında hareket edebileceğini unutmayın. Yani varış zamanı + sürenin bir zaman aralığında olması gerekmez. Araç TimeWindow.start_time'ten önce gelirse bekleme süresi yaşanabilir.

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

Zaman aralıkları birbirinden ayrı olmalıdır.Yani hiçbir zaman aralığı diğeriyle örtüşmemeli veya bitişik olmamalıdır. Ayrıca zaman aralıkları artan düzende olmalıdır.

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

duration

Duration

Ziyaretin süresi, yani aracın varış ile ayrılış arasında geçirdiği süre (olası bekleme süresine eklenir; time_windows bölümüne bakın).

cost

double

Bir araç rotasında bu ziyaret isteğini yerine getirmenin maliyeti. Bu, bir gönderimin her alternatif teslim alma veya teslimat işlemi 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 taleplerini yükleyin. Bu, Shipment alanının tamamı yerine yalnızca bu VisitRequest için geçerli olması dışında Shipment.load_demands alanına benzer. Burada listelenen talepler, Shipment.load_demands içinde listelenen taleplere eklenir.

visit_types[]

string

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

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

label

string

Bu VisitRequest için bir etiket belirtir. Bu etiket, yanıtta ilgili ShipmentRoute.Visit içinde visit_label olarak raporlanır.

ShipmentModel

Gönderim modeli, bir dizi araç tarafından yapılması gereken bir dizi gönderimi içerir. Bu modelde, toplam maliyeti en aza indirmek için aşağıdakilerin toplamı kullanılır:

  • Araç rotalarının maliyeti (toplam süre başına maliyet, seyahat süresi başına maliyet ve tüm araçlar için sabit maliyetin toplamı).
  • yapılmayan kargo cezaları.
  • Gönderimlerin dünya genelindeki süresinin maliyeti
Alanlar
shipments[]

Shipment

Modelde yapılması gereken kargolar grubu.

vehicles[]

Vehicle

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

global_start_time

Timestamp

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

Modelin zaman aralığı bir yıldan kısa olmalıdır. Yani global_end_time ve global_start_time birbirinden 31536000 saniye içinde olmalıdır.

cost_per_*hour alanlarını kullanırken performansı artırmak için bu aralığı 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 1 Ocak 1970, 00:00:00 (UTC) (ör. saniye: 0, nanosaniye: 0) kullanılır.

global_end_time

Timestamp

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

global_duration_cost_per_hour

double

Genel planın "küresel 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, örneğin en kısa sürede iş tamamlama için optimizasyon yapmaya çalışmak üzere bu miktara saat başına bir 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 ya da duration_distance_matrix_dst_tags boş olamaz.

Kullanım örnekleri:

  • İki konum vardır: locA ve locB.
  • Rotasını locA'da başlatıp locA'da bitiren 1 araç.
  • locB adresinde 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 vardır: locA, locB ve locC.
  • "Hızlı" matrisini kullanarak rotasını locA'da başlatıp locB'de bitiren 1 araç.
  • "slow" matrisini kullanarak rotasını locB'de başlatıp locB'de bitiren 1 araç.
  • "Hızlı" matrisini kullanarak rotasını locB'de başlatıp locB'de bitiren 1 araç.
  • locC adresinde 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) etiketine sahip ziyaretlerden i matrisindeki diğer ziyaretlere kadar olan süreleri ve mesafeleri tanımlar.

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

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

transition_attributes[]

TransitionAttributes

Modele geçiş özellikleri eklendi.

shipment_type_incompatibilities[]

ShipmentTypeIncompatibility

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

shipment_type_requirements[]

ShipmentTypeRequirement

shipment_type koşulları grupları (ShipmentTypeRequirement bölümüne bakın).

precedence_rules[]

PrecedenceRule

Modelde uygulanması gereken öncelik kuralları grubu.

max_active_vehicles

int32

Maksimum etkin araç sayısını kısıtlar. Rotasında en az bir gönderim yapılan araçlar etkindir. Bu, 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. Ardından 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 bir süre ve mesafe matrisi belirtir.

Alanlar
rows[]

Row

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

vehicle_start_tag

string

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

Her araç başlangıcı tam olarak bir matrisle eşleşmelidir. Yani start_tags alanlarından tam olarak biri, bir matrisin (ve yalnızca bu matrisin) vehicle_start_tag alanıyla 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 öğe içermelidir.

meters[]

double

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

PrecedenceRule

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

Birkaç öncelik aynı (veya ilgili) etkinliklere atıfta bulunabilir. Örneğin: "B teslimatı A teslimatından sonra gerçekleşir" ve "C teslimatı B teslimatından sonra gerçekleşir".

Ayrıca, öncelik yalnızca her iki gönderim de yapıldığında geçerli olur ve aksi takdirde yoksayılır.

Alanlar
first_is_delivery

bool

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

second_is_delivery

bool

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

offset_duration

Duration

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

first_index

int32

"ilk" 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 aşağıdaki gibi ayrılabilir (n ziyaret olduğunu varsayalım):

  |            |            |          |       |  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 fark olduğunu unutmayın:

  • Araç başlangıç ve bitiş zamanı ile her ziyaretin başlangıç ve bitiş zamanı (yani varış ve ayrılış) gibi "düzenli etkinlikler". Belirli bir saniyede gerçekleşir.
  • Ziyaretlerin kendisi ve ziyaretler arasındaki geçiş gibi "zaman aralıkları". Zaman aralıkları bazen sıfır süreye sahip olabilir (yani aynı saniyede başlar ve biter). Ancak genellikle pozitif bir süreye sahiptir.

Değişmezler:

  • n ziyaret varsa n+1 geçiş vardır.
  • Bir ziyaret her zaman kendisinden önceki bir geçiş (aynı dizin) ve kendisinden sonraki bir geçiş (dizin + 1) ile çevrilidir.
  • Araç çalıştırma işlemini her zaman 0 numaralı geçiş izler.
  • Araç sonunun önünde her zaman geçiş #n bulunur.

Büyütme işleminde, 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, TRAVEL, BREAKS, DELAY ve WAIT öğelerinin geçiş sırasında nasıl düzenlenebileceğini aşağıda görebilirsiniz.

  • Bu iki bölge çakışmaz.
  • GECİKME benzersizdir ve bir sonraki ziyaretten (veya aracın bitiş tarihinden) hemen önce kesintisiz bir zaman aralığı olmalıdır. Bu nedenle, başlangıç ve bitiş zamanını öğrenmek için gecikme süresini bilmeniz yeterlidir.
  • ARA VERİLECEK ZAMANLAR, birbirini takip eden ve çakışmayan zaman aralıklarıdır. Yanıt, her bir aranın başlangıç zamanını ve süresini belirtir.
  • TRAVEL ve WAIT "öncelik verilebilir"dir: Bu geçiş sırasında birkaç kez kesintiye uğrayabilirler. Müşteriler, seyahatin "mümkün olan en kısa sürede" gerçekleş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ç. Kaynaktaki diziniyle ShipmentModel tanımlanır.

vehicle_label

string

Bu rotayı gerçekleştiren aracın etiketi. Belirtilmişse 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 ziyaretlerin sıralı dizisi. visits[i], rotada i. ziyarettir. Bu alan boşsa araç kullanılmamış olarak kabul edilir.

transitions[]

Transition

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

has_traffic_infeasibilities

bool

OptimizeToursRequest.consider_road_traffic doğru 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ını karşılarken trafik koşullarına göre ayarlanmış seyahat, gecikmeler ve ziyaretler arasındaki araları tamamlamak için yeterli zaman olmayabilir. Örneğin,

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

Trafik nedeniyle artan seyahat süresi tahmini travel_duration(previous_visit, next_visit) nedeniyle, next_visit adresine varış büyük olasılıkla mevcut zaman aralığından daha geç gerçekleşecektir. Ayrıca, seyahat süresi tahminlerindeki artış ve ziyaret ya da ara verme süresi aralığı kısıtlamaları nedeniyle ara verme zamanının bir ziyaretle çakışma ihtimali de vardır.

route_polyline

EncodedPolyline

Rotayı kodlanmış çoklu çizgi temsili. Bu alan yalnızca OptimizeToursRequest.populate_polylines doğru değerine ayarlanırsa doldurulur.

breaks[]

Break

Bu rotayı yapan araç için planlanan aralar. breaks dizisi, her biri ilgili start_time değerinden başlayıp duration saniye süren zaman aralıklarını temsil eder.

metrics

AggregatedMetrics

Bu rotanın süresi, mesafesi ve yük metrikleri. AggregatedMetrics alanları, bağlama bağlı olarak tüm ShipmentRoute.transitions veya ShipmentRoute.visits için toplanır.

route_costs

map<string, double>

Maliyetle ilgili istek alanlarına göre dökümü alınmış rota maliyeti. Anahtarlar, giriş OptimizeToursRequest'a göre proto yollar ("model.shipments.pickups.cost" gibi) ve değerler, ilgili maliyet alanı tarafından oluşturulan toplam maliyetin tüm rota boyunca toplanmış halidir. Diğer bir deyişle, costs["model.shipments.pickups.cost"], rotadaki tüm teslim alma maliyetlerinin toplamıdır. Modelde tanımlanan tüm maliyetler, TransitionAttributes ile ilgili maliyetler hariç olmak üzere burada ayrıntılı olarak raporlanır. TransitionAttributes ile ilgili maliyetler ise 01.2022 itibarıyla yalnızca toplu 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

Mola süresi.

EncodedPolyline

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

Alanlar
points

string

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

Geçiş

Rotadaki iki etkinlik arasında geçiş. ShipmentRoute öğesinin 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 kat edilen mesafe.

traffic_info_unavailable

bool

OptimizeToursRequest.consider_road_traffic üzerinden trafik istendiğinde ve Transition için trafik bilgileri alınamadığında bu boole değeri true (doğru) olarak ayarlanır. Bu durum geçici (anlık trafik sunucularında nadir görülen bir kesinti) 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 süresinin toplamı (varsa). Her molanın başlangıç zamanı ve süresi ShipmentRoute.breaks içinde saklanır.

wait_duration

Duration

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

total_duration

Duration

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

  • sonraki ziyaret start_time (veya son geçişse vehicle_end_time) - bu geçişin start_time;
  • ShipmentRoute.has_traffic_infeasibilities yanlışsa ek olarak 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 takip edilen 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 yeniden yönlendirme durumunda rotanın oluşturulduğu orijinal amacı dikkate almak için Navigation SDK'ya iletilebilecek 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, değerini istekler arasında 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 araç yüklemeleri. Bu araçta Vehicle.load_limits görünen veya bu rotada yapılan bazı gönderimlerde sıfır olmayan Shipment.load_demands değerine sahip her tür için.

İlk geçiş sırasındaki yükler, araç rotasının başlangıç yükleridir. Ardından, her ziyaretten sonra ziyaretin load_demands değeri, ziyaretin teslimat mı yoksa teslim alma mı olduğuna bağlı olarak bir sonraki geçişin yüklerini almak için eklenir veya çıkarılır.

VehicleLoad

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

Alanlar
amount

int64

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

Ziyaret edin

Bir rota sırasında yapılan ziyaret. Bu ziyaret, bir Shipment'ın teslim alınmasına veya teslim edilmesine karşılık gelir.

Alanlar
shipment_index

int32

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

is_pickup

bool

Doğru ise ziyaret, bir Shipment'ün teslim alınmasına 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 konumuna bu saatten daha erken ulaşabileceğini unutmayın. Saatler ShipmentModel ile tutarlıdır.

load_demands

map<string, Load>

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

detour

Duration

Ziyaretten önce rota üzerinde ziyaret edilen gönderimler ve zaman aralıkları nedeniyle ortaya çıkan olası bekleme süresi nedeniyle ek yan yol süresi. Ziyaret bir teslimat ise yan yol, 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, start_location aracından hesaplanır ve şuna eşittir:

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

string

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

visit_label

string

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

ShipmentTypeIncompatibility

shipment_type özelliğine bağlı olarak gönderimler arasındaki uyumsuzlukları belirtir. Aynı rotadaki uyumsuz kargoların görünümü, 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önderim "uyumlu değildir".

incompatibility_mode

IncompatibilityMode

Uyumsuzluk için uygulanan mod.

IncompatibilityMode

Aynı rotadaki uyumsuz gönderimlerin görünümünün nasıl kısıtlandığı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, uyumlu olmayan türlere sahip iki gönderim hiçbir zaman aynı aracı paylaşamaz.
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY

NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY uyumsuzluk modunda uyumsuz türlere sahip iki gönderim için:

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

ShipmentTypeRequirement

Gönderimlerin shipment_type özelliğine göre gönderimler arasındaki koşulları belirtir. Koşulun ayrıntıları, koşul moduna göre belirlenir.

Alanlar
required_shipment_type_alternatives[]

string

dependent_shipment_types tarafından istenen alternatif gönderim türlerinin listesi.

dependent_shipment_types[]

string

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

NOT: shipment_type'ün kendisine bağlı olduğu şart zincirlerine izin verilmez.

requirement_mode

RequirementMode

Koşula uygulanan mod.

RequirementMode

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

Sıralamalar
REQUIREMENT_MODE_UNSPECIFIED Belirtilmemiş koşul modu. Bu değer hiçbir zaman kullanılmamalıdır.
PERFORMED_BY_SAME_VEHICLE Bu modda, tüm "bağlı" gönderimler "zorunlu" gönderimlerinden 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ğlı" gönderimlerin, teslim alınma sırasında araçta en az bir "zorunlu" gönderim bulunması gerekir.

Bu nedenle, "bağlı" kargo teslim alma işleminde aşağıdakilerden biri bulunmalıdır:

  • Yalnızca teslimat amaçlı "zorunlu" bir gönderim, rota üzerinde daha sonra teslim edildiyse veya
  • "Zorunlu" gönderi, rota üzerinde kendisinden önce teslim alınır ve "zorunlu" gönderinin teslimatı varsa bu teslimat, "bağlı" gönderinin teslim alınmasından sonra yapılmalıdır.
IN_SAME_VEHICLE_AT_DELIVERY_TIME "Bağımlı" gönderimlerin teslimatı sırasında aracında "zorunlu" bir gönderim olması dışında öncekiyle aynıdır.

SkippedShipment

Bir çözümdeki gerçekleştirilmemiş gönderimlerin ayrıntılarını belirtir. Önemsiz durumlarda ve/veya atlamanın nedenini belirleyebiliyorsak nedeni burada bildiririz.

Alanlar
index

int32

Dizin, kaynak ShipmentModel'teki gönderinin dizinine karşılık gelir.

label

string

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

reasons[]

Reason

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

Neden

Gönderimin neden atlandığını açıklayabilmemiz durumunda nedenler burada listelenir. Neden tüm araçlar için aynı değilse reason öğesinde birden fazla öğe bulunur. Atlanan gönderimlerde, example_vehicle_index hariç tüm alanların aynı olduğu kopya nedenler olamaz. Ö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önderim tüm araçlarla uyumlu değildir. Nedenler tüm araçlar için farklı olabilir ancak en az bir aracın "Elma" kapasitesi aşılmış olur (1. araç dahil), en az bir aracın "Armut" kapasitesi aşılmış olur (3. araç dahil) ve en az bir aracın mesafe sınırı aşılmış olur (1. araç dahil).

Alanlar
code

Code

Kodun yorumlarına bakın.

example_exceeded_capacity_type

string

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

example_vehicle_index

int32

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

Kod

Neden türünü tanımlayan kod. Buradaki sıra anlamsız. Özellikle, her ikisi de geçerliyse belirli bir nedenin çözümde diğerinden önce görünüp görünmeyeceğine dair hiçbir gösterge vermez.

Sıralamalar
CODE_UNSPECIFIED Bu yöntem hiçbir zaman kullanılmamalıdır.
NO_VEHICLE Modelde, tüm gönderimlerin uygulanamaz hale gelmesine neden olan bir araç yok.
DEMAND_EXCEEDS_VEHICLE_CAPACITY Gönderinin talebi, bir aracın bazı kapasite türleri (bunlardan biri example_exceeded_capacity_type) için kapasitesini aşıyor.
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT

Bu gönderimi gerçekleştirmek için gereken minimum mesafe (yani aracın start_location noktasından gönderimin teslim alınma ve/veya teslimat konumlarına ve aracın bitiş konumuna 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 servis süresi dahil olmak üzere bu gönderimi gerçekleştirmek için gereken minimum süre, aracın route_duration_limit değerini aşıyor.

Not: Seyahat süresi, en iyi durum senaryosuna göre hesaplanır. Yani jeodezik mesafe x 36 m/sn (yaklaşık 130 km/sa) olarak hesaplanır.

CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT Yukarıdakiyle aynıdır ancak yalnızca minimum seyahat süresini ve aracın travel_duration_limit değerini karşılaştırırız.
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS Araç, en erken başlangıç zamanında başlarsa en iyi senaryoda (zaman hesaplaması için CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT bölümüne bakın) bu gönderimi gerçekleştiremez: 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.

TimeWindow

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

Sabit zaman aralığı sınırları (start_time ve end_time), etkinliğin en erken ve en geç zamanını (start_time <= event_time <= end_time gibi) zorunlu kılar. Yumuşak zaman aralığı alt sınırı soft_start_time, etkinliğin soft_start_time etkinliğinden ne kadar süre önce gerçekleştiğiyle orantılı bir maliyete neden olarak etkinliğin soft_start_time tarihinde veya sonrasında gerçekleşmesi tercihini ifade eder. Yumuşak zaman aralığı üst sınırı soft_end_time, etkinliğin soft_end_time'ten ne kadar süre sonra gerçekleştiğiyle orantılı bir maliyete neden olarak etkinliğin soft_end_time'te veya öncesinde gerçekleşmesini tercih ettiğinizi ifade eder. start_time, end_time, soft_start_time ve soft_end_time, genel zaman sınırlarına (ShipmentModel.global_start_time ve ShipmentModel.global_end_time'e bakın) uymalı ve aşağıdakilere dikkat etmelidir:

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

Timestamp

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

end_time

Timestamp

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

soft_start_time

Timestamp

Zaman aralığının yumuşak 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 değerinden ö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 ayarlandıysa ayarlanabilir.

cost_per_hour_after_soft_end_time

double

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

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

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

TransitionAttributes

Bir rotada art arda yapılan 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ğine göre).

Alanlar
src_tag

string

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

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

excluded_src_tag

string

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

dst_tag

string

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

excluded_dst_tag

string

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

cost

double

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

cost_per_kilometer

double

Bu geçiş sırasında kat edilen mesafeye uygulanan kilometre başına maliyeti belirtir. Araçlarda belirtilen tüm Vehicle.cost_per_kilometer değerlerini içerir.

distance_limit

DistanceLimit

Bu geçiş sırasında kat edilen mesafeyle ilgili bir sınır belirtir.

2021/06 itibarıyla yalnızca yumuşak sınırlar desteklenmektedir.

delay

Duration

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

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

Araç

Gönderim sorunu olan bir aracı modeller. Bir gönderim sorununun çözülmesi, bu araç için start_location ile end_location arasında bir rota oluşturur. Rota, ziyaretlerden oluşan bir sıradır (ShipmentRoute bölümüne bakın).

Alanlar
display_name

string

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

travel_mode

TravelMode

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

route_modifiers

RouteModifiers

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

start_location

LatLng

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

start_waypoint

Waypoint

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

end_location

LatLng

Aracın son VisitRequest'ünü tamamladıktan sonra sona erdiği coğrafi konum. Belirtilmemişse aracın ShipmentRoute, son VisitRequest'unu tamamladığında hemen sona erer. Gönderi modelinde süre ve mesafe matrisleri varsa end_location belirtilmemelidir.

end_waypoint

Waypoint

Aracın son VisitRequest'ünü tamamladıktan sonra sona erdiği coğrafi konumu temsil eden yol noktası. end_waypoint veya end_location belirtilmezse aracın ShipmentRoute özelliği, son VisitRequest'ı tamamladığı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şı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ı. Bu değerler, genel zaman sınırları içinde olmalıdır (ShipmentModel.global_* alanlarına bakın). Belirtilmemişse bu genel zaman sınırlarının dışında herhangi bir sınır yoktur.

Aynı tekrarlanan alana ait zaman aralıkları ayrı olmalıdır.Yani hiçbir zaman aralığı başka bir zaman aralığıyla çakışamaz veya başka bir zaman aralığına bitişik olamaz. Ayrıca zaman aralıkları 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 ulaşabileceği zaman aralıkları. Bu değerler, genel zaman sınırları içinde olmalıdır (ShipmentModel.global_* alanlarına bakın). Belirtilmemişse bu genel zaman sınırlarının dışında herhangi bir sınır yoktur.

Aynı tekrarlanan alana ait zaman aralıkları ayrı olmalıdır.Yani hiçbir zaman aralığı başka bir zaman aralığıyla çakışamaz veya başka bir zaman aralığına bitişik olamaz. Ayrıca zaman aralıkları 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 kargo boşaltma politikası uygulanıyor.

load_limits

map<string, LoadLimit>

Aracın kapasiteleri (ör. ağırlık, hacim, palet sayısı). Haritadaki anahtarlar, Shipment.load_demands alanının anahtarlarıyla tutarlı olan yük türünün tanımlayıcılarıdır. Belirli bir anahtar bu haritada yoksa ilgili kapasitenin sınırsız olduğu kabul edilir.

cost_per_hour

double

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

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

cost_per_traveled_hour

double

Araç rotasının kat edilen her saati başına maliyet. Bu maliyet yalnızca rotanın aldığı seyahat süresine (yani ShipmentRoute.transitions'te raporlanan süreye) uygulanır ve bekleme süresi ile ziyaret süresini içermez.

cost_per_kilometer

double

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

fixed_cost

double

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

used_if_route_is_empty

bool

Bu alan yalnızca rotalarında kargo hizmeti verilmeyen 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önderim hizmeti sunmasa bile başlangıç konumundan bitiş konumuna gider ve başlangıç ile bitiş arasındaki seyahat nedeniyle oluşan zaman ve mesafe maliyetleri dikkate alınır.

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

route_duration_limit

DurationLimit

Aracın rotasının toplam süresi için uygulanan sınır. Belirli bir OptimizeToursResponse'de, 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'de rota seyahat süresi, tüm transitions.travel_duration'ların toplamıdır.

route_distance_limit

DistanceLimit

Aracın rotasının toplam mesafesine uygulanan sınır. Belirli bir OptimizeToursResponse'te rota mesafesi, tüm transitions.travel_distance_meters'ların 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'e ek olarak alınacak 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ği birden fazla türdeyse haritaya her tür için bir süre eklenir.

break_rule

BreakRule

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

label

string

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

ignore

bool

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

Bir gönderim injected_first_solution_routes içinde yoksayılan bir araç tarafından gerçekleştirilirse ilk çözümde atlanır ancak yanıtta gerçekleştirilebilir.

Bir gönderim injected_solution_constraint'te yoksayılan bir araç tarafından gerçekleştirilirse ve ilgili teslim alma/teslim etme işlemi, araçta kalması için kısıtlanmışsa (yani RELAX_ALL_AFTER_THRESHOLD düzeyine gevşetilmemişse) yanıtta atlanır. Bir gönderinin allowed_vehicle_indices alanı boş değilse ve izin verilen tüm araçlar yoksayılıyorsa bu gönderi yanıtta atlanır.

travel_duration_multiple

double

Bu aracın seyahat sürelerini artırmak veya azaltmak için kullanılabilecek bir çarpma faktörünü belirtir. Örneğin, bu değeri 2,0 olarak ayarlamak, bu aracın daha yavaş olduğu ve seyahat sürelerinin standart araçlara kıyasla iki kat daha uzun olduğu anlamına gelir. Bu çarpan, ziyaret sürelerini etkilemez. cost_per_hour veya cost_per_traveled_hour belirtilirse maliyeti etkiler. Bu değer [0,001; 1000,0] aralığında olmalıdır. Ayarlanmamışsa araç standarttır ve bu çarpan 1,0 olarak kabul edilir.

UYARI: Seyahat süreleri, bu çarpan uygulandıktan sonra ancak herhangi bir sayısal işlem yapılmadan önce en yakın saniyeye yuvarlanır. Bu nedenle, küçük bir çarpan 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.

Yumuşak sınır alanı tanımlanırken hem yumuşak maksimum eşik hem de ilişkili maliyet birlikte tanımlanmalıdır.

Alanlar
max_duration

Duration

Süreyi en fazla max_duration olarak kısıtlayan katı bir sınır.

soft_max_duration

Duration

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

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

quadratic_soft_max_duration

Duration

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

Tanımlanmışsa quadratic_soft_max_duration pozitif olmalıdır. max_duration de tanımlanmışsa quadratic_soft_max_duration, max_duration'ten küçük olmalı ve fark bir günden fazla olmamalıdır:

max_duration - quadratic_soft_max_duration <= 86400 seconds

cost_per_hour_after_soft_max

double

soft_max_duration eşiği ihlal edildiğinde oluşan saatlik maliyet. Süre eşik değerinin altındaysa ek maliyet 0'dır. Aksi takdirde maliyet, süreye bağlı olarak aşağıdaki gibidir:

  cost_per_hour_after_soft_max * (duration - soft_max_duration)

Maliyet pozitif olmalıdır.

cost_per_square_hour_after_quadratic_soft_max

double

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

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

  cost_per_square_hour_after_quadratic_soft_max *
  (duration - quadratic_soft_max_duration)^2

Maliyet pozitif olmalıdır.

LoadLimit

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

Alanlar
soft_max_load

int64

Yükün yumuşak 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ında yük soft_max_load'ü aşarsa aşağıdaki maliyet cezası uygulanır (araç başına yalnızca bir kez): (yük - soft_max_load) * cost_per_unit_above_soft_max. Tüm maliyetler toplanır ve Shipment.penalty_cost ile aynı birimde olmalıdır.

start_load_interval

Interval

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

end_load_interval

Interval

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

max_load

int64

Kabul edilebilir maksimum yük miktarı.

Aralık

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

Alanlar
min

int64

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

max

int64

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

TravelMode

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

Bunlar, Google Haritalar Platformu Rotalar Tercih Edilen API seyahat modlarının alt kümesi olmalıdır. https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteTravelMode adresine bakın.

Sıralamalar
TRAVEL_MODE_UNSPECIFIED Belirtilmemiş ulaşım şekli. DRIVING ile eşdeğerdir.
DRIVING Araçla yol tarifine karşılık gelen ulaşım şekli (araba, ...)
WALKING Yürüyüş yol tariflerine karşılık gelen ulaşım şekli.

UnloadingPolicy

Bir aracın nasıl boşaltılabileceğiyle ilgili politika. Yalnızca hem teslim alma hem de teslimat içeren gönderimler için geçerlidir.

Diğer gönderimler, unloading_policy'ten bağımsız olarak rotanın herhangi bir yerinde yapılabilir.

Sıralamalar
UNLOADING_POLICY_UNSPECIFIED Belirtilmemiş boşaltma politikası; teslimatlar, ilgili teslim alma işlemlerinden hemen sonra yapılmalıdır.
LAST_IN_FIRST_OUT Teslimatlar, teslim almaların ters sırasına göre yapılmalıdır.
FIRST_IN_FIRST_OUT Teslimatlar, teslim almalarla aynı sırada yapılmalıdır

Ara nokta

Bir ara noktayı kapsüller. Ara noktalar, ziyaret isteklerinin varış ve kalkış konumlarını ve araçların başlangıç ile bitiş konumlarını işaretler.

Alanlar
side_of_road

bool

İsteğe bağlı. Bu yol işaretinin konumunun, aracın yolun belirli bir tarafında durması için tercih edildiğini belirtir. Bu değeri ayarlarsanız rota, aracın yolun ortasından konuma doğru eğimli olan tarafında durabilmesi için konumdan geçer. Bu seçenek "YÜRÜYÜŞ" seyahat modunda kullanılamaz.

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

Dönüm noktasıyla ilişkili ÖY yer kimliği.