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