ShipmentModel

Gönderim modeli, bir araç grubu tarafından gerçekleştirilmesi gereken bir dizi gönderim içerir ve genel maliyeti en aza indirir. Bu da toplam maliyeti ifade eder:

  • araçların rota belirleme maliyeti (toplam süre başına maliyet, seyahat süresi başına maliyet ve tüm araçlar için sabit maliyet toplamı).
  • yerine getirilmemiş gönderim cezaları nedeniyle.
  • Sevkiyatların küresel 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 gerçekleştirilmesi gereken gönderim grubu.

vehicles[]

object (Vehicle)

Ziyaretler için kullanılabilecek araç grubu.

globalStartTime

string (Timestamp format)

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

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

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

Nanosaniye çözünürlük ve en fazla dokuz kesir basamağı olan, RFC3339 UTC "Zulu" biçiminde bir zaman damgası. Örnekler: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

globalEndTime

string (Timestamp format)

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

Nanosaniye çözünürlük ve en fazla dokuz kesir basamağı olan, RFC3339 UTC "Zulu" biçiminde bir zaman damgası. Örnekler: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

globalDurationCostPerHour

number

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 örneğin, işin en erken tamamlanmasına yönelik optimizasyon yapmak için bu miktara saatlik 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 ya da durationDistanceMatrixDstTags boş olamaz.

Kullanım örnekleri:

  • İki konum vardır: locA ve locB.
  • 1 araç locA'da rotasına başlayıp locA konumunda sona erdiriyor.
  • locB'de 1 teslim alma ziyareti 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.
  • 1 araç, "hızlı" matrisi kullanarak locA'da rotasına başlayıp locB'de sona erdiriyor.
  • 1 araç, "yavaş" matrisini kullanarak locB'de rotasına başlayıp konum işaretinde sona erdiriyor.
  • 1 araç, "hızlı" matrisi kullanarak locB'de rotasına başlayıp locB'de sona erdirir.
  • locC'de 1 teslim alma ziyareti 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) etiketini içeren ziyaretlerle i matrisindeki diğer ziyaretlere olan ziyaretlerle olan süre ve mesafeleri tanımlar.

Etiketler, VisitRequest.tags veya Vehicle.start_tags değerine karşılık gelir. Belirli bir VisitRequest veya Vehicle, bu alandaki bir etiketle tam olarak eşleşmelidir. Bir Vehicle öğesinin kaynak, hedef ve matris etiketlerinin aynı olabileceğini, ayrıca VisitRequest etiketinin kaynak ve hedef etiketlerinin aynı olabileceğini unutmayın. Tüm etiketler farklı olmalı ve boş dize olmamalıdır. Bu alan boş değilse durationDistanceMatrices boş bırakılmamalıdır.

durationDistanceMatrixDstTags[]

string

Süre ve mesafe matrislerinin hedeflerini tanımlayan etiketler; durationDistanceMatrices(i).rows(j).durations(k) (resp. durationDistanceMatrices(i).rows(j).meters(k)), i matrisinde durationDistanceMatrixSrcTags(j) etiketli ziyaretlerden durationDistanceMatrixDstTags(k) etiketine sahip ziyaretlere kadar olan yolculuğun süresini (yani mesafe) tanımlar.

Etiketler, VisitRequest.tags veya Vehicle.start_tags değerine karşılık gelir. Belirli bir VisitRequest veya Vehicle, bu alandaki bir etiketle tam olarak eşleşmelidir. Bir Vehicle öğesinin kaynak, hedef ve matris etiketlerinin aynı olabileceğini, ayrıca VisitRequest etiketinin kaynak ve hedef etiketlerinin aynı olabileceğini unutmayın. Tüm etiketler farklı olmalı ve boş dize olmamalıdır. Bu alan boş değilse durationDistanceMatrices boş bırakılmamalıdır.

transitionAttributes[]

object (TransitionAttributes)

Modele eklenen geçiş özellikleri.

shipmentTypeIncompatibilities[]

object (ShipmentTypeIncompatibility)

Uyumsuz shipping_types grupları (bkz. ShipmentTypeIncompatibility).

shipmentTypeRequirements[]

object (ShipmentTypeRequirement)

shipmentType gereksinimleri (bkz. ShipmentTypeRequirement).

precedenceRules[]

object (PrecedenceRule)

Modelde uygulanması gereken öncelik kuralları grubu.

maxActiveVehicles

integer

