InjectedSolutionConstraint

अनुरोध में शामिल समाधान शामिल किया गया जिसमें यह जानकारी शामिल है कि कौनसी विज़िट सीमित होनी चाहिए और उन्हें कैसे सीमित किया जाना चाहिए.

JSON के काेड में दिखाना
{
  "routes": [
    {
      object (ShipmentRoute)
    }
  ],
  "skippedShipments": [
    {
      object (SkippedShipment)
    }
  ],
  "constraintRelaxations": [
    {
      object (ConstraintRelaxation)
    }
  ]
}
फ़ील्ड
routes[]

object (ShipmentRoute)

सलूशन इंजेक्ट करने के लिए रूट तय करना. ऐसा हो सकता है कि कुछ रूट को ओरिजनल सलूशन में शामिल न किया जाए. रूट और स्किप किए गए शिपमेंट, injectedFirstSolutionRoutes के लिए सूची में शामिल बुनियादी मान्यताओं के हिसाब से होने चाहिए.

skippedShipments[]

object (SkippedShipment)

समाधान को इंजेक्ट करने के लिए शिपमेंट को स्किप किया गया. कुछ समस्याओं को मूल समाधान से हटाया जा सकता है. routes फ़ील्ड देखें.

constraintRelaxations[]

object (ConstraintRelaxation)

वाहनों के शून्य या उससे ज़्यादा ग्रुप के लिए, यह बताता है कि कब और कितनी आराम करना है. अगर यह फ़ील्ड खाली है, तो वाहन के ऐसे सभी रास्ते पूरी तरह से सीमित हो जाते हैं जो खाली नहीं हैं.

ConstraintRelaxation

वाहनों के ग्रुप के लिए, इससे यह तय होता है कि विज़िट पर लगी किस थ्रेशोल्ड(सीमाओं) में छूट को कम किया जाएगा और किस लेवल तक. skipped_shipment फ़ील्ड में मौजूद शिपमेंट को छोड़ा जा सकता है; इसका मतलब है कि इन्हें पूरा नहीं किया जा सकता.

JSON के काेड में दिखाना
{
  "relaxations": [
    {
      object (Relaxation)
    }
  ],
  "vehicleIndices": [
    integer
  ]
}
फ़ील्ड
relaxations[]

object (Relaxation)

vehicleIndices में आने वाले रास्तों पर आने वाली यात्रा पर लागू होने वाली सभी पाबंदियों के तहत छूट दी जाएगी.

vehicleIndices[]

integer

वाहन के उन इंडेक्स की जानकारी देता है जिन पर विज़िट की सीमा relaxations लागू होती है. अगर खाली है, तो इसे डिफ़ॉल्ट माना जाता है. साथ ही, relaxations उन सभी वाहनों पर लागू होता है जिनकी जानकारी अन्य constraintRelaxations में नहीं दी गई है. ज़्यादा से ज़्यादा एक डिफ़ॉल्ट वैल्यू हो सकती है. इसका मतलब है कि ज़्यादा से ज़्यादा एक कंस्ट्रेंट रिलैक्सेशन फ़ील्ड को खाली vehicleIndices की अनुमति दी जाती है. किसी वाहन के इंडेक्स को सिर्फ़ एक बार लिस्ट किया जा सकता है. यहां तक कि कई constraintRelaxations में भी ऐसा किया जा सकता है.

अगर interpretInjectedSolutionsUsingLabels सही है, तो वाहन के इंडेक्स को ShipmentRoute.vehicle_index की तरह ही मैप किया जाता है (fields टिप्पणी देखें).

सुकून देने वाले

अगर relaxations खाली है, तो routes पर सभी विज़िट के शुरू होने का समय और क्रम पूरी तरह सीमित हैं. साथ ही, उन रास्तों पर कोई नई विज़िट शामिल नहीं की जा सकती या उसे जोड़ा नहीं जा सकता. साथ ही, routes में वाहन के शुरू और खत्म होने का समय पूरी तरह सीमित होता है.ऐसा तब तक होता है, जब तक वाहन खाली न हो. इसका मतलब है कि इस पर कोई विज़िट नहीं किया गया है और मॉडल में usedIfRouteIsEmpty को 'गलत' पर सेट किया गया है.

relaxations(i).level, शर्तों को पूरा करने वाली विज़िट #j पर लागू किए गए कंस्ट्रेंट रिलैक्सेशन लेवल के बारे में बताता है:

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

इसी तरह, वाहन को इन शर्तों के मुताबिक होने पर, relaxations(i).level को स्टार्ट किया जाना चाहिए:

  • vehicleStartTime >= relaxations(i).threshold_time और
  • relaxations(i).threshold_visit_count == 0 और वाहन का छोर relaxations(i).level है, अगर यह इन शर्तों के मुताबिक है:
  • vehicleEndTime >= relaxations(i).threshold_time और
  • route.visits_size() + 1 >= relaxations(i).threshold_visit_count

