ShipmentModel

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

  • araçları yönlendirme maliyeti (toplam süre başına maliyet, seyahat süresi başına maliyet ve tüm araçlar üzerindeki sabit maliyet).
  • sorumlu tutulamaz.
  • Global sevkiyat süresinin maliyeti
JSON gösterimi
{
  "shipments": [
    {
      object (Shipment)
    }
  ],
  "vehicles": [
    {
      object (Vehicle)
    }
  ],
  "globalStartTime": string,
  "globalEndTime": string,
  "globalDurationCostPerHour": number,
  "durationDistanceMatrices": [
    {
      object (DurationDistanceMatrix)
    }
  ],
  "durationDistanceMatrixSrcTags": [
    string
  ],
  "durationDistanceMatrixDstTags": [
    string
  ],
  "transitionAttributes": [
    {
      object (TransitionAttributes)
    }
  ],
  "shipmentTypeIncompatibilities": [
    {
      object (ShipmentTypeIncompatibility)
    }
  ],
  "shipmentTypeRequirements": [
    {
      object (ShipmentTypeRequirement)
    }
  ],
  "precedenceRules": [
    {
      object (PrecedenceRule)
    }
  ],
  "maxActiveVehicles": integer
}
Alanlar
shipments[]

object (Shipment)

Modelde yapılması gereken gönderim grubu.

vehicles[]

object (Vehicle)

Ziyaret gerçekleştirmek için kullanılabilecek araç grubu.

globalStartTime

string (Timestamp format)

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

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

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

RFC3339 UTC "Zulu" zaman damgası biçiminde olmalıdır. Örnekler: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

globalEndTime

string (Timestamp format)

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

RFC3339 UTC "Zulu" zaman damgası biçiminde olmalıdır. Örnekler: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

globalDurationCostPerHour

number

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

durationDistanceMatrices[]

object (DurationDistanceMatrix)

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

Kullanım örnekleri:

  • İki konum vardır: locA ve locB.
  • Rotasını locA adresinde başlatıp locA'da sonlandıran 1 araç.
  • locB adresinde 1 teslim alma ziyaret isteği isteği.
model {
  vehicles { startTags: "locA"  endTags: "locA" }
  shipments { pickups { tags: "locB" } }
  durationDistanceMatrixSrcTags: "locA"
  durationDistanceMatrixSrcTags: "locB"
  durationDistanceMatrixDstTags: "locA"
  durationDistanceMatrixDstTags: "locB"
  durationDistanceMatrices {
    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.
  • Rotasını loA'da başlatıp locB'de sonlandıran "hızlı" matrisi kullanan 1 araç.
  • Rotasını locB'de başlatıp locB'de sonlandıran "yavaş" matrisini kullanan 1 araç.
  • Rotasını locB'de başlatıp locB'de sonlandıran "hızlı" matrisi kullanan 1 araç.
  • locC'de 1 teslim alma ziyaret isteği isteği.
model {
  vehicles { startTags: "locA" endTags: "locB" startTags: "fast" }
  vehicles { startTags: "locB" endTags: "locB" startTags: "slow" }
  vehicles { startTags: "locB" endTags: "locB" startTags: "fast" }
  shipments { pickups { tags: "locC" } }
  durationDistanceMatrixSrcTags: "locA"
  durationDistanceMatrixSrcTags: "locB"
  durationDistanceMatrixSrcTags: "locC"
  durationDistanceMatrixDstTags: "locB"
  durationDistanceMatrixDstTags: "locC"
  durationDistanceMatrices {
    vehicleStartTag: "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
    }
  }
  durationDistanceMatrices {
    vehicleStartTag: "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
    }
  }
}
durationDistanceMatrixSrcTags[]

string

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

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

durationDistanceMatrixDstTags[]

string

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

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

transitionAttributes[]

object (TransitionAttributes)

Modele geçiş özellikleri eklendi.

shipmentTypeIncompatibilities[]

object (ShipmentTypeIncompatibility)

Uyumsuz delivery_types grupları (bkz. ShipmentTypeIncompatibility).