Maksimum aktif araç sayısını kısıtlar. Rotasında en az bir gönderim yapılan bir araç aktiftir. Bu, araçtan daha az sürücünün olduğ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ı.

Gönderim

Tek bir öğenin, bir teslim alma noktasından teslimatlarından birine gönderimi. Sevkiyatın tamamlanabilmesi için benzersiz bir aracın teslim alma konumlarından birini ziyaret etmesi (ve yedek kapasitelerini buna uygun şekilde azaltması), ardından daha sonra teslimat konumlarından birini ziyaret etmesi (ve dolayısıyla yedek kapasitelerini buna uygun şekilde 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önderimin kullanıcı tanımlı görünen adı. En fazla 63 karakter uzunluğunda olabilir ve UTF-8 karakterleri kullanabilir.

pickups[]

object (VisitRequest)

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

deliveries[]

object (VisitRequest)

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

loadDemands

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

Gönderinin yük talepleri (ör. ağırlık, hacim, palet sayısı vb.). Haritadaki anahtarlar, tercihen birimleri de içeren, karşılık gelen yükün türünü 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 boş olarak kabul edilir.

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

allowedVehicleIndices[]

integer

Bu gönderimi gerçekleştirebilecek araç grubu. Boşsa tüm araçlar bunu yapabilir. Araçlar, ShipmentModel vehicles listesinde dizinlerine göre verilir.

costsPerVehicle[]

number

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

  • costsPerVehicleIndices ile aynı sayıda öğe. costsPerVehicle[i], modelin costsPerVehicleIndices[i] aracına karşılık gelir.
  • modeldeki taşıtlarla aynı sayıda öğe bulunur. i'inci öğe, modelin i numaralı aracına 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 belgesinin geçerli olduğu araçların endeksleri. Boş değilse costsPerVehicle ile aynı sayıda öğeye sahip olmalıdır. Araç dizini birden fazla kez belirtilemez. Bir araç costsPerVehicleIndices kapsamı dışında bırakılırsa 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ı ve gönderimde en azından teslim alma ve teslimat bilgileri bulunmalıdır.

Örneğin, seçilen teslim alma alternatifinden doğrudan seçili teslimat alternatifine geçmek için geçen en kısa süreyi belirtin. Daha sonra pickupToDeliveryAbsoluteDetourLimit politikasının ayarlanması şu yaptırımları uygular:

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

Aynı gönderimde hem göreli hem de mutlak sınırlar belirtilmişse olası her teslim alma/teslimat çifti için daha kısıtlayıcı sınır kullanılır. 2017/10 tarihi itibarıyla, tali güzergahlar yalnızca seyahat süreleri araca bağlı olmadığında desteklenmektedir.

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

pickupToDeliveryTimeLimit

string (Duration format)

Bir gönderinin teslim alınma tarihinden teslimatın başlamasına kadar olan maksimum süreyi belirtir. Belirtilmişse negatif olmamalı ve gönderimde en azından teslim alma ve teslimat bilgileri bulunmalıdır. Bu, teslim alma ve teslimat için hangi alternatiflerin seçildiğine veya aracın hızına bağlı değildir. Bu, maksimum sapma kısıtlamalarıyla birlikte belirtilebilir: Çözüm, her iki özelliği de dikkate alacaktır.

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

shipmentType

string

Bu gönderim için bir "tür" belirten boş olmayan dize. Bu özellik, shipment_types arasındaki uyumsuzlukları veya gereksinimleri tanımlamak için kullanılabilir (ShipmentModel içinde shipmentTypeIncompatibilities ve shipmentTypeRequirements konusuna bakın).

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

label

string

Bu gönderim için bir etiket belirtir. Bu etiket, ilgili ShipmentRoute.Visit öğesinin shipmentLabel içindeki yanıtta bildirilmektedir.

ignore

boolean

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

Modelde shipmentTypeRequirements olduğunda gönderimin yoksayılması doğrulama hatasına neden olur.

injectedFirstSolutionRoutes veya injectedSolutionConstraint içinde gerçekleştirilen bir gönderimin yoksayılmasına 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

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

ÖNEMLİ: Bu ceza belirtilmezse süresiz olarak kabul edilir, yani gönderimin tamamlanmış olması 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ı ve gönderimde en azından teslim alma ve teslimat bilgileri bulunmalıdır.

Örneğin, seçilen teslim alma alternatifinden doğrudan seçili teslimat alternatifine geçmek için geçen en kısa süreyi belirtin. Daha sonra pickupToDeliveryRelativeDetourLimit politikasının ayarlanması şu yaptırımları uygular:

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

Aynı gönderimde hem göreli hem de mutlak sınırlar belirtilmişse olası her teslim alma/teslimat çifti için daha kısıtlayıcı sınır kullanılır. 2017/10 tarihi itibarıyla, tali güzergahlar yalnızca seyahat süreleri araca bağlı olmadığında desteklenmektedir.

VisitRequest

Araç tarafından yapılabilecek bir ziyaret isteği: Coğrafi konumu (veya aşağıya bakın) iki tane olmak üzere, zaman aralıklarıyla gösterilen açılış ve kapanış saatleri ve hizmet süresi (aracın ürünleri almak veya bırakmak için araca ulaştıktan sonra harcadığı süre) vardır.

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ştirirken aracın vardığı coğrafi konum. Gönderim modelinde süre mesafe matrisleri varsa arrivalLocation belirtilmemelidir.

arrivalWaypoint

object (Waypoint)

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

departureLocation

object (LatLng)

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

departureWaypoint

object (Waypoint)

Bu VisitRequest tamamlandıktan sonra aracın hareket ettiği ara nokta. arrivalWaypoint ile aynıysa atlanabilir. Gönderim modelinde 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 kısıtlayan zaman aralıkları. Aracın varış saati penceresinin dışında hareket edebileceğini, yani varış saatinin + sürenin bir zaman aralığının içinde olmasının gerekmediğini unutmayın. Bu durum, araç TimeWindow.start_time tarihinden önce gelirse bekleme süresine neden olabilir.

TimeWindow yoksa, araç bu ziyareti her zaman gerçekleştirebilir.

Zaman aralıkları ayrı olmalıdır, yani hiçbir zaman aralığı başka bir zaman aralığıyla çakışmamalı veya bitişik olmamalı ve artan düzende olmalıdır.

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

duration

string (Duration format)

Ziyaret süresi, yani aracın varış ve kalkış arasında harcadığı süre (olası bekleme süresine eklenmek üzere; bkz. timeWindows).

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

cost

number

Bu ziyaret isteği için araç rotası üzerinden hizmet verme maliyeti. Bu özellik, bir gönderimin her bir alternatif teslim alma veya teslimatı 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 taleplerini yükle. Bu, Shipment.load_demands alanı gibidir ancak Shipment öğesinin tamamı yerine yalnızca bu VisitRequest için geçerlidir. Burada listelenen talepler, Shipment.load_demands politikasında listelenen taleplere eklenir.

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

visitTypes[]

string

Ziyaret türlerini belirtir. Bu değer, bir aracın bu ziyareti tamamlaması için gereken ek süreyi ayırmak üzere 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 bildirilmektedir.

LatLng

Enlem/boylam çiftini temsil eden bir nesne. Bu değer, enlem ve boylam derece ve boylam derecelerini temsil eden bir çift çiftle 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ı, VisitRequests'in varış ve kalkış konumlarının yanı sıra Araçlar'ın başlangıç ve bitiş konumlarını işaretler.

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ı için tercih edilmesinin amaçlandığını belirtir. Bu değeri ayarladığınızda, araç, konumun yolun merkezine doğru eğildiği bir yolda durabileceği şekilde rota, konumdan geçer. Bu seçenek "WALKING" ulaşım modunda kullanılamaz.

Birleştirme alanı location_type. Bir yeri 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

Ara noktayla ilişkili ÖY Yeri Kimliği.

Konum

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

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

object (LatLng)

Ara noktanın coğrafi koordinatları.

heading

integer

Trafiğin akış yönüyle ilişkili pusula istikameti. Bu değer, 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 0 bitiş noktası yönünü, 90 ise teslim tarihi yaklaşan Doğu yönünü vb. belirtir.)

