ज्वाइन करने के बजाय
जब रूस में अपशिष्ट संग्रह और प्रसंस्करण की प्रक्रियाएं पूरी तरह से समायोजित होती हैं, तो यह कहना आसान नहीं है, लेकिन मैं अब लैंडफिल्स की पुनःपूर्ति में भाग नहीं लेना चाहता हूं। इसलिए, कई बड़े शहरों में, एक तरह से या किसी अन्य, विशेष रूप से अलग संग्रह में स्वयंसेवक आंदोलन लगे हुए हैं।
नोवोसिबिर्स्क में, ग्रीन स्क्विरेल अभियान के आसपास इस तरह की गतिविधि का गठन किया जाता है, जिसके ढांचे में महीने में एक बार, पर्यावरण से संबंधित शहरी निवासी एक निश्चित समय पर पूर्वनिर्धारित स्थानों पर संचित घरेलू कचरे को जमा करते हैं। उसी समय तक, एक किराए पर ट्रक वहाँ आता है, जो एकत्रित और छंटाई योग्य रिसाइकल सामग्रियों को साइट पर ले जाता है, जहाँ से इसे विभिन्न प्रसंस्करण उद्यमों के बीच पुनर्वितरित किया जाता है। कार्रवाई 2014 से अस्तित्व में है, और तब से रिसाइकिल के लिए संग्रह बिंदुओं की संख्या, साथ ही साथ इसके संस्करणों में काफी वृद्धि हुई है। ट्रक रूटिंग के लिए, बस एक टकटकी पर्याप्त नहीं थी, और हमने परिवहन लागत को कम करने के लिए अनुकूलन मॉडल विकसित करना शुरू कर दिया। इन मॉडलों में से पहला इस लेख का विषय है।
खंड 1 में, मैं विस्तार से वर्णन करूंगा और चित्र के साथ कार्रवाई के आयोजन की योजना बनाऊंगा। इसके अलावा, धारा 2 में, परिवहन लागत को कम करने के कार्य को औपचारिक रूप दिया जाएगा क्योंकि समय के साथ विषम वाहनों के बेड़े के वाहन रूटिंग समस्या को पार करने का कार्य। धारा 3 मिश्रित पूर्णांक रैखिक गणितीय प्रोग्रामिंग समस्याओं को हल करने के लिए स्वतंत्र रूप से वितरित पैकेज का उपयोग करके इस समस्या को हल करने के लिए समर्पित है।
1. कार्रवाई "ग्रीन गिलहरी"
2014 से,
लिविंग अर्थ पहल समूह नोवोसिबिर्स्क में पुनर्नवीनीकरण
ग्रीन गिलहरी के संग्रह को अलग करने के लिए एक मासिक अभियान चला रहा है। लेखन के समय, कई आरक्षणों के साथ रीसाइक्लिंग पीईटी, पीई, पीपी, पीएस, ग्लास, एल्यूमीनियम, लोहा, घरेलू उपकरणों, बेकार कागज और अधिक लेबल वाले प्लास्टिक कचरे को स्वीकार किया जाता है। कार्रवाई की तैयारी और संचालन में 50 से अधिक स्वयंसेवक भाग लेते हैं। कार्रवाई वाणिज्यिक नहीं है, इसमें भागीदारी नि: शुल्क है और मौद्रिक इनाम का मतलब नहीं है।
अंक15 से 90 मिनट की अवधि में कार द्वारा कवर दूरी पर एक दूसरे से स्थित शहर के 17 बिंदुओं पर कार्रवाई की जाती है। फोटो में इन बिंदुओं में से एक: प्लास्टिक के विभिन्न अंशों को इकट्ठा करने के लिए दीवार के साथ बाईं ओर बैग, दाईं ओर - एक ट्रक, जिसमें भविष्य में सब कुछ लोड किया गया है, और केंद्र में - कानों के साथ एक स्वयंसेवक।

