- JSON gösterimi
- Gönderim
- VisitRequest
- LatLng
- Waypoint
- Konum
- TimeWindow
- Araç
- TravelMode
- RouteModifiers
- UnloadingPolicy
- LoadLimit
- Aralık
- LoadCost
- DurationLimit
- DistanceLimit
- BreakRule
- BreakRequest
- FrequencyConstraint
- DurationDistanceMatrix
- Satır
- TransitionAttributes
- ShipmentTypeIncompatibility
- IncompatibilityMode
- ShipmentTypeRequirement
- RequirementMode
- PrecedenceRule
Gönderim modeli, bir grup araç tarafından gerçekleştirilmesi gereken bir dizi gönderim içerir ve toplam maliyeti en aza indirir. Bu durumda toplam maliyet, toplamda şu olur:
- araçları yönlendirme maliyeti (toplam süre başına maliyet, seyahat süresi başına maliyet ve tüm araçlar üzerindeki sabit maliyet).
- sorumlu tutulamaz.
- Gönderimlerin dünya genelindeki süresinin maliyeti
JSON gösterimi |
---|
{ "shipments": [ { object ( |
Alanlar | |
---|---|
shipments[] |
Modelde yapılması gereken gönderim grubu. |
vehicles[] |
Ziyaret gerçekleştirmek için kullanılabilecek araç grubu. |
globalStartTime |
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.Diğer bir deyişle,
RFC3339 UTC "Zulu" biçiminde, nanosaniye çözünürlüğüne ve en fazla dokuz kesirli basamağa sahip bir zaman damgası. Örnekler: |
globalEndTime |
Ayarlanmazsa varsayılan olarak 1 Ocak 1971, 00:00:00 UTC (ör. saniye: 31536000, nanosaniye: 0) kullanılır. Nanosaniye çözünürlüğüne sahip ve en fazla dokuz kesirli basamak içeren RFC3339 UTC "Zulu" biçiminde bir zaman damgası. Örnekler: |
globalDurationCostPerHour |
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, |
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 grupları ( |
shipmentTypeRequirements[] |
|
precedenceRules[] |
Modelde uygulanması gereken öncelik kuralları kümesi. |
maxActiveVehicles |
Maksimum etkin araç sayısını kısıtlar. Rotasında en az bir gönderim yapılan araçlar etkindir. Bu özellik, araçlardan daha az sürücünün bulunduğu ve araç filosunun heterojen olduğu durumlarda rota sayısını sınırlandırmak için kullanılabilir. Ardından optimizasyon, kullanılacak en iyi araç alt kümesini seçer. Tamamen olumlu olmalıdır. |
Gönderim
Tek bir öğenin, teslim alma alanlarından birinden teslimatlarına kadar gönderilmesi. Gönderimin gerçekleştirilmiş olarak kabul edilmesi için benzersiz bir aracın, teslim alma konumlarından birini ziyaret etmesi (ve yedek kapasitelerini buna göre azaltması) ve daha sonra teslimat konumlarından birini ziyaret etmesi (ve yedek kapasitelerini buna göre yeniden artırması) gerekir.
JSON gösterimi |
---|
{ "displayName": string, "pickups": [ { object ( |
Alanlar | |
---|---|
displayName |
Gönderinin kullanıcı tanımlı görünen adı. En fazla 63 karakter uzunluğunda olabilir ve UTF-8 karakterleri kullanabilir. |
pickups[] |
Gönderimle ilişkili teslim alma alternatifleri grubu. Belirtilmemişse aracın yalnızca teslimatlarla ilgili bir konumu ziyaret etmesi gerekir. |
deliveries[] |
Kargoyla ilişkili teslimat alternatifleri grubu. Belirtilmemişse aracın yalnızca teslim alma işlemleriyle ilgili bir konumu ziyaret etmesi gerekir. |
loadDemands |
Sevkiyatla ilgili gereklilikler (ör. ağırlık, hacim, palet sayısı vb.) Haritadaki anahtarlar, karşılık gelen yükün türünü (tercihen birimleri de içeren) açıklayan tanımlayıcılar olmalıdır. Örneğin: "weight_kg", "volume_gallons", "pallet_count" vb. Belirli bir anahtar haritada görünmüyorsa ilgili yük geçersiz olarak kabul edilir. |
allowedVehicleIndices[] |
Bu gönderimi gerçekleştirebilecek araç grubu. Boşsa tüm araçlar tarafından gerçekleştirilebilir. Araçlar, |
costsPerVehicle[] |
Bu gönderim her bir araç tarafından teslim edildiğinde tahakkuk eden maliyeti belirtir. Belirtilmişse ŞUNLARDAN BİRİNİ içermelidir:
Bu maliyetler, |
costsPerVehicleIndices[] |
|
pickupToDeliveryAbsoluteDetourLimit |
Teslim alma ile teslimat arasındaki en kısa yola kıyasla maksimum mutlak sapma süresini belirtir. Belirtilmişse negatif olmamalıdır ve kargo en azından bir teslim alma ve teslimat içermelidir. Örneğin, seçilen teslim alma alternatifinden doğrudan seçilen teslimat alternatifine geçmek için en kısa süre bu olmalıdır. Ardından
Aynı gönderimde hem göreli hem de mutlak sınırlar belirtilirse olası her teslim alma/teslimat çifti için daha kısıtlayıcı sınır kullanılır. 10/2017 itibarıyla, yalnızca seyahat süreleri araçlara bağlı olmadığında dolambaçlar desteklenir. " |
pickupToDeliveryTimeLimit |
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, teslim alma ve teslimat için seçilen alternatiflere veya aracın hızına bağlı değildir. Bu, maksimum sapma kısıtlamalarıyla birlikte belirtilebilir: Çözüm her iki spesifikasyona da uyar. En fazla dokuz kesirli basamak içeren ve " |
shipmentType |
Bu gönderim için bir "tür" belirten boş olmayan dize. Bu özellik, Tek bir ziyaret için belirtilen |
label |
Bu gönderim için bir etiket belirtir. Bu etiket, ilgili |
ignore |
Doğruysa bu gönderimi atlayın ancak Modelde
|
penaltyCost |
Sevkiyat tamamlanmazsa bu ceza, rotaların toplam maliyetine eklenir. Teslim alma ve teslimat alternatiflerinden birinin ziyaret edilmesi durumunda kargo tamamlanmış olarak kabul edilir. Maliyet, modeldeki maliyetle ilgili diğer tüm alanlar için kullanılan birim içinde ifade edilebilir ve pozitif olmalıdır. ÖNEMLİ: Bu ceza belirtilmezse sonsuz olarak kabul edilir. Yani gönderim tamamlanmalıdır. |
pickupToDeliveryRelativeDetourLimit |
Alıştan teslimata kadar olan en kısa yola kıyasla maksimum göreli ek süreyi belirtir. Belirtilmişse negatif olmamalıdır ve kargo en azından bir teslim alma ve teslimat içermelidir. Örneğin, t, seçilen teslim alma alternatifinden doğrudan seçilen teslimat alternatifine gitmek için gereken en kısa süre olsun. Ardından
Aynı gönderimde hem göreli hem de mutlak sınırlar belirtilirse olası her teslim alma/teslimat çifti için daha kısıtlayıcı sınır kullanılır. 2017/10 tarihi itibarıyla, yalnızca seyahat süreleri araçlara bağlı olmadığında rota değişikliği desteklenmektedir. |
VisitRequest
Araç tarafından yapılabilecek bir ziyaret isteği: Aracın coğrafi konumu (veya iki tanesi aşağıya bakın), zaman aralıklarıyla gösterilen açılış ve kapanış zamanları ve hizmet süresi (ürünlerin teslim alınması veya teslim edilmesi için vardığı araç tarafından harcanan süre) belirtilmelidir.
JSON gösterimi |
---|
{ "arrivalLocation": { object ( |
Alanlar | |
---|---|
arrivalLocation |
Bu |
arrivalWaypoint |
Bu |
departureLocation |
Bu |
departureWaypoint |
Aracın bu |
tags[] |
Ziyaret isteğine eklenen etiketleri belirtir. Boş veya yinelenen dizelere izin verilmez. |
timeWindows[] |
Ziyarete varış saatini sınırlayan zaman aralıkları. Bir aracın, varış zamanı aralığının dışında hareket edebileceğini unutmayın. Yani varış zamanı + sürenin bir zaman aralığında olması gerekmez. Araç
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.
|
duration |
Ziyaret süresi, ör.varış ile kalkış arasında aracın harcadığı süre (olası bekleme süresine eklenir, bkz. En fazla dokuz kesirli basamak içeren ve " |
cost |
Araç rotasında bu ziyaret isteğini işleme alma maliyeti. Bu, bir gönderinin her alternatif teslim alma veya teslimat işlemi için farklı maliyetler ödemek amacıyla kullanılabilir. Bu maliyet, |
loadDemands |
Bu ziyaret isteğinin taleplerini yükleyin. Bu, |
visitTypes[] |
Ziyaretin türlerini belirtir. Bu süre, aracın bu ziyareti tamamlaması için gereken ek süreyi ayırmak amacıyla kullanılabilir (bkz. Bir tür yalnızca bir kez görünebilir. |
label |
Bu |
LatLng
Enlem/boylam çiftini temsil eden bir nesne. Bu değer, enlem derecelerini ve boylam derecelerini temsil eden bir çift çift olarak ifade edilir. Aksi belirtilmediği sürece bu nesne WGS84 standardına uygun olmalıdır. Değerler normalleştirilmiş aralıklar içinde 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ı kapsüller. Ara noktalar, ziyaret isteklerinin varış ve kalkış konumlarını ve araçların başlangıç ve bitiş konumlarını işaretler.
JSON gösterimi |
---|
{ "sideOfRoad": boolean, // Union field |
Alanlar | |
---|---|
sideOfRoad |
İsteğe bağlı. Bu ara noktanın konumunun, aracın yolun belirli bir tarafında durmasına yönelik bir tercih olduğunu 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 "HAYIR" ulaşım modunda kullanılamaz. |
Birlik alanı location_type . Bir konumu temsil etmenin farklı yolları. location_type yalnızca aşağıdakilerden biri olabilir: |
|
location |
İsteğe bağlı bir başlık da dahil olmak üzere coğrafi koordinatlar kullanılarak belirtilen bir nokta. |
placeId |
Dönüm noktasıyla ilişkili ÖY yer kimliği. |
Konum
Bir konumu (coğrafi nokta ve isteğe bağlı başlık) kapsar.
JSON gösterimi |
---|
{
"latLng": {
object ( |
Alanlar | |
---|---|
latLng |
Referans noktasının coğrafi koordinatları. |
heading |
Trafiğin akış yönüyle ilişkilendirilen pusula başlığı. Bu değer, teslim alma ve bırakma için kullanılacak yolun kenarını belirtmek için kullanılır. Başlık değerleri 0 ile 360 arasında olabilir. 0 değeri Kuzey yönüne, 90 ise teslim edilecek Doğu başlığını vb. belirtir. |
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.
startTime
ve endTime
sabit zaman aralığı sınırları, etkinliğin en erken ve en geç zamanını (startTime <= event_time <=
endTime
) uygular. Yumuşak zaman aralığı alt sınırı softStartTime
, etkinliğin softStartTime'dan ne kadar süre önce gerçekleştiğiyle orantılı bir maliyete neden olarak etkinliğin softStartTime
'te veya sonrasında gerçekleşmesi tercihini ifade eder. Geçici zaman aralığı üst sınırı (softEndTime
), etkinliğin gerçekleşmesinden softEndTime
sonra ne kadar süreyle orantılı bir maliyet oluşturarak etkinliğin softEndTime
tarihinde veya öncesinde gerçekleşmesi tercihini ifade eder. startTime
, endTime
, softStartTime
ve softEndTime
, 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 <= `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 |
Zor zaman aralığı başlangıç zamanı. Belirtilmemesi durumunda RFC3339 UTC "Zulu" biçiminde, nanosaniye çözünürlüğüne ve en fazla dokuz kesirli basamağa sahip bir zaman damgası. Örnekler: |
endTime |
Sabit zaman aralığının bitiş zamanı. Belirtilmemesi durumunda Nanosaniye çözünürlüğüne sahip ve en fazla dokuz kesirli basamak içeren RFC3339 UTC "Zulu" biçiminde bir zaman damgası. Örnekler: |
softStartTime |
Zaman aralığının yumuşak başlangıç zamanı. RFC3339 UTC "Zulu" biçiminde, nanosaniye çözünürlüğüne ve en fazla dokuz kesirli basamağa sahip bir zaman damgası. Örnekler: |
softEndTime |
Zaman aralığının esnek bitiş zamanı. Nanosaniye çözünürlüğüne sahip ve en fazla dokuz kesirli basamak içeren RFC3339 UTC "Zulu" biçiminde bir zaman damgası. Örnekler: |
costPerHourBeforeSoftStartTime |
Etkinlik, softStartTime'dan önce gerçekleşirse modeldeki diğer maliyetlere eklenen saat başına 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ç
Gönderim sorunu olan bir aracı modeller. Gönderim sorunu çözüldüğünde bu araç için startLocation
ile başlayıp endLocation
itibarıyla biten bir rota oluşturulur. Rota, bir ziyaret dizisidir (bkz. ShipmentRoute
).
JSON gösterimi |
---|
{ "displayName": string, "travelMode": enum ( |
Alanlar | |
---|---|
displayName |
Aracın kullanıcı tanımlı görünen adı. En fazla 63 karakter uzunluğunda olabilir ve UTF-8 karakterleri kullanabilir. |
travelMode |
Aracın kullanabileceği yolları ve hızını etkileyen ulaşım şekli. Ayrıca bkz. |
routeModifiers |
Belirli bir araç için rotaların hesaplanma şeklini etkileyen ve karşılanması gereken bir koşul grubu. |
startLocation |
Aracın herhangi bir gönderimi teslim almadan önce başladığı coğrafi konum. Belirtilmemişse araç ilk teslimatında başlar. Gönderim modelinin süre ve mesafe matrisleri varsa |
startWaypoint |
Aracın herhangi bir kargoyu teslim almadan önce başladığı coğrafi konumu temsil eden yol noktası. |
endLocation |
Aracın son |
endWaypoint |
Aracın son |
startTags[] |
Aracın rotasının başı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ı. Bu değerler, genel zaman sınırları içinde olmalıdır ( Aynı tekrarlanan alana ait zaman aralıkları ayrı olmalıdır. Yani zaman aralığı başka bir zaman aralığıyla çakışamaz ya da bitişik olamaz ve kronolojik sırada olmalıdır.
|
endTimeWindows[] |
Aracın bitiş konumuna ulaşabileceği zaman aralıkları. Genel zaman sınırları dahilinde olmalıdırlar ( Aynı tekrarlanan alana ait zaman aralıkları ayrı olmalıdır. Yani zaman aralığı başka bir zaman aralığıyla çakışamaz ya da bitişik olamaz ve kronolojik sırada olmalıdır.
|
unloadingPolicy |
Araçta uygulanan kaldırma politikası. |
loadLimits |
Aracın kapasiteleri (ör. ağırlık, hacim, palet sayısı). Haritadaki anahtarlar, |
costPerHour |
Araç maliyetleri: Tüm maliyetler toplanır ve 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 |
costPerTraveledHour |
Araç rotasının kat edilen her saati başına maliyet. Bu maliyet, yalnızca rotanın aldığı seyahat süresine ( |
costPerKilometer |
Araç rotasının kilometre başına maliyeti. Bu maliyet, |
fixedCost |
Bu araç bir gönderimi yönetmek için kullanılıyorsa sabit maliyet uygulanır. |
usedIfRouteIsEmpty |
Bu alan yalnızca rotalarında kargo hizmeti verilmeyen araçlar için geçerlidir. Bu durumda aracın kullanılmış olarak kabul edilip edilmeyeceğini belirtir. Doğru değerine ayarlanırsa araç, herhangi bir sevkiyat hizmeti vermese bile başlangıç konumundan bitiş konumuna kadar gider ve seyahatin başlangıcından itibaren oluşan zaman ve mesafe maliyetleri dikkate alınır. Aksi takdirde, başlangıç konumundan bitiş konumuna gitmez ve bu araç için |
routeDurationLimit |
Aracın rotasının toplam süresi için 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 kadar olan bir haritayı belirtir. Süre, belirtilen Bir ziyaret isteğinin birden fazla türü varsa haritadaki her tür için bir süre eklenir. |
breakRule |
Bu araçta uygulanacak ara programını açıklar. Boş bırakılırsa bu araç için ara verme planlanmaz. |
label |
Bu araç için bir etiket belirtir. Bu etiket, yanıtta ilgili |
ignore |
Değer true ise
|
travelDurationMultiple |
Bu aracın seyahat sürelerini artırmak veya azaltmak için kullanılabilen çarpım 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. 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. Ayrıca aşağıdaki |
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. |
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.
JSON gösterimi |
---|
{ "avoidTolls": boolean, "avoidHighways": boolean, "avoidFerries": boolean, "avoidIndoor": boolean } |
Alanlar | |
---|---|
avoidTolls |
Makul olduğu durumlarda paralı yollardan kaçınılıp kaçınılmayacağını belirtir. Paralı yol içermeyen rotalar tercih edilir. Yalnızca motorlu seyahat modları için geçerlidir. |
avoidHighways |
Makul olduğu durumlarda 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 |
Makul 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ı. Makul olduğu durumlarda iç mekanlarda gezinmekten kaçınılıp kaçınılmayacağını belirtir. Kapalı mekan navigasyonu içermeyen rotalara öncelik verilir. Yalnızca |
UnloadingPolicy
Araçların nasıl indirilebileceğiyle ilgili politika. Yalnızca hem teslim alma hem de teslimat içeren gönderimler için geçerlidir.
Diğer gönderimler, unloadingPolicy
'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 alma sırası tersten yapılmalıdır |
FIRST_IN_FIRST_OUT |
Teslimatlar, teslim alma siparişleriyle aynı sırayla yapılmalıdır |
LoadLimit
Araç için geçerli olan yük sınırını tanımlar (ör. "bu kamyon en fazla 3500 kg taşıyabilir"). Şu sayfaya göz atın: loadLimits
.
JSON gösterimi |
---|
{ "softMaxLoad": string, "costPerUnitAboveSoftMax": number, "startLoadInterval": { object ( |
Alanlar | |
---|---|
softMaxLoad |
Yükün yumuşak sınırı. Şu sayfaya göz atın: |
costPerUnitAboveSoftMax |
Bu aracın rotasında yük |
startLoadInterval |
Rotanın başlangıcında aracın kabul edilebilir yük aralığı. |
endLoadInterval |
Rotanın sonundaki aracın kabul edilebilir yük aralığı. |
maxLoad |
Kabul edilebilir maksimum yük miktarı. |
costPerKilometer |
Bu araç için bir kilometreden fazla yük taşımanın maliyeti. Bu değer, yakıt tüketimi için proxy olarak kullanılabilir: Yük bir ağırlıksa (Newton cinsinden) yük*kilometre, enerji boyutuna sahiptir. |
costPerTraveledHour |
Bu araç için bir yük birimiyle bir saatlik yolculuk maliyeti. |
Aralık
Kabul edilebilir yükleme miktarlarının aralığı.
JSON gösterimi |
---|
{ "min": string, "max": string } |
Alanlar | |
---|---|
min |
Kabul edilebilir minimum yük. ≥ 0 olmalıdır. İkisi de belirtilmişse |
max |
Maksimum kabul edilebilir yük. ≥ 0 olmalıdır. Belirtilmemişse maksimum yükleme bu iletiyle 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 parçanın toplamıdır:
- min(yükleme,
loadThreshold
) *costPerUnitBelowThreshold
- max(0, yükleme -
loadThreshold
) *costPerUnitAboveThreshold
Bu maliyetle, çözümler yüksek talepleri önce teslim etmeyi veya eşdeğer olarak yüksek talepleri en son karşılamayı 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,geçişlerle bitiş şeklinde olmalıdır:
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 durumda, bu LoadCost
tarafından yapılan maliyet (cost_below * load_below * kilometers + cost_above * load_above * kms) olur.
- geçiş 0: 0,0
- 1. geçiş: 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
- 3. geçiş: 2,0 * 10 * 1,0 + 10,0 * 0 * 1,0 = 20,0
- geçiş 4: 0,0
Dolayısıyla rotadaki LoadCost
değeri 120,0'dır.
Ancak rota başlangıç,teslim alma,teslimat,teslim alma,teslimat,geçişlerle bitme ise:
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 }
LoadCost
tarafından tahakkuk eden maliyet
- geçiş 0: 0,0
- 1. geçiş: 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
değeri 40,0'dır.
LoadCost
, yoğun yüklü geçişlere sahip çözümleri daha pahalı hale getirir.
JSON gösterimi |
---|
{ "loadThreshold": string, "costPerUnitBelowThreshold": number, "costPerUnitAboveThreshold": number } |
Alanlar | |
---|---|
loadThreshold |
Bir yük birimini maliyetinin,costPerUnitBelowThreshold'dancostPerUnitAboveThreshold'a taşındığı yük miktarı. 0 veya daha fazla olmalıdır. |
costPerUnitBelowThreshold |
0 ile eşik arasındaki her birim için bir birim yük taşıma maliyeti. Sonlu bir değer ve >= 0 olmalıdır. |
costPerUnitAboveThreshold |
Eşiğin üzerindeki her birim için bir yük biriminin taşınma maliyeti. Özel durumda eşik = 0 olduğunda bu, birim başına sabit bir maliyettir. Sonlu bir değer ve >= 0 olmalıdır. |
DurationLimit
Bir aracın rotanı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.
JSON gösterimi |
---|
{ "maxDuration": string, "softMaxDuration": string, "quadraticSoftMaxDuration": string, "costPerHourAfterSoftMax": number, "costPerSquareHourAfterQuadraticSoftMax": number } |
Alanlar | |
---|---|
maxDuration |
Süreyi en fazla maxDuration olacak şekilde sınırlayan kesin bir sınır. En fazla dokuz kesirli basamak içeren ve " |
softMaxDuration |
Maksimum süre sınırı uygulanmayan, ancak ihlal edildiğinde rotanın ücretlendirilen bir sınırı olan sabit bir sınır. Bu maliyet, aynı birimle modelde tanımlanan diğer maliyetlere eklenir. Tanımlanmışsa " |
quadraticSoftMaxDuration |
Maksimum süre sınırı uygulanmayan, ancak ihlal edildiğinde rotanın süresiyle ikinci dereceden bir maliyet doğurduğu hafif bir sınır. Bu maliyet, aynı birimle modelde tanımlanan diğer maliyetlere eklenir. Tanımlanmışsa
" |
costPerHourAfterSoftMax |
Maliyet negatif olmamalıdır. |
costPerSquareHourAfterQuadraticSoftMax |
Süre eşiğin altındaysa ek maliyet 0 olur. Aksi takdirde maliyet, süreye aşağıdaki şekilde bağlı olur:
Maliyet pozitif olmalıdır. |
DistanceLimit
Katedilebilecek maksimum mesafeyi tanımlayan sınır. Sert veya yumuşak olabilir.
Hafif sınır tanımlanırsa hem softMaxMeters
hem de costPerKilometerAboveSoftMax
tanımlanmalı ve negatif olmayan bir sayı olmalıdır.
JSON gösterimi |
---|
{ "maxMeters": string, "softMaxMeters": string, "costPerKilometerBelowSoftMax": number, "costPerKilometerAboveSoftMax": number } |
Alanlar | |
---|---|
maxMeters |
Mesafeyi en fazla maxMeter olacak şekilde sınırlayan kesin bir sınır. Sınır negatif olmamalıdır. |
softMaxMeters |
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 softMaxMeters, maxMeters'ten küçük ve sıfırdan büyük olmalıdır. |
costPerKilometerBelowSoftMax |
Formülle birlikte, artan kilometre başına maliyet
Bu maliyet |
costPerKilometerAboveSoftMax |
Mesafe
Maliyet pozitif olmalıdır. |
BreakRule
Bir araç için ara verme zamanları (ör. öğle yemeği araları) oluşturmaya yönelik kurallar. Ara, aracın mevcut konumunda boşta kaldığı ve herhangi bir ziyaret gerçekleştiremediği kesintisiz bir zaman aralığıdır. Süreçte kesinti yaşanabilir:
- 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ışmaya başlamadan önce başlar (araç, aranın ortasında başlamayabilir) ve bu durumda aracın başlangıç süresi etkilenmez.
- veya araç sona erdikten sonra (araç sona erme zamanı da aynı şekilde).
JSON gösterimi |
---|
{ "breakRequests": [ { object ( |
Alanlar | |
---|---|
breakRequests[] |
Araların sırası. |
frequencyConstraints[] |
Birkaç |
BreakRequest
Her araç için geçerli olan ara verme sırası (ör. sayısı ve sırası) önceden bilinmelidir. Tekrarlanan BreakRequest
öğeleri, gerçekleşmeleri gereken sırayla bu sırayı tanımlar. Zaman aralıkları (earliestStartTime
/ latestStartTime
) çakışmalarına rağmen 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ındaki alt sınır (dahil). Nanosaniye çözünürlüğüne sahip ve en fazla dokuz kesirli basamak içeren RFC3339 UTC "Zulu" biçiminde bir zaman damgası. Örnekler: |
latestStartTime |
Zorunlu. Aranın başlangıcındaki üst sınır (dahil). Nanosaniye çözünürlüğüne sahip ve en fazla dokuz kesirli basamak içeren RFC3339 UTC "Zulu" biçiminde bir zaman damgası. Örnekler: |
minDuration |
Zorunlu. Minimum ara süresi. Pozitif olmalıdır. En fazla dokuz kesirli basamak içeren ve " |
FrequencyConstraint
"Her 12 saatte en az 1 saatlik ara olmalıdır" gibi bir minimum ara sıklığı uygulayarak yukarıda belirtilen araların sıklığını ve süresini daha da kısıtlayabilirsiniz. Bunun "12 saatlik herhangi bir 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:
{
minBreakDuration { seconds: 3600 } # 1 hour.
maxInterBreakDuration { 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
JSON gösterimi |
---|
{ "minBreakDuration": string, "maxInterBreakDuration": string } |
Alanlar | |
---|---|
minBreakDuration |
Zorunlu. Bu kısıtlama için minimum ara süresi. Negatif değil. En fazla dokuz kesirli basamak içeren ve " |
maxInterBreakDuration |
Zorunlu. Rotada en azından kısmen " |
DurationDistanceMatrix
Ziyaret süresi ile aracın başlangıç yerlerinden ziyaret edilecek ve aracın 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çlara uygulandığını tanımlayan etiket. Boşsa 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 matrisler 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 için süre değerleri. En fazla dokuz kesirli basamak içeren ve " |
meters[] |
Belirli bir satır için mesafe değerleri. Modeldeki mesafelere işaret eden hiçbir maliyet veya kısıtlama yoksa bu alan boş bırakılabilir. Aksi takdirde, |
TransitionAttributes
Bir rota üzerinde art arda iki ziyaret arasındaki geçişlerin özelliklerini belirtir. Aynı geçiş için birden fazla TransitionAttributes
geçerli olabilir: Bu durumda, tüm ek maliyetler toplanır ve en katı kısıtlama veya sınır uygulanır (doğal "VE" semantiğine göre).
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 (src->dst) geçiş grubunu tanımlayan etiketler. Bir kaynak ziyareti veya araç başlatma işlemi, |
excludedSrcTag |
Şu sayfaya göz atın: |
dstTag |
Hedef ziyareti veya araç sonu, |
excludedDstTag |
Şu sayfaya göz atın: |
cost |
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. |
costPerKilometer |
Bu geçiş sırasında kat edilen mesafeye uygulanan kilometre başına maliyeti belirtir. Araçlarda belirtilen tüm |
distanceLimit |
Bu geçiş gerçekleştirilirken katedilen mesafe için bir sınırı belirtir. 06.06.2021 itibarıyla yalnızca geçici sınırlar desteklenmektedir. |
delay |
Bu geçişi gerçekleştirirken yaşanan gecikmeyi belirtir. Bu gecikme her zaman kaynak ziyareti tamamlandıktan sonra ve hedef ziyareti başlatılmadan önce gerçekleşir. En fazla dokuz kesirli basamak içeren ve " |
ShipmentTypeIncompatibility
Gönderim türlerine 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.
JSON gösterimi |
---|
{
"types": [
string
],
"incompatibilityMode": enum ( |
Alanlar | |
---|---|
types[] |
Uyumsuz türlerin listesi. Listelenenler arasında farklı |
incompatibilityMode |
Uyumsuzluk için uygulanan mod. |
IncompatibilityMode
Uyumsuz gönderimlerin aynı rotada nasıl kısıtlanacağını tanımlayan modlar.
Sıralamalar | |
---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
Belirtilmemiş uyumsuzluk modu. Bu değer hiçbir zaman kullanılmamalıdır. |
NOT_PERFORMED_BY_SAME_VEHICLE |
Bu modda, uyumlu olmayan türlere sahip iki gönderim hiçbir zaman aynı aracı paylaşamaz. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
|
ShipmentTypeRequirement
Gönderi türlerine göre kargolar arasındaki koşulları belirtir. Gereksinimin ayrıntıları, gereksinim modu ile tanımlanır.
JSON gösterimi |
---|
{
"requiredShipmentTypeAlternatives": [
string
],
"dependentShipmentTypes": [
string
],
"requirementMode": enum ( |
Alanlar | |
---|---|
requiredShipmentTypeAlternatives[] |
|
dependentShipmentTypes[] |
NOT: |
requirementMode |
Koşula uygulanan mod. |
RequirementMode
Bağımlı gönderilerin rota üzerindeki 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 |
Bu nedenle, "bağlı" kargo teslim alma işleminde aşağıdakilerden biri bulunmalıdır:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
Daha önce olduğu gibi, "bağımlı" gönderimlerin teslimat sırasında araçlarında "zorunlu" bir gönderim olması gerekir. |
PrecedenceRule
İki etkinlik arasındaki öncelik kuralı (her etkinlik bir gönderinin alınması veya teslim edilmesidir): "İkinci" etkinliğin, "ilk" etkinlikten en az offsetDuration
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, öncelikler yalnızca her iki gönderim de gerçekleştirildiğinde uygulanır ve aksi takdirde göz ardı edilir.
JSON gösterimi |
---|
{ "firstIsDelivery": boolean, "secondIsDelivery": boolean, "offsetDuration": string, "firstIndex": integer, "secondIndex": integer } |
Alanlar | |
---|---|
firstIsDelivery |
"İlk" etkinliğin yayınlama olup olmadığını belirtir. |
secondIsDelivery |
"İkinci" etkinliğin bir yayın olup olmadığını belirtir. |
offsetDuration |
"Birinci" ve "ikinci" etkinlik arasındaki ofset. Negatif olabilir. " |
firstIndex |
"İlk" etkinliğin gönderim dizini. Bu alan belirtilmelidir. |
secondIndex |
"İkinci" etkinliğin gönderi dizini. Bu alan belirtilmelidir. |