आंतरिक बिंदु विधियों का उपयोग करके रैखिक प्रोग्रामिंग के लिए सटीक कोने वाले समाधान खोजना


11

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

मान लीजिए कि हम इसके बजाय पॉलीटॉप के एक कोने को ढूंढना चाहते हैं। उदाहरण के लिए, यदि हम इसे रैखिक प्रोग्रामिंग में कम करके अधिकतम मिलान करना चाहते हैं, तो हम "X3 में किनारे XY का 0.34% और किनारे AB और 0.89% का मिलान" वाले उत्तर प्राप्त नहीं करना चाहते हैं। हम 0 और 1 के साथ एक उत्तर प्राप्त करना चाहते हैं (जो सिंप्लेक्स हमें देगा क्योंकि सभी कोनों में 0 और 1 का समावेश होता है)। क्या एक आंतरिक बिंदु विधि के साथ ऐसा करने का एक तरीका है जो बहुपद समय में सटीक कोने के समाधान की गारंटी देता है? (उदाहरण के लिए, शायद हम कोनों के अनुकूल उद्देश्य को संशोधित कर सकते हैं)


1
@ जेडडी: आप इसे उत्तर क्यों नहीं बनाते हैं?
राफेल

जवाबों:


6

आप पेपर पढ़ना चाहते हैं:

संजय मेहरोत्रा, आंतरिक बिंदु विधियों, रैखिक बीजगणित और इसके अनुप्रयोगों, 152, 1 जुलाई 1991, पृष्ठ 233-253, ISSN 0024-3795, 10.1016 / 0024-3795 (91) 90277-4 का उपयोग करके एक शीर्ष समाधान खोजने पर। अप्रत्यक्ष लेख लिंक


4

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


यह व्यावहारिक के बजाय एक सैद्धांतिक हित में अधिक था। फिर भी, कई बार आंतरिक बिंदु विधियां सिंप्लेक्स की तुलना में तेज़ होती हैं, इसलिए ऐसी समस्याएं हो सकती हैं जहां यह एक व्यावहारिक मुद्दा है;)
जूल्स

3

विस्तार की कमी के लिए, यह केवल एक लंबी टिप्पणी है:

कर्मकार का बहुपद समय एल्गोरिथ्म केवल किनारे के पास चलता है। अंत में, यह एक उपयुक्त बुनियादी समाधान (जैसे कोने) पाता है जो शुद्धि योजना purification का उपयोग करके इष्टतम है । आप एक विमान से एक कोने में जाने के लिए इस या इसी तरह की तकनीक का उपयोग कर सकते हैं।


It मैं इसे कर्मकार के मूल पेपर में शामिल नहीं कर सकता । मेरा संदर्भ हमाचर और क्लारमोथ द्वारा "लिनेरे ऑप्टिमेरियंग und नेट्ज़वर्कटॉप्टीमिरुंग" (अंग्रेजी: रैखिक और नेटवर्क अनुकूलन) है जिसमें जर्मन और अंग्रेजी पाठ पक्ष हैं।


1

हां, एक सरल विधि है और मैंने इसे C ++ में लागू किया है ताकि सरल बिंदु तरीकों की सटीकता के साथ आंतरिक बिंदु विधियों की गति को संयोजित किया जा सके (आधार मैट्रिक्स के व्युत्क्रम पुनरावृत्ति का उपयोग करके मैं 10 ^ 15 में 1 भाग की सटीकता प्राप्त कर सकता हूं। और 1000 से अधिक चर और बाधाओं के साथ घने बाधा वाले मैट्रिसेस पर बेहतर)।

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

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

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