TimeWindow

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

Sert zaman aralığı sınırları (startTime ve endTime), etkinliğin en erken ve en geç zamanını (ör. startTime <= event_time <= endTime) uygular. Yumuşak zaman aralığı alt sınırı (softStartTime), etkinliğin gerçekleşmeden önceki softStartTime ile orantılı bir maliyet oluşturarak etkinliğin softStartTime tarihinde veya sonrasında gerçekleşmesiyle ilgili bir tercih ifade eder. Yumuşak zaman aralığı üst sınırı (softEndTime), etkinliğin softEndTime tarihinden sonra ne kadar süreceğiyle orantılı bir maliyet belirleyerek etkinliğin softEndTime tarihinde veya öncesinde gerçekleşmesiyle ilgili bir tercih belirtir. startTime, endTime, softStartTime ve softEndTime, genel zaman sınırları içinde olmalıdır (bkz. ShipmentModel.global_start_time ve ShipmentModel.global_end_time) ve aşağıdakilere 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ığının başlangıç zamanı. Belirtilmemesi durumunda ShipmentModel.global_start_time olarak ayarlanır.

Nanosaniye çözünürlük ve en fazla dokuz kesir basamağı olan, RFC3339 UTC "Zulu" biçiminde bir zaman damgası. Örnekler: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

