38

मैं विशाल अनुकूलन मॉडल (100k से अधिक चर) को हल करने के लिए सीपीएलईएक्स का उपयोग कर रहा हूं, अब मैं देखना चाहता हूं कि मुझे ओपन सोर्स विकल्प मिल सकता है, मैं मिश्रित पूर्णांक समस्याओं (एमआईएलपी) को हल करता हूं और CPLEX अच्छा काम करता है, लेकिन यह बहुत महंगा है अगर हम पैमाने पर करने के तो मैं वास्तव में एक विकल्प खोजने के या अपने स्वयं के तदर्थ अनुकूलन पुस्तकालय (जो दर्दनाक हो जाएगा)बेस्ट ओपन सोर्स मिश्रित इंटीजर ऑप्टिमाइज़ेशन सॉल्वर

कोई भी सुझाव/अंतर्दृष्टि बहुत सराहना की जाएगी

लेखन शुरू करने की जरूरत है चाहता हूँ
+0

100k चर एक बहुत बड़ी समस्या है! मुझे लगता है कि आप मॉडलिंगकरण बदलने में अधिक समय की जांच करने पर ध्यान केंद्रित कर सकते हैं। Lpsolve और glpk उचित समय में हल होने के लिए पूर्णांक चर के उस मात्रा का समर्थन नहीं करते हैं। –

उत्तर

16

मैं व्यक्तिगत रूप से पाया GLPK बेहतर है (यानी तेज) LP_SOLVE से। यह विभिन्न फ़ाइल प्रारूपों का समर्थन करता है, और इसका एक और फायदा यह है कि इसका लाइब्रेरी इंटरफ़ेस है, जो आपके एप्लिकेशन के साथ सुचारु एकीकरण की अनुमति देता है।

8

मैं सीओआईएन परियोजना की जांच करने की सलाह देता हूं। COIN OR

कई अच्छी यहाँ समाधानकर्ताओं, nonlinear समस्याओं और एक जोड़ी मिश्रित पूर्णांक समाधानकर्ताओं रूप में अच्छी तरह के लिए ipOPT भी शामिल है।

2

100k चर एक बड़ी समस्या है। खुले स्रोत पुस्तकालयों में से कई कई चर के साथ अच्छी तरह से काम नहीं करते हैं। मैंने जो पढ़ा है उससे lp_solve को केवल 30k चर के लिए परीक्षण किया गया है। वाणिज्यिक प्रणाली का उपयोग करना आपकी एकमात्र पसंद हो सकती है।

15

COIN-OR के लिए एक और समर्थन। हमने पाया कि रैखिक ऑप्टिमाइज़र घटक (सीएलपी) बहुत मजबूत था, और मिश्रित पूर्णांक घटक (सीबीसी) कुछ विश्लेषण के साथ काफी अच्छी तरह से ट्यून किया जा सकता था। हमने एलपी-सोलवे और जीएलपीके की तुलना की।

वास्तव में कठिन समस्याओं के लिए, एक वाणिज्यिक सॉल्वर जाने का रास्ता है।

0

खुला स्रोत नहीं है, लेकिन यदि आपके पास माइक्रोसॉफ्ट अकादमिक गठबंधन लाइसेंस है, तो Microsoft Solver Foundation (एमएसएफ) एंटरप्राइज़ संस्करण शामिल है। Gurobi अकादमिक उद्देश्यों के लिए भी निःशुल्क है, मैंने इसे अपने थीसिस शोध में उपयोग किया है।

+0

यह उत्पाद जीवन के अंत है। –

6

Scip खराब नहीं है!

+1

+1 Scip वास्तव में अच्छा है। :) – Ali

+0

एससीआईपी एक ओपन सोर्स सॉल्वर नहीं है। – Nubok

12

एससीआईपी सॉल्वर का प्रयास करें। मैंने इसे अच्छे प्रदर्शन के साथ 300K चर से अधिक एमआईएलपी समस्याओं के लिए उपयोग किया है। इसका एमआईएलपी प्रदर्शन जीएलपीके से काफी बेहतर है। गुरुबी के पास एमआईएलपी समस्याओं के लिए भी उत्कृष्ट प्रदर्शन है (और आमतौर पर एससीआईपी (मई 2011) से बेहतर), लेकिन यदि आप अकादमिक उपयोगकर्ता नहीं हैं तो यह महंगा हो सकता है। गुरोबी सॉल्वर को तेज करने के लिए मल्टीकोर का उपयोग करेगा।

+3

एससीआईपी दुर्भाग्य से ओपन सोर्स सॉफ्टवेयर नहीं है। –

+1

क्या आपके पास वास्तव में 300k से अधिक चर हैं? उनमें से कितने पूर्णांक बाधाएं थीं? – ldog

