मिश्रित पूर्णांक रैखिक कार्यक्रमों का कुशल समाधान


12

कई महत्वपूर्ण समस्याओं को मिश्रित पूर्णांक रैखिक कार्यक्रम के रूप में व्यक्त किया जा सकता है । दुर्भाग्य से समस्याओं के इस वर्ग के लिए इष्टतम समाधान की गणना एनपी-पूर्ण है। सौभाग्य से वहाँ सन्निकटन एल्गोरिदम हैं जो कभी-कभी केवल मध्यम मात्रा में संगणना के साथ गुणवत्ता समाधान प्रदान कर सकते हैं।

मुझे एक विशेष मिश्रित पूर्णांक रैखिक कार्यक्रम का विश्लेषण कैसे करना चाहिए, यह देखने के लिए कि क्या यह इन सन्निकटन एल्गोरिदम में से एक को उधार देता है? प्रासंगिक लक्षण या गुण ऐसे कार्यक्रम क्या हो सकते हैं?

आज उपयोग में आने वाले प्रासंगिक एल्गोरिदम क्या हैं और इन एल्गोरिदम पर ये गुण कैसे मैप करते हैं?

प्रयोग के लिए मुझे कौन से सॉफ्टवेयर पैकेज देखने चाहिए?

जवाबों:


15

यद्यपि मिश्रित-पूर्णांक रैखिक प्रोग्रामिंग (MILP) वास्तव में NP-पूर्ण है, मिश्रित-पूर्णांक रैखिक प्रोग्रामिंग के सॉल्व (nontrivial) उदाहरण हैं।

एनपी-पूर्ण का मतलब है कि मिश्रित पूर्णांक रैखिक प्रोग्रामिंग है:

क) एक nondeterministic ट्यूरिंग मशीन (एनपी भाग) के साथ बहुपद समय में हल

बी) 3-सैट के लिए बहुपद समय रिड्यूसबल (पूरा हिस्सा, बाकी चर्चा के लिए, यह हिस्सा ठीक नहीं है)

O(2n)n

उस कथन का अर्थ यह नहीं है कि "छोटे" उदाहरण अचूक हैं। दुर्भाग्यवश, मैं एक सटीक बयान नहीं दे सकता कि MILP उदाहरण के लिए कौन से छोटे साधन हैं। मैं उन समस्याओं को हल करता हूं जिनमें नियमित आधार पर 3,000 या अधिक बाइनरी निर्णय चर होते हैं। समस्या के निरूपण के आधार पर, समस्याएं .01 सेकंड से भी कम समय ले सकती हैं (जो अपेक्षाकृत कम-संकुचित समस्याओं के लिए मामला है) या एक घंटे से अधिक (जो समस्याओं के लिए जहां कई बाधाएं सक्रिय हैं), क्योंकि समस्याएं प्रतीत होती हैं अनुकूल संरचना है। मैं कह सकता हूं कि एलपी सॉल्वर की स्थिति एलपी को कई मिलियन निरंतर निर्णय चर के साथ हल कर सकती है, और यह कि विशेष संरचना के बिना, यह अत्यधिक संभावना नहीं है कि लगभग 1,000 से 10 के आसपास समस्या का उदाहरण है,

यदि आपको लगता है कि आपके पास MILP का एक सॉल्वेबल उदाहरण है, तो आप ब्रांच-एंड-बाउंड या ब्रांच-एंड-कट एल्गोरिथम का उपयोग करना चाहेंगे। सबसे अच्छा कार्यान्वयन CPLEX और Gurobi हैं । यदि आप पर्याप्त रूप से खोदते हैं तो ये दोनों व्यावसायिक उत्पाद हैं जिनके पास मुफ्त शैक्षणिक लाइसेंस है। यदि आपको वास्तव में एक ओपन सोर्स सॉल्वर की जरूरत है, तो COIN-OR समुदाय में परियोजनाएं अधिक उपयुक्त हैं, हालांकि स्रोत पैकेज कभी-कभी बारीक हो सकते हैं। सबसे प्रासंगिक परियोजनाएं सीबीसी शाखा-और-कट सॉल्वर , SYMPHONY सॉल्वर , BCP शाखा-कट-प्राइस सॉल्वर और ABACUS शाखा-और-कट सॉल्वर होंगी । इन सभी परियोजनाओं के लिए COIN-OR से कई पैकेजों की आवश्यकता होगीइसकी मॉड्यूलर संरचना के कारण।

