इस उदाहरण में, ट्रांज़िशन एट्रिब्यूट का इस्तेमाल करके, उन रास्तों को प्राथमिकता देने का तरीका बताया गया है जहां आस-पास के पिकअप और डिलीवरी, एक ही वाहन से एक ही टाइम ब्लॉक में की जाती हैं. ट्रांज़िशन एट्रिब्यूट के बारे में ज़्यादा जानने के लिए, ट्रांज़िशन एट्रिब्यूट के साथ कारोबार की लॉजिक का मॉडल बनाना लेख पढ़ें.
इस उदाहरण में:
- शिपमेंट A, B, और C की डिलीवरी, एक ही सड़क पर आस-पास की जगहों पर की जानी हैं.
- अन्य डिलीवरी, सड़क पर आगे की ओर की जानी हैं.
- डिलीवरी के लिए, कोई खास समय तय नहीं किया गया है.
- विज़िट के शेड्यूल के बावजूद, वाहन को इस सड़क पर दो बार जाना होगा: एक बार सुबह डिपो से निकलते समय और एक बार शाम को वापस आते समय.
- रास्ते की कुल दूरी और अवधि हमेशा एक जैसी होती है. भले ही, A, B, और C की डिलीवरी किसी भी समय की जाए.

इस स्थिति में, सिर्फ़ हर घंटे की लागत और हर किलोमीटर की लागत का इस्तेमाल करने वाले अनुरोध के लिए, ऑप्टिमाइज़ किए गए रूट में A और B की डिलीवरी सुबह और C की डिलीवरी शाम को की जा सकती है. साथ ही, इस सलूशन की लागत, तीनों की डिलीवरी एक साथ करने पर लगने वाली लागत के बराबर होगी.
थ्रेशोल्ड के साथ हर किलोमीटर की लागत
आस-पास की विज़िट को ग्रुप करने के लिए, सबसे पहले आपको थ्रेशोल्ड दूरी चुननी होगी. यह दो विज़िट के बीच की वह ज़्यादा से ज़्यादा दूरी है जिसे आप आस-पास की दूरी मानते हैं. इस उदाहरण में, 100 मीटर का थ्रेशोल्ड इस्तेमाल किया गया है. यह शहरी इलाके में करीब एक ब्लॉक के बराबर होता है. अपने कारोबार की ज़रूरतों और ड्राइवर की प्राथमिकताओं के हिसाब से, थ्रेशोल्ड को बढ़ाया या घटाया जा सकता है.
आस-पास की विज़िट को 100 मीटर के दायरे में ग्रुप करने के लिए, हर ट्रांज़िशन के पहले 100 मीटर के लिए ज़्यादा लागत और ट्रांज़िशन के बाकी मीटर के लिए कम लागत सेट करें. पहले 100 मीटर की लागत सबसे ज़्यादा होती है. इसलिए, ऑप्टिमाइज़र 100 मीटर के थ्रेशोल्ड से कम दूरी वाले ट्रांज़िशन का इस्तेमाल करके, सबसे ज़्यादा बचत करता है. भले ही, इससे रूट की कुल लंबाई बढ़ जाए.
लागत सेट अप करने के लिए, ShipmentModel.transition_attributes
में नई एंट्री जोड़ें. इसमें ये प्रॉपर्टी शामिल होनी चाहिए:
- सभी संभावित ट्रांज़िशन से मेल खाने के लिए, ऐसा टैग चुनें जिसका इस्तेमाल मॉडल में कहीं भी न किया गया हो. जैसे,
UNUSED_TAG.TransitionAttributes.excluded_src_tagऔरTransitionAttributes.excluded_dst_tagको इस टैग पर सेट करें. TransitionAttributes.distance_limitको थ्रेशोल्ड दूरी और लागत के साथ सेट अप करें:DistanceLimit.soft_max_metersको चुने गए थ्रेशोल्ड पर सेट करें.DistanceLimit.cost_per_kilometer_below_soft_maxको थ्रेशोल्ड से कम दूरी के लिए, हर किलोमीटर की लागत पर सेट करें.DistanceLimit.cost_per_kilometer_above_soft_maxको थ्रेशोल्ड से ज़्यादा दूरी के लिए, हर किलोमीटर की लागत पर सेट करें.
{
"model": {
"transitionAttributes": [
{
"excluded_dst_tag": "UNUSED_TAG",
"excluded_src_tag": "UNUSED_TAG",
"distanceLimit": {
"softMaxMeters": 100,
"costPerKilometerBelowSoftMax": 50,
"costPerKilometerAboveSoftMax": 1,
}
}
]
}
}
सभी संभावित ट्रांज़िशन से मेल खाने के लिए, किसी भी शिपमेंट या वाहन को #unused_tag# टैग का इस्तेमाल नहीं करना चाहिए. ज़्यादा जानकारी के लिए, सभी विज़िट
के अनुरोधों से मेल खाने का तरीका लेख पढ़ें.
थ्रेशोल्ड से कम दूरी के लिए, ज़्यादा लागत कैसे काम करती है
इस सेक्शन में बताया गया है कि उदाहरण के तौर पर दिए गए परिदृश्य के अलग-अलग सलूशन की कुल लागत पर, थ्रेशोल्ड से कम और ज़्यादा दूरी के लिए लागत का क्या असर पड़ता है.
सॉल्यूशन 1: जाते समय A और B की डिलीवरी करना, वापस आते समय C की डिलीवरी करना
इस सलूशन में, शिपमेंट को इस सड़क पर दो बार जाने के हिसाब से बांटा जाता है. इनमें से दो शिपमेंट की डिलीवरी पहली बार में और बाकी एक शिपमेंट की डिलीवरी दूसरी बार में की जाती है. इसमें पांच ट्रांज़िशन होते हैं:
| ट्रांज़िशन | दूरी | थ्रेशोल्ड से कम दूरी | थ्रेशोल्ड से ज़्यादा दूरी | ||
|---|---|---|---|---|---|
| दूरी | लागत | दूरी | लागत | ||
| डिपो →A | 1000 मीटर | 100 मीटर | 5 | 900 मीटर | 0.9 |
| A→B | 50 मीटर | 50 मीटर | 2.5 | 0 मीटर | 0 |
| B→अन्य | 1030 मीटर | 100 मीटर | 5 | 930 मीटर | 0.93 |
| अन्य→C | 1000 मीटर | 100 मीटर | 5 | 900 मीटर | 0.9 |
| C→डिपो | 1080 मीटर | 100 मीटर | 5 | 980 मीटर | 0.98 |
| कुल | 450 मीटर | 22.5 | 3710 मीटर | 3.71 | |
कुल लागत की गिनती करने के लिए, हर किलोमीटर की लागत को जोड़ा जाता है:
- थ्रेशोल्ड से कम दूरी के लिए, हर किलोमीटर की लागत (50) को थ्रेशोल्ड से कम तय की गई कुल दूरी (450 मीटर = 0.45 किलोमीटर) से गुणा किया जाता है.
- थ्रेशोल्ड से ज़्यादा दूरी के लिए, हर किलोमीटर की लागत (1) को थ्रेशोल्ड से ज़्यादा तय की गई कुल दूरी (3710 मीटर = 3.71 किलोमीटर) से गुणा किया जाता है.
इसलिए, कुल लागत 0.45 * 50 + 3.71 * 1 = 22.5 + 3.71 = 26.21 है.
सॉल्यूशन 2: जाते समय A, B, और C की डिलीवरी करना, वापस आते समय कोई डिलीवरी न करना
इस सलूशन में, सलूशन 1 के उलट, तीनों शिपमेंट की डिलीवरी, सड़क पर एक बार जाने के दौरान "एक ग्रुप के तौर पर" की जाती है. दूसरी बार में, वाहन कहीं नहीं रुकता. इसमें भी पांच ट्रांज़िशन होते हैं, लेकिन इनकी लंबाई और कंपोज़िशन अलग-अलग होते हैं:
| ट्रांज़िशन | दूरी | थ्रेशोल्ड से कम दूरी | थ्रेशोल्ड से ज़्यादा दूरी | ||
|---|---|---|---|---|---|
| दूरी | लागत | दूरी | लागत | ||
| डिपो →A | 1000 मीटर | 100 मीटर | 5 | 900 मीटर | 0.9 |
| A→B | 50 मीटर | 50 मीटर | 2.5 | 0 मीटर | 0 |
| B→C | 30 मीटर | 30 मीटर | 1.5 | 0 मीटर | 0 |
| C→अन्य | 1000 मीटर | 100 मीटर | 5 | 900 मीटर | 0.9 |
| अन्य→डिपो | 2080 मीटर | 100 मीटर | 5 | 1980 मीटर | 1.98 |
| कुल | 380 मीटर | 19 | 3780 मीटर | 3.78 | |
सॉल्यूशन 1 में इस्तेमाल की गई लागत की गिनती के तरीके के मुताबिक, कुल लागत 0.38 * 50 + 3.78 * 1 = 19 + 3.78 = 22.78 है. साथ ही, सभी विज़िट को एक ही टाइम ब्लॉक में करने की लागत, उन्हें दो ग्रुप में करने की लागत से कम है.
बढ़ाकर
, इस असर को और बढ़ाया जा सकता हैDistanceLimit.cost_per_kilometer_below_soft_max.
थ्रेशोल्ड से कम दूरी के लिए, हर किलोमीटर की कम लागत क्यों काम नहीं करती
आपको लंबे ट्रांज़िशन के मुकाबले छोटे ट्रांज़िशन को प्राथमिकता देनी होती है. इसलिए, हो सकता है कि आप लंबे ट्रांज़िशन के लिए, हर किलोमीटर की ज़्यादा लागत और छोटे ट्रांज़िशन के लिए, हर किलोमीटर की कम लागत सेट करें. हालांकि, इससे उलटा असर पड़ता है: ट्रांज़िशन के पहले 100 मीटर की लागत सबसे कम होती है. इसलिए, ऑप्टिमाइज़र इन "सस्ते" मीटर का इस्तेमाल करके, सबसे ज़्यादा बचत करता है. इसके लिए, वह ऐसे ट्रांज़िशन को प्राथमिकता देता है जिनकी दूरी 100 मीटर के आस-पास या उससे ज़्यादा होती है.
इस असर को, उदाहरण के तौर पर दिए गए दो सलूशन में देखा जा सकता है. अगर थ्रेशोल्ड से कम और ज़्यादा दूरी के लिए, हर किलोमीटर की लागत को बदल दिया जाए, तो रूट की लागत बदल जाती है:
| थ्रेशोल्ड से ज़्यादा दूरी के लिए, ज़्यादा लागत | थ्रेशोल्ड से कम दूरी के लिए, ज़्यादा लागत | |||
|---|---|---|---|---|
| सॉल्यूशन 1 | सॉल्यूशन 2 | सॉल्यूशन 1 | सॉल्यूशन 2 | |
| थ्रेशोल्ड से कम दूरी (किलोमीटर में) | 0.45 | 0.38 | 0.45 | 0.38 |
| थ्रेशोल्ड से कम दूरी के लिए, हर किलोमीटर की लागत | 1.00 | 1.00 | 50.00 | 50.00 |
| थ्रेशोल्ड से ज़्यादा दूरी (किलोमीटर में) | 3.71 | 3.78 | 3.71 | 3.78 |
| थ्रेशोल्ड से ज़्यादा दूरी के लिए, हर किलोमीटर की लागत | 50.00 | 50.00 | 1.00 | 1.00 |
| कुल लागत | 185.95 | 189.38 | 26.21 | 22.78 |
हर वर्शन के लिए, दोनों सलूशन की कुल लागत में से कम लागत को बोल्ड में हाइलाइट किया गया है. इससे पता चलता है कि थ्रेशोल्ड से ज़्यादा दूरी के लिए, ज़्यादा लागत सेट करने पर, उस रूट की कुल लागत बढ़ जाती है जिसमें विज़िट को ग्रुप किया जाता है. यह आपकी उम्मीद के उलट है.