7

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

यदि आप जिन पूर्णांक प्रोग्राम को हल करने जा रहे हैं, वे बहुत बड़े हैं, तो मैं सी ++ पर पायथन की सिफारिश करता हूं, क्योंकि आप कोड क्लीनर देखेंगे और 99% समय सॉल्वर में खर्च किया जाएगा।

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

लेकिन यदि समस्याएं बहुत भारी हैं, तो संकलित भाषाएं फिर से जीतने जा रही हैं, क्योंकि स्मृति पदचिह्न लगभग 2 (अजगर में समस्या की कोई प्रति नहीं) से विभाजित किया जाएगा।

+0

मैंने पहले lp_solve का उपयोग किया था, फिर लुगदी का उपयोग करने के लिए स्विच किया। डिफ़ॉल्ट रूप से यह COIN-OR का उपयोग करता है। एक एमआईपी समस्या को हल करने के लिए, मैंने 200 निर्णय चर के साथ, एलपी_सोल्व ने 55 मिनट लिया, जीएलपीके ने लिया और 67 मिनट, सिक्का-या 0.2 सेकेंड लिया। – Ant6n

+0

पुनरुद्धार के लिए खेद है, लेकिन सभी हल करने के कार्यान्वयन के लिए स्मृति पदचिह्न सच है? (उदाहरण के लिए गुरुबी जैसे वाणिज्यिक सॉल्वर के साथ भी?) यह पाइथन का उपयोग करने में एक बड़ी कमी होगी। – ashgetstazered

+0

मुझे विश्वास है। सभी पायथन कार्यान्वयन सी पुस्तकालय के चारों ओर रैपर के रूप में कार्य कर रहे हैं। इसलिए प्रत्येक चर के लिए, आपको एक पायथन वैरिएबल मिलता है जो एक सी मान = दो बार स्मृति की आवश्यकता होती है। यह किसी भी रैपर भाषा के लिए सच है, इसलिए आपको सी ++ के साथ एक ही सटीक समस्या मिल जाएगी। यदि आप उपयोग की गई स्मृति को कम करना चाहते हैं, तो आपको सादे सी का उपयोग करने और वहां से समस्या मैट्रिक्स बनाने की आवश्यकता है। मैं इसके बारे में ज्यादा चिंता नहीं करता, हालांकि: एक अच्छा अमूर्तता का उपयोग करने से प्राप्त उत्पादकता आपको कई और चीजों का परीक्षण करने की अनुमति देगी, और बेहतर कार्यान्वयन की ओर ले जाएगी। यदि आपके पास कोई विकल्प नहीं है तो केवल शुद्ध सी का सहारा लें – user48678

6

हालांकि यह शायद आप जो नहीं सुनना चाहते हैं, लेकिन एक तरफ वाणिज्यिक हलकों सीपीएलईएक्स और गुरुबी के बीच हल्के सालों और दूसरी तरफ ओपन सोर्स सॉलर्स हैं।

फिर भी आप भाग्यशाली हो सकते हैं और आपका मॉडल जीएलपीके, सिक्का या इसी तरह के साथ ठीक काम करता है, लेकिन सामान्य ओपन सोर्स समाधान व्यावसायिक हलकों के पीछे है। यदि यह अलग था, तो कोई भी गुरुबी लाइसेंस के लिए 12.000 डॉलर और सीपीएलईएक्स लाइसेंस के लिए और भी अधिक भुगतान नहीं करेगा।

पिछले वर्षों में मैंने कई सारे मॉडल देखे हैं जो ओपन सोर्स सॉल्वर के लिए मुश्किल थे। मेरा विश्वास करो ...

यह आकार का सवाल नहीं है, लेकिन संख्यात्मक कठिनाई है।

+0

क्या आप ओपन-सोर्स सॉल्वर के लिए किस प्रकार के मॉडल बहुत कठिन हैं, इस बारे में कुछ और बता सकते हैं? –

+1

हम उदाहरण के लिए गैस उद्योग और गैस वितरण के लिए मॉडल के साथ काम कर रहे हैं, और वहां दर्जनों मॉडल थे जो ओपन सोर्स सॉलर्स के लिए बहुत मुश्किल थे। आम तौर पर एलपी मॉडल बड़ी समस्या नहीं होती है, लेकिन जब एमआईपी मॉडल की बात आती है तो केवल वाणिज्यिक हलकर्ता अच्छी तरह से करते हैं। आम तौर पर हमारे मॉडल में कई दस हजार चर होते थे। लेकिन यह आकार की बात नहीं है। – Knasterbax

+1