endTime

string (Timestamp format)

Zor zaman aralığının bitiş zamanı. Belirtilmemesi durumunda ShipmentModel.global_end_time olarak ayarlanır.

Nanosaniye çözünürlük ve en fazla dokuz kesir basamağı olan, RFC3339 UTC "Zulu" biçiminde bir zaman damgası. Örnekler: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

softStartTime

string (Timestamp format)

Zaman aralığının kontrollü başlangıç zamanı.

Nanosaniye çözünürlük ve en fazla dokuz kesir basamağı olan, RFC3339 UTC "Zulu" biçiminde bir zaman damgası. Örnekler: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

softEndTime

string (Timestamp format)

Zaman aralığının yumuşak bitiş zamanı.

Nanosaniye çözünürlük ve en fazla dokuz kesir basamağı olan, RFC3339 UTC "Zulu" biçiminde bir zaman damgası. Ö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ç

Sevkiyat sorunundaki bir aracın modelini oluşturur. Gönderimle ilgili bir sorun çözülürse bu araç için startLocation noktasından başlayıp endLocation tarihinde sona eren bir rota oluşturulur. Rota, bir dizi ziyarettir (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ı tanımlı görünen adı. En fazla 63 karakter uzunluğunda olabilir ve UTF-8 karakterleri kullanabilir.

travelMode

enum (TravelMode)

Aracın kullanılabildiği yolları ve hızını etkileyen ulaşım şekli. Ayrıca travelDurationMultiple politikasına bakın.

startLocation

object (LatLng)

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

startWaypoint

object (Waypoint)

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

endLocation

object (LatLng)

Son VisitRequest çalışmasını tamamladıktan sonra aracın bittiği coğrafi konum. Belirtilmezse aracın ShipmentRoute, son VisitRequest tamamlandığında hemen sona erer. Gönderim modelinde süre ve mesafe matrisleri varsa endLocation belirtilmemelidir.

endWaypoint

object (Waypoint)

Aracın, son VisitRequest çalışmasını tamamladıktan sonra bittiği bir coğrafi konumu temsil eden ara nokta. endWaypoint veya endLocation belirtilmezse aracın ShipmentRoute özelliği, son VisitRequest işlemini tamamladığında hemen sona erer. Gönderim modelinde süre ve mesafe matrisleri varsa endWaypoint belirtilmemelidir.

startTags[]

string

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

Boş veya yinelenen dizelere izin verilmez.

endTags[]

string

Araç 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 süre sınırları içinde olmalıdırlar (ShipmentModel.global_* alanlarına bakın). Belirtilmemişse bu genel süre sınırları dışında herhangi bir sınırlama yoktur.

Aynı tekrarlanan alana ait zaman aralıkları ayrı olmalıdır, yani hiçbir zaman aralığı başka bir zaman aralığıyla çakışamaz veya 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 süre sınırları içinde olmalıdırlar (ShipmentModel.global_* alanlarına bakın). Belirtilmemişse bu genel süre sınırları dışında herhangi bir sınırlama yoktur.

Aynı tekrarlanan alana ait zaman aralıkları ayrı olmalıdır, yani hiçbir zaman aralığı başka bir zaman aralığıyla çakışamaz veya 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 yükleme kaldırma politikası uygulandı.

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ı olan yük türünün tanımlayıcılarıdır. Belirli bir anahtar bu haritada yoksa ilgili kapasitenin sınırsız olduğu kabul edilir.

"key": value çiftlerin 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ı birim olmalıdır.

Araç rotası için saatlik ücret. Bu maliyet, rotanın aldığı toplam süreye uygulanır ve seyahat süresi, bekleme süresi ve ziyaret süresini içerir. Yalnızca costPerTraveledHour yerine costPerHour kullanılması daha fazla gecikmeye neden olabilir.

costPerTraveledHour

number

Araç rotasında seyahat edilen saat başına maliyet. Bu maliyet yalnızca rota tarafından alınan seyahat süresine (ShipmentRoute.transitions içinde raporlanan) uygulanır, bekleme süresi ve ziyaret süresi dahil değildir.

costPerKilometer

number

Araç rotasının kilometre başına maliyeti. Bu maliyet ShipmentRoute.transitions metriğinde bildirilen mesafeye uygulanır ve tek bir VisitRequest ile arrivalLocation ile departureLocation arasında dolaylı olarak katedilen mesafe için geçerli değildir.

fixedCost

number

Bu araç gönderim için kullanılıyorsa uygulanan sabit maliyettir.

usedIfRouteIsEmpty

boolean

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

Doğruysa, araç herhangi bir sevkiyat hizmeti vermese bile başlangıç noktasından bitiş konumuna gider ve aracın başlangıcından itibaren zaman ve mesafe maliyetleri de hesaba katılır.

Aksi takdirde, başlangıç noktasından bitiş konumuna seyahat etmez ve bu araç için breakRule veya gecikme (TransitionAttributes kalkışlı) planlanmaz. Bu durumda, aracın ShipmentRoute numarası araç dizini ve etiketi dışında hiçbir bilgi içermez.

routeDurationLimit

object (DurationLimit)

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

travelDurationLimit

object (DurationLimit)

Aracın rotasındaki seyahat süresine sınırlama uygulanır. Belirli bir OptimizeToursResponse içinde rota seyahat süresi tüm transitions.travel_duration toplamıdır.

routeDistanceLimit

object (DistanceLimit)

Aracın rotasının toplam mesafesine sınır uygulanır. Belirli bir OptimizeToursResponse içinde rota mesafesi, kendisine ait tüm transitions.travel_distance_meters toplamıdır.

extraVisitDurationForVisitType

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

ziyaret türü dizelerinden sürelere bir eşleme belirtir. Bu süre, VisitRequest.duration eklenerek, belirtilen visitTypes içeren ziyaretlerde kullanılacak zamandır. Bu ek ziyaret süresi, costPerHour belirtilirse maliyet ekler. Anahtarlar (ör. visitTypes) boş dizeler olamaz.

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

"key": value çiftlerin 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ş bırakılırsa bu araç için ara verilmeyecek.

label

string

Bu araç için bir etiket belirtir. Bu etiket, yanıtta karşılık gelen ShipmentRoute için vehicleLabel olarak bildirilir.

ignore

boolean

Doğru değerine ayarlanırsa usedIfRouteIsEmpty yanlış değerine ayarlanır ve bu araç kullanılmaz.

Gönderim, injectedFirstSolutionRoutes içinde yoksayılan bir araç tarafından gerçekleştirilirse ilk çözümde atlanır ancak yanıtta ücretsiz olarak gerçekleştirilebilir.

Gönderim, injectedSolutionConstraint içinde yoksayılan bir araç tarafından yapılırsa ve ilgili teslim alma/teslimat işlemleri araçta kalacak şekilde kısıtlanırsa (yani RELAX_ALL_AFTER_THRESHOLD. seviyeye gelecek şekilde rahatlanmamışsa) yanıtta atlanır. Bir gönderide allowedVehicleIndices alanı boş değilse ve izin verilen tüm araçlar yoksa yanıtta atlanır.

travelDurationMultiple

number

Bu aracın seyahat sürelerini artırmak veya azaltmak için kullanılabilecek çarpımsal bir faktör belirtir. Örneğin, bu değeri 2,0 olarak ayarlamak bu aracın daha yavaş olduğu ve standart araçlara göre iki kat daha uzun seyahat süreleri olduğu anlamına gelir. Bu katsayı, ziyaret sürelerini etkilemez. costPerHour veya costPerTraveledHour belirtilirse maliyeti etkiler. Bu değer, [0.001, 1000.0] aralığında olmalıdır. Ayarlanmadan bırakılırsa araç standart olur ve bu katsayı 1,0 olarak kabul edilir.

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

Ayrıca aşağıdaki extraVisitDurationForVisitType politikasına bakın.

TravelMode

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

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

Sıralamalar
TRAVEL_MODE_UNSPECIFIED DRIVING ile eşdeğer olan ulaşım şekli belirtilmemiş.
DRIVING Arabayla yol tariflerine (araba, ...) karşılık gelen ulaşım şekli.
WALKING Yaya yol tariflerine karşılık gelen ulaşım şekli.

UnloadingPolicy

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

unloadingPolicy haricinde rotanın herhangi bir yerinde başka gönderimler serbesttir.

Sıralamalar
UNLOADING_POLICY_UNSPECIFIED Kaldırma politikası belirtilmemiş. Teslimatlar yalnızca ilgili teslim alma işlemlerinden sonra yapılmalıdır.
LAST_IN_FIRST_OUT Teslimatlar, teslim almaların ters sırasına göre yapılmalıdır
FIRST_IN_FIRST_OUT Teslimatlar teslim alma işlemleri ile aynı sırayla gerçekleşmelidir

LoadLimit

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

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

string (int64 format)

Yükün yumuşak sınırı. Şu sayfaya göz atın: costPerUnitAboveSoftMax.

costPerUnitAboveSoftMax

number

Bu aracın rotasında yük softMaxLoad seviyesini aşıyorsa şu ücret 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ükleme aralığı.

endLoadInterval

object (Interval)

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

maxLoad

string (int64 format)

Kabul edilebilir maksimum yük miktarı.

Aralık

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

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

string (int64 format)

Kabul edilebilir minimum yük. ≥ 0 olmalıdır. Her ikisi de belirtilmişse min değeri ≤ max olmalıdır.

max

string (int64 format)

Kabul edilebilir maksimum yük. ≥ 0 olmalıdır. Bir değer belirtilmezse bu mesajla maksimum yükleme kısıtlanmaz. Her ikisi de belirtilmişse min değeri ≤ max olmalıdır.

DurationLimit

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

Bir hafif sınır alanı tanımlandığında hem esnek 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

string (Duration format)

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

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

softMaxDuration

string (Duration format)

Maksimum süre sınırı uygulamayan ancak bu sınır ihlal edildiğinde minimum sınır uygulanır. Bu maliyet, aynı birimle modelde tanımlanan diğer maliyetlerin toplamıdır.

Tanımlanmışsa softMaxDuration negatif olmayan bir değer olmalıdır. maxDuration değeri de tanımlanmışsa softMaxDuration, maxDuration değerinden küçük olmalıdır.

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

quadraticSoftMaxDuration

string (Duration format)

Maksimum süre sınırı uygulamayan ancak bir maksimum süre sınırı uygulamaya konulan yumuşak sınır, rotanın süre içinde ikinci dereceden bir maliyete neden olmasına neden olur. Bu maliyet, aynı birimle modelde tanımlanan diğer maliyetlerin toplamıdır.

Tanımlanmışsa quadraticSoftMaxDuration negatif olmayan bir değer olmalıdır. maxDuration de tanımlanmışsa quadraticSoftMaxDuration değeri maxDuration değerinden küçük olmalı ve fark bir günden fazla olmamalıdır:

maxDuration - quadraticSoftMaxDuration <= 86400 seconds

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

costPerHourAfterSoftMax

number

softMaxDuration eşiği ihlal edildiğinde tahakkuk eden saat başına maliyettir. Süre eşiğin altındaysa ek maliyet 0 olur. Aksi takdirde maliyet, aşağıdaki gibi süreye bağlı olur:

  costPerHourAfterSoftMax * (duration - softMaxDuration)

Maliyet negatif olmamalıdır.

costPerSquareHourAfterQuadraticSoftMax

number

quadraticSoftMaxDuration eşiği ihlal edilirse ücret alınan saat kare başına maliyet.

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

  costPerSquareHourAfterQuadraticSoftMax *
  (duration - quadraticSoftMaxDuration)^2

Maliyet negatif olmamalıdır.

DistanceLimit

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

Bir hafif sınır tanımlanırsa hem softMaxMeters hem de costPerKilometerAboveSoftMax tanımlanmalı ve negatif olmamalıdır.

JSON gösterimi
{
  "maxMeters": string,
  "softMaxMeters": string,
  "costPerKilometerAboveSoftMax": number
}
Alanlar
maxMeters

string (int64 format)

Mesafeyi en fazla maxMeter ile sınırlayan katı bir sınır. Sınır negatif olmayan bir sayı olmalıdır.

softMaxMeters

string (int64 format)

Maksimum mesafe sınırının zorunlu kılınmadığı ancak ihlal edildiğinde modelde tanımlanan diğer maliyetlerin toplamına ek olarak aynı birimle birlikte bir maliyetle ortaya çıkan yumuşak sınır.

Tanımlı softMaxMeters, maxMeters değerinden küçük olmalı ve negatif olmamalıdır.

costPerKilometerAboveSoftMax

number

Mesafe softMaxMeters sınırının üzerindeyse kilometre başına maliyet tahakkuk eder. Mesafe sınırın altındaysa ek maliyet 0 olur. Aksi takdirde maliyeti hesaplamak için kullanılan formül şu şekildedir:

  (distanceMeters - softMaxMeters) / 1000.0 *
  costPerKilometerAboveSoftMax.

Maliyet negatif olmamalıdır.

BreakRule

Bir araç için zaman araları oluşturmaya yönelik kurallar (ör. öğle yemeği molaları). Mola, aracın mevcut konumunda boşta kaldığı ve herhangi bir ziyaret gerçekleştiremediği ardışık bir süredir. Aşağıdaki durumlarda mola verilebilir:

  • iki ziyaret arasındaki seyahat sırasında (bu, ziyaretten hemen önceki veya sonraki zamandır, ancak ziyaretin ortasında olmayan zamandır). Bu durumda, ziyaretler arasındaki nakliye süresini uzatır.
  • veya araç başlamadan önce (araç, bir molanın ortasında çalışmayabilir). Bu durumda aracın başlangıç zamanı etkilenmez.
  • araç bitiş zamanından sonra da yayınlayın (aynı şekilde, aracın bitiş zamanıyla birlikte).
JSON gösterimi
{
  "breakRequests": [
    {
      object (BreakRequest)
    }
  ],
  "frequencyConstraints": [
    {
      object (FrequencyConstraint)
    }
  ]
}
Alanlar
breakRequests[]

object (BreakRequest)

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

frequencyConstraints[]

object (FrequencyConstraint)

Birkaç FrequencyConstraint geçerli olabilir. Bunların tümü, bu BreakRule öğesinin BreakRequest şartlarına uygun olmalıdır. İlgili konu: FrequencyConstraint.

BreakRequest

Her araç için geçerli olan mola sırası (yani numarası ve sırası) önceden bilinmelidir. Tekrarlanan BreakRequest öğeleri, diziyi oluşmaları gereken sırayla tanımlar. 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).