shipmentTypeRequirements[]

object (ShipmentTypeRequirement)

shipmentType gereksinimleri grupları (bkz. ShipmentTypeRequirement).

precedenceRules[]

object (PrecedenceRule)

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

maxActiveVehicles

integer

Maksimum etkin araç sayısını kısıtlar. Rotasında en az bir gönderim olan araçlar etkin durumda demektir. 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önderinin tamamlanmış olarak kabul edilmesi için benzersiz bir aracın teslim alma konumlarından birini ziyaret etmesi (ve buna göre yedek kapasiteyi azaltması), daha sonra teslimat konumlarından birini ziyaret etmesi (ve dolayısıyla yedek kapasitelerini buna göre yeniden artırması) gerekir.

JSON gösterimi
{
  "displayName": string,
  "pickups": [
    {
      object (VisitRequest)
    }
  ],
  "deliveries": [
    {
      object (VisitRequest)
    }
  ],
  "loadDemands": {
    string: {
      object (Load)
    },
    ...
  },
  "allowedVehicleIndices": [
    integer
  ],
  "costsPerVehicle": [
    number
  ],
  "costsPerVehicleIndices": [
    integer
  ],
  "pickupToDeliveryAbsoluteDetourLimit": string,
  "pickupToDeliveryTimeLimit": string,
  "shipmentType": string,
  "label": string,
  "ignore": boolean,
  "penaltyCost": number,
  "pickupToDeliveryRelativeDetourLimit": number
}
Alanlar
displayName

string

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

pickups[]

object (VisitRequest)

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

deliveries[]

object (VisitRequest)

Kargoyla ilişkili teslimat alternatifleri grubu. Belirtilmemişse aracın yalnızca teslim alma işlemleriyle ilgili bir konumu ziyaret etmesi gerekir.

loadDemands

map (key: string, value: object (Load))

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

"key": value çiftlerinin listesini içeren bir nesne. Örnek: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

allowedVehicleIndices[]

integer

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

costsPerVehicle[]

number

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

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

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

costsPerVehicleIndices[]

integer

costsPerVehicle özelliğinin geçerli olduğu araçların dizinleri. Boş değilse costsPerVehicle ile aynı sayıda öğeye sahip olmalıdır. Bir araç dizini birden fazla kez belirtilemez. Bir araç costsPerVehicleIndices kapsamından hariç tutulursa maliyeti sıfır olur.

pickupToDeliveryAbsoluteDetourLimit

string (Duration format)

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 pickupToDeliveryAbsoluteDetourLimit ayarlandığında şu yaptırımlar uygulanır:

startTime(delivery) - startTime(pickup) <=
t + pickupToDeliveryAbsoluteDetourLimit

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.

En fazla dokuz kesir basamağı olan ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

pickupToDeliveryTimeLimit

string (Duration format)

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

En fazla dokuz kesir basamağı olan ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

shipmentType

string

Bir "type" belirten boş olmayan dize belirtin. Bu özellik, shipment_types arasındaki uyumsuzlukları veya gereksinimleri tanımlamak için kullanılabilir (ShipmentModel içinde shipmentTypeIncompatibilities ve shipmentTypeRequirements bölümüne bakın).

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

label

string

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

ignore

boolean

True (doğru) ise bu kargoyu atlayın, ancak penaltyCost uygulamayın.

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

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

penaltyCost

number

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

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

pickupToDeliveryRelativeDetourLimit

number

Teslim alma ile teslimat arasındaki en kısa yola kıyasla maksimum göreli 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 pickupToDeliveryRelativeDetourLimit ayarlandığında şu yaptırımlar uygulanır:

startTime(delivery) - startTime(pickup) <=
std::ceil(t * (1.0 + pickupToDeliveryRelativeDetourLimit))

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 (LatLng)
  },
  "arrivalWaypoint": {
    object (Waypoint)
  },
  "departureLocation": {
    object (LatLng)
  },
  "departureWaypoint": {
    object (Waypoint)
  },
  "tags": [
    string
  ],
  "timeWindows": [
    {
      object (TimeWindow)
    }
  ],
  "duration": string,
  "cost": number,
  "loadDemands": {
    string: {
      object (Load)
    },
    ...
  },
  "visitTypes": [
    string
  ],
  "label": string
}
Alanlar
arrivalLocation

