2012-05-22 21 views
24

मुझे एक रैखिक प्रोग्रामिंग मॉडल बनाने की आवश्यकता है। यहाँ असमानताओं मैं (उदाहरण के लिए) का उपयोग कर रहा है:रैखिक प्रोग्रामिंग?

6x + 4y <= 24 
x + 2y <= 6 
-x + y <= 1 
y <= 2 

मैं क्षेत्र इन असमानताओं द्वारा वर्णित खोजने की जरूरत है, और एक ग्राफ में यह छाया है, साथ ही सीमांकन लाइनों के कोने का ट्रैक रखने इस क्षेत्र के, और एक अलग रंग में बाध्य रेखा खींचें। मैं जो खोज रहा हूं उसके उदाहरण के लिए नीचे दिया गया ग्राफ देखें।

image of the points of intersection

मैं पाइथन 3.2, numpy, और matplotlib का उपयोग कर रहा हूँ। क्या पाइथन में रैखिक प्रोग्रामिंग के लिए बेहतर मॉड्यूल हैं?

+1

चरण एक असमानताओं की प्रणाली को मैट्रिक्स रूप में परिवर्तित करता है। विकिपीडिया के अनुसार –

+1

@izomorphius, रैखिक प्रोग्रामिंग गणितीय अनुकूलन है: http://en.wikipedia.org/wiki/Linear_programming – XORcist

+0

@ möter सहमत है - मेरी टिप्पणी को हटा रहा है। गलती मेरा नहीं है ओप का –

उत्तर

40

अद्यतन: उत्तर पिछले 4 वर्षों में कुछ हद तक पुराना हो गया है, यहां एक अद्यतन है। आप कई विकल्प हैं:

  • आप की जरूरत नहीं है अगर यह अजगर तो यह एक बहुत अधिक आसान है एक मॉडलिंग langage में ऐसा करते हैं, Any good tools to solve integer programs on linux?

  • मैं व्यक्तिगत रूप से दिखाई देता है अपने Python API के माध्यम से Gurobi इन दिनों का उपयोग करें। यह एक वाणिज्यिक, बंद स्रोत उत्पाद है लेकिन अकादमिक शोध के लिए नि: शुल्क है।

  • SciPy रैखिक प्रोग्रामिंग प्रदान करता है: scipy.optimize.linprog। (मैं इस एक कोशिश की है कभी नहीं।)

  • PuLP के साथ आप MPS और LP files और फिर उनके कमांड लाइन इंटरफेस के माध्यम से GLPK, सिक्का सीएलपी/सीबीसी, CPLEX, या XPRESS साथ उन्हें हल बना सकते हैं। इस दृष्टिकोण के अपने फायदे हैं और नुकसान हैं।

  • जाहिर है, CVXOPTPython interface to GLPK प्रदान करता है, मैंने को यह नहीं पता था। मैं अब 8 साल के लिए GLPK का उपयोग कर रहा हूं और मैं अत्यधिक जीएलपीके की सिफारिश कर सकता हूं। examples and tutorial of CVXOPT वास्तव में अच्छा लग रहा है!

  • आप GLPK/Python के तहत विकीबुक में अन्य संभावनाएं पा सकते हैं। ध्यान दें कि इनमें से कई को को जीएलपीके में जरूरी नहीं रखा गया है।

+4

+1 "सही टूल का उपयोग करें" के लिए +1। – djechlin

+0

पुलप का उपयोग करें, यह जीएलपीके, सीपीएलईएक्स या गुरुबी –

+2

के लिए एक अद्भुत पायथन इंटरफ़ेस है अनामित डाउनवॉट्स किसी की भी मदद नहीं कर रहे हैं। उत्तर में क्या गलत है? – Ali

17

मैं पायथन में उत्तल अनुकूलन समस्याओं को हल करने के लिए पैकेज cvxopt पैकेज की अनुशंसा करता हूं। एक रैखिक कार्यक्रम के लिए पायथन कोड के साथ एक छोटा सा उदाहरण cvxopt के दस्तावेज़ में है।

3

एक रैखिक कार्यक्रम को हल करने के लिए केवल एक ग्राफ का उपयोग होमवर्क समस्या के लिए किया जाता है। अन्य सभी मामलों में, रैखिक प्रोग्रामिंग समस्याओं को मैट्रिक्स रैखिक बीजगणित के माध्यम से हल किया जाता है।

पायथन के लिए, जबकि कुछ शुद्ध-पायथन पुस्तकालय हैं, ज्यादातर लोग पाइथन बाइंडिंग के साथ मूल पुस्तकालय का उपयोग करते हैं। रैखिक प्रोग्रामिंग के लिए विभिन्न प्रकार के नि: शुल्क और वाणिज्यिक पुस्तकालय हैं। विस्तृत सूची के लिए, विकिपीडिया में Linear Programming या OR/MS आज में Linear Programming Software Survey देखें।

अस्वीकरण: मैं वर्तमान में गुरुबी ऑप्टिमाइज़ेशन के लिए काम करता हूं और पहले आईएलओजी के लिए काम करता था, जो सीपीएलईएक्स प्रदान करता था।

+6

होमवर्क और काम के बीच सीखने के लिए भी जुनून है - मुझे लगता है कि आपके द्वारा लिखी गई पहली वाक्य जगह से बाहर है ... – siemanko

+0

रैखिक प्रोग्रामिंग समस्याओं के लिए सबसे तेज़ कौन सा है? – Royi

0

मैं PuLP पायथन पैकेज का उपयोग करने की सलाह दूंगा। इसमें एक अच्छा इंटरफ़ेस है और आप एलपी को हल करने के लिए विभिन्न प्रकार के एल्गोरिदम का उपयोग कर सकते हैं।

0

lpsolve मेरे लिए सबसे आसान है। अलग सॉल्वर स्थापित करने की जरूरत नहीं है। यह पैकेज में आता है।

2

रैखिक प्रोग्रामिंग समस्या को हल करने के लिए, आप साइप्रस में scipy.optimize.linprog मॉड्यूल का उपयोग कर सकते हैं, जो सिम्प्लेक्स एल्गोरिदम का उपयोग करता है।

0

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

एक और शानदार विकल्प Pyomo है। पुलप की तरह, आप किसी भी सॉल्वर को समस्या भेज सकते हैं और समाधान को पायथन में वापस पढ़ सकते हैं। आप सॉल्वर पैरामीटर में हेरफेर भी कर सकते हैं। एक सहपाठी और मैंने 2015 में पुलप और पायमो के प्रदर्शन की तुलना की और हमने पाया कि पाइमो पीएलपी की तुलना में एक ही समस्या के लिए एलपी फाइलें उत्पन्न कर सकता है।