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