object (LatLng)

Bu VisitRequest gerçekleştirilirken aracın vardığı coğrafi konum. Gönderim modelinin süre mesafe matrisleri varsa arrivalLocation belirtilmemelidir.

arrivalWaypoint

object (Waypoint)

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

departureLocation

object (LatLng)

Bu VisitRequest tamamlandıktan sonra aracın kalkacağı coğrafi konum. arrivalLocation ile aynıysa atlanabilir. Gönderim modelinin süre mesafe matrisleri varsa departureLocation belirtilmemelidir.

departureWaypoint

object (Waypoint)

Aracın bu VisitRequest tamamlandıktan sonra kalkış noktası. arrivalWaypoint ile aynıysa atlanabilir. Gönderim modelinin süre mesafe matrisleri varsa departureWaypoint belirtilmemelidir.

tags[]

string

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

timeWindows[]

object (TimeWindow)

Ziyarete varış saatini sınırlayan zaman aralıkları. Araç, varış saati aralığının dışında kalkabilir. Diğer bir ifadeyle, varış saatinin ve sürenin bir zaman aralığının içinde olması gerekmez. Araç TimeWindow.start_time tarihinden önce gelirse bekleme süresine neden olabilir.

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

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

costPerHourAfterSoftEndTime ve softEndTime yalnızca tek bir zaman aralığı varsa ayarlanabilir.

duration

string (Duration format)

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

En fazla dokuz kesir basamağı olan ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

cost

number

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

loadDemands

map (key: string, value: object (Load))

Bu ziyaret isteğinin isteklerini yükleyin. Bu, Shipment.load_demands alanına benzer, ancak tüm Shipment yerine yalnızca bu VisitRequest için geçerlidir. Burada listelenen talepler, Shipment.load_demands bölümünde listelenen taleplere eklenir.

"key": value çiftlerinin listesini içeren bir nesne. Örnek: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

visitTypes[]

string

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. Vehicle.extra_visit_duration_for_visit_type).

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

label

string

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

LatLng

Enlem/boylam çiftini temsil eden bir nesne. Bu, enlem ve boylam derecelerini temsil eden bir çift çift olarak ifade edilir. Aksi belirtilmedikçe 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

number

Derece cinsinden enlem. [-90,0, +90,0] aralığında olmalıdır.

longitude

number

Derece cinsinden boylam. [-180.0, +180.0] aralığında olmalıdır.

Ara nokta

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

JSON gösterimi
{
  "sideOfRoad": boolean,

  // Union field location_type can be only one of the following:
  "location": {
    object (Location)
  },
  "placeId": string
  // End of list of possible types for union field location_type.
}
Alanlar
sideOfRoad

boolean

İ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 ayarladığınızda rota, yerden geçer. Böylece araç, konumun merkezine doğru ağırlık verdiği yol kenarında durabilir. Bu seçenek 'WALKING' (YAPIYOR) için çalışmaz yardımcı olur.

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

object (Location)

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

placeId

string

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

Konum

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

JSON gösterimi
{
  "latLng": {
    object (LatLng)
  },
  "heading": integer
}
Alanlar
latLng

object (LatLng)

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

heading

integer

Trafiğin akış yönüyle ilişkilendirilen pusula başlığı. Bu değer, yolun teslim alma ve bırakma için kullanılacak kenarını belirtmek için kullanılır. Başlık değerleri 0 ile 360 arasında olabilir. Burada 0, vadesi Kuzey olan bir başlığı, 90 değeri ise gereken Doğu başlığını vb. belirtir.

TimeWindow

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