Nanosaniye çözünürlük ve en fazla dokuz kesir basamağı olan, RFC3339 UTC "Zulu" biçiminde bir zaman damgası. Ö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).

Nanosaniye çözünürlük ve en fazla dokuz kesir basamağı olan, RFC3339 UTC "Zulu" biçiminde bir zaman damgası. Örnekler: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

minDuration

string (Duration format)

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

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

FrequencyConstraint

Yukarıda belirtilen araların sıklığını ve süresini "Her 12 saatte en az 1 saatlik bir ara olmalıdır" gibi bir minimum ara sıklığını zorunlu kılarak daha da kısıtlayabilirsiniz. Bunun "12 saatlik herhangi bir kaydırma zaman aralığı içinde en az bir saatlik ara olmalıdır" şeklinde yorumlanabileceği varsayıldığında bu örnek şu şekilde çevrilir: FrequencyConstraint

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

Çözümdeki araların zamanlaması ve süresi, BreakRequest özelliğinde önceden belirtilmiş olan zaman aralıkları ve minimum sürelerin yanı sıra bu tür kısıtlamaların tümüne uyar.

Pratikte, art arda olmayan aralar için FrequencyConstraint geçerli olabilir. Örneğin, aşağıdaki program "1 saat her 12 saat" örneğini dikkate alı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

