InjectedSolutionConstraint

Hangi ziyaretlerin sınırlanması ve nasıl sınırlanması gerektiği hakkındaki bilgileri içeren, isteğe yerleştirilen çözüm.

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

object (ShipmentRoute)

Yerleştirilecek çözümün yolları. Bazı rotalar orijinal çözümden çıkarılabilir. Rotalar ve atlanan gönderiler, injectedFirstSolutionRoutes için listelenen temel geçerlilik 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 kısıtlanır.

ConstraintRelaxation

Bir araç grubu için ziyaretlerin hangi eşik(ler) kısıtlamalarında hangi düzeyde rahatlatılacağını belirtir. skipped_shipment alanında listelenen gönderimler atlanacak şekilde sınırlandırılmıştır; diğer bir deyişle, gerçekleştirilemez.

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

object (Relaxation)

vehicleIndices sınırları içinde araç bulunan rotalardaki ziyaretlere uygulanacak tüm ziyaret kısıtlaması gevşemeleri.

vehicleIndices[]

integer

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

interpretInjectedSolutionsUsingLabels doğruysa bir 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 kısıtlanır ve bu rotalara yeni ziyaret eklenemez veya eklenemez. Ayrıca, araç boşsa (ör. hiç ziyaret yoksa ve usedIfRouteIsEmpty modelde false değerine ayarlıysa), aracın routes için başlangıç ve bitiş zamanı tamamen kısıtlanır.

relaxations(i).level, #j ziyaretine uygulanan kısıtlama gevşetme düzeyini belirtir:

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

Benzer şekilde, araç aşağıdaki koşulları karşılıyorsa araç başlangıcı relaxations(i).level rahatlığıyla ayarlanır:

  • vehicleStartTime >= relaxations(i).threshold_time VE
  • relaxations(i).threshold_visit_count == 0 ve araç uçu, aşağıdaki koşullar karşılanıyorsa relaxations(i).level olacak şekilde rahatlatılmıştır:
  • vehicleEndTime >= relaxations(i).threshold_time VE
  • route.visits_size() + 1 >= relaxations(i).threshold_visit_count

Bir ziyaret thresholdVisitCount ile karşılanırsa VEYA thresholdTime, aynı level değerine sahip iki relaxations ekler: biri yalnızca thresholdVisitCount içeren, diğeri yalnızca thresholdTime içeren iki relaxations. Bir ziyaret birden fazla relaxations koşulunu karşılıyorsa en rahat düzey geçerli olur. Sonuç olarak, araç başlangıcından rota ziyaretlerine kadar, aracın bitişine kadar, dinlenme seviyesi daha rahat hale gelir, yani rota ilerledikçe rahatlama seviyesi artmıyor.

Herhangi bir relaxations değerinin eşik koşullarını karşılamayan rota ziyaretlerinin zamanlaması ve dizisi tamamen kısıtlanır ve bu adım sıralarına ziyaret eklenemez. Ayrıca, araç başlangıcı veya bitişi 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 koşullarındaki veya sonraki koşullar karşılandığında geçerli kısıtlama gevşetme düzeyi.

thresholdTime

string (Timestamp format)

level gevşetmenin uygulanabileceği zamanda veya sonrasında.

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

thresholdVisitCount

integer

level gevşetmenin uygulanabileceği tarihte veya sonrasında uygulanabilecek ziyaret sayısı. thresholdVisitCount değeri 0 ise (veya ayarlanmadan bırakılırsa) level doğrudan araç çalıştırıldığında uygulanabilir.

route.visits_size() + 1 ise level yalnızca araç tarafına uygulanabilir. route.visits_size() + 1 değerinden fazlaysa level bu rota için hiç uygulanmaz.

Seviye

Ziyarete uygulanan ve eşik koşullarını karşıladığında izleyenler için uygulanan farklı kısıtlama gevşetme düzeylerini ifade eder.

Aşağıdaki sıralama rahatlamayı artırma sırasına göre verilmiştir.

Sıralamalar
LEVEL_UNSPECIFIED

Örtülü varsayılan gevşeme düzeyi: Kısıtlamalar gevşetilmez, yani tüm ziyaretler tamamen kısıtlanır.

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

RELAX_VISIT_TIMES_AFTER_THRESHOLD Ziyaret başlangıç zamanları ve araç başlangıç/bitiş zamanları gevşetilir, ancak her ziyaret aynı araca bağlıdır ve ziyaret sırasına dikkat edilmelidir: Aralarına veya önceden ziyaretlere izin verilmez.
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD RELAX_VISIT_TIMES_AFTER_THRESHOLD ile aynıdır, ancak ziyaret sırası da gevşektir: Ziyaretler yalnızca kendi araçlarına bağlıdır.
RELAX_ALL_AFTER_THRESHOLD RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD ile aynıdır ancak araç rahattır: Eşik zamanında veya sonrasında ziyaretler tamamen ücretsizdir ve gerçekleştirilemeyebilir.