startTime ve endTime sabit zaman aralığı sınırları, etkinliğin en erken ve en geç zamanını (startTime <= event_time <= endTime) uygular. Esnek zaman aralığı alt sınırı (softStartTime), etkinliğin softStartTime'dan ne kadar süre önce gerçekleştiğiyle orantılı bir maliyet oluşturarak etkinliğin softStartTime tarihinde veya sonrasında gerçekleşmesine ilişkin tercihi ifade eder. Esnek 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ı içinde olmalı (bkz. ShipmentModel.global_start_time ve ShipmentModel.global_end_time) ve şunlara uymalıdır:

  0 <= `startTime` <= `softStartTime` <= `endTime` and
  0 <= `startTime` <= `softEndTime` <= `endTime`.
JSON gösterimi
{
  "startTime": string,
  "endTime": string,
  "softStartTime": string,
  "softEndTime": string,
  "costPerHourBeforeSoftStartTime": number,
  "costPerHourAfterSoftEndTime": number
}
Alanlar
startTime

string (Timestamp format)

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

RFC3339 UTC "Zulu" zaman damgası biçiminde olmalıdır. Örnekler: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

endTime

string (Timestamp format)

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

RFC3339 UTC "Zulu" zaman damgası biçiminde olmalıdır. Örnekler: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

softStartTime

string (Timestamp format)

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

RFC3339 UTC "Zulu" zaman damgası biçiminde olmalıdır. Örnekler: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

softEndTime

string (Timestamp format)

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

RFC3339 UTC "Zulu" zaman damgası biçiminde olmalıdır. Örnekler: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

costPerHourBeforeSoftStartTime

number

Etkinlik softStartTime'dan önce gerçekleşirse modeldeki diğer maliyetlere eklenen saat başına maliyet. Şu şekilde hesaplanır:

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

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

costPerHourAfterSoftEndTime

number

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

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

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

Araç

Gönderim sorunu olan bir aracı modelleme. Gönderim sorunu çözüldüğünde bu araç için startLocation ile başlayıp endLocation itibarıyla biten bir rota oluşturulur. Rota, ziyaretlerden oluşan bir dizidir (bkz. ShipmentRoute).

JSON gösterimi
{
  "displayName": string,
  "travelMode": enum (TravelMode),
  "startLocation": {
    object (LatLng)
  },
  "startWaypoint": {
    object (Waypoint)
  },
  "endLocation": {
    object (LatLng)
  },
  "endWaypoint": {
    object (Waypoint)
  },
  "startTags": [
    string
  ],
  "endTags": [
    string
  ],
  "startTimeWindows": [
    {
      object (TimeWindow)
    }
  ],
  "endTimeWindows": [
    {
      object (TimeWindow)
    }
  ],
  "unloadingPolicy": enum (UnloadingPolicy),
  "loadLimits": {
    string: {
      object (LoadLimit)
    },
    ...
  },
  "costPerHour": number,
  "costPerTraveledHour": number,
  "costPerKilometer": number,
  "fixedCost": number,
  "usedIfRouteIsEmpty": boolean,
  "routeDurationLimit": {
    object (DurationLimit)
  },
  "travelDurationLimit": {
    object (DurationLimit)
  },
  "routeDistanceLimit": {
    object (DistanceLimit)
  },
  "extraVisitDurationForVisitType": {
    string: string,
    ...
  },
  "breakRule": {
    object (BreakRule)
  },
  "label": string,
  "ignore": boolean,
  "travelDurationMultiple": number
}
Alanlar
displayName

string

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

travelMode

enum (TravelMode)

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

startLocation

object (LatLng)

Aracın herhangi bir gönderimi teslim almadan önce başladığı coğrafi konum. Belirtilmezse araç ilk teslim alındığında başlar. Gönderim modelinin süre ve mesafe matrisleri varsa startLocation belirtilmemelidir.

startWaypoint

object (Waypoint)

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

endLocation

object (LatLng)

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

endWaypoint

object (Waypoint)

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

startTags[]

string

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

Boş veya yinelenen dizelere izin verilmez.

endTags[]

string

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

Boş veya yinelenen dizelere izin verilmez.

startTimeWindows[]

object (TimeWindow)

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

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

costPerHourAfterSoftEndTime ve softEndTime yalnızca tek bir zaman aralığı varsa ayarlanabilir.