string (Duration format)

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

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

maxInterBreakDuration

string (Duration format)

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

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

DurationDistanceMatrix

Ziyaret ve araç başlangıç konumlarından ziyaret edilene kadar süre ve mesafe matrisini, ayrıca aracın bitiş konumlarını 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 öğeye sahip olmalıdır.

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çerlidir ve yalnızca tek bir matris olabilir.

Her araç başlangıcı tam olarak bir matrisle eşleşmelidir. Yani, aracın startTags alanından tam olarak bir tanesi, bir matrisin (ve yalnızca o matrisin) vehicleStartTag ile eşleşmelidir.

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

Satır

Süre ve mesafe matrisi 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 öğeye sahip olmalıdır.

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

meters[]

number

Belirli bir satır için mesafe değerleri. Modeldeki mesafelerle ilgili herhangi bir maliyet veya kısıtlama söz konusu değilse bu alan boş bırakılabilir; aksi takdirde, durations kadar öğe içermelidir.

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ı sınırlama veya sınır geçerli olur (doğal "VE" anlamına göre).

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.

Bir kaynak ziyareti veya araç başlangıcı, VisitRequest.tags veya Vehicle.start_tags öğesi srcTag içeriyorsa ya da excludedSrcTag içermiyorsa (bu iki alanın boş olmadığına bağlı olarak) eşleşir.

