InjectedSolutionConstraint

Hangi ziyaretlerin kısıtlanması gerektiği ve nasıl kısıtlanması gerektiği ile ilgili bilgileri de içeren isteğe eklenen çözümdür.

JSON gösterimi
{
  "routes": [
    {
      object (ShipmentRoute)
    }
  ],
  "skippedShipments": [
    {
      object (SkippedShipment)
    }
  ],
  "constraintRelaxations": [
    {
      object (ConstraintRelaxation)
    }
  ]
}
Alanlar
routes[]

object (ShipmentRoute)

Yerleştirme çözümünün rotaları. Bazı rotalar orijinal çözümden çıkarılabilir. Rotalar ve atlanan gönderiler, injectedFirstSolutionRoutes için listelenen temel doğruluk varsayımlarını karşılamalıdır.

skippedShipments[]

object (SkippedShipment)

Eklenecek çözümün gönderimi atlandı. Bazıları orijinal çözümden çıkarılabilir. routes alanına bakın.

constraintRelaxations[]

object (ConstraintRelaxation)

Sıfır veya daha fazla araç grubu için kısıtlamaların ne zaman ve ne kadar gevşetileceğini belirtir. Bu alan boşsa, boş olmayan tüm araç rotaları tamamen sınırlandırılır.

ConstraintRelaxation

Bir araç grubu için ziyaretlerdeki kısıtlamaların hangi eşiklerde ve hangi seviyeye gevşetileceğini belirtir. skipped_shipment alanında listelenen gönderimlerin atlanması zorunludur; Yani gerçekleştirilemez.

JSON gösterimi
{
  "relaxations": [
    {
      object (Relaxation)
    }
  ],
  "vehicleIndices": [
    integer
  ]
}
Alanlar
relaxations[]

object (Relaxation)

vehicleIndices bölgesindeki araç bulunan rotalardaki ziyaretler için geçerli olacak tüm ziyaret kısıtlaması hafifletmeleri.

vehicleIndices[]

integer

relaxations ziyaret kısıtlamasının geçerli olduğu araç dizinlerini belirtir. Bu değer boşsa varsayılan olarak kabul edilir ve relaxations diğer constraintRelaxations özelliğinde belirtilmeyen tüm araçlar için geçerlidir. En fazla bir varsayılan olabilir. Yani en fazla bir kısıtlama gevşetme alanına boş vehicleIndices izin verilir. Bir araç dizini birkaç constraintRelaxations içinde olsa bile yalnızca bir kez listelenebilir.

interpretInjectedSolutionsUsingLabels doğru ise araç dizini ShipmentRoute.vehicle_index ile aynı şekilde eşlenir (fields yorumuna bakın).

Dinlenme

relaxations boşsa routes tarihindeki tüm ziyaretlerin başlangıç zamanı ve sırası tamamen sınırlandırılır ve bu rotalara yeni ziyaret eklenemez veya eklenemez. Ayrıca, bir aracın routes bölgesindeki başlangıç ve bitiş zamanı tamamen sınırlandırılmıştır (araç boş olmadığı (yani, ziyaret olmadığı ve modelde usedIfRouteIsEmpty değeri yanlış değerine ayarlandığı) sürece).

relaxations(i).level, aşağıdaki koşulları karşılayan #j ziyaretine uygulanan kısıtlama hafifletme düzeyini belirtir:

  • route.visits(j).start_time >= relaxations(i).threshold_time VE
  • j + 1 >= relaxations(i).threshold_visit_count

Benzer şekilde, aracın çalıştırılması gereken koşullar aşağıdaki koşulları karşılıyorsa relaxations(i).level değerine ayarlanır:

  • vehicleStartTime >= relaxations(i).threshold_time VE
  • relaxations(i).threshold_visit_count == 0 ve araç ucu şu koşulları karşılıyorsa relaxations(i).level seviyesine esnektir:
  • vehicleEndTime >= relaxations(i).threshold_time VE
  • route.visits_size() + 1 >= relaxations(i).threshold_visit_count

Ziyaret thresholdVisitCount koşullarını karşılıyorsa rahatlama seviyesi uygulamak için thresholdTime, aynı level değerine sahip iki relaxations ekleyin. Bunlardan birinde yalnızca thresholdVisitCount, diğerinde ise yalnızca thresholdTime grubu olacak. Bir ziyaret birden fazla relaxations koşullarını karşılıyorsa en esnek seviye uygulanır. Sonuç olarak, aracın başlangıcından rota ziyaretleri boyunca aracın bitişine kadar rahatlama seviyesi daha rahat hale gelir. Diğer bir deyişle, rota ilerledikçe rahatlama seviyesi azalmaz.

Herhangi bir relaxations öğesinin eşik koşullarını karşılamayan rota ziyaretlerinin zamanlaması ve dizisi tamamen sınırlıdır ve bu dizilere ziyaret eklenemez. Ayrıca, aracın başlangıcı veya bitişi herhangi bir gevşeme koşullarını karşılamıyorsa araç boş olmadığı sürece süre sabittir.

JSON gösterimi
{
  "level": enum (Level),
  "thresholdTime": string,
  "thresholdVisitCount": integer
}
Alanlar
level

enum (Level)

thresholdTime ve en az thresholdVisitCount öncesi koşullar karşılandığında geçerli olan kısıtlama hafifletme düzeyi.

thresholdTime

string (Timestamp format)

Gevşetme level'nın uygulanabileceği veya bundan sonra uygulanabileceği zaman.

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

thresholdVisitCount

integer

level rahatlığının uygulanabileceği veya bundan sonra uygulanabileceği ziyaret sayısı. thresholdVisitCount değeri 0 ise (veya ayarlanmazsa) level doğrudan araç çalıştırıldığında uygulanabilir.

route.visits_size() + 1 ise level yalnızca araç ucuna uygulanabilir. route.visits_size() + 1 değerinden büyükse, söz konusu rota için level uygulanmaz.

Seviye

Bir ziyarete uygulanan ve eşik koşullarını karşıladığında gerçekleşen farklı kısıtlama gevşetme düzeylerini ifade eder.

Aşağıdaki numaralandırma, gevşetmeyi artırmak içindir.

Sıralamalar
LEVEL_UNSPECIFIED

Örtülü varsayılan rahatlama seviyesi: Hiçbir kısıtlama gevşetilemez, diğer bir deyişle tüm ziyaretler tamamen sınırlandırılmıştır.

Bu değer, level içinde açıkça kullanılmamalıdır.

RELAX_VISIT_TIMES_AFTER_THRESHOLD Ziyaret başlangıç ve araç başlangıç/bitiş zamanları gevşetilir ancak her ziyaret aynı araca bağlı kalır ve ziyaret sırasına dikkat edilmelidir: Aralarına veya öncesine hiçbir ziyaret eklenemez.
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD RELAX_VISIT_TIMES_AFTER_THRESHOLD ile aynıdır, ancak ziyaret dizisi de esnektir: Ziyaretler yalnızca araca bağlı kalır.
RELAX_ALL_AFTER_THRESHOLD RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD ile aynı, ancak araç aynı zamanda rahat. Eşik zamanında veya sonrasında ziyaretler tamamen ücretsizdir ve potansiyel olarak kötü performansa neden olabilir.