यदि आप कई सॉल्वरों को आज़माने का विकल्प चाहते हैं, तो आपका सबसे अच्छा शर्त है कि COIN-OR से ओपन सॉल्वर इंटरफ़ेस का उपयोग किया जाए । सलाह दी जाती है कि इस इंटरफ़ेस के भाग आपको केवल मूल सॉल्वर विकल्प सेट करने देंगे, और यह कि सॉल्वर के लिए उन्नत विकल्प सेट करने के लिए, आपको आगे के विवरणों के लिए COIN-OR की मेलिंग सूचियों से परामर्श करना चाहिए । वाणिज्यिक MILP सॉल्वर MUCH हैं (कभी-कभी खुले स्रोत के सॉल्वरों की तुलना में तेज़ी से या अधिक)। प्रोटोटाइप के लिए एक अन्य विकल्प गामा या एएमपीएल जैसी बीजीय मॉडलिंग भाषा का उपयोग है । दोनों सॉफ्टवेयर पैकेज वाणिज्यिक हैं, लेकिन परीक्षण संस्करण हैं जिनका उपयोग छोटी समस्या के उदाहरणों पर किया जा सकता है। बड़ी समस्या उदाहरणों के लिए, आप GAMS या AMPL फ़ाइलों को सबमिट कर सकते हैंएनईओएस सर्वर को हल किया जाना है; यह सर्वर जनता के लिए उपलब्ध है।

यदि आपके पास MILP का पर्याप्त बड़ा उदाहरण है, तो इनमें से कोई भी सॉल्वर अच्छा काम नहीं करेगा। आप पूर्णांक चर को लगातार चर में आराम कर सकते हैं, समस्या को हल कर सकते हैं, और फिर पूर्णांक चर के निकटतम संग्रह के लिए गोल कर सकते हैं जो आपकी समस्या का एक हल है। आपके MILP के एलपी छूट का एक इष्टतम समाधान आपको अपने MILP के इष्टतम उद्देश्य फ़ंक्शन मूल्य (कम से कम, निश्चित रूप से) पर एक कम बाउंड देगा, और आपके MILP का एक संभव समाधान आपको इष्टतम उद्देश्य पर एक ऊपरी बाध्य देगा। आपके MILP का फ़ंक्शन मान।

यदि आप वास्तव में भाग्यशाली हैं और आपका बाधा मैट्रिक्स पूरी तरह से एकरूपता है , तो आप अपने MILP में पूर्णांक समाधान उत्पन्न करने के लिए LP सॉल्वर का उपयोग कर सकते हैं, और इसके बड़े आकार के बावजूद आप अपनी समस्या को कुशलता से हल कर सकते हैं। समस्याओं के अन्य वर्गों में तेजी से सन्निकटन एल्गोरिदम होते हैं, जैसे कि knapsack समस्याएं और कटिंग स्टॉक समस्याएं । विशिष्ट MILP अपघटन एल्गोरिदम उन समस्याओं के लिए भी मौजूद हैं जिनकी विशेष संरचना है, हालांकि मैं विशेष से परिचित नहीं हूं, क्योंकि वे विषय कुछ विशिष्ट हैं और मेरी थीसिस के दायरे से बाहर हैं।