अगर कोई विज़िट, thresholdVisitCount से मिलती है या thresholdTime में एक ही level के साथ दो relaxations जोड़ें, तो आराम का लेवल लागू करने के लिए: एक में सिर्फ़ thresholdVisitCount सेट और दूसरे में सिर्फ़ thresholdTime सेट हो. अगर कोई विज़िट, एक से ज़्यादा relaxations की शर्तें पूरी करती है, तो सबसे आरामदेह लेवल लागू होता है. इस वजह से, वाहन के शुरू होने से लेकर वाहन के खत्म होने तक, सफ़र में आराम करने का लेवल ज़्यादा आसान हो जाता है. इसका मतलब है कि रास्ते के आगे बढ़ने के साथ-साथ, आराम का लेवल कम नहीं होता.

किसी भी relaxations की थ्रेशोल्ड शर्तों को पूरा नहीं करने वाली रूट विज़िट का समय और क्रम पूरी तरह से सीमित हैं और इन क्रमों में कोई विज़िट नहीं डाली जा सकती है. साथ ही, अगर वाहन का स्टार्ट या एंड, किसी भी आराम की शर्तों के मुताबिक नहीं है, तो इसके लिए समय भी तय किया जा सकता है. हालांकि, वाहन को खाली छोड़ा नहीं जा सकता.

JSON के काेड में दिखाना
{
  "level": enum (Level),
  "thresholdTime": string,
  "thresholdVisitCount": integer
}
फ़ील्ड
level

enum (Level)

कंस्ट्रेंट रिलैक्सेशन का वह लेवल तब लागू होता है, जब thresholdTime और कम से कम thresholdVisitCount की शर्तें पूरी होती हों.

thresholdTime

string (Timestamp format)

वह समय जब या उसके बाद छूट level लागू की जा सकती है.

आरएफ़सी3339 यूटीसी "ज़ुलु" में टाइमस्टैंप फ़ॉर्मैट, नैनोसेकंड रिज़ॉल्यूशन और ज़्यादा से ज़्यादा नौ फ़्रैक्शनल अंकों के साथ हो सकता है. उदाहरण: "2014-10-02T15:01:23Z" और "2014-10-02T15:01:23.045123456Z".

thresholdVisitCount

integer

उन विज़िट की संख्या जिनके लिए या उनके बाद, level की छूट लागू की जा सकती है. अगर thresholdVisitCount की वैल्यू 0 पर सेट है या सेट नहीं है, तो वाहन को शुरू करने पर level को सीधे तौर पर लागू किया जा सकता है.

अगर यह route.visits_size() + 1 है, तो level को सिर्फ़ वाहन के आखिरी हिस्से पर लागू किया जा सकता है. अगर यह route.visits_size() + 1 से ज़्यादा है, तो उस रास्ते के लिए level लागू नहीं होगा.

लेवल

विज़िट के लिए लागू होने वाले कंस्ट्रेंट के अलग-अलग लेवल के बारे में बताता है और वे लेवल दिखाता है जो थ्रेशोल्ड की शर्तों को पूरा करने के बाद लागू होते हैं.

नीचे दी गई सूची, राहत देने के मकसद से दी गई है.

Enums
LEVEL_UNSPECIFIED

इंप्लिसिट डिफ़ॉल्ट रिलैक्सेशन लेवल: कोई भी शर्त आसानी से नहीं हटाई जाती है. इसका मतलब है कि सभी विज़िट पर पूरी तरह से पाबंदी लगी होती है.

level में इस वैल्यू का इस्तेमाल साफ़ तौर पर नहीं किया जाना चाहिए.

RELAX_VISIT_TIMES_AFTER_THRESHOLD विज़िट शुरू होने के समय और वाहन के शुरू/खत्म होने के समय में छूट दी जाएगी. हालांकि, हर विज़िट एक ही वाहन से जुड़ी होगी और विज़िट का क्रम देखा जाना चाहिए: उनके बीच या उनसे पहले कोई विज़िट नहीं डाली जा सकती.
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD RELAX_VISIT_TIMES_AFTER_THRESHOLD की तरह ही, लेकिन विज़िट का क्रम भी आसान है: विज़िट का दायरा सिर्फ़ उनके वाहन तक सीमित रहता है.
RELAX_ALL_AFTER_THRESHOLD RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD की तरह ही, लेकिन वाहन में भी आराम मिलता है: तय समय पर या उसके बाद, यात्रा पूरी तरह से मुफ़्त है. ऐसा भी हो सकता है कि इस दौरान, यात्रा के लिए कोई शुल्क न लिया जाए.