बिंदु पर सभी गतिविधि क्यूरेटर द्वारा आयोजित की जाती हैं जिनके पास उस समय प्रतिबंध हैं, जो वे अपने कर्तव्यों को पूरा करने के लिए तैयार हैं। कार्रवाई की योजना बनाते समय, क्यूरेटर उस समय अंतराल की रिपोर्ट करते हैं जिसके भीतर कार्रवाई को अपने बिंदु पर पारित करना होगा।
प्रत्येक बिंदु पर एकत्र किए गए रिसाइकिल के औसत वॉल्यूम पर भी डेटा है।
मार्गोंअंक उन मार्गों में व्यवस्थित होते हैं जो एक ट्रक द्वारा क्रमिक रूप से संचालित होते हैं। ट्रक आंदोलनों की निगरानी मार्ग पर्यवेक्षकों द्वारा की जाती है जो परिचालन पर्यावरण की निगरानी करते हैं और विशेष घटनाओं से निपटने पर निर्णय लेते हैं।
ट्रकमालवाहक वाहनों के प्रति घंटे किराये के प्रस्तावों के ढांचे के भीतर एक सामान्य आधार पर किराए पर लिया जाता है। जगह में प्लास्टिक को कॉम्पैक्ट करना संभव नहीं है, इसलिए ट्रक को चिह्नित करने वाला मुख्य पैरामीटर शरीर का आयतन है। हमारे मामले में क्षमता वहन करना एक सीमित कारक नहीं है।
कार्रवाई का मुख्य खर्च ट्रक किराये के भुगतान के साथ जुड़ा हुआ है, इसलिए, हमारे हिस्से के अस्तित्व और विकास के लिए इसकी कमी महत्वपूर्ण है, जो जिम्मेदार खपत के बारे में विचार बनाने के अर्थ में संस्थागत महत्व प्राप्त करता है। अगला, इस मुद्दे को हल करने के लिए एक दृष्टिकोण का वर्णन किया जाएगा, असतत अनुकूलन विधियों के आवेदन के आधार पर, गणितीय प्रोग्रामिंग।
2. औपचारिककरण
गणितीय मॉडल के निर्माण में, हम रैखिक मिश्रित-पूर्णांक कार्यक्रमों के ढांचे के भीतर बने रहेंगे, जिसके लिए कक्षा 7 बीजगणित का ज्ञान पर्याप्त है।
एकमात्र कठिनाई सूत्रों में अमूर्त अंकन और योग संकेतों के उपयोग से जुड़ी हो सकती है। मुझे आशा है कि यह उन पाठकों को नहीं डराएगा जिनके पास गणितीय ग्रंथों के साथ असीम मुठभेड़ है।
अनुकूलन मॉडल में, चार घटकों को प्रतिष्ठित किया जा सकता है:
- एक अलग मार्ग बनाने वाले बिंदुओं के समूहों का गठन;
- प्रत्येक समूह के लिए एक सर्किट की परिभाषा;
- प्रत्येक बिंदु पर ट्रक के आगमन के समय की आवश्यकताओं को पूरा करना;
- मार्गों में से प्रत्येक की सेवा के लिए आवश्यक ट्रक के प्रकार का निर्धारण।
हम प्रत्येक भाग पर विचार करते हैं, आवश्यक संकेतन को आवश्यक रूप से पेश करते हैं।
बिंदु समूहनचलो
V = \ {1, \ dots, n \}V = \ {1, \ dots, n \} पुनरावर्तनीय सामग्रियों के लिए संग्रह बिंदुओं के कई सूचकांक हैं, और साइट जहां एकत्र किए गए रिसाइकिल को फिर से ले जाया जाता है - हम इसे
डिपो कहेंगे - में 0. पुट का सूचकांक है।
\ bar {V} = V \ cup \ {0 \}\ bar {V} = V \ cup \ {0 \}अंकों का प्रत्येक समूह एक अलग मार्ग बनाता है। के माध्यम से
आर मार्ग संख्याओं के सेट को निरूपित करें।
मात्रा दें
zir,i in,r$R$मे एक बराबर है अगर बिंदु
मैं संख्या के साथ मार्ग में शामिल
आर , और शून्य अन्यथा। फिर आवश्यकता है कि बिंदु की

