ShipmentModel

Bir kargo modeli, bir dizi araç tarafından gerçekleştirilmesi gereken bir dizi kargo içerir. Bu sırada, toplam maliyet (aşağıdakilerin toplamı) en aza indirilir:

  • Araçları yönlendirmenin maliyeti (toplam süre başına maliyet, seyahat süresi başına maliyet ve tüm araçlardaki sabit maliyetin toplamı).
  • gerçekleştirilmeyen kargo cezaları.
  • Gönderilerin toplam süresinin maliyeti
JSON gösterimi
{
  "shipments": [
    {
      object (Shipment)
    }
  ],
  "vehicles": [
    {
      object (Vehicle)
    }
  ],
  "objectives": [
    {
      object (Objective)
    }
  ],
  "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önderimler grubu.

vehicles[]

object (Vehicle)

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

objectives[]

object (Objective)

Bu modelin, maliyetlere dönüştüreceğimiz hedef grubu. Boş değilse giriş modeli ücretsiz olmalıdır. Değiştirilmiş isteği almak için lütfen solvingMode = TRANSFORM_AND_RETURN_REQUEST işlevini kullanın. Bu durumda isteğin çözüme ulaştırılmayacağını unutmayın. İlgili belgelere bakın.

Deneysel: Daha fazla bilgi için https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request adresine bakın.

globalStartTime

string (Timestamp format)

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

Modelin zaman aralığı bir yıldan kısa olmalıdır. Yani globalEndTime ve globalStartTime değerleri arasında 31.536.000 saniyeden fazla olmamalıdır.

cost_per_*hour alanlarını kullanırken performansı artırmak için bu dönemi daha küçük bir aralığa ayarlamak isteyebilirsiniz (ör. tek bir günü modelliyorsanız genel zaman sınırlarını o güne ayarlamanız gerekir). Ayarlanmamışsa varsayılan olarak 1 Ocak 1970, 00:00:00 UTC (yani saniye: 0, nanos: 0) kullanılır.

Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da kabul edilir. Örnekler: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" veya "2014-10-02T15:01:23+05:30".

globalEndTime

string (Timestamp format)

Ayarlanmamışsa varsayılan olarak 1 Ocak 1971, 00:00:00 UTC (yani saniye: 31536000, nanos: 0) kullanılır.

Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da kabul edilir. Örnekler: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" veya "2014-10-02T15:01:23+05:30".

globalDurationCostPerHour

number

Genel planın "toplam 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 kısa sürede tamamlanması için optimizasyon yapmaya çalışmak amacıyla bu miktara saatlik bir 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 ile durationDistanceMatrixDstTags boş olamaz.

Kullanım örnekleri:

  • İki konum vardır: locA ve locB.
  • Rotasına A konumunda başlayıp A konumunda son veren 1 araç.
  • locB konumunda 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.
  • Rotasına locA konumunda başlayıp locB konumunda son veren ve "hızlı" matrisini kullanan 1 araç.
  • Rotasına konumB'de başlayıp konumB'de son veren ve "yavaş" matrisini kullanan 1 araç.
  • Rotasına konum B'de başlayıp konum B'de son veren ve "hızlı" matrisini kullanan 1 araç.
  • locC konumunda 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), matris i'deki diğer ziyaretlere durationDistanceMatrixSrcTags(j) etiketiyle yapılan ziyaretlerin sürelerini ve mesafelerini tanımlar.

Etiketler, VisitRequest.tags veya Vehicle.start_tags ile eşleşir. Belirli bir VisitRequest veya Vehicle, bu alandaki tam olarak bir etiketle eşleşmelidir. Vehicle kaynağı, hedefi ve matris etiketlerinin aynı olabileceğini unutmayın. Benzer şekilde, VisitRequest kaynağı ve hedef etiketleri de aynı olabilir. Tüm etiketler farklı olmalı ve boş dize olmamalıdır. 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) (sırasıyla durationDistanceMatrices(i).rows(j).meters(k)), i matrisinde durationDistanceMatrixSrcTags(j) etiketli ziyaretlerden durationDistanceMatrixDstTags(k) etiketli ziyaretlere yapılan seyahatin süresini (sırasıyla mesafesini) tanımlar.

Etiketler, VisitRequest.tags veya Vehicle.start_tags ile eşleşir. Belirli bir VisitRequest veya Vehicle, bu alandaki tam olarak bir etiketle eşleşmelidir. Vehicle kaynağı, hedefi ve matris etiketlerinin aynı olabileceğini unutmayın. Benzer şekilde, VisitRequest kaynağı ve hedef etiketleri de aynı olabilir. Tüm etiketler farklı olmalı ve boş dize olmamalıdır. Bu alan boş değilse durationDistanceMatrices boş olmamalıdır.

transitionAttributes[]

object (TransitionAttributes)

Modele geçiş özellikleri eklendi.

shipmentTypeIncompatibilities[]

object (ShipmentTypeIncompatibility)

Uyumsuz shipment_types (kargo türleri) kümeleri (ShipmentTypeIncompatibility bölümüne bakın).

shipmentTypeRequirements[]

object (ShipmentTypeRequirement)

shipmentType şartları (ShipmentTypeRequirement bölümüne bakın).

precedenceRules[]

object (PrecedenceRule)

Modelde uygulanması gereken öncelik kuralları grubu.

ÖNEMLİ: Öncelik kurallarının kullanılması, optimize edilebilecek sorunun boyutunu sınırlar. Çok sayıda gönderim içeren öncelik kurallarının kullanıldığı istekler reddedilebilir.

maxActiveVehicles

integer

Maksimum etkin araç sayısını sınırlar. Rotası en az bir gönderi taşıyan araçlar etkin olarak kabul edilir. Araç sayısından daha az sürücü olduğu ve araç filosunun heterojen olduğu durumlarda rota sayısını sınırlamak için kullanılabilir. Optimizasyon daha sonra kullanılacak en iyi araç alt kümesini seçer. Kesinlikle pozitif olmalıdır.

