सिम्पलेक्स विधि कार्यान्वयन पर सर्वश्रेष्ठ पुस्तक?


14

मैं एलपी कार्य के लिए एसएम को लागू करने में दिलचस्पी रखता हूं, हालांकि मैंने संभावित नुकसान के बारे में सुना है: कॉर्मेन की किताब कहती है कि इनपुट डेटा होना संभव है जो घातीय समय में व्यवहार करने के लिए भोली कार्यान्वयन बना देगा। मैंने यह भी सुना है कि अनुभवहीन कार्यान्वयन कुछ प्रकार के डेटा के लिए लूप कर सकता है।

क्या कोई पुस्तक / कागज / स्रोत है जो एसएम के व्यावहारिक कार्यान्वयन की बारीकियों को बताता है?

अग्रिम में धन्यवाद।


जवाबों:


13

मैं सीपीएक्स के "पिता" बिक्सबी द्वारा दृढ़ता से पेपर की सिफारिश करता हूं, जो न केवल (संशोधित) सिम्पलेक्स एल्गोरिदम के पहलुओं को लागू करने पर सर्वेक्षण करता है: रॉबर्ट ई। बिक्सबी , रियल-वर्ल्ड रैखिक प्रोग्राम्स को हल करना: एक दशक और प्रगति की अधिकता , संचालन। अनुसंधान (50) 2002, 3-15


12

सिम्प्लेक्स एल्गोरिथ्म पी। सीएलआरएस में नहीं है, इसलिए कहा गया है कि व्यवहार में भले ही यह "अच्छी तरह से" काम करता है, लेकिन कुछ इनपुट हैं जिनके कारण एल्गोरिथ्म घातीय समय में चल रहा है। यह एल्गोरिदम से सख्ती से संबंधित है, इसके कार्यान्वयन के लिए नहीं: आप इस बात का स्वतंत्र रूप से सामना करेंगे कि आप एल्गोरिथ्म को वास्तव में कैसे लागू करते हैं। हालांकि, एल.पी. पी में है। यह 1979 में खाचियन द्वारा सिद्ध किया गया था, हालांकि उनका दीर्घवृत्ताभ एल्गोरिथ्म व्यावहारिक नहीं है। आज, आंतरिक बिंदु तरीकों का व्यापक रूप से उपयोग किया जाता है। सबसे पहले 1984 में कर्मकार द्वारा खोजा गया था।

यदि आप व्यावहारिक कार्यान्वयन में रुचि रखते हैं, तो एक नज़र डालें:

GUROBI, शैक्षणिक उपयोग के लिए नि: शुल्क, अभी उपलब्ध सर्वोत्तम आशावादी (अनुक्रमिक और साझा-मेमोरी समानांतर संस्करण दोनों):

http://www.gurobi.com

GLPK लाइब्रेरी:

http://www.gnu.org/software/glpk/

यह एक ओपन सोर्स प्रोजेक्ट है, इसके लिए कार्यान्वयन प्रदान करता है:

  • मौलिक और दोहरी सिंप्लेक्स विधियाँ
  • प्राइमल-डुअल इंटीरियर-पॉइंट विधि
  • शाखा-और-काट विधि
  • GNU MathProg के लिए अनुवादक
  • एप्लिकेशन प्रोग्राम इंटरफ़ेस (API)
  • स्टैंड-अलोन एलपी / एमआईपी सॉल्वर

12
वास्तव में। मैं दृढ़ता से अपने आप से सिंप्लेक्स को लागू करने की कोशिश नहीं करूंगा, जब तक कि यह अभ्यास का पूरा बिंदु न हो। यदि आप इसे उपयोग करना चाहते हैं, तो शेल्फ तरीके बहुत बेहतर हैं। इसके अलावा, सीपीसीएल शैक्षणिक उपयोग के लिए स्वतंत्र है यदि यह आपके लिए उपयुक्त है।
सुरेश वेंकट

1
क्या एलपी के किसी भी वितरित (एमपीआई की तरह) ओपन सोर्स कार्यान्वयन हैं?
टोमेक टारसिनेस्की

3
@ टोमेक एलपी पी-पूर्ण है और एक कुशल समानांतरकरण होने की संभावना नहीं है।
मार्कस रिट