endTimeWindows[]

object (TimeWindow)

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

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

costPerHourAfterSoftEndTime ve softEndTime yalnızca tek bir zaman aralığı varsa ayarlanabilir.

unloadingPolicy

enum (UnloadingPolicy)

Araçta uygulanan kaldırma politikası.

loadLimits

map (key: string, value: object (LoadLimit))

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

"key": value çiftlerinin listesini içeren bir nesne. Örnek: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

costPerHour

number

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

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

costPerTraveledHour

number

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

costPerKilometer

number

Araç rotasının kilometre başına maliyeti. Bu maliyet, ShipmentRoute.transitions cinsinden bildirilen mesafeye uygulanır ve tek bir VisitRequest aracının arrivalLocation konumundan departureLocation konumuna dolaylı olarak seyahat edilen mesafeler için geçerli değildir.

fixedCost

number

Bu araç bir gönderimi yönetmek için kullanılıyorsa sabit maliyet uygulanır.

usedIfRouteIsEmpty

boolean

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

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

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

routeDurationLimit

object (DurationLimit)

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

travelDurationLimit

object (DurationLimit)

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

routeDistanceLimit

object (DistanceLimit)

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

extraVisitDurationForVisitType

map (key: string, value: string (Duration format))

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

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

"key": value çiftlerinin listesini içeren bir nesne. Örnek: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

breakRule

object (BreakRule)

Bu araçta uygulanacak ara programını açıklar. Boşsa bu araç için ara verilmez.

label

string

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

ignore

boolean

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

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

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

travelDurationMultiple

number

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

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

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

TravelMode

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

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

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

UnloadingPolicy

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

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

Sıralamalar
UNLOADING_POLICY_UNSPECIFIED Belirtilmemiş kaldırma politikası; teslimatlar da ilgili teslim almalarından sonra gerçekleşmelidir.
LAST_IN_FIRST_OUT Teslimatlar, teslim alma sırası tersten yapılmalıdır
FIRST_IN_FIRST_OUT Teslimatlar, teslim alma siparişleriyle aynı sırayla yapılmalıdır

LoadLimit

Bir araca uygulanan yük sınırını tanımlar (ör. "bu kamyon en fazla 3.500 kg taşıyabilir". Şu sayfaya göz atın: loadLimits.

JSON gösterimi
{
  "softMaxLoad": string,
  "costPerUnitAboveSoftMax": number,
  "startLoadInterval": {
    object (Interval)
  },
  "endLoadInterval": {
    object (Interval)
  },
  "maxLoad": string
}
Alanlar
softMaxLoad

string (int64 format)

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

costPerUnitAboveSoftMax

number

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

startLoadInterval

object (Interval)

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

endLoadInterval

object (Interval)

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

maxLoad

string (int64 format)

Kabul edilebilir maksimum yük miktarı.

Aralık

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

JSON gösterimi
{
  "min": string,
  "max": string
}
Alanlar
min

string (int64 format)

Minimum kabul edilebilir yük. ≥ 0 olmalıdır. İkisi de belirtilmişse min değeri ≤ max olmalıdır.

max

string (int64 format)

Maksimum kabul edilebilir yük. ≥ 0 olmalıdır. Belirtilmemişse maksimum yükleme bu ileti tarafından kısıtlanmaz. İkisi de belirtilmişse min değeri ≤ max olmalıdır.

DurationLimit

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

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

JSON gösterimi
{
  "maxDuration": string,
  "softMaxDuration": string,
  "quadraticSoftMaxDuration": string,
  "costPerHourAfterSoftMax": number,
  "costPerSquareHourAfterQuadraticSoftMax": number
}
Alanlar
maxDuration

string (Duration format)

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

En fazla dokuz kesir basamağı olan ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

softMaxDuration

string (Duration format)

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 softMaxDuration negatif olmayan bir sayı olmalıdır. maxDuration değeri de tanımlanmışsa softMaxDuration, maxDuration değerinden az olmalıdır.

En fazla dokuz kesir basamağı olan ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

quadraticSoftMaxDuration

string (Duration format)

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 quadraticSoftMaxDuration negatif olmayan bir sayı olmalıdır. maxDuration de tanımlıysa quadraticSoftMaxDuration, maxDuration değerinden küçük ve fark bir günden fazla olmamalıdır:

maxDuration - quadraticSoftMaxDuration <= 86400 seconds

En fazla dokuz kesir basamağı olan ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

costPerHourAfterSoftMax

number

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

  costPerHourAfterSoftMax * (duration - softMaxDuration)

Maliyet negatif olmamalıdır.

costPerSquareHourAfterQuadraticSoftMax

number

quadraticSoftMaxDuration eşiğinin ihlal edilmesi durumunda oluşan saat başına maliyet.

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

  costPerSquareHourAfterQuadraticSoftMax *
  (duration - quadraticSoftMaxDuration)^2

Maliyet negatif olmamalı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,
  "costPerKilometerAboveSoftMax": number
}
Alanlar
maxMeters

