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

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

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

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

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

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

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

ट्रांज़िशन दूरी मान तय सीमा से कम है थ्रेशोल्ड से ज़्यादा
दूरी लागत दूरी लागत
डिपो →A 1000 मीटर 100 मीटर 5 900 मीटर 0.9
A→B 50 मीटर 50 मीटर 2.5 0 मि॰ 0
B→other 1030 मीटर 100 मीटर 5 930 मीटर 0.93
other→C 1000 मीटर 100 मीटर 5 900 मीटर 0.9
C→डिपो 1080 मीटर 100 मीटर 5 980 मीटर 0.98
कुल 450 मीटर 22.5 3710 मीटर 3.71

कुल लागत का हिसाब लगाने के लिए, प्रति किलोमीटर के हिसाब से लगने वाले दोनों शुल्कों को जोड़ा जाता है:

  • थ्रेशोल्ड से कम दूरी (450 मीटर = 0.45 कि॰मी॰) तय करने पर, थ्रेशोल्ड से कम दूरी (50) तय करने पर लगने वाला शुल्क,
  • थ्रेशोल्ड से ज़्यादा दूरी तय करने पर प्रति किलोमीटर की लागत (1) को थ्रेशोल्ड से ज़्यादा तय की गई कुल दूरी (3710 मीटर = 3.71 कि॰मी॰) से गुणा किया जाता है.

इसलिए, कुल लागत 0.45 * 50 + 3.71 * 1 = 22.5 + 3.71 = 26.21 है.

दूसरा तरीका: जाते समय A, B, C को पूरा करें. लौटते समय कुछ न करें

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

ट्रांज़िशन दूरी मान तय सीमा से कम है थ्रेशोल्ड से ज़्यादा
दूरी लागत दूरी लागत
डिपो →A 1000 मीटर 100 मीटर 5 900 मीटर 0.9
A→B 50 मीटर 50 मीटर 2.5 0 मि॰ 0
B→C 30 मीटर 30 मीटर 1.5 0 मि॰ 0
C→other 1000 मीटर 100 मीटर 5 900 मीटर 0.9
other→depot 2080 मीटर 100 मीटर 5 1980 मीटर 1.98
कुल 380 मीटर 19 3780 मीटर 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

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