excludedSrcTag

string

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

dstTag

string

Bir hedef ziyareti veya araç sonu, VisitRequest.tags veya Vehicle.end_tags'si dstTag içeriyorsa ya da excludedDstTag içermiyorsa (bu iki alanın boş olmadığına bağlı olarak) eşleşir.

excludedDstTag

string

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

cost

number

Bu geçişi gerçekleştirmenin maliyetini belirtir. Bu, modeldeki tüm diğer maliyetlerle aynı birimdedir 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 tutarına eklenir.

distanceLimit

object (DistanceLimit)

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

2021/06 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 ziyaretinin tamamlanmasından sonra ve hedef ziyaretin başlamasından önce meydana gelir.

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

ShipmentTypeIncompatibility

Gönderim Türüne bağlı olarak gönderimler arasındaki uyumsuzlukları belirtir. Aynı rota üzerinde uyumsuz olan gönderimlerin gösterilmesi, uyumsuzluk moduna bağlı olarak kısıtlanır.

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

string

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

incompatibilityMode

enum (IncompatibilityMode)

Uyumsuzluğa mod uygulandı.

IncompatibilityMode

Uyumsuz gönderilerin görünümünün aynı rota üzerinde nasıl kısıtlandığını tanımlayan modlar.

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

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

  • İkisi de yalnızca gel-al (teslimat) veya yalnızca teslimat hizmeti (teslim alma seçeneği değil) şeklindeyse aynı aracı paylaşamazlar.
  • Bir gönderide teslimat, diğerinin teslim alınma işlemi varsa ve eski sevkiyat ikincisi teslim alınmadan önce teslim edilirse bu iki gönderi aynı aracı paylaşabilir.