मार्गों में से एक दर्ज करना चाहिए जैसा लिखा जा सकता है
sumr inRzir=zi1+zi2+ dots+zin=1.
सभी मार्गों में डिपो दर्ज करना होगा:
z0r=1,R$Rमेब्योरादुर्भाग्य से, इस तरह के एक रिकॉर्ड कम्प्यूटेशनल क्षेत्र की समरूपता से जुड़ी कम्प्यूटेशनल समस्याएं पैदा करता है। इसे बहुत से प्रतिबंधों को जोड़कर समाप्त किया जा सकता है, जो कि लेक्सोग्राफिक रूप से न्यूनतम अपघटन की पसंद को सुनिश्चित करते हैं। आप इसके बारे में रूसी में अधिक पढ़ सकते हैं, उदाहरण के लिए,
यहां ।
1−zir leq sumi−1j=1 left(1− sumr−1k=1zjk right)+ sumr−1k=1zik, quadi inI,r inR,r leqi।$
एक चक्कर की परिभाषारूट उनके बीच बिंदुओं और क्रॉसिंग का एक वैकल्पिक क्रम है। औपचारिक रूप से, वे सभी सेट के एक बिंदु पर शुरू करते हैं
V और डिपो में समाप्त होता है, हालांकि, यह मान लेना आसान होगा कि सभी मार्ग चक्रीय हैं। यह धारणा सार को परिवर्तित नहीं करती है, लेकिन सभी लंबों को एक समान बनाती है: इस मामले में कोई अंतिम छोर नहीं हैं, वे सभी पारगमन हैं।
अंक के लिए
i,j in barV और मार्ग

एक चर सेट करें
xijr संख्या के साथ मार्ग में एक के बराबर है
आर ट्रक बिंदु से आगे बढ़ रहा है
मैं इस बिंदु पर
ज , और शून्य अन्यथा।
फिर हमें आवश्यकता है, सबसे पहले, कि मार्ग के साथ आगे बढ़ने वाला ट्रक

इस बिंदु पर गए