@ टोमेक: सिम्फनी एक वितरित संस्करण प्रदान करता है जो वर्तमान में पीवीएम संदेश पासिंग प्रोटोकॉल (एमपीआई अभी समर्थित नहीं है) द्वारा समर्थित किसी भी वातावरण में चलता है। समान स्रोत कोड को किसी भी OpenMP अनुरूप संकलक का उपयोग करके साझा-मेमोरी आर्किटेक्चर के लिए भी संकलित किया जा सकता है .. देखें branchandcut.org और दृढ़ता से संबंधित COIN-OR वेब साइट: coin-or.org
Massimo Cafaro

9
CPLEX संभवतः वर्तमान में उपलब्ध LP का सबसे अच्छा कार्यान्वयन है (इसीलिए लोग इसके लिए इतना भुगतान करते हैं), लेकिन व्यापक रूप से उपयोग किए जाने वाले सभी कार्यान्वयनों में से बहुत कुछ आप अपने आप को प्रोग्राम करने की तुलना में काफी बेहतर करेंगे। इसमें गणितीय, मेपल और MATLAB पैकेज शामिल हैं। आस-पास बहुत सारे कार्यान्वयन हैं, जिनमें कुछ काफी अच्छे मुफ्त वाले (QSopt, एक के लिए, जो कि यदि आप इसे व्यावसायिक उद्देश्यों के लिए उपयोग करने की योजना नहीं बना रहे हैं) मुफ्त है, इसलिए इसे स्वयं सीखना प्रोग्रामिंग अनुभव के लिए केवल सार्थक है।
पीटर शोर

9

वेंडरबी की रैखिक प्रोग्रामिंग पुस्तक निम्न स्तर के कई विवरणों से गुजरती है ... लेकिन जैसा कि अन्य उत्तर / टिप्पणियों ने सुझाव दिया है, एलपी सॉल्वर को लागू करना एक कठिन और धन्यवादहीन कार्य है। शेल्फ सॉल्वर से जाने का रास्ता शायद है ... (कुछ खुले स्रोत एलपी सॉल्वर भी हैं ...)


6

यह केवल भोली कार्यान्वयन नहीं है जो कभी-कभी घातीय समय में व्यवहार करता है। वास्तव में, मुझे लगता है कि सभी ज्ञात नियतात्मक और यादृच्छिक नियमों में सुपर-बहुपद सबसे खराब स्थिति है। इस ज्ञात मामले को प्रस्तुत करने वाले अधिकांश ज्ञात इनपुट अत्यधिक संरचित हैं, एक संबंधित प्रश्न:

सिंप्लेक्स एल्गोरिदम के लिए पैथोलॉजिकल उदाहरणों की संरचना

हालांकि, व्यवहार में एसएम अच्छी तरह से काम करता है। यह स्मूथेड विश्लेषण की शुरूआत के द्वारा औपचारिक रूप दिया गया है जो कि मूल रूप से थोड़े गड़बड़ी वाले इनपुट के साथ सबसे खराब स्थिति का विश्लेषण है। इस विश्लेषण के तहत, एसएम पॉलिटाइम है, दूसरे शब्दों में, हर इनपुट के लिए (यहां तक ​​कि पैथोलॉजिकल वाले) एक मामूली गड़बड़ी है जो एल्गोरिथ्म को अच्छी तरह से प्रदर्शन करने की अनुमति देता है। इस अंतर्दृष्टि को एक यादृच्छिक एल्गोरिदम में बदल दिया गया है जो पॉलीटाइम में प्रदर्शन करता है। हालाँकि, जहाँ तक मैं समझता हूँ, इस बारे में अभी भी कुछ बहस चल रही है कि क्या यह एल्गोरिथम एक 'सही' सिम्पलेक्स एल्गोरिथम के रूप में योग्य है। मैं इस बात से भी अनजान हूँ कि यदि मानक पैकेज इस की तर्ज पर कुछ लागू करते हैं, लेकिन आपको कुछ कार्यान्वयन खोजने में सक्षम होना चाहिए, यदि आप 5+ वर्ष पुराने परिणाम के आधार पर खोजते हैं।


1

आप Luenberger, Ye, Linear और Nonlinear Programming, 3rd ed की जाँच कर सकते हैं। यह बहुत व्यापक लगता है, लेकिन मैंने अभी तक यह कहने के लिए पर्याप्त नहीं बनाया है कि क्या यह आपके प्रश्न का पूरी तरह से उत्तर देता है।

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