- JSON gösterimi
- Gönderi
- VisitRequest
- LatLng
- Waypoint
- Konum
- TimeWindow
- Araç
- TravelMode
- RouteModifiers
- UnloadingPolicy
- LoadLimit
- Aralık
- LoadCost
- DurationLimit
- DistanceLimit
- BreakRule
- BreakRequest
- FrequencyConstraint
- Hedef
- Tür
- DurationDistanceMatrix
- Satır
- TransitionAttributes
- ShipmentTypeIncompatibility
- IncompatibilityMode
- ShipmentTypeRequirement
- RequirementMode
- PrecedenceRule
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ı).
- gerçekleştirilmeyen gönderim cezaları
- Gönderimlerin toplam süresinin maliyeti
| JSON gösterimi |
|---|
{ "shipments": [ { object ( |
| Alanlar | |
|---|---|
shipments[] |
Modelde gerçekleştirilmesi gereken gönderi grubu. |
vehicles[] |
Ziyaretleri gerçekleştirmek için kullanılabilecek araçlar. |
objectives[] |
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 Deneysel: Daha fazla bilgi için https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request adresini ziyaret edin. |
globalStartTime |
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,
Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da kabul edilir. Örnekler: |
globalEndTime |
Ayarlanmazsa varsayılan olarak 1 Ocak 1971, 00:00:00 UTC (yani saniye: 31536000, nanosaniye: 0) kullanılır. Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da kabul edilir. Örnekler: |
globalDurationCostPerHour |
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, |
durationDistanceMatrices[] |
Modelde kullanılan süre ve mesafe matrislerini belirtir. Bu alan boşsa Kullanım örnekleri:
|
durationDistanceMatrixSrcTags[] |
Süre ve mesafe matrislerinin kaynaklarını tanımlayan etiketler; Etiketler |
durationDistanceMatrixDstTags[] |
Süre ve mesafe matrislerinin hedeflerini tanımlayan etiketler; Etiketler |
transitionAttributes[] |
Modele geçiş özellikleri eklendi. |
shipmentTypeIncompatibilities[] |
Uyumsuz shipment_types kümeleri ( |
shipmentTypeRequirements[] |
|
precedenceRules[] |
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. |
maxActiveVehicles |
Etkin araçların maksimum sayısını kısıtlar. Rotası en az bir sevkiyat gerçekleştiren araçlar etkin olarak kabul edilir. 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. |
Gönderim
Tek bir öğenin teslim alma noktasından teslimat noktasına 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.
| JSON gösterimi |
|---|
{ "displayName": string, "pickups": [ { object ( |
| Alanlar | |
|---|---|
displayName |
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[] |
Gönderiyle ilişkili teslim alma alternatifleri grubu. Belirtilmezse aracın yalnızca teslimatlara karşılık gelen bir konumu ziyaret etmesi gerekir. |
deliveries[] |
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. |
loadDemands |
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. |
allowedVehicleIndices[] |
Bu sevkiyatı gerçekleştirebilecek araçlar. Boş bırakılırsa tüm araçlar bu görevi gerçekleştirebilir. Araçlar, |
costsPerVehicle[] |
Bu gönderi her bir araç tarafından teslim edildiğinde ortaya çıkan maliyeti belirtir. Belirtilirse aşağıdakilerden biri olmalıdır:
Bu maliyetler |
costsPerVehicleIndices[] |
|
pickupToDeliveryAbsoluteDetourLimit |
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 Aynı gönderide 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. |
pickupToDeliveryTimeLimit |
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, teslim alma ve teslimat için hangi alternatiflerin seçildiğine veya araç hızına bağlı değildir. Bu, maksimum rota değişikliği kısıtlamalarıyla birlikte belirtilebilir. Çözüm, her iki spesifikasyona da uyar. |
shipmentType |
Bu gönderi için "tür" belirten boş olmayan dize. Bu özellik, Tek bir ziyaret için belirtilen |
label |
Bu gönderi için bir etiket belirtir. Bu etiket, ilgili |
ignore |
Doğruysa bu gönderiyi atla ancak Modelde
|
penaltyCost |
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. Yani gönderimin tamamlanması gerekir. |
pickupToDeliveryRelativeDetourLimit |
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 Aynı gönderide 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. |
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.
| JSON gösterimi |
|---|
{ "arrivalLocation": { object ( |
| Alanlar | |
|---|---|
arrivalLocation |
Bu |
arrivalWaypoint |
Bu |
departureLocation |
Aracın bu |
departureWaypoint |
Aracın bu |
tags[] |
Ziyaret isteğine eklenen etiketleri belirtir. Boş veya yinelenen dizelere izin verilmez. |
timeWindows[] |
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ç
Zaman pencereleri ayrık olmalıdır. Yani hiçbir zaman penceresi birbiriyle çakışmamalı veya bitişik olmamalı ve artan sırada olmalıdır.
|
duration |
Ziyaret süresi, yani aracın varış ve ayrılış arasında geçirdiği süre (olası bekleme süresine eklenir; bkz. |
cost |
Bu ziyaret isteğini bir araç rotasında 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, |
loadDemands |
Bu ziyaret isteğinin yük talepleri. Bu, |
visitTypes[] |
Ziyaret türlerini belirtir. Bu, bir aracın bu ziyareti tamamlaması için gereken ek süreyi tahsis etmek amacıyla kullanılabilir (bkz. Bir tür yalnızca bir kez görünebilir. |
label |
Bu |
avoidUTurns |
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. |
LatLng
Enlem/boylam çiftini temsil eden bir nesne. Bu, enlem ve boylam derecelerini temsil eden bir çift double değeri olarak ifade edilir. Aksi belirtilmedikçe bu nesne WGS84 standardına uygun olmalıdır. Değerler normalleştirilmiş aralıklarda olmalıdır.
| JSON gösterimi |
|---|
{ "latitude": number, "longitude": number } |
| Alanlar | |
|---|---|
latitude |
Derece cinsinden enlem. [-90,0, +90,0] aralığında olmalıdır. |
longitude |
Derece cinsinden boylam. [-180,0, +180,0] aralığında olmalıdır. |
Ara nokta
Bir ara noktayı kapsar. Yol noktaları, VisitRequest'lerin varış ve kalkış konumlarını ve araçların başlangıç ve bitiş konumlarını işaretler.
| JSON gösterimi |
|---|
{
"sideOfRoad": boolean,
"vehicleStopover": boolean,
// The following is a list of mutually exclusive fields. At most one of the
// fields will be set in a response:
"location": {
object ( |
| Alanlar | |
|---|---|
sideOfRoad |
İsteğe bağlıdır. Bu ara noktanın konumunun, aracın yolun belirli bir tarafında durması için bir tercihe sahip olması gerektiğini belirtir. 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, "WALKING" seyahat modunda kullanılamaz. |
vehicleStopover |
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 "locationType" değeri "location" olduğunda kullanılabilir. Deneysel: Bu alanın davranışı veya varlığı gelecekte değişebilir. |
| Bir konumu temsil etmenin farklı yolları. Aşağıda, birbirini dışlayan alanların listesi verilmiştir. Yanıtta en fazla bir alan ayarlanır: | |
location |
İsteğe bağlı bir başlık da dahil olmak üzere coğrafi koordinatlar kullanılarak belirtilen bir nokta. |
placeId |
Ara noktayla ilişkili ÖY yer kimliği. Bir VisitRequest'in varış veya kalkış konumunu belirtmek için yer kimliği kullanırken, yere gitmek 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. |
| Birbirini hariç tutan alanların sonu. | |
Konum
Bir konumu (coğrafi nokta ve isteğe bağlı bir yön) kapsar.
| JSON gösterimi |
|---|
{
"latLng": {
object ( |
| Alanlar | |
|---|---|
latLng |
Ara noktanın coğrafi koordinatları. |
heading |
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. |
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.
startTime ve endTime şeklindeki kesin zaman aralığı sınırları, etkinliğin en erken ve en geç zamanını startTime <= event_time <=
endTime olacak şekilde zorunlu kılar. Esnek zaman aralığının alt sınırı olan softStartTime, etkinliğin softStartTime tarihinde veya sonrasında gerçekleşmesi tercihini ifade eder. Bu tercih, etkinliğin softStartTime'dan ne kadar önce gerçekleştiğiyle orantılı bir maliyet oluşturur. Esnek zaman aralığı üst sınırı (softEndTime), etkinliğin softEndTime tarihinde veya daha önce gerçekleşmesi tercihini ifade eder. Bu tercih, etkinliğin softEndTime tarihinden ne kadar sonra gerçekleştiğiyle orantılı bir maliyet doğurur. startTime, endTime, softStartTime ve softEndTime, 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 <= `startTime` <= `endTime` and
0 <= `startTime` <= `softStartTime` and
0 <= `softEndTime` <= `endTime`.
| JSON gösterimi |
|---|
{ "startTime": string, "endTime": string, "softStartTime": string, "softEndTime": string, "costPerHourBeforeSoftStartTime": number, "costPerHourAfterSoftEndTime": number } |
| Alanlar | |
|---|---|
startTime |
Kesin zaman aralığının başlangıç zamanı. Belirtilmezse Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da kabul edilir. Örnekler: |
endTime |
Kesin zaman aralığının bitiş zamanı. Belirtilmezse Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da kabul edilir. Örnekler: |
softStartTime |
Zaman aralığının esnek başlangıç zamanı. Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da kabul edilir. Örnekler: |
softEndTime |
Zaman aralığının esnek bitiş zamanı. Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da kabul edilir. Örnekler: |
costPerHourBeforeSoftStartTime |
Etkinlik softStartTime'dan önce gerçekleşirse modeldeki diğer maliyetlere eklenen saatlik maliyet. Şu şekilde hesaplanır: Bu maliyet pozitif olmalıdır ve alan yalnızca softStartTime ayarlanmışsa ayarlanabilir. |
costPerHourAfterSoftEndTime |
Etkinlik Bu maliyet pozitif olmalıdır ve alan yalnızca |
Araç
Sevkiyat problemindeki bir aracı modeller. Bir sevkiyat sorununu çözmek, bu araç için startLocation ile başlayıp endLocation ile biten bir rota oluşturur. Rota, bir dizi ziyarettir (ShipmentRoute bölümüne bakın).
| JSON gösterimi |
|---|
{ "displayName": string, "travelMode": enum ( |
| Alanlar | |
|---|---|
displayName |
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. |
travelMode |
Aracın kullanabileceği yolları ve hızını etkileyen seyahat modu. |
routeModifiers |
Belirli bir araç için rotaların hesaplanma şeklini etkileyen ve karşılanması gereken bir dizi koşul. |
startLocation |
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 |
startWaypoint |
Aracın herhangi bir gönderiyi teslim almadan önce başladığı coğrafi konumu temsil eden ara nokta. |
endLocation |
Aracın son |
endWaypoint |
Aracın son |
startTags[] |
Aracın rotasının başlangıcına eklenen etiketleri belirtir. Boş veya yinelenen dizelere izin verilmez. |
endTags[] |
Aracın rotasının sonuna eklenen etiketleri belirtir. Boş veya yinelenen dizelere izin verilmez. |
startTimeWindows[] |
Aracın başlangıç konumundan ayrılabileceği zaman aralıkları. Genel zaman sınırları içinde olmalıdır ( 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ırada olmalıdır.
|
endTimeWindows[] |
Aracın varış konumuna ulaşabileceği zaman aralıkları. Genel zaman sınırları içinde olmalıdır ( 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ırada olmalıdır.
|
unloadingPolicy |
Araçta boşaltma politikası uygulanıyor. |
loadLimits |
Aracın kapasitesi (ör. ağırlık, hacim, palet sayısı) Eşlemedeki anahtarlar, yük türünün tanımlayıcılarıdır ve |
costPerHour |
Araç maliyetleri: Tüm maliyetler toplanır ve 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 |
costPerTraveledHour |
Araç rotasının seyahat edilen saat başına maliyeti. Bu maliyet yalnızca rota tarafından kullanılan seyahat süresine (yani |
costPerKilometer |
Araç rotasının kilometre başına maliyeti. Bu maliyet, |
fixedCost |
Bu araç bir gönderiyi taşımak için kullanılıyorsa uygulanan sabit maliyet. |
usedIfRouteIsEmpty |
Bu alan, yalnızca rotaları herhangi bir sevkiyata 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 |
routeDurationLimit |
Aracın rotasının toplam süresine uygulanan sınır. Belirli bir |
travelDurationLimit |
Aracın rotasının seyahat süresine uygulanan sınır. Belirli bir |
routeDistanceLimit |
Aracın rotasının toplam mesafesine uygulanan sınır. Belirli bir |
extraVisitDurationForVisitType |
visitTypes dizelerinden sürelere bir eşleme belirtir. Süre, belirtilen Bir ziyaret isteğinde birden fazla tür varsa haritaya her tür için bir süre eklenir. |
breakRule |
Bu araçta uygulanacak mola programını açıklar. Boş bırakılırsa bu araç için mola planlanmaz. |
label |
Bu araç için bir etiket belirtir. Bu etiket, yanıtta ilgili |
ignore |
Doğru ise
|
travelDurationMultiple |
Bu aracın seyahat sürelerini artırmak veya azaltmak için kullanılabilecek bir çarpım 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. 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 |
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, ...). |
WALKING |
Yaya yol tarifine karşılık gelen seyahat modu. |
TWO_WHEELER |
İki tekerlekli, motorlu araç. Örneğin, motosiklet. Bu, insan gücüyle çalışan modu kapsayan BICYCLING seyahat modundan farklıdır. Bu seyahat modu yalnızca İki tekerlekli araçların desteklendiği ülkeler ve bölgeler bölümünde listelenen ülkelerde desteklenir. |
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.
| JSON gösterimi |
|---|
{ "avoidTolls": boolean, "avoidHighways": boolean, "avoidFerries": boolean, "avoidIndoor": boolean } |
| Alanlar | |
|---|---|
avoidTolls |
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. |
avoidHighways |
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. |
avoidFerries |
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. |
avoidIndoor |
İ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 |
UnloadingPolicy
Bir 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, unloadingPolicy parametresinden 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 yapılmalıdır. |
LoadLimit
Bir araç için geçerli olan yük sınırını tanımlar (ör. "bu kamyon en fazla 3.500 kg yük taşıyabilir"). Şu sayfaya göz atın: loadLimits.
| JSON gösterimi |
|---|
{ "softMaxLoad": string, "costPerUnitAboveSoftMax": number, "startLoadInterval": { object ( |
| Alanlar | |
|---|---|
softMaxLoad |
Yükün sanal sınırı. Şu sayfaya göz atın: |
costPerUnitAboveSoftMax |
Bu aracın rotası boyunca yük |
startLoadInterval |
Rotanın başlangıcında aracın kabul edilebilir yük aralığı. |
endLoadInterval |
Rotanın sonunda aracın kabul edilebilir yük aralığı. |
maxLoad |
Kabul edilebilir maksimum yük miktarı. |
costPerKilometer |
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 enerjinin boyutuna sahiptir. Deneysel: Daha fazla bilgi için https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request adresini ziyaret edin. |
costPerTraveledHour |
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ığı.
| JSON gösterimi |
|---|
{ "min": string, "max": string } |
| Alanlar | |
|---|---|
min |
Kabul edilebilir minimum yük. 0 veya daha büyük olmalıdır. Her ikisi de belirtilmişse |
max |
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 |
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(load,
loadThreshold) *costPerUnitBelowThreshold - maks(0, yük -
loadThreshold) *costPerUnitAboveThreshold
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 {
costPerKilometer {
loadThreshold: 15
costPerUnitBelowThreshold: 2.0
costPerUnitAboveThreshold: 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 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 20 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 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ş şeklindeyse ve geçişler varsa:
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 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
- geçiş 3: 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.
| JSON gösterimi |
|---|
{ "loadThreshold": string, "costPerUnitBelowThreshold": number, "costPerUnitAboveThreshold": number } |
| Alanlar | |
|---|---|
loadThreshold |
Bir yük birimini taşıma maliyetinin costPerUnitBelowThreshold değerinden costPerUnitAboveThreshold değerine değiştiği yük miktarı. 0'dan büyük veya 0'a eşit olmalıdır. |
costPerUnitBelowThreshold |
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. |
costPerUnitAboveThreshold |
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. |
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.
| JSON gösterimi |
|---|
{ "maxDuration": string, "softMaxDuration": string, "quadraticSoftMaxDuration": string, "costPerHourAfterSoftMax": number, "costPerSquareHourAfterQuadraticSoftMax": number } |
| Alanlar | |
|---|---|
maxDuration |
Süreyi en fazla maxDuration olacak şekilde kısıtlayan kesin bir sınır. |
softMaxDuration |
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 |
quadraticSoftMaxDuration |
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.
|
costPerHourAfterSoftMax |
Maliyet negatif olmamalıdır. |
costPerSquareHourAfterQuadraticSoftMax |
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: Maliyet negatif olmamalıdır. |
DistanceLimit
Gidilebilecek maksimum mesafeyi tanımlayan bir sınır. Sert veya yumuşak olabilir.
Esnek sınır tanımlanmışsa hem softMaxMeters hem de costPerKilometerAboveSoftMax tanımlanmalı ve negatif olmamalıdır.
| JSON gösterimi |
|---|
{ "maxMeters": string, "softMaxMeters": string, "costPerKilometerBelowSoftMax": number, "costPerKilometerAboveSoftMax": number } |
| Alanlar | |
|---|---|
maxMeters |
Mesafeyi en fazla maxMeters olacak şekilde kısıtlayan kesin bir sınır. Sınır, negatif olmayan bir değer olmalıdır. |
softMaxMeters |
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 softMaxMeters, maxMeters'tan küçük ve negatif olmayan bir değer olmalıdır. |
costPerKilometerBelowSoftMax |
Kilometre başına maliyet, Bu maliyet |
costPerKilometerAboveSoftMax |
Mesafe Maliyet negatif olmamalıdır. |
BreakRule
Bir araç için mola (ör. öğle yemeği molası) oluşturma kuralları. Mola, aracın mevcut konumunda boşta kaldığı ve herhangi bir ziyaret gerçekleştiremediği kesintisiz bir süredir. 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 başlangıç zamanı etkilenmez.
- veya araç bitişinden sonra (aynı şekilde, araç bitiş zamanıyla birlikte) biter.
| JSON gösterimi |
|---|
{ "breakRequests": [ { object ( |
| Alanlar | |
|---|---|
breakRequests[] |
Ara dizisi. |
frequencyConstraints[] |
Birden fazla |
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ı (earliestStartTime / latestStartTime) çakışabilir ancak siparişle uyumlu olmalıdır (bu kontrol edilir).
| JSON gösterimi |
|---|
{ "earliestStartTime": string, "latestStartTime": string, "minDuration": string } |
| Alanlar | |
|---|---|
earliestStartTime |
Zorunlu. Aranın başlangıcı için alt sınır (dahil). Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da kabul edilir. Örnekler: |
latestStartTime |
Zorunlu. Aranın başlangıcı için üst sınır (dahil). Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da kabul edilir. Örnekler: |
minDuration |
Zorunlu. Aranın minimum süresi. Pozitif olmalıdır. |
FrequencyConstraint
"Her 12 saatte bir en az 1 saatlik mola verilmelidir" gibi minimum mola sıklığı zorunlu kılınarak yukarıda belirtilen molaların sıklığı ve süresi daha da kısıtlanabilir. 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 kuralına karşılık gelir:
{
minBreakDuration { seconds: 3600 } # 1 hour.
maxInterBreakDuration { 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
| JSON gösterimi |
|---|
{ "minBreakDuration": string, "maxInterBreakDuration": string } |
| Alanlar | |
|---|---|
minBreakDuration |
Zorunlu. Bu kısıtlama için minimum ara süresi. Negatif olmayan. |
maxInterBreakDuration |
Zorunlu. Rotada en azından kısmen |
Hedef
Hedefler, maliyet modelinin yerini tamamen alır ve bu nedenle önceden mevcut 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.
| JSON gösterimi |
|---|
{
"type": enum ( |
| Alanlar | |
|---|---|
type |
Hedefin türü. |
weight |
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'dı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 henüz mevcut değilse her zaman kullanıcı tarafından belirtilen hedeflere referans olarak 1,0 ağırlıkla eklenir. |
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 |
DurationDistanceMatrix
Ziyaret ve araç başlangıç konumlarından ziyaret ve araç bitiş konumlarına kadar olan süre ve mesafe matrisini belirtir.
| JSON gösterimi |
|---|
{
"rows": [
{
object ( |
| Alanlar | |
|---|---|
rows[] |
Süre ve mesafe matrisinin satırlarını belirtir. |
vehicleStartTag |
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 Tüm matrislerin farklı bir |
Satır
Süre ve mesafe matrisinin bir satırını belirtir.
| JSON gösterimi |
|---|
{ "durations": [ string ], "meters": [ number ] } |
| Alanlar | |
|---|---|
durations[] |
Belirli bir satırın süre değerleri. |
meters[] |
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, |
TransitionAttributes
Bir rotadaki iki ardışık 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).
| JSON gösterimi |
|---|
{
"srcTag": string,
"excludedSrcTag": string,
"dstTag": string,
"excludedDstTag": string,
"cost": number,
"costPerKilometer": number,
"distanceLimit": {
object ( |
| Alanlar | |
|---|---|
srcTag |
Bu özelliklerin geçerli olduğu (kaynak->hedef) geçişler grubunu tanımlayan etiketler. Bir kaynak ziyaret veya araç çalıştırma, yalnızca |
excludedSrcTag |
Şu sayfaya göz atın: |
dstTag |
Bir hedef ziyaret veya araç sonu, yalnızca |
excludedDstTag |
Şu sayfaya göz atın: |
cost |
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. |
costPerKilometer |
Bu geçiş gerçekleştirilirken kat edilen mesafeye uygulanan kilometre başına maliyeti belirtir. Araçlarda belirtilen |
distanceLimit |
Bu geçiş gerçekleştirilirken kat edilen mesafe için bir sınır belirtir. Haziran 2021 itibarıyla yalnızca esnek sınırlar desteklenmektedir. |
delay |
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. |
ShipmentTypeIncompatibility
Gönderiler arasındaki uyumsuzlukları, shipmentType değerlerine göre belirtir. Uyumsuz gönderilerin aynı rotada görünmesi, uyumsuzluk moduna göre kısıtlanır.
| JSON gösterimi |
|---|
{
"types": [
string
],
"incompatibilityMode": enum ( |
| Alanlar | |
|---|---|
types[] |
Uyumsuz türlerin listesi. Listelenenler arasında farklı |
incompatibilityMode |
Uyumsuzluğa uygulanan mod. |
IncompatibilityMode
Uyumsuz gönderilerin aynı rotada görünmesinin 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:
|
ShipmentTypeRequirement
shipmentType değerine göre gönderiler arasındaki koşulları belirtir. Şartın ayrıntıları, şart modu tarafından tanımlanır.
| JSON gösterimi |
|---|
{
"requiredShipmentTypeAlternatives": [
string
],
"dependentShipmentTypes": [
string
],
"requirementMode": enum ( |
| Alanlar | |
|---|---|
requiredShipmentTypeAlternatives[] |
|
dependentShipmentTypes[] |
NOT: Bir |
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 |
Bu nedenle, "bağımlı" bir gönderi teslim alma işlemi şunlardan birine sahip olmalıdır:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
Öncekiyle aynıdır ancak "bağımlı" gönderilerin teslimat sırasında araçlarında "gerekli" bir gönderi olması gerekir. |
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 offsetDuration 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 sevkiyat da gerçekleştirildiğinde geçerli olur, aksi takdirde yoksayılır.
| JSON gösterimi |
|---|
{ "firstIsDelivery": boolean, "secondIsDelivery": boolean, "offsetDuration": string, "firstIndex": integer, "secondIndex": integer } |
| Alanlar | |
|---|---|
firstIsDelivery |
"İlk" etkinliğin teslimat olup olmadığını gösterir. |
secondIsDelivery |
"İkinci" etkinliğin teslimat olup olmadığını gösterir. |
offsetDuration |
"İlk" ve "ikinci" etkinlik arasındaki fark. Negatif olabilir. |
firstIndex |
"İlk" etkinliğin gönderi dizini. Bu alan belirtilmelidir. |
secondIndex |
"İkinci" etkinliğin gönderi dizini. Bu alan belirtilmelidir. |