यदि वह, समूहों में विभाजित होने के बाद, संख्या के साथ समूह में गिर गई
आर :
sumj in barVxjir=zir, quadi in barV,RमेंR$
दूसरे, बिंदु पर पहुंचने के बाद ट्रक
i in बारV उसे छोड़ देना चाहिए।
sumj in barVxjir= sumj in barVxijr, quadi in barV,r inR।
आप देख सकते हैं कि ये प्रतिबंध मात्राओं की अनुमति देते हैं
xijr रूटों को परिभाषित करें जो असंतुष्ट छोरों का एक समूह हैं। इस तरह के मार्ग, निश्चित रूप से, समझ में नहीं आते हैं, और इससे बचने के लिए कई प्रतिबंधों की आवश्यकता होती है।
उप-चक्रों को समाप्त करने के बारे मेंएक तरीका सहायक गैर-नकारात्मक मात्रा का परिचय हो सकता है
fijr,i,j in बारV,r$inR इन राशियों का उपयोग करके दर्ज किए गए संबंधों का सेट मूल्यों के संयोजन को समाप्त करता है
xijr परिभाषित मार्ग जो एक कनेक्टेड लूप नहीं हैं।
sumi Vf0jr= sumi inVzir, quadr inR,
fijr leqnxijr, quadi in barV,j in barV,r inR,
sumj in barVfjir= sumj in barVfijr+zir, quadi inV,r आर।
ये अनुपात डिपो से प्रवाह मार्ग के बाकी बिंदुओं को निर्दिष्ट करते हैं। प्रत्येक मध्यवर्ती बिंदु पर, प्रवाह की एक इकाई अवशोषित होती है, इसलिए नेटवर्क के लिए अंक एक की संख्या के बराबर शक्ति प्रवाह होने के लिए, यह आवश्यक है कि मार्ग जुड़ा हो।
प्रत्येक बिंदु पर ट्रक के आगमन के समय आवश्यकताओं को पूरा करनादूसरे शब्दों में, आपको क्यूरेटरों द्वारा बताए गए समय खिड़कियों के अंदर ही बिंदुओं पर जाने की आवश्यकता है। के माध्यम से
Bi और
ईआई क्रमशः, समय अंतराल की शुरुआत और अंत जिसमें बिंदु के क्यूरेटर
मैं इसमें शामिल हो सकते हैं।
इन प्रतिबंधों के कार्यान्वयन को ट्रैक करने के लिए, हमें मार्ग पर स्टॉप और क्रॉसिंग के दौरान ट्रक द्वारा खर्च किए गए समय के बारे में जानकारी चाहिए। के माध्यम से
Li,i$Vमे बिंदु पर लोड करने की अवधि को निरूपित करें
मैं और के माध्यम से
Dij,i,j in barV - एक बिंदु से आगे बढ़ने का समय
मैं इस बिंदु पर
ज हम एक आरक्षण बनाते हैं
D0i=0 सभी के लिए
i in बारV , और आम तौर पर प्रदर्शन किया जा सकता है
Dij neqDji किसी के लिए
i neqjहम गैर-नकारात्मक चर पेश करते हैं
ai,i in barV और
wir,i in barV,r$inR बिंदु पर आगमन के समय और प्रतीक्षा समय के बराबर
मैं जब एक मार्ग के साथ ड्राइविंग
आर , क्रमशः। प्रवेश किए गए मूल्यों के लिए, निम्नलिखित संबंधों को संतुष्ट किया जाना चाहिए।
प्रतीक्षा समय लोड करने के लिए आवश्यक समय से कम नहीं हो सकता है
wir geqLizir, quadi in barV,r inR,
और यदि बिंदु मार्ग से संबंधित नहीं है तो शून्य के बराबर है
आरwir leqMzir, quadi in barV,r inR,
बिंदु पर आगमन का समय
ज पिछले बिंदु के लिए उपयुक्त समय पर गणना की गई
मैं यहाँ एक बहुत बड़ा स्थिरांक है
एम के बीच चलते समय अनावश्यक निर्भरता को समाप्त करने के लिए उपयोग किया जाता है
मैं और
ज नहीं किया।
a_i + \ sum_ {r \ _ in R} w_ {ir} + D_ {ij} \ leq a_j + M (1 - \ sum_ {r \ _ in R} x_ {ijr}), \ quad_ \ _ in, j \ V में,
ट्रक का आगमन और प्रस्थान क्यूरेटर द्वारा इंगित अंतराल के भीतर होना चाहिए।
ai geqBi, quadi inV,
ai+ sumr inRwir leqEi, quadi V$मे
प्रत्येक मार्ग की सेवा के लिए आवश्यक ट्रक के प्रकार का निर्धारणद्वारा किराए के लिए उपलब्ध कई प्रकार के ट्रकों को अस्वीकार करें
T ट्रक का प्रकार
T$Tमें शरीर की मात्रा की विशेषता
Ct और प्रति घंटे के किराए की लागत
Pt न्यूनतम ट्रक किराये का समय
टी द्वारा निरूपित करें
U0t बिंदु पर एकत्र किए गए रिसाइकिल की मात्रा

द्वारा निरूपित करें
Giहम चर का परिचय देते हैं
ytr,T Tमें,R$Rमें यदि ट्रक प्रकार एक के बराबर है
टी संख्या के साथ सेवा मार्ग को सौंपा
आर , और शून्य अन्यथा।
पूर्णांक चर
utr,T Tमें,r$R$मे ट्रक प्रकार को किराए पर देने का समय निर्धारित करें
टी संख्या के साथ मार्ग की सेवा
आरप्रत्येक मार्ग के लिए,