string (int64 format)

Mesafeyi en fazla maxMeter olacak şekilde sınırlayan kesin bir sınır. Sınır negatif olmamalıdır.

softMaxMeters

string (int64 format)

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

Tanımlanmışsa softMaxMeters'lar, maxMeters'tan küçük olmalı ve negatif olmamalıdır.

costPerKilometerAboveSoftMax

number

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

  (distanceMeters - softMaxMeters) / 1000.0 *
  costPerKilometerAboveSoftMax.

Maliyet negatif olmamalıdır.

BreakRule

Araç için zaman arası oluşturma kuralları (ör. öğle yemeği molaları). Mola, aracın mevcut konumunda boşta kaldığı ve herhangi bir ziyaret gerçekleştiremediği kesintisiz süredir. Süreçte kesinti yaşanabilir:

  • iki ziyaret arasındaki seyahat sırasında (ziyaretten hemen önceki veya hemen sonraki süreyi içerir, ancak ziyaretin ortasında değil) bu durumda ziyaretler arasındaki nakliye süresini uzatır.
  • veya araç çalışmaya başlamadan önce başlar (araç, aranın ortasında başlamayabilir) ve bu durumda aracın başlangıç süresi etkilenmez.
  • araç bitiş tarihinden sonra (araç bitiş zamanıyla birlikte).
JSON gösterimi
{
  "breakRequests": [
    {
      object (BreakRequest)
    }
  ],
  "frequencyConstraints": [
    {
      object (FrequencyConstraint)
    }
  ]
}
Alanlar
breakRequests[]

object (BreakRequest)

Aralar dizisi. BreakRequest mesajını görüntüleyin.

frequencyConstraints[]

object (FrequencyConstraint)

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

BreakRequest

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

JSON gösterimi
{
  "earliestStartTime": string,
  "latestStartTime": string,
  "minDuration": string
}
Alanlar
earliestStartTime

string (Timestamp format)

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

RFC3339 UTC "Zulu" zaman damgası biçiminde olmalıdır. Örnekler: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

latestStartTime

string (Timestamp format)

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

RFC3339 UTC "Zulu" zaman damgası biçiminde olmalıdır. Örnekler: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

minDuration

string (Duration format)

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

En fazla dokuz kesir basamağı olan ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

FrequencyConstraint

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

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

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

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

  04:00 vehicle start
   .. performing travel and visits ..
  09:00 1 hour break
  10:00 end of the break
   .. performing travel and visits ..
  12:00 20-min lunch break
  12:20 end of the break
   .. performing travel and visits ..
  21:00 1 hour break
  22:00 end of the break
   .. performing travel and visits ..
  23:59 vehicle end
JSON gösterimi
{
  "minBreakDuration": string,
  "maxInterBreakDuration": string
}
Alanlar
minBreakDuration

string (Duration format)

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

En fazla dokuz kesir basamağı olan ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

maxInterBreakDuration

string (Duration format)

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

En fazla dokuz kesir basamağı olan ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

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 (Row)
    }
  ],
  "vehicleStartTag": string
}
Alanlar
rows[]

object (Row)

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

