अनुरोध में इंजेक्ट किया गया समाधान. इसमें यह जानकारी शामिल होती है कि किन विज़िट पर पाबंदी लगानी है और उन्हें कैसे लगाना है.
JSON के काेड में दिखाना |
---|
{ "routes": [ { object ( |
फ़ील्ड | |
---|---|
routes[] |
इंजेक्शन के लिए सलूशन के रास्ते. हो सकता है कि ओरिजनल सलूशन से कुछ रास्ते हटा दिए जाएं. रास्तों और छोड़े गए शिपमेंट को, |
skipped |
इंजेक्ट करने के लिए, सलूशन के स्किप किए गए शिपमेंट. हो सकता है कि कुछ को ओरिजनल सलूशन से हटा दिया जाए. |
constraint |
वाहनों के शून्य या उससे ज़्यादा ग्रुप के लिए, यह तय करता है कि पाबंदियों को कब और कितना कम करना है. अगर यह फ़ील्ड खाली है, तो वाहन के सभी ऐसे रास्ते पूरी तरह से प्रतिबंधित कर दिए जाते हैं जिनमें कोई डेटा मौजूद है. |
ConstraintRelaxation
वाहनों के ग्रुप के लिए, यह तय करता है कि विज़िट पर लगाई गई पाबंदियों को किस थ्रेशोल्ड पर और किस लेवल तक कम किया जाएगा. skipped_shipment
फ़ील्ड में लिस्ट किए गए शिपमेंट को स्किप किया जा सकता है. इसका मतलब है कि उन्हें प्रोसेस नहीं किया जा सकता.
JSON के काेड में दिखाना |
---|
{
"relaxations": [
{
object ( |
फ़ील्ड | |
---|---|
relaxations[] |
|
vehicle |
उन वाहन इंडेक्स के बारे में बताता है जिन पर विज़िट की पाबंदी अगर |
सुकून देने वाले
अगर 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 |
शर्तों में ढील का वह लेवल जो |
threshold |
वह समय जब छूट आरएफ़सी3339 यूटीसी के "Zulu" फ़ॉर्मैट में एक टाइमस्टैंप, नैनोसेकंड रिज़ॉल्यूशन और नौ दशमलव अंकों के साथ. उदाहरण के लिए: |
threshold |
विज़िट की वह संख्या जिसके बाद छूट अगर यह |
लेवल
यह पाबंदी हटाने के अलग-अलग लेवल के बारे में बताता है. ये लेवल, विज़िट के लिए लागू होते हैं. साथ ही, थ्रेशोल्ड की शर्तें पूरी करने पर भी लागू होते हैं.
यहां दी गई जानकारी, छूट के बढ़ते क्रम में दी गई है.
Enums | |
---|---|
LEVEL_UNSPECIFIED |
डिफ़ॉल्ट रूप से लागू होने वाली पाबंदियों का लेवल: कोई भी पाबंदी नहीं हटाई जाती. इसका मतलब है कि सभी विज़िट पर पूरी पाबंदी लगी रहती है. इस वैल्यू का इस्तेमाल |
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 जैसा ही, लेकिन वाहन के लिए भी कुछ छूट है: थ्रेशोल्ड समय पर या उसके बाद, विज़िट पूरी तरह से मुफ़्त होती हैं और हो सकता है कि वे न की जाएं. |