, आपको ट्रक का प्रकार निर्दिष्ट करना चाहिए:
\ ___ टी में T} y_ {tr} = 1, R $ में \ quad r
मार्गों के बीच के बिंदुओं के टूटने के अनुसार, कुछ मार्ग तुच्छ हो सकते हैं, यानी केवल डिपो होते हैं। अगर मार्ग
आर गैर-तुच्छ, फिर उसे सौंपे गए ट्रक को कम से कम किराए पर दिया जाता है
U0t घंटे।
utr geqU0t(ytr− sumi Vzir),Tमें quadtR में
इसी समय, पट्टे की अवधि पार्किंग की कुल अवधि और मार्ग के साथ बढ़ने से भी अधिक होनी चाहिए।
utr geq sumiinV sumj in barVDijxijr+ sumi in barVwir−M(1−ytr),Rमें quadrt$tमें
संपत्ति प्रदान करने वाले प्रतिबंध जोड़ें: यदि ट्रक प्रकार का है
टी एक मार्ग को नहीं सौंपा
आर , इसका किराया समय शून्य है।
utr leqMytr।
मार्ग बिंदुओं पर एकत्रित सभी पुनर्चक्रण ट्रक के पीछे फिट होने चाहिए।
\ sum_ {i_ in V} G_iz_ {ir} \ leq \ sum_ {t \ _ in T} C_ty_ {tr}, R. $ में \ quad r \ _
अंत में, हमारा लक्ष्य ट्रकों को किराए पर देने की लागत को कम करना है, जो कि प्रस्तुत किए गए पदनामों का उपयोग करते हुए लिखा जाता है
\ ___ T \ _ में T} \ sum_ {r \ _ R} P_tu_ {tr} $ मेसमाधान के लिए खोजें
यह सत्यापित करना आसान है कि अनुकूलन मॉडल में शामिल सभी अभिव्यक्तियाँ चर के रैखिक कार्य हैं, इसलिए, सटीक और अनुमानित समाधान खोजने के लिए, आप मिश्रित पूर्णांक प्रोग्रामिंग समस्याओं जैसे कि
गुरोबी ,
CPLEX ,
Xpress ,
ORtools , को हल करने के लिए मानक पैकेज का उपयोग कर सकते हैं।
SCIP ,
BLIS इत्यादि।
हम GMPL भाषा में परिवहन लागत को कम करने के लिए एक मॉडल लिखते हैं। यह हमें हमारे उद्देश्यों के लिए मुफ्त
GLPK पैकेज का उपयोग करने की अनुमति देगा। कोड लिखने और मॉडल को डीबग करने के लिए,
GUSEK विकास
वातावरण डाउनलोड करना सुविधाजनक होगा, जिसमें पहले से ही इसकी संरचना में GLPK शामिल है।
GUSEK इस तरह दिखता है:

बाईं ओर हम मॉडल का विवरण देखते हैं, और दाईं ओर गणना प्रगति पर जानकारी प्रदर्शित करने के लिए एक खिड़की है, जिसे लॉन्च के बाद सॉल्वर आपूर्ति करेगा।
मॉडल का पूर्ण विवरणparam numOfPoints > 0, integer; # param numOfTypes > 0, integer; # param numOfRoutes = numOfPoints;# set V := 1 .. numOfPoints; # set Vbar := V union {0}; # () set T := 1 .. numOfTypes; # set R := 1 .. numOfPoints; # ############### param WDL >= 0, default 8; # param B{i in Vbar} >= 0; # param E{i in Vbar} >= 0; # param L{i in Vbar} >= 0; # param D{i in Vbar, j in Vbar} >= 0, <= WDL; # param G{i in V}, >= 0; # , 3 ########## param C{t in T}, >= 0; # param P{t in T}, >= 0; # param U0{t in T}, >= 0; # , /********************************************** * **********************************************/ var z{Vbar, R} binary; # , , st pointToGroup 'point to group' {i in V}: sum{r in R} z[i, r] == 1; st depotToGroup 'depot to group' {r in R}: z[0, r] == 1; st lexMinGroups 'lexicographycally minimal division' {i in V, r in R: r <= i}: 1 - z[i, r] <= sum{j in V: j <= i - 1}(1 - sum{k in R: k <= r - 1} z[j, k]) + sum{k in R: k <= r - 1}z[i, k] ; /********************************************** * **********************************************/ var x{Vbar, Vbar, R} binary; # , c r i j, . st visitPoint 'visit point' {i in Vbar, r in R}: sum{j in Vbar} x[i, j, r] = z[i, r]; st keepMoving 'keep moving' {i in Vbar, r in R}: sum{j in Vbar} x[j, i, r] = sum {j in Vbar} x[i, j, r]; var f{Vbar, Vbar, R} >= 0; #, . st flowFromDepot 'flow from depot' {r in R}: sum{i in V} f[0, i, r] == sum{i in V} z[i, r]; st flowAlongActiveArcs 'flow along active arcs' {i in Vbar, j in Vbar, r in R}: f[i, j, r] <= numOfPoints * x[i, j, r]; st flowConservation 'flow conservation' {i in V, r in R}: sum{j in Vbar} f[j, i, r] == sum{j in Vbar} f[i, j, r] + z[i, r]; var a{i in V} >= 0; # var w{i in Vbar, r in R} >= 0; # st wait 'wait'{i in Vbar, r in R}: w[i, r] >= L[i] * z[i, r]; st dontWait 'dont wait'{i in Vbar, r in R}: w[i, r] <= (E[i] - B[i]) * z[i, r]; st arrivalTime 'arrival time' {i in V, j in V}: a[i] + sum{r in R}w[i, r] + D[i,j] <= a[j] + 3 * WDL * (1 - sum{r in R} x[i, j, r]); st arriveAfter 'arrive after' {i in V}: a[i] >= B[i]; st departBefore 'depart before' {i in V}: a[i] + sum{r in R}w[i, r] <= E[i]; /********************************************** * , **********************************************/ var y{t in T, r in R}, binary; # , t r, . var u{t in T, r in R}, integer, >= 0; # t, rst assignVehicle 'assign vehicle' {r in R}: sum{t in T} y[t,r] == 1; st rentTime 'rent time' {r in R, t in T}: u[t, r] >= sum{i in V, j in Vbar}D[i, j] * x[i, j, r] + sum{i in Vbar}w[i, r] - WDL * (1 - y[t, r]); st minRentTime 'minimal rent time' {r in R, t in T}: u[t, r] >= U0[t] * (y[t, r] - sum{i in V}z[i, r]); st noRent 'no rent' {t in T, r in R}: u[t, r] <= WDL * y[t, r]; st fitCapacity 'fit capacity' {r in R}: sum{i in V} G[i] * z[i, r] <= sum{t in T} C[t] * y[t, r]; minimize rentCost: sum{t in T, r in R} P[t] * u[t, r]; solve; /********************************************** * **********************************************/ printf{i in V, r in R} (if 0.1 < z[i,r] then "point %s to group %s\n" else ""), i, r, z[i,r]; printf{r in R, i in Vbar, j in Vbar} (if 0.1 < x[i, j, r] then "route %s: %s -> %s\n" else ""), r, i, j; printf{i in V} "point %s arrive between %s and %s (actual = %s)\n", i, B[i], E[i], a[i]; end;
एक त्वरित शुरुआत के लिए, मैं मॉडल में उपयोग के लिए तैयार किए गए मेरे सिर से लिया गया डेटा भी जोड़ूंगा:
इनपुट डेटा data; param numOfPoints := 9; # param numOfTypes := 6; # ############### param : B E L := 0 0 8 1 1 0 8 1 2 0 8 1 3 0 8 1 4 0 8 1 5 0 8 1 6 0 8 1 7 0 8 1 8 0 8 1 9 0 8 1; param D default 0 : 0 1 2 3 4 5 6 7 8 9 := 0 . . . . . . . . . . 1 0.1 0.3 0.2 0.1 0.2 0.1 0.2 0.1 0.2 0.1 2 0.3 0.2 0.2 0.1 0.2 0.1 0.2 0.1 0.2 0.1 3 0.4 0.3 0.2 0.1 0.2 0.1 0.2 0.1 0.2 0.1 4 0.4 0.4 0.2 0.1 0.2 0.1 0.2 0.1 0.2 0.1 5 0.1 0.2 0.2 0.1 0.2 0.1 0.2 0.1 0.2 0.1 6 0.5 0.5 0.2 0.1 0.2 0.1 0.2 0.1 0.2 0.1 7 0.3 0.2 0.2 0.1 0.2 0.1 0.2 0.1 0.2 0.1 8 0.2 0.1 0.2 0.1 0.2 0.1 0.2 0.1 0.2 0.1 9 0.5 0.2 0.2 0.1 0.2 0.1 0.2 0.1 0.2 0.1; param G := 1 1 2 2 3 1 4 2 5 1 6 2 7 1 8 2 9 1; ########## param : C P := 1 8 500 2 10 500 3 14 600 4 18 650 5 25 700 6 35 800; param U0 default 2; # , end;
नाम के साथ फ़ाइल में मॉडल कोड कॉपी करने के बाद, उदाहरण के लिए, model.mod, और data.dat फ़ाइल में इनपुट डेटा, सब कुछ चलाने के लिए तैयार है। हमने 100 सेकंड की गणना समय पर एक सीमा निर्धारित की है (यह कुंजी --tmlim [सेकंड में समय] का उपयोग करके किया जाता है), इनपुट डेटा के साथ फ़ाइल में पथ को स्थानांतरित करना (की -d [फ़ाइल पथ] का उपयोग करके),

