ShipmentModel

Gönderi modeli, bir dizi araç tarafından gerçekleştirilmesi gereken bir dizi gönderi içerir. Bu sırada, aşağıdakilerin toplamı olan genel maliyet en aza indirilir:

  • Araçların rotasını belirleme maliyeti (toplam süre başına maliyet, seyahat süresi başına maliyet ve tüm araçlar için sabit maliyetin toplamı).
  • gerçekleştirilmeyen gönderim cezaları
  • Gönderimlerin toplam süresinin maliyeti
JSON gösterimi
{
  "shipments": [
    {
      object (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önderi grubu.

vehicles[]

object (Vehicle)

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

objectives[]

object (Objective)

Bu model için maliyetlere dönüştüreceğimiz hedef grubu. Boş değilse giriş modeli ücretsiz olmalıdır. Değiştirilen isteği almak için lütfen solvingMode = TRANSFORM_AND_RETURN_REQUEST kullanın. Bu durumda isteğin çözüme kavuşturulmayacağı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 adresini ziyaret edin.

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. Diğer bir deyişle, globalEndTime ve globalStartTime arasındaki fark 31.536.000 saniyeden az olmalıdır.

cost_per_*hour alanlarını kullanırken performansı artırmak için bu zaman aralığını 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). Ayarlanmazsa varsayılan olarak 1 Ocak 1970, 00:00:00 UTC (yani saniye: 0, nanosaniye: 0) kullanılır.

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

globalEndTime

string (Timestamp format)

Ayarlanmazsa varsayılan olarak 1 Ocak 1971, 00:00:00 UTC (yani saniye: 31536000, nanosaniye: 0) kullanılır.

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

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, işi en kısa sürede tamamlamak için optimizasyon yapmak amacıyla 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 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: konumA ve konumB.
  • Rotasına locA'da başlayıp locA'da bitiren 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 var: locA, locB ve locC.
  • "Hızlı" matrisini kullanarak rotasına locA'da başlayıp locB'de biten 1 araç.
  • "Yavaş" matrisini kullanarak rotasına locB'de başlayıp locB'de biten 1 araç.
  • "Hızlı" matrisini kullanarak rotasına locB'de başlayıp locB'de biten 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), durationDistanceMatrixSrcTags(j) etiketli ziyaretlerden i matrisindeki diğer ziyaretlere olan süreleri ve mesafeleri tanımlar.

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

durationDistanceMatrixDstTags[]

string

Süre ve mesafe matrislerinin hedeflerini tanımlayan etiketler; durationDistanceMatrices(i).rows(j).durations(k) (veya durationDistanceMatrices(i).rows(j).meters(k)), i matrisinde durationDistanceMatrixSrcTags(j) etiketli ziyaretlerden durationDistanceMatrixDstTags(k) etiketli ziyaretlere seyahatin süresini (veya mesafesini) tanımlar.

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

transitionAttributes[]

object (TransitionAttributes)

Modele geçiş özellikleri eklendi.

shipmentTypeIncompatibilities[]

object (ShipmentTypeIncompatibility)

Uyumsuz shipment_types 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ı kümesi.

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

maxActiveVehicles

integer

Etkin araçların maksimum sayısını kısıtlar. Rotası en az bir sevkiyat gerçekleştiren araçlar etkin olarak kabul edilir. Bu, sürücü sayısının araç sayısından az olduğu ve araç filosunun heterojen olduğu durumlarda rota sayısını sınırlamak için kullanılabilir. Ardından optimizasyon, kullanılacak en iyi araç alt kümesini seçer. Kesinlikle pozitif olmalıdır.

Gönderim

Tek bir öğenin teslim alma noktasından teslimat noktasına gönderilmesi. Sevkiyatın gerçekleştirilmiş sayılması için benzersiz bir aracın, sevkiyatın teslim alma konumlarından birini ziyaret etmesi (ve yedek kapasitelerini buna göre azaltması), ardından teslimat konumlarından birini ziyaret etmesi (ve yedek kapasitelerini buna göre yeniden artırması) gerekir.

JSON gösterimi
{
  "displayName": string,
  "pickups": [
    {
      object (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ı tarafından tanımlanan görünen adı. En fazla 63 karakter uzunluğunda olabilir ve UTF-8 karakterleri kullanılabilir.

pickups[]

object (VisitRequest)

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

deliveries[]

object (VisitRequest)

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

loadDemands

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

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

allowedVehicleIndices[]

integer

Bu sevkiyatı gerçekleştirebilecek araçlar. Boş bırakılırsa tüm araçlar bu görevi gerçekleştirebilir. Araçlar, ShipmentModel öğesinin vehicles listesindeki dizinleriyle verilir.

costsPerVehicle[]

number

Bu gönderi her bir araç tarafından teslim edildiğinde ortaya çıkan maliyeti belirtir. Belirtilirse aşağıdakilerden biri olmalıdır:

  • costsPerVehicleIndices ile aynı sayıda öğe içerir. costsPerVehicle[i], modelin costsPerVehicleIndices[i] aracına karşılık gelir.
  • Modeldeki araç sayısı kadar öğe içermelidir. i. öğ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 maliyetler yoksa bu alanı boş bırakın.

costsPerVehicleIndices[]

integer

costsPerVehicle kuralının geçerli olduğu araçların dizinleri. Boş değilse costsPerVehicle ile aynı sayıda öğe içermelidir. Bir araç dizini birden fazla kez belirtilemez. Bir araç costsPerVehicleIndices kapsamı dışında tutulursa maliyeti sıfır olur.

pickupToDeliveryAbsoluteDetourLimit

string (Duration format)

Teslim alma noktasından teslimat noktasına kadar olan en kısa yola kıyasla maksimum mutlak sapma süresini belirtir. Belirtilmişse negatif olmamalı ve gönderi en az bir teslim alma ve bir teslimat içermelidir.

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

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

Aynı gönderide hem göreceli hem de mutlak sınırlar belirtilirse her olası teslim alma/teslimat çifti için daha kısıtlayıcı sınır kullanılır. Ekim 2017 itibarıyla, sapmalar yalnızca seyahat süreleri araçlara bağlı olmadığında desteklenir.

pickupToDeliveryTimeLimit

string (Duration format)

Bir gönderinin teslim alma başlangıcından teslimat başlangıcına kadar geçen maksimum süreyi belirtir. Belirtilmişse negatif olmamalı ve gönderi en az bir teslim alma ve bir teslimat içermelidir. Bu, teslim alma ve teslimat için hangi alternatiflerin seçildiğine veya araç hızına bağlı değildir. Bu, maksimum rota değişikliği kısıtlamalarıyla birlikte belirtilebilir. Çözüm, her iki spesifikasyona da uyar.

shipmentType

string

Bu gönderi için "tür" belirten boş olmayan 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 alanındaki yanıtta bildirilir.

ignore

boolean

Doğruysa bu gönderiyi atla ancak penaltyCost uygulama.

Modelde shipmentTypeRequirements varsa bir gönderinin yoksayılması 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ştirme rotasından kaldırır. Yoksayılan gönderilere referans veren precedenceRules da yoksayılır.

penaltyCost

number

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

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

pickupToDeliveryRelativeDetourLimit

number

Teslim alma noktasından teslimat noktasına kadar olan en kısa yola kıyasla maksimum göreceli sapma süresini belirtir. Belirtilmişse negatif olmamalı ve gönderi en az bir teslim alma ve bir teslimat içermelidir.

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

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

Aynı gönderide hem göreceli hem de mutlak sınırlar belirtilirse her olası teslim alma/teslimat çifti için daha kısıtlayıcı sınır kullanılır. Ekim 2017 itibarıyla, sapmalar yalnızca seyahat süreleri araçlara bağlı olmadığında desteklenir.

VisitRequest

Bir araç tarafından gerçekleştirilebilecek ziyaret isteği: Coğrafi konumu (veya iki konumu, aşağıya bakın), zaman aralıklarıyla temsil edilen açılış ve kapanış saatleri ve hizmet süresi (araç, ürünleri almak veya bırakmak için ulaştıktan sonra harcanan süre) vardır.

JSON gösterimi
{
  "arrivalLocation": {
    object (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 gerçekleştirilirken aracın ulaştığı coğrafi konum. Gönderi modelinde süre mesafe matrisleri varsa arrivalLocation belirtilmemelidir.

arrivalWaypoint

object (Waypoint)

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

departureLocation

object (LatLng)

Aracın bu VisitRequest tamamlandıktan sonra ayrıldığı coğrafi konum. arrivalLocation ile aynıysa atlanabilir. Gönderi modelinde süre mesafe matrisleri varsa departureLocation belirtilmemelidir.

departureWaypoint

object (Waypoint)

Aracın bu VisitRequest görevini tamamladıktan sonra ayrıldığı ara nokta. arrivalWaypoint ile aynıysa atlanabilir. Gönderi 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ış zamanını kısıtlayan zaman aralıkları. Bir aracın varış zaman aralığının dışında hareket edebileceğini unutmayın. Diğer bir deyişle, varış zamanı + sürenin bir zaman aralığı içinde olması gerekmez. Araç TimeWindow.start_time tarihinden önce gelirse bekleme süresi olabilir.

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

Zaman pencereleri ayrık olmalıdır. Yani hiçbir zaman penceresi birbiriyle çakışmamalı veya bitişik olmamalı ve artan sırada olmalıdır.

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

cost

number

Bu ziyaret isteğini bir araç rotasında yerine getirmenin maliyeti. Bu, bir gönderinin her alternatif teslim alma veya teslimat seçeneği için farklı maliyetler ödemek amacıyla kullanılabilir. Bu maliyet, 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 tüm Shipment yerine yalnızca bu VisitRequest için geçerlidir. Burada listelenen talepler, Shipment.load_demands içinde listelenen taleplere eklenir.

visitTypes[]

string

Ziyaret türlerini belirtir. Bu, bir aracın bu ziyareti tamamlaması için gereken ek süreyi tahsis etmek amacıyla kullanılabilir (bkz. Vehicle.extra_visit_duration_for_visit_type).

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

label

string

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

avoidUTurns

boolean

Bu konumdaki sürüş rotalarında U dönüşlerinden kaçınılıp kaçınılmayacağını belirtir. U dönüşünden kaçınma özelliği, en iyi sonucu vermeye çalışır ancak tamamen kaçınma garanti edilmez. Bu, deneysel bir özelliktir ve davranışında değişiklikler olabilir.

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

LatLng

Enlem/boylam çiftini temsil eden bir nesne. Bu, enlem ve boylam derecelerini temsil eden bir çift double değeri olarak ifade edilir. Aksi belirtilmedikçe bu nesne WGS84 standardına uygun olmalıdır. Değerler normalleştirilmiş aralıklarda olmalıdır.

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

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 ara noktayı kapsar. Yol noktaları, VisitRequest'lerin varış ve kalkış konumlarını ve araçların başlangıç ve bitiş konumlarını işaretler.

JSON gösterimi
{
  "sideOfRoad": boolean,
  "vehicleStopover": boolean,

  // The following is a list of mutually exclusive fields. At most one of the
  // fields will be set in a response:
  "location": {
    object (Location)
  },
  "placeId": string
  // End of mutually exclusive fields.
}
Alanlar
sideOfRoad

boolean

İsteğe bağlıdır. Bu ara noktanın konumunun, aracın yolun belirli bir tarafında durması için bir tercihe sahip olması gerektiğini belirtir. Bu değeri ayarladığınızda rota, konumdan geçer. Böylece araç, yolun merkezinden konuma doğru eğimli olan tarafında durabilir. Bu seçenek, "WALKING" seyahat modunda kullanılamaz.

vehicleStopover

boolean

Ara noktanın, araçların yolcu almak veya indirmek için durması gereken bir yer olduğunu gösterir. Bu seçenek yalnızca "SÜRÜŞ" seyahat modu ve "locationType" değeri "location" olduğunda kullanılabilir.

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

Bir konumu temsil etmenin farklı yolları. Aşağıda, birbirini dışlayan alanların listesi verilmiştir. Yanıtta en fazla bir alan ayarlanır:
location

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 yer kimliği.

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

Birbirini hariç tutan alanların sonu.

Konum

Bir konumu (coğrafi nokta ve isteğe bağlı bir yön) kapsar.

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

object (LatLng)

Ara noktanın coğrafi koordinatları.

heading

integer

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

TimeWindow

Zaman pencereleri, bir etkinliğin zamanını (ör. bir ziyarete varış zamanı veya bir aracın başlangıç ve bitiş zamanı) kısıtlar.

startTime ve endTime şeklindeki kesin zaman aralığı sınırları, etkinliğin en erken ve en geç zamanını startTime <= event_time <= endTime olacak şekilde zorunlu kılar. Esnek zaman aralığının alt sınırı olan softStartTime, etkinliğin softStartTime tarihinde veya sonrasında gerçekleşmesi tercihini ifade eder. Bu tercih, etkinliğin softStartTime'dan ne kadar önce gerçekleştiğiyle orantılı bir maliyet oluşturur. Esnek zaman aralığı üst sınırı (softEndTime), etkinliğin softEndTime tarihinde veya daha önce gerçekleşmesi tercihini ifade eder. Bu tercih, etkinliğin softEndTime tarihinden ne kadar sonra gerçekleştiğiyle orantılı bir maliyet doğurur. startTime, endTime, softStartTime ve softEndTime, genel zaman sınırları içinde olmalı (ShipmentModel.global_start_time ve ShipmentModel.global_end_time bölümlerine bakın) ve şunlara uymalıdır:

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

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 esnek başlangıç zamanı.

Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da kabul edilir. Örnekler: "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 esnek bitiş zamanı.

Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da kabul edilir. Örnekler: "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 modeldeki diğer maliyetlere 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 ayarlanabilir.

costPerHourAfterSoftEndTime

number

Etkinlik softEndTime tarihinden sonra gerçekleşirse modeldeki diğer maliyetlere 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 ayarlanabilir.

Araç

Sevkiyat problemindeki bir aracı modeller. Bir sevkiyat sorununu çözmek, bu araç için startLocation ile başlayıp endLocation ile biten bir rota oluşturur. Rota, bir dizi ziyarettir (ShipmentRoute bölümüne bakın).

JSON gösterimi
{
  "displayName": string,
  "travelMode": enum (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ı tarafından tanımlanan 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 seyahat modu. travelDurationMultiple başlıklı makaleyi de inceleyin.

routeModifiers

object (RouteModifiers)

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

startLocation

object (LatLng)

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

startWaypoint

object (Waypoint)

Aracın herhangi bir gönderiyi teslim almadan önce başladığı coğrafi konumu temsil eden ara nokta. startWaypoint veya startLocation belirtilmezse araç ilk teslim alma noktasından başlar. Gönderi modelinde süre ve mesafe matrisleri varsa startWaypoint belirtilmemelidir.

endLocation

object (LatLng)

Aracın son VisitRequest yolculuğunu tamamladıktan sonra bulunduğu coğrafi konum. Belirtilmezse aracın ShipmentRoute, son VisitRequest tamamlandığında hemen sona erer. Gönderi modelinde süre ve mesafe matrisleri varsa endLocation belirtilmemelidir.

endWaypoint

object (Waypoint)

Aracın son VisitRequest görevini tamamladıktan sonra ulaştığı coğrafi konumu temsil eden ara nokta. endWaypoint veya endLocation belirtilmezse aracın ShipmentRoute, son VisitRequest tamamlandığında hemen sona erer. Gönderi 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). Belirtilmezse bu genel zaman sınırları dışında bir sınırlama yoktur.

Aynı yinelenen alana ait zaman pencereleri birbirinden ayrı olmalıdır. Diğer bir deyişle, hiçbir zaman penceresi birbiriyle çakışamaz veya bitişik olamaz ve kronolojik sırada olmalıdır.

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

endTimeWindows[]

object (TimeWindow)

Aracın varış konumuna ulaşabileceği zaman aralıkları. Genel zaman sınırları içinde olmalıdır (ShipmentModel.global_* alanlarına bakın). Belirtilmezse bu genel zaman sınırları dışında bir sınırlama yoktur.

Aynı yinelenen alana ait zaman pencereleri birbirinden ayrı olmalıdır. Diğer bir deyişle, hiçbir zaman penceresi birbiriyle çakışamaz veya bitişik olamaz ve kronolojik sırada olmalıdır.

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

unloadingPolicy

enum (UnloadingPolicy)

Araçta boşaltma politikası uygulanıyor.

loadLimits

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

Aracın kapasitesi (ör. ağırlık, hacim, palet sayısı) Eşlemedeki anahtarlar, yük türünün tanımlayıcılarıdır ve Shipment.load_demands alanının anahtarlarıyla tutarlıdır. Belirli bir anahtar bu eşlemede yoksa ilgili kapasite sınırsız olarak 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 saat başına maliyeti. Bu maliyet, rotanın toplam süresine uygulanır ve seyahat süresi, bekleme süresi ve ziyaret süresini içerir. Yalnızca costPerTraveledHour yerine costPerHour kullanmak ek gecikmeye neden olabilir.

costPerTraveledHour

number

Araç rotasının seyahat edilen saat başına maliyeti. Bu maliyet yalnızca rota tarafından kullanılan seyahat süresine (yani ShipmentRoute.transitions içinde bildirilen süreye) uygulanır ve bekleme süresi ile ziyaret süresini hariç tutar.

costPerKilometer

number

Araç rotasının kilometre başına maliyeti. Bu maliyet, ShipmentRoute.transitions içinde raporlanan mesafeye uygulanır ve tek bir VisitRequest için arrivalLocation ile departureLocation arasında dolaylı olarak kat edilen mesafeye uygulanmaz.

fixedCost

number

Bu araç bir gönderiyi taşımak için kullanılıyorsa uygulanan sabit maliyet.

usedIfRouteIsEmpty

boolean

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

Doğru ise araç, herhangi bir gönderi teslim etmese bile başlangıç konumundan bitiş konumuna gider ve başlangıç --> bitiş yolculuğundan kaynaklanan zaman ve mesafe maliyetleri hesaba katılır.

Aksi takdirde, başlangıç konumundan bitiş konumuna gitmez ve bu araç için breakRule veya gecikme (TransitionAttributes konumundan) planlanmaz. Bu durumda, aracın ShipmentRoute öğesi, araç dizini ve etiket dışında herhangi bir bilgi içermez.

routeDurationLimit

object (DurationLimit)

Aracın rotasının toplam süresine uygulanan sınır. Belirli bir OptimizeToursResponse için 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çin rota seyahat süresi, tüm transitions.travel_duration değerlerinin toplamıdır.

routeDistanceLimit

object (DistanceLimit)

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

extraVisitDurationForVisitType

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

visitTypes dizelerinden sürelere bir eşleme belirtir. Süre, belirtilen visitTypes ile yapılan ziyaretlerde VisitRequest.duration değerine ek olarak harcanacak süredir. costPerHour belirtilirse bu ek ziyaret süresi maliyeti artırır. Anahtarlar (ör. visitTypes) boş dize 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 değeri olarak bildirilir.

ignore

boolean

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

injectedFirstSolutionRoutes içinde yok sayılan bir araç tarafından gerçekleştirilen gönderimler ilk çözümde atlanır ancak yanıtta gerçekleştirilebilir.

injectedSolutionConstraint içinde, göz ardı edilen bir araç tarafından gerçekleştirilen bir sevkiyat varsa ve ilgili teslim alma/teslimat, araçta kalacak şekilde kısıtlanmışsa (yani RELAX_ALL_AFTER_THRESHOLD düzeyine gevşetilmemişse) yanıtta atlanır. Bir gönderinin allowedVehicleIndices alanı boş değilse ve izin verilen tüm araçlar yoksayılırsa yanıtta atlanır.

travelDurationMultiple

number

Bu aracın seyahat sürelerini artırmak veya azaltmak için kullanılabilecek bir çarpım faktörü belirtir. Örneğin, bu değeri 2,0 olarak ayarlarsanız bu araç daha yavaş olur ve seyahat süreleri standart araçların iki katı olur. Bu çarpan, ziyaret sürelerini etkilemez. costPerHour veya costPerTraveledHour belirtilmişse maliyeti etkiler. Bu değer [0,001, 1000,0] aralığında olmalıdır. Bu değer ayarlanmazsa araç standarttır ve bu çarpan 1,0 olarak kabul edilir.

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

Aşağıdaki extraVisitDurationForVisitType bölümüne de bakın.

TravelMode

Araçlar tarafından kullanılabilen seyahat modları.

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

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

Sıralamalar
TRAVEL_MODE_UNSPECIFIED Belirtilmemiş seyahat modu, DRIVING ile eşdeğerdir.
DRIVING Arabayla yol tarifine karşılık gelen seyahat modu (araba, ...).
WALKING Yaya yol tarifine karşılık gelen seyahat modu.
TWO_WHEELER İki tekerlekli, motorlu araç. Örneğin, motosiklet. Bu, insan gücüyle çalışan modu kapsayan BICYCLING seyahat modundan farklıdır. Bu seyahat modu yalnızca İki tekerlekli araçların desteklendiği ülkeler ve bölgeler bölümünde listelenen ülkelerde desteklenir.

RouteModifiers

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

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

boolean

Mümkün olduğunda paralı yollardan kaçınılıp kaçınılmayacağını belirtir. Paralı yol içermeyen rotalara öncelik verilir. Yalnızca motorlu seyahat modları için geçerlidir.

avoidHighways

boolean

Mümkün olduğunda otoyollardan kaçınılıp kaçınılmayacağını belirtir. Otoyol içermeyen rotalara öncelik verilir. Yalnızca motorlu seyahat modları için geçerlidir.

avoidFerries

boolean

Mümkün olduğunda feribotlardan kaçınılıp kaçınılmayacağını belirtir. Feribotla seyahat içermeyen rotalara öncelik verilir. Yalnızca motorlu seyahat modları için geçerlidir.

avoidIndoor

boolean

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

UnloadingPolicy

Bir aracın nasıl boşaltılabileceğine dair politika. Yalnızca hem teslim alma hem de teslimat içeren gönderiler için geçerlidir.

Diğer gönderiler, unloadingPolicy parametresinden bağımsız olarak rotanın herhangi bir yerinde gerçekleşebilir.

Sıralamalar
UNLOADING_POLICY_UNSPECIFIED Belirtilmemiş boşaltma politikası; teslimatlar, ilgili teslim almalardan sonra yapılmalıdır.
LAST_IN_FIRST_OUT Teslimatlar, teslim almaların tersi sırayla yapılmalıdır.
FIRST_IN_FIRST_OUT Teslimatlar, teslim almalarla aynı sırada yapılmalıdır.

LoadLimit

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

JSON gösterimi
{
  "softMaxLoad": string,
  "costPerUnitAboveSoftMax": number,
  "startLoadInterval": {
    object (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

Bu aracın rotası boyunca yük softMaxLoad değerini aşarsa şu maliyet cezası uygulanır (araç başına yalnızca bir kez): (yük - softMaxLoad) * costPerUnitAboveSoftMax. Tüm maliyetler toplanır ve Shipment.penalty_cost ile aynı birimde olmalıdır. 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)

Rotanın sonunda aracın kabul edilebilir yük 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, bir enerjinin boyutuna sahiptir.

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

costPerTraveledHour

object (LoadCost)

Bu araç için bir saat boyunca bir birim yükle seyahat etmenin maliyeti.

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

Aralık

Kabul edilebilir yük miktarı aralığı.

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

string (int64 format)

Kabul edilebilir minimum yük. 0 veya daha büyük olmalıdır. Her ikisi de belirtilmişse min, max değerinden küçük veya bu değere eşit olmalıdır.

max

string (int64 format)

Kabul edilebilir maksimum yük. 0 veya daha büyük olmalıdır. Belirtilmezse maksimum yük bu mesajla kısıtlanmaz. Her ikisi de belirtilmişse min, max değerinden küçük veya bu değere eşit olmalıdır.

LoadCost

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

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

Bu maliyetle çözümler, önce yüksek talepleri teslim etmeyi veya eşdeğer olarak yüksek talepleri en son almayı tercih eder. Örneğin, bir araçta

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

ve rotası başlangıç,teslim alma,teslim alma,teslimat,teslimat,bitiş şeklindedir ve geçişler şöyledir:

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

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

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

Bu nedenle, rota üzerindeki LoadCost 120,0 olur.

Ancak rota başlangıç, teslim alma, teslimat, teslim alma, teslimat, bitiş şeklindeyse ve geçişler varsa:

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

Bu LoadCost tarafından yapılan harcama:

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

Burada rota üzerindeki LoadCost 40,0'dır.

LoadCost, ağır yüklü geçişler içeren çözümleri daha pahalı hale getirir.

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

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

string (int64 format)

Bir yük birimini taşıma maliyetinin costPerUnitBelowThreshold değerinden costPerUnitAboveThreshold değerine değiştiği yük miktarı. 0'dan büyük veya 0'a eşit olmalıdır.

costPerUnitBelowThreshold

number

0 ile eşik arasındaki her birim için bir yük birimini taşıma maliyeti. Sonlu bir değer ve >= 0 olmalıdır.

costPerUnitAboveThreshold

number

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

DurationLimit

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

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

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

string (Duration format)

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

softMaxDuration

string (Duration format)

Maksimum süre sınırını zorunlu kılmayan ancak ihlal edildiğinde rotanın maliyetini artıran esnek bir sınırdır. Bu maliyet, modelde tanımlanan diğer maliyetlere aynı birimle eklenir.

Tanımlanmışsa softMaxDuration negatif olmamalıdır. maxDuration da tanımlanmışsa softMaxDuration, maxDuration'dan küçük olmalıdır.

quadraticSoftMaxDuration

string (Duration format)

Maksimum süre sınırını zorunlu kılmayan ancak ihlal edildiğinde rotanın maliyetini artıran esnek bir sınır. Bu maliyet, sürenin karesiyle orantılıdır. Bu maliyet, modelde tanımlanan diğer maliyetlere aynı birimle eklenir.

quadraticSoftMaxDuration ayarlanmışsa aşağıdaki koşulların karşılanması gerekir:

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

number

softMaxDuration eşiği ihlal edilirse 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 gibi hesaplanır:

  costPerHourAfterSoftMax * (duration - softMaxDuration)

Maliyet negatif olmamalıdır.

costPerSquareHourAfterQuadraticSoftMax

number

quadraticSoftMaxDuration eşiği ihlal edilirse tahakkuk eden saat başına kare maliyeti.

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

  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ımlanmışsa hem softMaxMeters hem de costPerKilometerAboveSoftMax tanımlanmalı ve negatif olmamalıdır.

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

string (int64 format)

Mesafeyi en fazla maxMeters olacak şekilde kısıtlayan kesin bir sınır. Sınır, negatif olmayan bir değer olmalıdır.

softMaxMeters

string (int64 format)

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

Tanımlanmışsa softMaxMeters, maxMeters'tan küçük ve negatif olmayan bir değer olmalıdır.

costPerKilometerBelowSoftMax

number

Kilometre başına maliyet, softMaxMeters değerine kadar artar ve şu formülle hesaplanır:

  min(distanceMeters, softMaxMeters) / 1000.0 *
  costPerKilometerBelowSoftMax.

Bu maliyet routeDistanceLimit dilinde desteklenmiyor.

costPerKilometerAboveSoftMax

number

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

  (distanceMeters - softMaxMeters) / 1000.0 *
  costPerKilometerAboveSoftMax.

Maliyet negatif olmamalıdır.

BreakRule

Bir araç için mola (ör. öğle yemeği molası) oluşturma kuralları. Mola, aracın mevcut konumunda boşta kaldığı ve herhangi bir ziyaret gerçekleştiremediği kesintisiz bir süredir. Aşağıdaki durumlarda kesinti yaşanabilir:

  • İki ziyaret arasındaki seyahat sırasında (ziyaretten hemen önce veya hemen sonraki zamanı içerir ancak ziyaretin ortasındaki zamanı içermez). Bu durumda, ziyaretler arasındaki ilgili nakliye süresini uzatır.
  • veya araç çalıştırılmadan önce (araç, mola sırasında çalıştırılamayabilir). Bu durumda, aracın başlangıç zamanı etkilenmez.
  • veya araç bitişinden sonra (aynı şekilde, araç bitiş zamanıyla birlikte) biter.
JSON gösterimi
{
  "breakRequests": [
    {
      object (BreakRequest)
    }
  ],
  "frequencyConstraints": [
    {
      object (FrequencyConstraint)
    }
  ]
}
Alanlar
breakRequests[]

object (BreakRequest)

Ara dizisi. BreakRequest mesajını inceleyin.

frequencyConstraints[]

object (FrequencyConstraint)

Birden fazla FrequencyConstraint geçerli olabilir. Bu BreakRule'ın BreakRequest'leri tüm koşulları karşılamalıdır. FrequencyConstraint sayfasına göz atabilirsiniz.

BreakRequest

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

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

string (Timestamp format)

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

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

latestStartTime

string (Timestamp format)

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

Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da kabul edilir. Örnekler: "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.

FrequencyConstraint

"Her 12 saatte bir en az 1 saatlik mola verilmelidir" gibi minimum mola sıklığı zorunlu kılınarak yukarıda belirtilen molaların sıklığı ve süresi daha da kısıtlanabilir. Bu kuralın "12 saatlik herhangi bir kayan zaman aralığında en az bir saatlik en az bir mola olmalıdır" şeklinde yorumlanabileceğini varsayarsak bu örnek aşağıdaki FrequencyConstraint kuralına karşılık gelir:

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

Çözümdeki araların zamanlaması ve süresi, BreakRequest içinde belirtilen zaman aralıkları ve minimum sürelere ek olarak bu tür tüm kısıtlamalara uyar.

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

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

string (Duration format)

Zorunlu. Bu kısıtlama için minimum ara süresi. Negatif olmayan. FrequencyConstraint adlı yerin açıklamasını görüntüleyin.

maxInterBreakDuration

string (Duration format)

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

Hedef

Hedefler, maliyet modelinin yerini tamamen alır ve bu nedenle önceden mevcut olan maliyetlerle uyumlu değildir. Her hedef, önceden tanımlanmış bir dizi maliyetle (ör. araçlar, gönderiler veya geçiş özellikleri) eşlenir.

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

JSON gösterimi
{
  "type": enum (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ının 1 olması gerekmez. Ağırlıklar varsayılan olarak 1,0'dır.

Tür

Bir maliyet grubuyla eşlenecek hedef türü.

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

DurationDistanceMatrix

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

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

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

Tüm matrislerin farklı bir vehicleStartTag değeri 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 öğeye sahip olmalıdır.

meters[]

number

Belirli bir satırın mesafe değerleri. Modeldeki mesafelerle ilgili herhangi bir maliyet veya kısıtlama yoksa bu alan boş bırakılabilir. Aksi takdirde, 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 izlenir).

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 (kaynak->hedef) geçişler grubunu tanımlayan etiketler.

Bir kaynak ziyaret veya araç çalıştırma, yalnızca VisitRequest.tags ya da Vehicle.start_tags değeri srcTag değerini içeriyorsa veya excludedSrcTag değerini içermiyorsa (bu iki alandan hangisinin boş olmadığına bağlı olarak) eşleşir.

excludedSrcTag

string

Şu sayfaya göz atın: srcTag. srcTag ve excludedSrcTag alanlarından yalnızca biri boş bırakılmamalıdır.

dstTag

string

Bir hedef ziyaret veya araç sonu, yalnızca VisitRequest.tags ya da Vehicle.end_tags değeri dstTag değerini içeriyorsa veya excludedDstTag değerini içermiyorsa (bu iki alandan hangisinin boş olmadığına bağlı olarak) eşleşir.

excludedDstTag

string

Şu sayfaya göz atın: dstTag. dstTag ve excludedDstTag alanlarından yalnızca biri boş bırakılmamalıdır.

cost

number

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

costPerKilometer

number

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

distanceLimit

object (DistanceLimit)

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

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

delay

string (Duration format)

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

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

ShipmentTypeIncompatibility

Gönderiler arasındaki uyumsuzlukları, shipmentType değerlerine göre belirtir. Uyumsuz gönderilerin aynı rotada görünmesi, uyumsuzluk moduna göre kısıtlanır.

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

string

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

incompatibilityMode

enum (IncompatibilityMode)

Uyumsuzluğa uygulanan mod.

IncompatibilityMode

Uyumsuz gönderilerin aynı rotada görünmesinin nasıl kısıtlanacağını tanımlayan modlar.

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

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

  • Aynı aracı yalnızca biri diğerinden önce teslim edilirse paylaşabilirler.
  • Her iki gönderi de yalnızca teslim alma (teslimat yok) veya yalnızca teslimat (teslim alma yok) ise aynı aracı paylaşamaz.

ShipmentTypeRequirement

shipmentType değerine göre gönderiler arasındaki koşulları belirtir. Şartın ayrıntıları, şart modu tarafından tanımlanır.

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

string

dependentShipmentTypes için gereken alternatif gönderim türlerinin listesi.

dependentShipmentTypes[]

string

dependentShipmentTypes alanında bir tür bulunan tüm gönderiler için aynı rotada en az bir requiredShipmentTypeAlternatives türü gönderinin ziyaret edilmesi gerekir.

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

requirementMode

enum (RequirementMode)

Şarta uygulanan mod.

RequirementMode

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

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

IN_SAME_VEHICLE_AT_PICKUP_TIME modunda, tüm "bağımlı" gönderilerin teslim alma sırasında araçlarında en az bir "gerekli" gönderi olması gerekir.

Bu nedenle, "bağımlı" bir gönderi teslim alma işlemi şunlardan birine sahip olmalıdır:

  • Yalnızca teslimat yapılan "gerekli" bir gönderinin rotada daha sonra teslim edilmesi veya
  • "Gerekli" gönderi, rotada kendisinden önce alınır ve "gerekli" gönderinin teslimatı varsa bu teslimat, "bağımlı" gönderinin teslim alınmasından sonra yapılmalıdır.
IN_SAME_VEHICLE_AT_DELIVERY_TIME Öncekiyle aynıdır ancak "bağımlı" gönderilerin teslimat sırasında araçlarında "gerekli" bir gönderi olması gerekir.

PrecedenceRule

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

Birden fazla öncelik aynı (veya ilgili) etkinliklere başvurabilir. Örneğin, "B'nin teslim alınması, A'nın teslimatından sonra gerçekleşir" ve "C'nin teslim alınması, B'nin teslim alınmasından sonra gerçekleşir".

Ayrıca öncelikler yalnızca her iki sevkiyat da gerçekleştirildiğinde geçerli olur, aksi takdirde yoksayılır.

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

boolean

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

secondIsDelivery

boolean

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

offsetDuration

string (Duration format)

"İlk" ve "ikinci" etkinlik arasındaki fark. Negatif olabilir.

firstIndex

integer

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

secondIndex

integer

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