मैं विशेष रूप से MILP के लिए एक पूरी तरह से बहुपद समय सन्निकटन योजना (FPTAS) से अवगत नहीं हूँ , हालाँकि एक समस्या वर्ग का एक FPTAS जिसमें MILP शामिल है ( इस पत्र को देखें))। मेरी सिफारिश होगी कि मिश्रित-पूर्णांक लीनियर प्रोग्रामिंग सॉल्वर में से किसी एक का उपयोग समय सीमा के साथ किया जाए और इष्टतम अंतराल पर उपयुक्त सहिष्णुता के साथ किया जाए। ऐसा करने से आपको समय सीमा के भीतर अपने MILP के लिए सबसे अच्छा संभव संभव समाधान मिल जाएगा, और अगर समय सीमा से पहले सॉल्वर सफलतापूर्वक समाप्त हो जाता है, तो संभव समाधान आपके द्वारा निर्धारित इष्टतम अंतर के भीतर इष्टतम होगा। कार्रवाई का यह कोर्स अभी भी आपको समाधान की गुणवत्ता पर सीमा देगा, क्योंकि आपका व्यवहार्य समाधान एक ऊपरी बाध्य होगा, और सॉल्वर आपको एक उपयुक्त निचली सीमा दे सकता है। बाउंड को एक निश्चित कारक इष्टतम समाधान के भीतर होने की गारंटी नहीं होगी, लेकिन फिर से, कोई भी FPTAS अधिक महंगा हो जाएगा क्योंकि सन्निकटन बेहतर हो जाएगा।

MILP सूत्रीकरण पर बसने से पहले आप जो सबसे महत्वपूर्ण काम कर सकते हैं, वह है सबसे मजबूत सूत्रीकरण जो आप पा सकते हैं; बर्त्सिमस और त्सिटिक्लिस द्वारा लीनियर ऑप्टिमाइज़ेशन के परिचय में मजबूत सूत्रीकरण को लेने के बारे में आप सलाह ले सकते हैं । मुख्य विचार एक सूत्रीकरण को चुनना है, जिसकी कमी एक बहुवचन को परिभाषित करती है जो कि संभव के रूप में उत्तल हल के करीब है ( इन पाठ्यक्रम नोटों को भी देखें )। एक मजबूत सूत्रीकरण एक समस्या को हल करने में लगने वाले समय में भारी अंतर ला सकता है।


आपके द्वारा निर्दिष्ट अनुकूल संरचना के प्रकार के उदाहरण क्या हैं? कुछ सवाल हैं जो मुझे अपने कार्यक्रम के बारे में पूछने चाहिए?
MRocklin

एकतरफा, एक प्रकार की समस्या, और स्टॉक समस्याओं को काटने के अलावा, यदि आपकी समस्या एक बहु-स्टेज स्टोचस्टिक प्रोग्राम है, तो उस संरचना का लाभ उठाने के लिए अपघटन की रणनीति है। आप (सामान्यीकृत) Benders के अपघटन, Dantzig-Wolfe अपघटन और L- आकार के अपघटन जैसी विधियों को नियोजित कर सकते हैं। आप अपनी बाधाओं में ब्लॉक-कोणीय संरचना का लाभ भी उठा सकते हैं। Dantzig-Wolfe अपघटन, Benders के अपघटन, और सामान्यीकृत Benders के अपघटन ऐसे तरीके हैं जो मैंने होमवर्क की समस्याओं के लिए अतीत में एक या दो बार उपयोग किया है।
ज्यॉफ ऑक्सीबेरी

कुछ अन्य चालें और जाल हैं जिनका ज्यॉफ ने उल्लेख नहीं किया है, लेकिन सटीक समस्या या वर्ग को देखे बिना किसी भी विशिष्ट सलाह के साथ आना मुश्किल है।
एरन अहमदिया

NEOS सर्वर यह पता लगाने का एक शानदार तरीका है कि क्या वाणिज्यिक सर्वर भी आपकी समस्या का समाधान कर सकते हैं।
Ant6n
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.