और F5 दबाएं। सफल होने पर, संदेश दाईं ओर विंडो में दिखाई देंगे, और सौ सेकंड के बाद हमारे पास सबसे अच्छा समाधान होगा जिसे GLPK आवंटित समय में खोजने में कामयाब रहे।

नीले पाठ में, हम शिलालेख "एमआईपी =" के बाद अर्थ में रुचि रखते हैं। जैसा कि आप देख सकते हैं, यह समय-समय पर घटता है। सभी नए समाधान काम की प्रक्रिया में हैं, सबसे अच्छे में परिवहन लागत का मूल्य इस कॉलम में प्रदर्शित किया गया है (अब तक 14700 हैं)। अगली संख्या सबसे अच्छा मौजूदा, यानी
इष्टतम समाधान के लिए निचली सीमा है। प्रारंभ में, अनुमान को काफी कम आंका गया है, लेकिन समय के साथ परिष्कृत किया जाता है, अर्थात बढ़ता है। बाईं ओर और दाईं ओर स्थित मान परिवर्तित हो रहे हैं, और स्क्रीनशॉट के समय उनके बीच का सापेक्ष अंतर 54.1% है। जैसे ही यह संख्या शून्य हो जाएगी, एल्गोरिथ्म साबित करेगा कि सबसे अच्छा समाधान सबसे अच्छा संभव है। व्यवहार में इस घटना के लिए इंतजार करना हमेशा उचित नहीं है, और न केवल इसलिए कि यह एक लंबा समय है, लेकिन आरक्षण करना महत्वपूर्ण है कि, एक नियम के रूप में, एक अच्छा समाधान अपेक्षाकृत जल्दी है, और मुख्य समय लागत अनुमान के शोधन के साथ जुड़ा हुआ है जो सबसे अच्छा संभव साबित करने के लिए आवश्यक है।
एक निष्कर्ष के बजाय
रूटिंग समस्याएँ अत्यंत कम्प्यूटेशनल रूप से जटिल होती हैं, और जिन बिंदुओं पर जाने की आवश्यकता होती है, उनकी संख्या में वृद्धि के साथ, समाधान खोजने के लिए और इसकी इष्टतमता को साबित करने के लिए समय लगता है। हालांकि, काफी छोटे उदाहरणों के लिए, समय की उचित मात्रा में, सॉल्वर मार्गों का एक सफल सेट बनाने में सक्षम है और निर्णय लेने का समर्थन करने के लिए इस्तेमाल किया जा सकता है। मॉडल द्वारा प्रस्तावित रूटिंग विकल्पों के विश्लेषण से हमें लागत में कमी के महत्वपूर्ण अवसरों की खोज करने में मदद मिली, और यह स्टॉक के अस्तित्व और विकास के लिए महत्वपूर्ण है।
हमारे आगे के प्रयास अंकों में एकत्रित रिसाइकिल की मात्रा में अनिश्चितता के साथ काम की ओर बढ़ गए। हम ट्रक रूटिंग में रणनीतिक और परिचालन निर्णय लेने के लिए कई स्टोकेस्टिक प्रोग्रामिंग मॉडल विकसित कर रहे हैं। यदि विषय प्रासंगिक हो जाता है और रुचि पैदा होती है, तो मैं इस बारे में भी लिखूंगा, क्योंकि जल्द ही हम सभी को पर्यावरण के मुद्दों पर अधिक गहन रूप से गोता लगाना होगा, जो कि हम में सफलता की कामना करते हैं।