vehicleStartTag

string

Bu süre ve mesafe matrisinin hangi araçlar için geçerli olduğunu 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. Diğer bir deyişle, startTags alanındaki tam olarak bir tanesi, bir matrisin (ve sadece o matrisin) vehicleStartTag değeri ile eşleşmelidir.

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

Satır

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

JSON gösterimi
{
  "durations": [
    string
  ],
  "meters": [
    number
  ]
}
Alanlar
durations[]

string (Duration format)

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

En fazla dokuz kesir basamağı olan ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

meters[]

number

Belirli bir satır için mesafe değerleri. Herhangi bir maliyet veya kısıtlama, modeldeki mesafelere işaret etmiyorsa bu alan boş bırakılabilir; Aksi takdirde durations kadar öğeye sahip olması gerekir.

TransitionAttributes

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

JSON gösterimi
{
  "srcTag": string,
  "excludedSrcTag": string,
  "dstTag": string,
  "excludedDstTag": string,
  "cost": number,
  "costPerKilometer": number,
  "distanceLimit": {
    object (DistanceLimit)
  },
  "delay": string
}
Alanlar
srcTag

string

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

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

excludedSrcTag

string

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

dstTag

string

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

excludedDstTag

string

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

cost

number

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

costPerKilometer

number

Bu geçiş gerçekleştirilirken katedilen mesafeye uygulanan kilometre başına maliyeti belirtir. Araçlarda belirtilen tüm Vehicle.cost_per_kilometer ile toplanır.

distanceLimit

object (DistanceLimit)

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

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

delay

string (Duration format)

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

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

En fazla dokuz kesir basamağı olan ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

ShipmentTypeIncompatibility

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

JSON gösterimi
{
  "types": [
    string
  ],
  "incompatibilityMode": enum (IncompatibilityMode)
}
Alanlar
types[]

string

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

incompatibilityMode

enum (IncompatibilityMode)

Uyumsuzluğa mod uygulandı.

IncompatibilityMode

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

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

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

  • Her ikisi de yalnızca teslim alma hizmeti sunuyorsa (teslimat içermiyorsa) veya teslimat ise (teslim alma hariç) aynı aracı paylaşamazlar.
  • Sevkiyatlardan birinde teslimat, diğerinde teslim alma varsa iki gönderi, ikincisi teslim alınmadan önce teslim edilmişse aynı aracı paylaşabilir.

ShipmentTypeRequirement

deliveryType'a göre gönderimler arasındaki şartları belirtir. Şartın ayrıntıları, gereksinim modu ile tanımlanır.

JSON gösterimi
{
  "requiredShipmentTypeAlternatives": [
    string
  ],
  "dependentShipmentTypes": [
    string
  ],
  "requirementMode": enum (RequirementMode)
}
Alanlar
requiredShipmentTypeAlternatives[]

string

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

dependentShipmentTypes[]

string

dependentShipmentTypes alanında türü olan tüm gönderilerin, aynı rotada en az requiredShipmentTypeAlternatives türünde ziyaret edilmesi gerekir.

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

requirementMode

enum (RequirementMode)

Mod, koşula uygulandı.

RequirementMode

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

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

IN_SAME_VEHICLE_AT_PICKUP_TIME modu kullanıldığında tüm "bağımlı" içerikler gönderimlerde en az bir "zorunlu" olmalıdır teslim alma sırasında aracındaki sevkıyatı ifade eder.

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

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

PrecedenceRule

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

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

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

JSON gösterimi
{
  "firstIsDelivery": boolean,
  "secondIsDelivery": boolean,
  "offsetDuration": string,
  "firstIndex": integer,
  "secondIndex": integer
}
Alanlar
firstIsDelivery

boolean

"İlk"in bir teslimattır.

secondIsDelivery

boolean

"Saniye"nin bir teslimattır.

offsetDuration

string (Duration format)

"İlk" arasındaki fark ve "second" (ikincil) unutmayın. Negatif olabilir.

En fazla dokuz kesir basamağı olan ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

firstIndex

integer

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

secondIndex

integer

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