ट्रांज़िशन एट्रिब्यूट की मदद से, आस-पास की विज़िट को प्राथमिकता देना

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

इस उदाहरण में:

  • शिपमेंट A, B, और C की डिलीवरी एक ही सड़क पर आस-पास की जगहों पर करनी है.
  • आगे और भी डिलीवरी करनी हैं.
  • डिलीवरी के लिए कोई समय तय नहीं किया गया है.
  • विज़िट के शेड्यूल के बावजूद, वाहन को इस सड़क पर दो बार जाना होगा: एक बार सुबह डिपो से जाते समय और एक बार शाम को वापस आते समय.
  • यात्रा की कुल दूरी और रूट में लगने वाला समय हमेशा एक जैसा रहता है. इससे कोई फ़र्क़ नहीं पड़ता कि A, B, और C को कब पूरा किया गया.

एक ही सड़क पर शिपमेंट की डिलीवरी का उदाहरण. डिपो से अन्य शिपमेंट की ओर जाने वाली सड़क पर तीन शिपमेंट A, B, और C हैं. A, डिपो से 1,000 मीटर की दूरी पर है. B, डिपो से 50 मीटर और दूर है. C, उसी दिशा में 30 मीटर और दूर है. C से 1,000 मीटर की दूरी पर अन्य शिपमेंट हैं.

इस स्थिति में, और सिर्फ़ हर घंटे की लागत और हर किलोमीटर की लागत का इस्तेमाल करने वाले अनुरोध के लिए, ऑप्टिमाइज़ किए गए रूट में 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# का इस्तेमाल नहीं करना चाहिए. ज़्यादा जानकारी के लिए, विज़िट के सभी अनुरोधों को मैच करने का तरीका देखें.

थ्रेशोल्ड से कम लागत होने पर, ज़्यादा लागत वाली बिडिंग की रणनीति कैसे काम करती है

इस सेक्शन में बताया गया है कि थ्रेशोल्ड से कम और ज़्यादा लागत, उदाहरण के तौर पर दी गई स्थिति के अलग-अलग समाधानों की कुल लागत पर कैसे असर डालती है.

पहला समाधान: वहां जाते समय A और B को पूरा करें. वापस आते समय C को पूरा करें

इस समाधान में, शिपमेंट को इस सड़क के दो ट्रैवर्सल में बांटा गया है. इनमें से दो को पहली बार में डिलीवर किया जाता है और बाकी एक को दूसरी बार में डिलीवर किया जाता है. इसके पांच ट्रांज़िशन हैं:

ट्रांज़िशन दूरी मान तय सीमा से कम है थ्रेशोल्ड से ज़्यादा
दूरी लागत दूरी लागत
depot →A 1,000 मीटर 100 मीटर 5 900 मीटर 0.9
A→B 50 मी॰ 50 मी॰ 2.5 0 मी॰ 0
B→other 1030 मीटर 100 मीटर 5 930 मीटर 0.93
other→C 1,000 मीटर 100 मीटर 5 900 मीटर 0.9
C→depot 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 होगी.

दूसरा तरीका: जाते समय A, B, और C काम करें, लेकिन लौटते समय कोई काम न करें

इस समाधान में, समाधान 1 के उलट, तीनों शिपमेंट को सड़क पर एक बार यात्रा के दौरान "एक ग्रुप के तौर पर" डिलीवर किया जाता है. दूसरी बार, गाड़ी बिलकुल नहीं रुकती. यहां भी पांच ट्रांज़िशन हैं, लेकिन उनकी लंबाई और कंपोज़िशन अलग-अलग हैं:

ट्रांज़िशन दूरी मान तय सीमा से कम है थ्रेशोल्ड से ज़्यादा
दूरी लागत दूरी लागत
depot →A 1,000 मीटर 100 मीटर 5 900 मीटर 0.9
A→B 50 मी॰ 50 मी॰ 2.5 0 मी॰ 0
B→C 30 मीटर 30 मीटर 1.5 0 मी॰ 0
C→other 1,000 मीटर 100 मीटर 5 900 मीटर 0.9
other→depot 2080 मीटर 100 मीटर 5 1980 मीटर 1.98
कुल 380 मीटर 19 3,780 मीटर 3.78

पहले समाधान की तरह ही कंप्यूटेशन का इस्तेमाल करने पर, कुल लागत 0.38 * 50 + 3.78 * 1 = 19 + 3.78 = 22.78 होगी. साथ ही, सभी विज़िट को एक ही टाइम ब्लॉक में करने पर, उन्हें दो ग्रुप में करने की तुलना में कम लागत आती है. DistanceLimit.cost_per_kilometer_below_soft_max को बढ़ाकर, इस इफ़ेक्ट को और बेहतर बनाया जा सकता है.

थ्रेशोल्ड से कम कीमत पर हर किलोमीटर के लिए किराया तय करने पर, वाहन क्यों नहीं मिलता

आपको लंबी ट्रांज़िशन के बजाय छोटी ट्रांज़िशन को प्राथमिकता देनी है. इसलिए, हो सकता है कि आप लंबी ट्रांज़िशन के लिए, हर किलोमीटर की ज़्यादा लागत तय करें और छोटी ट्रांज़िशन के लिए, हर किलोमीटर की कम लागत तय करें. हालांकि, इसका असर उल्टा होता है: ट्रांज़िशन के पहले 100 मीटर सबसे सस्ते होते हैं. इसलिए, ऑप्टिमाइज़र इन "सस्ते" मीटर का इस्तेमाल सबसे ज़्यादा असरदार तरीके से करता है. इसके लिए, वह उन ट्रांज़िशन को प्राथमिकता देता है जो 100 मीटर के करीब या उससे ज़्यादा होते हैं.

इस असर को, उदाहरण के तौर पर दिए गए दो समाधानों में देखा जा सकता है. अगर थ्रेशोल्ड से कम और ज़्यादा दूरी के लिए, हर किलोमीटर की लागत को आपस में बदल दिया जाए, तो रूट की लागत बदल जाती है:

थ्रेशोल्ड से ज़्यादा लागत तय सीमा से कम लागत
पहला तरीका दूसरा तरीका पहला तरीका दूसरा तरीका
तय सीमा से कम किलोमीटर 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

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