Kargo

Tek bir öğenin, teslim alınma noktalarından birinden teslimat noktalarından birine gönderilmesi. Gönderinin gerçekleştirilmiş olarak kabul edilmesi için benzersiz bir aracın teslim alma konumlarından birini ziyaret etmesi (ve yedek kapasitelerini buna göre azaltması), ardından teslimat konumlarından birini ziyaret etmesi (ve bu nedenle 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 kullanılabilir.

pickups[]

object (VisitRequest)

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

deliveries[]

object (VisitRequest)

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

loadDemands

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

Kargonun yük talepleri (örneğin ağırlık, hacim, palet sayısı vb.) Haritadaki anahtarlar, ilgili yükün türünü açıklayan tanımlayıcılar olmalıdır. İdeal olarak birimler de dahil edilmelidir. Örneğin: "weight_kg", "volume_gallons", "pallet_count" vb. Belirli bir anahtar haritada görünmüyorsa ilgili yük boş olarak kabul edilir.

allowedVehicleIndices[]

integer

Bu gönderimi yapabilecek araçlar grubu. Boşsa tüm araçlar bu işlemi gerçekleştirebilir. Araçlar, ShipmentModel'nın vehicles listesindeki indekslerine göre verilir.

costsPerVehicle[]

number

Bu gönderinin her araçla teslim edildiğinde oluşan maliyeti belirtir. Belirtilmişse ŞUNLARDAN BİRİNİ içermelidir:

  • costsPerVehicleIndices ile aynı sayıda öğe içermelidir. costsPerVehicle[i], modelin costsPerVehicleIndices[i] aracına karşılık gelir.
  • modeldeki araç sayısı kadar öğe içermelidir. i. öğe, modelin i. aracına karşılık gelir.

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

costsPerVehicleIndices[]

integer

costsPerVehicle'nın 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. costsPerVehicleIndices kapsamı dışında bırakılan araçların maliyeti sıfırdır.

pickupToDeliveryAbsoluteDetourLimit

string (Duration format)

Teslim alma noktasından teslimat noktasına en kısa yola kıyasla maksimum mutlak ek rota süresini belirtir. Belirtilmişse negatif olmayan bir değer olmalıdır ve kargoda en az bir teslim alma ve bir teslimat işlemi bulunmalıdır.

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

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

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

En fazla dokuz kesirli basamak içeren ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

pickupToDeliveryTimeLimit

string (Duration format)

Bir gönderinin teslim alınmasının başlangıcından teslimatının başlangıcına kadar geçen maksimum süreyi belirtir. Belirtilmişse negatif olmayan bir değer olmalıdır ve kargoda en az bir teslim alma ve bir teslimat işlemi 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 spesifikasyona da uyar.

En fazla dokuz kesirli basamak içeren ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

shipmentType

string

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

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

label

string

Bu gönderi için bir etiket belirtir. Bu etiket, ilgili ShipmentRoute.Visit öğesinin shipmentLabel bölümündeki yanıtta bildirilir.

ignore

boolean

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

Bir gönderinin yoksayılması, modelde shipmentTypeRequirements olduğunda doğrulama hatasına neden olur.

injectedFirstSolutionRoutes veya injectedSolutionConstraint içinde gerçekleştirilen bir gönderinin yoksayılmasına izin verilir. Çözücü, ilgili teslim alma/teslimat ziyaretlerini gerçekleştirilen rotadan kaldırır. precedenceRules gönderimlere referans verenler de yoksayılır.

penaltyCost

number

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

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

pickupToDeliveryRelativeDetourLimit

number

Teslim alma noktasından teslimat noktasına giden en kısa yola kıyasla maksimum göreceli sapma süresini belirtir. Belirtilmişse negatif olmayan bir değer olmalıdır ve kargoda en az bir teslim alma ve bir teslimat işlemi bulunmalıdır.

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

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

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

VisitRequest

Araçla yapılabilecek ziyaret isteği: Coğrafi konumu (veya iki, aşağıya bakın), zaman aralıklarıyla gösterilen açılış ve kapanış saatleri ve hizmet süresi (araç, malları almak veya bırakmak için geldiğinde harcanan 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,
  "avoidUTurns": boolean
}
Alanlar
arrivalLocation

object (LatLng)

Bu VisitRequest işlemi gerçekleştirilirken aracın ulaştığı coğrafi konum. Kargo modelinde süre mesafesi matrisleri varsa arrivalLocation belirtilmemelidir.

arrivalWaypoint

object (Waypoint)

Bu VisitRequest işlemi gerçekleştirilirken aracın ulaştığı yol noktası. Kargo modelinde süre mesafesi matrisleri varsa arrivalWaypoint belirtilmemelidir.

departureLocation

object (LatLng)

Bu VisitRequest tamamlandıktan sonra aracın hareket ettiği coğrafi konum. arrivalLocation ile aynıysa atlanabilir. Kargo modelinde süre mesafesi matrisleri varsa departureLocation belirtilmemelidir.

departureWaypoint

object (Waypoint)

Aracın bu VisitRequest tamamlandıktan sonra ayrıldığı yol noktası. arrivalWaypoint ile aynıysa atlanabilir. Kargo modelinde süre mesafesi matrisleri varsa departureWaypoint belirtilmemelidir.

tags[]

string

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

timeWindows[]

object (TimeWindow)

Ziyarette varış zamanını kısıtlayan zaman aralıkları. Bir aracın, varış zamanı aralığının dışında (ör. varış zamanı + süre bir zaman aralığında olmak zorunda değildir) hareket edebileceğini unutmayın. Araç TimeWindow.start_time tarihinden önce gelirse bekleme süresi oluşabilir.

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

Zaman aralıkları ayrık olmalıdır. Yani hiçbir zaman aralığı başka bir zaman aralığıyla çakışmamalı veya ona 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 (yani aracın varış ve ayrılış arasında geçirdiği süre) (olası bekleme süresine eklenir; bkz. timeWindows).

En fazla dokuz kesirli basamak içeren ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

cost

number

Bu ziyaret isteğinin bir araç rotasında karşılanmasının maliyeti. Bu, bir gönderinin her alternatif teslim alma veya teslimat işlemi için farklı maliyetleri ödemek üzere 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 yük talepleri. Bu, Shipment.load_demands alanına benzer ancak Shipment'nin tamamı yerine yalnızca bu VisitRequest için geçerlidir. Burada listelenen talepler, Shipment.load_demands bölümünde listelenen taleplere eklenir.

visitTypes[]

string

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

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

label

string

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

avoidUTurns

boolean

Bu konumdaki sürüş rotalarında U dönüşlerinin önlenip önlenmeyeceğini belirtir. U dönüşü engelleme özelliği, en iyi sonuçları elde etmeye çalışır ancak U dönüşünün tamamen engelleneceği garanti edilmez. Bu deneysel bir özelliktir ve davranışlar değişebilir.

Deneysel: Daha fazla bilgi için https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request adresini ziyaret edin.

LatLng

Bir enlem/boylam çiftini temsil eden nesne. Bu, enlem derecelerini ve boylam derecelerini temsil eden bir çift çift sayı olarak ifade edilir. Aksi belirtilmediği sürece bu nesne WGS84 standardına uygun olmalıdır. Değerler normalleştirilmiş aralıklar içinde olmalıdır.

JSON gösterimi
{
  "latitude": number,
  "longitude": number
}
Alanlar
latitude

number

Enlem (derece cinsinden). [-90.0, +90.0] aralığında olmalıdır.

longitude

number

Boylam (derece cinsinden). [-180.0, +180.0] aralığında olmalıdır.

Ara nokta

Bir ara noktayı kapsar. Ara noktalar, VisitRequest'lerin varış ve ayrılış konumlarını, Araçların başlangıç ve bitiş konumlarını işaretler.

JSON gösterimi
{
  "sideOfRoad": boolean,
  "vehicleStopover": 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ını tercih etmek için kullanıldığını gösterir. Bu değeri ayarladığınızda rota, konumdan geçecek şekilde düzenlenir. Böylece araç, yolun ortasından konuma doğru olan tarafında durabilir. Bu seçenek "YÜRÜME" seyahat modunda kullanılamaz.

vehicleStopover

boolean

Araçların yolcu almak veya bırakmak için durması gereken yol noktası olduğunu gösterir. Bu seçenek yalnızca "ARABA İLE" seyahat modunda ve "locationType" değeri "location" olduğunda çalışır.

Deneysel: Bu alanın davranışı veya varlığı gelecekte değişebilir.

location_type birleşik alanı. Bir konumu temsil etmenin farklı yolları. location_type aşağıdakilerden yalnızca biri olabilir:
location

object (Location)

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

placeId

string

Ara nokta ile ilişkili ÖY yer kimliği.

Bir VisitRequest'in varış veya ayrılış konumunu belirtmek için yer kimliği kullanırken, yere gitmek için navigasyonun LatLng konumunu belirlemeye yetecek kadar spesifik bir yer kimliği kullanın. Örneğin, bir binayı temsil eden bir yer kimliği uygundur ancak bir yolu temsil eden bir yer kimliği önerilmez.

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)

Ara noktanın coğrafi koordinatları.

heading

integer

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

TimeWindow

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

Sert zaman aralığı sınırları, startTime ve endTime, etkinliğin en erken ve en geç zamanını zorunlu kılar. Bu durumda startTime <= event_time <= endTime. Esnek zaman aralığının alt sınırı olan softStartTime, etkinliğin softStartTime tarihinde veya sonrasında gerçekleşmesi için bir tercih ifade eder. Bu tercih, etkinliğin softStartTime'dan ne kadar önce gerçekleştiğiyle orantılı bir maliyetle sonuçlanır. Esnek zaman aralığının üst sınırı olan softEndTime, etkinliğin softEndTime'dan sonra ne kadar süre içinde gerçekleştiğine orantılı bir maliyetle softEndTime'da veya öncesinde gerçekleşmesi tercihi olduğunu ifade eder. startTime, endTime, softStartTime ve softEndTime, genel zaman sınırları içinde olmalı (ShipmentModel.global_start_time ve ShipmentModel.global_end_time) ve şunlara uymalıdır:

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

string (Timestamp format)

Kesin zaman aralığının başlangıç zamanı. Belirtilmezse ShipmentModel.global_start_time olarak ayarlanır.

Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da kabul edilir. Örnekler: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" veya "2014-10-02T15:01:23+05:30".

endTime

string (Timestamp format)

Kesin zaman aralığının bitiş zamanı. Belirtilmezse ShipmentModel.global_end_time olarak ayarlanır.

Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da kabul edilir. Örnekler: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" veya "2014-10-02T15:01:23+05:30".

softStartTime

string (Timestamp format)

Zaman aralığının kontrollü başlatma zamanı.

Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da kabul edilir. Örnekler: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" veya "2014-10-02T15:01:23+05:30".

softEndTime

string (Timestamp format)

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

Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da kabul edilir. Örnekler: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" veya "2014-10-02T15:01:23+05:30".

costPerHourBeforeSoftStartTime

number

Etkinlik softStartTime'dan önce gerçekleşirse modele eklenen saatlik 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 belirlenebilir.

costPerHourAfterSoftEndTime

number

Etkinlik softEndTime tarihinden sonra gerçekleşirse modele eklenen saatlik 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 belirlenebilir.

Araç

Kargoda sorun olan bir araç modelini gösterir. Kargo sorununu çözdüğünüzde bu araç için startLocation ile endLocation arasında bir rota oluşturulur. Rota, ziyaretlerin sırasıdır (ShipmentRoute).

JSON gösterimi
{
  "displayName": string,
  "travelMode": enum (TravelMode),
  "routeModifiers": {
    object (RouteModifiers)
  },
  "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 kullanılabilir.

travelMode

enum (TravelMode)

Aracın kullanabileceği yolları ve hızını etkileyen ulaşım şekli. Ayrıca travelDurationMultiple başlıklı makaleyi inceleyin.

routeModifiers

object (RouteModifiers)

Belirli bir araç için rotaların hesaplanma şeklini etkileyen bir dizi koşul.

startLocation

object (LatLng)

Aracın herhangi bir gönderi almadan önce başladığı coğrafi konum. Belirtilmezse araç ilk teslim alma noktasından başlar. Kargo modelinde süre ve mesafe matrisleri varsa startLocation belirtilmemelidir.

startWaypoint

object (Waypoint)

Aracın herhangi bir gönderi almadan önce başladığı coğrafi konumu temsil eden yol noktası. Ne startWaypoint ne de startLocation belirtilirse araç ilk teslim alma noktasında çalışmaya başlar. Kargo modelinde süre ve mesafe matrisleri varsa startWaypoint belirtilmemelidir.

endLocation

object (LatLng)

Aracın son VisitRequest tamamlandıktan sonra bulunduğu coğrafi konum. Belirtilmediği takdirde aracın ShipmentRoute, son VisitRequest tamamlandığında hemen sona erer. Kargo modelinde süre ve mesafe matrisleri varsa endLocation belirtilmemelidir.

endWaypoint

object (Waypoint)

Aracın son VisitRequest tamamlandıktan sonra sona erdiği coğrafi konumu temsil eden yol noktası. Ne endWaypoint ne de endLocation belirtilirse aracın ShipmentRoute, son VisitRequest tamamlandığında hemen sona erer. Kargo modelinde 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ı içinde olmalıdır (ShipmentModel.global_* alanlarına bakın). Belirtilmemişse genel zaman sınırları dışında bir sınırlama yoktur.

Aynı tekrarlanan alana ait zaman aralıkları ayrık olmalıdır. Yani hiçbir zaman aralığı başka bir zaman aralığıyla çakışamaz veya ona 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 son konumuna varabileceği zaman aralıkları. Genel zaman sınırları içinde olmalıdır (ShipmentModel.global_* alanlarına bakın). Belirtilmemişse genel zaman sınırları dışında bir sınırlama yoktur.

Aynı tekrarlanan alana ait zaman aralıkları ayrık olmalıdır. Yani hiçbir zaman aralığı başka bir zaman aralığıyla çakışamaz veya ona 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 boşaltma politikası uygulanır.

loadLimits

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

Aracın kapasiteleri (örneğin, ağırlık, hacim, palet sayısı). Haritadaki anahtarlar, Shipment.load_demands alanının anahtarlarıyla tutarlı olacak şekilde 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.

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ının seyahat edilen saati başına maliyet. Bu maliyet yalnızca rota tarafından alınan seyahat süresi için geçerlidir (yani ShipmentRoute.transitions içinde bildirilen) ve bekleme süresi ile ziyaret süresini içermez.

costPerKilometer

number

Araç rotasının kilometre başına maliyeti. Bu maliyet, ShipmentRoute.transitions içinde bildirilen mesafe için geçerlidir ve tek bir VisitRequest'nin arrivalLocation ile departureLocation arasında örtülü olarak gidilen mesafeler için geçerli değildir.

fixedCost

number

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

usedIfRouteIsEmpty

boolean

Bu alan yalnızca rotası herhangi bir gönderiye hizmet etmeyen araçlar için geçerlidir. Bu durumda aracın kullanılmış olarak kabul edilip edilmeyeceğini belirtir.

Doğruysa araç, herhangi bir gönderiye hizmet etmese bile başlangıç konumundan bitiş konumuna gider ve başlangıçtan bitişe yolculuktan kaynaklanan süre ve mesafe maliyetleri dikkate alınır.

Aksi takdirde, başlangıç konumundan bitiş konumuna gitmez ve bu araç için breakRule veya TransitionAttributes'den kaynaklanan gecikme planlanmaz. Bu durumda, aracın ShipmentRoute özelliği, araç indeksi ve etiketi dışında herhangi bir bilgi içermez.

routeDurationLimit

object (DurationLimit)

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

travelDurationLimit

object (DurationLimit)

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

routeDistanceLimit

object (DistanceLimit)

Sınır, aracın rotasının toplam mesafesine uygulanır. Belirli bir OptimizeToursResponse içinde rota mesafesi, tüm transitions.travel_distance_meters toplamıdır.

extraVisitDurationForVisitType

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

visitTypes dizelerinden süreye kadar olan bir haritayı belirtir. Süre, belirtilen visitTypes ile yapılan ziyaretlerde VisitRequest.duration'ya ek olarak alınacak süredir. Bu ek ziyaret süresi, costPerHour belirtilmişse maliyet ekler. Anahtarlar (ör. visitTypes) boş dizeler olamaz.

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

breakRule

object (BreakRule)

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

label

string

Bu araç için bir etiket belirtir. Bu etiket, yanıtta ilgili ShipmentRoute öğesinin vehicleLabel olarak bildirilir.

ignore

boolean

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

injectedFirstSolutionRoutes içinde yoksayılan bir araç tarafından yapılan gönderim, ilk çözümde atlanır ancak yanıtta yapılabilir.

injectedSolutionConstraint içinde yoksayılan bir araç tarafından bir gönderim gerçekleştirilirse ve ilgili teslim alma/teslimat işlemlerinin araçta kalması kısıtlanırsa (ör. RELAX_ALL_AFTER_THRESHOLD düzeyine düşürülmezse) yanıtta atlanır. Bir gönderinin allowedVehicleIndices alanı boş değilse ve izin verilen tüm araçlar yoksayılıyorsa yanıt atlanır.

travelDurationMultiple

number

Bu aracın seyahat sürelerini artırmak veya azaltmak için kullanılabilecek bir çarpım faktörünü 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ürelerine sahip olduğu anlamına gelir. Bu kat, ziyaret sürelerini etkilemez. costPerHour veya costPerTraveledHour belirtilmişse maliyeti etkiler. Bu değer [0.001, 1000.0] aralığında olmalıdır. Ayarlanmamışsa araç standarttır ve bu kat, 1, 0 olarak kabul edilir.

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

Ayrıca extraVisitDurationForVisitType bölümüne de bakın.

TravelMode

Araçların kullanabileceği ulaşım şekilleri.

Bunlar, Google Haritalar Platformu Rotalar API'si seyahat modlarının bir alt kümesi olmalıdır. Bkz: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteTravelMode

Not: WALKING rotaları beta sürümündedir ve bazen net kaldırımlar veya yaya yolları içermeyebilir. Uygulamanızda gösterdiğiniz tüm yürüme rotaları için bu uyarıyı kullanıcıya göstermeniz gerekir.

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 tariflerine karşılık gelen ulaşım şekli.

RouteModifiers

Araç rotaları hesaplanırken karşılanması gereken bir dizi isteğe bağlı koşulu kapsar. Bu, Google Haritalar Platformu Rotalar Tercih Edilen API'sindeki RouteModifiers ile benzerdir. Bkz: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers.

JSON gösterimi
{
  "avoidTolls": boolean,
  "avoidHighways": boolean,
  "avoidFerries": boolean,
  "avoidIndoor": boolean
}
Alanlar
avoidTolls

boolean

Makul olduğu durumlarda ücretli yollardan kaçınılıp kaçınılmayacağını belirtir. Ücretli yolların olmadığı rotalara öncelik verilir. Yalnızca motorlu ulaşım modları için geçerlidir.

avoidHighways

boolean

Makul olduğu durumlarda otoyollardan kaçınılıp kaçınılmayacağını belirtir. Otoyol içermeyen rotalara öncelik verilir. Yalnızca motorlu ulaşım modları için geçerlidir.

avoidFerries

boolean

Makul olduğu durumlarda feribotların kullanılmamasını belirtir. Feribotla seyahat içermeyen rotalara öncelik verilir. Yalnızca motorlu ulaşım modları için geçerlidir.

avoidIndoor

boolean

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

UnloadingPolicy

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

Diğer gönderiler, unloadingPolicy'dan bağımsız olarak rota üzerinde herhangi bir yerde ücretsiz olarak gerçekleşebilir.

Sıralamalar
UNLOADING_POLICY_UNSPECIFIED Belirtilmemiş boşaltma politikası; teslimatlar yalnızca ilgili teslim alma işlemlerinden sonra yapılmalıdır.
LAST_IN_FIRST_OUT Teslimatlar, teslim alma işlemlerinin tersi sırada yapılmalıdır.
FIRST_IN_FIRST_OUT Teslimatlar, teslim alma işlemleriyle aynı sırada yapılmalıdır.

LoadLimit

Bir araç için geçerli olan yük sınırını tanımlar (ör. "Bu kamyon 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,
  "costPerKilometer": {
    object (LoadCost)
  },
  "costPerTraveledHour": {
    object (LoadCost)
  }
}
Alanlar
softMaxLoad

string (int64 format)

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

costPerUnitAboveSoftMax

number

Yük, bu aracın rotası boyunca softMaxLoad değerini aşarsa aşağıdaki 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. Esnek sınırlar yalnızca model genelinde yalnızca teslim alma veya yalnızca teslimat için geçerli olan türlerde tanımlanabilir.

startLoadInterval

object (Interval)

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

endLoadInterval

object (Interval)

Aracın rota sonunda kabul edilebilir yükleme aralığı.

maxLoad

string (int64 format)

Kabul edilebilir maksimum yük miktarı.

costPerKilometer

object (LoadCost)

Bu araç için bir birim yükün bir kilometre taşınmasının maliyeti. Bu, yakıt tüketimi için bir proxy olarak kullanılabilir: Yük bir ağırlıksa (Newton cinsinden), yük*kilometre enerji boyutuna sahiptir.

Deneysel: Daha fazla bilgi için https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request adresini ziyaret edin.

costPerTraveledHour

object (LoadCost)

Bu araçla bir saat boyunca bir yük birimiyle seyahat etmenin maliyeti.

Deneysel: Daha fazla bilgi için https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request adresini ziyaret edin.

Aralık

Kabul edilebilir yükleme miktarlarının 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 değerinden küçük veya ona eşit olmalıdır.

max

string (int64 format)

Kabul edilebilir maksimum yük. ≥ 0 olmalıdır. Belirtilmemesi durumunda, maksimum yük bu mesajla sınırlanmaz. Her ikisi de belirtilmişse min değeri max değerinden küçük veya ona eşit olmalıdır.

LoadCost

Transition sırasında bir birim yükü taşımanın maliyeti. Belirli bir yük için maliyet iki bölümün toplamıdır:

  • min(yük, loadThreshold) * costPerUnitBelowThreshold
  • maks(0, yük - loadThreshold) * costPerUnitAboveThreshold

Bu maliyetle çözümler, yüksek talepleri önce karşılamayı veya benzer şekilde yüksek talepleri en son teslim almayı tercih eder. Örneğin, bir araçta

load_limit {
  key: "weight"
  value {
    costPerKilometer {
      loadThreshold: 15
      costPerUnitBelowThreshold: 2.0
      costPerUnitAboveThreshold: 10.0
    }
  }
}

ve rotası, geçişlerle birlikte başlangıç, teslim alma, teslim alma, teslimat, teslimat, bitiş şeklindedir:

transition { vehicle_load['weight'] { amount: 0 }
             travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
             travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 20 }
             travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
             travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
             travelDistanceMeters: 1000.0 }

bu LoadCost tarafından yapılan maliyet (cost_below * load_below * kilometers + cost_above * load_above * kms) olur.

  • geçiş 0: 0,0
  • 1. geçiş: 2,0 * 10 * 1,0 + 10,0 * 0 * 1,0 = 20,0
  • 2. geçiş: 2,0 * 15 * 1,0 + 10,0 * (20 - 15) * 1,0 = 80,0
  • 3. geçiş: 2,0 * 10 * 1,0 + 10,0 * 0 * 1,0 = 20,0
  • geçiş 4: 0,0

Bu nedenle, rota üzerindeki LoadCost değeri 120,0'dır.

Ancak rota, geçişlerle birlikte start,pickup,delivery,pickup,delivery,end ise:

transition { vehicle_load['weight'] { amount: 0 }
             travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
             travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
             travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
             travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
             travelDistanceMeters: 1000.0 }

bu LoadCost tarafından karşılanan maliyet

  • geçiş 0: 0,0
  • 1. geçiş: 2,0 * 10 * 1,0 + 10,0 * 0 * 1,0 = 20,0
  • geçiş 2: 0,0
  • 3. geçiş: 2,0 * 10 * 1,0 + 10,0 * 0 * 1,0 = 20,0
  • geçiş 4: 0,0

Burada rotadaki LoadCost değeri 40,0'dır.

LoadCost, yoğun geçişli çözümleri daha pahalı hale getirir.

Deneysel: Daha fazla bilgi için https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request adresini ziyaret edin.

JSON gösterimi
{
  "loadThreshold": string,
  "costPerUnitBelowThreshold": number,
  "costPerUnitAboveThreshold": number
}
Alanlar
loadThreshold

string (int64 format)

Yük biriminin maliyetinin eşiğin altındaki birim başına maliyetten eşiğin üzerindeki birim başına maliyete değiştiği yük miktarı. 0 veya daha büyük olmalıdır.

costPerUnitBelowThreshold

number

Yük biriminin taşınmasının maliyeti (0 ile eşik arasındaki her birim için). Sonlu bir değer olmalı ve 0'dan büyük veya 0'a eşit olmalıdır.

costPerUnitAboveThreshold

number

Eşiğin üzerindeki her birim için bir yük birimini taşıma maliyeti. Eşik = 0 olan özel durumda bu, birim başına sabit bir maliyettir. Sonlu bir değer olmalı ve 0'dan büyük veya 0'a eşit olmalıdır.

DurationLimit

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

Esnek sınır alanı tanımlandığında hem esnek maksimum eşik hem de ilişkili 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 ile sınırlayan kesin bir sınır.

En fazla dokuz kesirli basamak içeren ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

softMaxDuration

string (Duration format)

Maksimum süre sınırını zorunlu kılmayan ancak ihlal edildiğinde rotanın maliyete tabi olmasına neden olan bir esnek sınırdır. Bu maliyet, modelde tanımlanan diğer maliyetlere aynı birimle eklenir.

Tanımlanırsa softMaxDuration negatif olmamalıdır. maxDuration da tanımlanmışsa softMaxDuration, maxDuration değerinden küçük olmalıdır.

En fazla dokuz kesirli basamak içeren ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

quadraticSoftMaxDuration

string (Duration format)

Maksimum süre sınırını zorunlu kılmayan ancak ihlal edildiğinde rotanın süreye göre karesel bir maliyete neden olduğu esnek bir sınırdır. Bu maliyet, modelde tanımlanan diğer maliyetlere aynı birimle eklenir.

quadraticSoftMaxDuration ayarlanmışsa aşağıdaki koşullar karşılanmalıdır:

  • Negatif olmamalıdır.
  • maxDuration tanımlanmalıdır.
  • quadraticSoftMaxDuration değeri, maxDuration değerinden küçük olmalıdır.
  • Fark en fazla bir gün olmalıdır: maxDuration - quadraticSoftMaxDuration <= 86400 seconds

En fazla dokuz kesirli basamak içeren ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

costPerHourAfterSoftMax

number

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

  costPerHourAfterSoftMax * (duration - softMaxDuration)

Maliyet negatif olmamalıdır.

costPerSquareHourAfterQuadraticSoftMax

number

quadraticSoftMaxDuration eşiği ihlal edilirse oluşan kare saat başına maliyet.

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

  costPerSquareHourAfterQuadraticSoftMax *
  (duration - quadraticSoftMaxDuration)^2

Maliyet negatif olmamalıdır.

DistanceLimit

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

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

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

string (int64 format)

Mesafeyi en fazla maxMeters ile sınırlayan kesin bir sınır. Sınır negatif olmamalıdır.

softMaxMeters

string (int64 format)

Maksimum mesafe sınırını zorunlu kılmayan ancak ihlal edildiğinde maliyete neden olan ve modelde tanımlanan diğer maliyetlere aynı birimle eklenen bir yumuşak sınırdır.

Tanımlanırsa softMaxMeters, maxMeters değerinden küçük ve negatif olmayan bir değer olmalıdır.

costPerKilometerBelowSoftMax

number

Kilometre başına yapılan maliyet, softMaxMeters'ya kadar artar. Formül:

  min(distanceMeters, softMaxMeters) / 1000.0 *
  costPerKilometerBelowSoftMax.

Bu maliyet, routeDistanceLimit'da desteklenmiyor.

costPerKilometerAboveSoftMax

number

Mesafe softMaxMeters sınırının üzerindeyse kilometre başına maliyet uygulanır. Mesafe sınırın altındaysa ek ücret 0 olur. Aksi takdirde, maliyeti hesaplamak için kullanılan formül şöyledir:

  (distanceMeters - softMaxMeters) / 1000.0 *
  costPerKilometerAboveSoftMax.

Maliyet negatif olmamalıdır.

BreakRule

Bir araç için zaman araları oluşturma kuralları (ör. öğle yemeği araları). Mola, aracın mevcut konumunda boşta kaldığı ve herhangi bir ziyaret gerçekleştiremediği kesintisiz bir zaman aralığıdır. Aşağıdaki durumlarda ara verilebilir:

  • İki ziyaret arasındaki seyahat sırasında (ziyaretten hemen önce veya hemen sonraki zamanı içerir ancak ziyaretin ortasında değil). Bu durumda, ziyaretler arasındaki ilgili nakliye süresi uzatılır.
  • veya araç çalıştırılmadan önce (araç, mola sırasında çalışmayabilir). Bu durumda, araç çalıştırma süresini etkilemez.
  • veya araç bitişinden sonra (araç bitiş zamanı için de aynı durum geçerlidir).
JSON gösterimi
{
  "breakRequests": [
    {
      object (BreakRequest)
    }
  ],
  "frequencyConstraints": [
    {
      object (FrequencyConstraint)
    }
  ]
}
Alanlar
breakRequests[]

object (BreakRequest)

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

frequencyConstraints[]

object (FrequencyConstraint)

Çeşitli FrequencyConstraint uygulanabilir. Bu BreakRule'nın BreakRequest tarihine kadar tüm şartlar karşılanmalıdır. FrequencyConstraint sayfasına göz atın.

BreakRequest

Her araç için geçerli olan mola sırası (ör. sayıları ve sıraları) önceden bilinmelidir. Tekrarlanan BreakRequest simgeleri, gerçekleşmeleri gereken sırayla bu adım sırasını tanımlar. Zaman aralıkları (earliestStartTime / latestStartTime) çakışabilir ancak siparişle uyumlu olmaları gerekir (bu kontrol edilir).

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

string (Timestamp format)

Zorunlu. Aralığın başlangıcı için alt sınır (dahil).

Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da kabul edilir. Örnekler: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" veya "2014-10-02T15:01:23+05:30".

latestStartTime

string (Timestamp format)

Zorunlu. Aralığın başlangıç zamanı için üst sınır (dahil).

Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da kabul edilir. Örnekler: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" veya "2014-10-02T15:01:23+05:30".

minDuration

string (Duration format)

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

En fazla dokuz kesirli basamak içeren ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

FrequencyConstraint

"Her 12 saatte en az 1 saat ara verilmelidir" gibi minimum ara sıklığı zorunlu kılınarak yukarıda belirtilen araların sıklığı ve süresi daha da sınırlandırılabilir. Bunun "12 saatlik herhangi bir zaman aralığında en az bir saatlik en az bir mola olmalıdır" şeklinde yorumlanabileceğini varsayarsak bu örnek, aşağıdaki FrequencyConstraint olarak çevrilir:

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

Çözümdeki araların zamanlaması ve süresi, BreakRequest içinde belirtilen zaman aralıkları ve minimum sürelerin yanı sıra bu tür tüm kısıtlamalara uygun olacaktır.

FrequencyConstraint, uygulamada ardışık olmayan aralar için geçerli olabilir. Örneğin, aşağıdaki program "12 saatte bir 1 saat" örneğine uygundur:

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

string (Duration format)

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

En fazla dokuz kesirli basamak içeren ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

maxInterBreakDuration

string (Duration format)

Zorunlu. Rotadaki, duration >= minBreakDuration molasını en azından kısmen içermeyen herhangi bir zaman aralığının izin verilen maksimum süresi. Pozitif olmalıdır.

En fazla dokuz kesirli basamak içeren ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

Hedef

Hedefler, maliyet modelinin yerini tamamen aldığından önceden var olan maliyetlerle uyumlu değildir. Her hedef; örneğin araçlar, gönderiler veya geçiş özellikleri için önceden tanımlanmış bir dizi maliyetle eşlenir.

Deneysel: Daha fazla bilgi için https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request adresine bakın.

JSON gösterimi
{
  "type": enum (Type),
  "weight": number
}
Alanlar
type

enum (Type)

Hedefin türü.

weight

number

Bu hedefin diğerlerine kıyasla ne kadar önemli olduğu. Bu, negatif olmayan herhangi bir sayı olabilir. Ağırlıkların toplamı 1 olmak zorunda değildir. Ağırlıklar varsayılan olarak 1,0'dır.

Tür

Bir dizi maliyetle eşlenecek hedef türü.

Sıralamalar
DEFAULT Makul bir çözüm sağlamak için varsayılan bir maliyet kümesi kullanılır. Not: Bu hedef tek başına kullanılabilir ancak halihazırda mevcut değilse her zaman ağırlık 1.0 ile temel olarak kullanıcının belirttiği hedeflere eklenir.
MIN_DISTANCE "MIN" hedefleri. Katedilen toplam mesafeyi en aza indirin.
MIN_WORKING_TIME Tüm araçlar için toplam çalışma süresini en aza indirin.
MIN_TRAVEL_TIME Yukarıdakiyle aynıdır ancak yalnızca seyahat süresine odaklanır.
MIN_NUM_VEHICLES Kullanılan araç sayısını en aza indirin.

DurationDistanceMatrix

Ziyaret ve araç başlangıç konumlarından ziyaret ve araç bitiş konumlarına kadar olan süre ve mesafe matrisini belirtir.

JSON gösterimi
{
  "rows": [
    {
      object (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ş bırakılırsa tüm araçlar için geçerli olur ve yalnızca tek bir matris olabilir.

Her araç başlangıcı tam olarak bir matrisle eşleşmelidir. Yani startTags alanlarından tam olarak biri bir matrisin vehicleStartTag alanıyla (ve yalnızca o matrisle) eşleşmelidir.

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

Satır

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

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

string (Duration format)

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

En fazla dokuz kesirli basamak içeren ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

meters[]

number

Belirli bir satır için mesafe değerleri. Modelde mesafelerle ilgili maliyet veya kısıtlama yoksa bu alan boş bırakılabilir. Aksi takdirde, durations kadar öğe içermelidir.

TransitionAttributes

Bir rotadaki iki ardışık ziyaret arasındaki geçişlerin özelliklerini belirtir. Aynı geçiş için birden fazla TransitionAttributes geçerli olabilir. Bu durumda, tüm ek maliyetler toplanır ve en katı kısıtlama veya sınır uygulanır (doğal "VE" semantiği izlenerek).

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şleri kümesini tanımlayan etiketler.

Bir kaynak ziyareti veya araç başlatma, VisitRequest.tags ya da Vehicle.start_tags alanlarından biri srcTag içeriyorsa veya 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 özelliklerinden biri boş olmamalıdır.

dstTag

string

Bir hedef ziyaret veya araç sonu, VisitRequest.tags ya da Vehicle.end_tags alanı dstTag içeriyorsa veya 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 özelliklerinden biri boş olmamalıdır.

cost

number

Bu geçişi gerçekleştirme maliyetini belirtir. Bu değer, modeldeki diğer tüm maliyetlerle aynı birimdedir ve negatif olmamalıdır. Diğer tüm mevcut maliyetlere ek olarak uygulanır.

costPerKilometer

number

Bu geçiş gerçekleştirilirken gidilen mesafeye uygulanan kilometre başına maliyeti belirtir. Araçlarda belirtilen Vehicle.cost_per_kilometer değerine eklenir.

distanceLimit

object (DistanceLimit)

Bu geçiş yapılırken kat edilen mesafeyle ilgili bir sınır belirtir.

Haziran 2021 itibarıyla yalnızca esnek sınırlar desteklenmektedir.

delay

string (Duration format)

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

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

En fazla dokuz kesirli basamak içeren ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

ShipmentTypeIncompatibility

Kargolar arasındaki uyumsuzlukları, kargo türlerine göre belirtir. Aynı rotadaki uyumsuz gönderilerin 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ında farklı shipment_types değerlerine sahip iki gönderi "uyumsuz" olarak kabul edilir.

incompatibilityMode

enum (IncompatibilityMode)

Uyumsuzluğa uygulanan mod.

IncompatibilityMode

Aynı rotada uyumsuz gönderilerin görünümünün nasıl kısıtlanacağını tanımlayan modlar.

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

Bu modda, uyumsuz türlere sahip iki gönderi aynı anda aynı araçta bulunamaz:

  • Aynı aracı yalnızca biri teslim edilmeden diğeri alınırsa paylaşabilirler.
  • Her iki gönderim de yalnızca teslimat veya yalnızca teslim alma içinse aynı aracı hiç kullanamazlar.

ShipmentTypeRequirement

Kargolar arasındaki koşulları shipmentType'a göre belirtir. Koşulun ayrıntıları, koşul modu tarafından tanımlanır.

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

string

dependentShipmentTypes tarafından gerekli olan alternatif kargo türlerinin listesi.

dependentShipmentTypes[]

string

dependentShipmentTypes alanında türü belirtilmiş tüm gönderiler için aynı rota üzerinde en az bir requiredShipmentTypeAlternatives türünde gönderinin ziyaret edilmesi gerekir.

NOT: shipmentType öğesinin kendisine bağlı olduğu gereksinim zincirlerine izin verilmez.

requirementMode

enum (RequirementMode)

Koşula uygulanan mod.

RequirementMode

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

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

IN_SAME_VEHICLE_AT_PICKUP_TIME modunda, tüm "bağımlı" gönderilerin teslim alınma sırasında araçlarında en az bir "gerekli" gönderi bulunmalıdır.

Bu nedenle, "bağımlı" bir kargo teslim alma işlemi için aşağıdakilerden biri gerekir:

  • Yalnızca teslimat için "gerekli" bir gönderi, rotada daha sonra teslim edildiyse veya
  • Kendinden önce rotada "gerekli" bir gönderi alınmışsa ve "gerekli" gönderinin teslimatı varsa bu teslimat, "bağımlı" gönderinin alınmasından sonra yapılmalıdır.
IN_SAME_VEHICLE_AT_DELIVERY_TIME Öncekiyle aynıdır. Ancak "bağımlı" gönderilerin, teslimatları sırasında araçlarında "gerekli" bir gönderi bulunması gerekir.

PrecedenceRule

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

Birkaç öncelik aynı (veya ilgili) etkinliklere atıfta bulunabilir. Örneğin, "B'nin teslim alınması A'nın teslim edilmesinden sonra gerçekleşir" ve "C'nin teslim alınması B'nin teslim alınmasından sonra gerçekleşir".

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

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

boolean

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

secondIsDelivery

boolean

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

offsetDuration

string (Duration format)

"Birinci" ve "ikinci" etkinlik arasındaki fark. Negatif olabilir.

En fazla dokuz kesirli basamak içeren ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

firstIndex

integer

"İlk" etkinliğin kargo dizini. Bu alan belirtilmelidir.

secondIndex

integer

"İkinci" etkinliğin kargo dizini. Bu alan belirtilmelidir.