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 यूटीसी के "Zulu" फ़ॉर्मैट में एक टाइमस्टैंप, नैनोसेकंड रिज़ॉल्यूशन और नौ दशमलव अंकों के साथ. उदाहरण के लिए: "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 जैसा ही, लेकिन वाहन के लिए भी कुछ छूट है: थ्रेशोल्ड समय पर या उसके बाद, विज़िट पूरी तरह से मुफ़्त होती हैं और हो सकता है कि वे न की जाएं.