मैं आपकी टिप्पणी से अनिवार्य रूप से असहमत नहीं हूं, लेकिन कुछ ऐसे मामले हैं जहां ओपनसोर्स सॉल्वर बस वाणिज्यिक और साथ ही काम करते हैं। यही कारण है कि मैं बहु-सॉल्वर पुस्तकालयों के लिए जाने की सलाह देता हूं। इस तरह, आप सॉल्वर को एक इंजन के रूप में समझने में सक्षम होंगे और सॉल्वर को आसानी से स्विच करने और वाणिज्यिक हलकों के बीच तुलना करने के लिए तुलना करेंगे। खुद को एक तकनीक में लॉक न करें, और सामान्य ढांचे का उपयोग करें! – user48678

2

मैंने बड़े (लगभग 1k चर और 1k बाधाओं) मिश्रित पूर्णांक गैर-रैखिक कार्यक्रमों को हल करने के लिए एनईओएस सर्वर (http://www.neos-server.org/neos/solvers/minco:DICOPT/GAMS.html) का उपयोग करके डीआईसीओपीटी का उपयोग किया है और इसे उत्कृष्ट पाया है।

मेरी समस्या DICOPT लिए Neos सर्वर BARON/KNITRO/LINDO/SBB आदि

NEOS के लिए कार्य सबमिट करने के लिए कुछ बाधाओं रहे हैं और यह थोड़ा जटिल है लेकिन पर सूचीबद्ध अन्य MINLP समाधानकर्ताओं तुलना में काफी बेहतर किया इसके लिए एक शक्तिशाली वाणिज्यिक सॉल्वर के लिए मुफ्त पहुंच के लिए मुफ्त पहुंच।

0

मैं पहले से ही उत्कृष्ट उत्तरों में निम्नलिखित जोड़ दूंगा।

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

बेशक यदि आप किसी समस्या को हल कर रहे हैं जहां 1% लाखों डॉलर में अनुवाद करता है तो यह स्वीकार्य नहीं है - इसलिए शीर्ष-स्तर वाले हलकों के लिए बाजार। (गुरुवार को मुफ्त सॉल्वर here)

मैं दूसरों से सहमत हूं कि सॉल्वर-स्वतंत्र समस्या फ़ाइलों (जैसे * .mps, * .lp फ़ाइलों) उत्पन्न करने वाले प्लेटफ़ॉर्म का उपयोग करना उपयुक्त है क्योंकि आप फिर कोशिश कर सकते हैं अन्य solvers। मैं PuLP का उपयोग कर रहा हूं और इसे ढूंढ रहा हूं, और मुफ्त COIN_CBC सॉल्वर, उत्कृष्ट। हालांकि कई पूर्णांक चर के साथ समस्याओं के लिए सीमित है।

0

मुझे आश्चर्य है कि किसी ने एमआईपीसीएल (http://www.mipcl-cpp.appspot.com/index.html) का उल्लेख नहीं किया है। यह एलजीपीएल लाइसेंस (स्रोत: http://www.mipcl-cpp.appspot.com/licence.html) के तहत खुला स्रोत है, इस प्रकार गैर-ओपन-सोर्स अनुप्रयोगों में भी उपयोग किया जा सकता है।

हंस Mittelmann बहुत हाल ही में (10 सितं, 2017) मिश्रित किया पूर्णांक रैखिक प्रोग्रामिंग बेंचमार्क: http://plato.asu.edu/ftp/milpc.html (: http://plato.asu.edu/talks/informs2017.pdf आप भी अवलोकन पृष्ठ http://plato.asu.edu/bench.html या उनकी बात की स्लाइड पर देख रहे हैं में रुचि हो सकती)।

12 थ्रेड के साथ मिश्रित इंटीजर रैखिक प्रोग्रामिंग बेंचमार्क और 2 घंटे की समय सीमा एमआईपीसीएल 79 उदाहरणों को हल करने में कामयाब रहा। केवल वाणिज्यिक हलकों सीपीएलईएक्स, गुरुबी और एक्सपीप्रेस ने दिए गए बाधाओं (क्रमशः 86 या 87 उदाहरण) के तहत हल करने में कामयाब रहे।

चयनित प्रदर्शन मीट्रिक (फिर से 12 धागे का उपयोग करके) के मामले में एमआईपीसीएल बेंचमार्क किए गए एससीआईपी व्युत्पन्न (एफएससीआईपीसी, एफएससीआईपीएस) से तेज है - याद रखें कि एससीआईपी ओपन सोर्स सॉल्वर नहीं है - और ओपन सोर्स सॉल्वर सीबीसी। सीपीएलईएक्स, गुरोबी और एक्सपीप्रेस ने केवल वाणिज्यिक हलकों को प्रदर्शन के संदर्भ में एमआईपीसीएल को काफी हद तक बाहर कर दिया।