ShipmentTypeRequirement

Gönderim Türüne göre gönderimler arasındaki gereksinimleri belirtir. Koşulun ayrıntıları, gereksinim modu ile tanımlanır.

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

string

dependentShipmentTypes uyarınca gerekli olan alternatif gönderim türlerinin listesi.

dependentShipmentTypes[]

string

dependentShipmentTypes alanında türü olan tüm gönderimler, aynı rota üzerinde requiredShipmentTypeAlternatives türünde en az bir gönderimin ziyaret edilmesini gerektirir.

NOT: shipmentType öğesinin kendisine bağımlı olduğu gereklilik zincirlerine izin verilmez.

requirementMode

enum (RequirementMode)

Koşula mod uygulandı.

RequirementMode

Rota üzerindeki bağımlı sevkiyatların görünümünü tanımlayan modlar.

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

IN_SAME_VEHICLE_AT_PICKUP_TIME modu sayesinde, tüm "bağımlı" gönderilerin teslim alma sırasında araçlarında en az bir tane "zorunlu" gönderim olması gerekir.

Bu nedenle, "bağımlı" gönderi teslim alma işleminde şunlardan biri olmalıdır:

  • Rota üzerinde teslim edilen yalnızca teslimatın gerekli olduğu "gerekli" bir sevkiyat varsa veya
  • "Gerekli" gönderiden önce rotadan teslim alınmış. "Gerekli" durumdaki gönderimin teslimatı varsa bu teslimat, "bağımlı" gönderimin teslim alınmasından sonra gerçekleştirilmelidir.
IN_SAME_VEHICLE_AT_DELIVERY_TIME Aynı önceki gibi, "bağımlı" gönderilerin teslimat sırasında araçlarında "zorunlu" bir gönderimin bulunması gerekir.

PrecedenceRule

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

Çeşitli öncelikler, aynı (veya ilgili) etkinliklere, ör. "B'nin teslimi A'nın teslimatından sonra gerçekleşir" ve "C'nin teslim alınması B'nin tesliminden sonra gerçekleşir".

Ayrıca, öncelikler yalnızca her iki gönderim de gerçekleştirildiğinde ve başka bir şekilde yoksayıldığında geçerli olur.

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

boolean

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

secondIsDelivery

boolean

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

offsetDuration

string (Duration format)

"İlk" ve "ikinci" etkinlik arasındaki göreli konum. Negatif olabilir.

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

firstIndex

integer

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

secondIndex

integer

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