विवश अनुकूलन के लिए सॉफ्टवेयर पैकेज?


21

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

argminuf(u,x)

का विषय है

c(u,x)=0
ad(u,x)b

जहाँ u एक डिजाइन वैरिएबल का वेक्टर है, x स्टेट वैरिएबल का वेक्टर है, और c(u,x) एक समता बाधा है (आमतौर पर एक PDE)। निम्न और ऊपरी बाधाएं a और b स्थानिक रूप से परिवर्तनशील हो सकती हैं।

कौन से पैकेज इस फॉर्म के सिस्टम को संभाल सकते हैं?


1
संपादित संस्करण बॉक्स-विवक्षित अनुकूलन समस्या की तरह नहीं दिखता है। एक बॉक्स-विवश अनुकूलन समस्या एक बाधा के रूप में एक aub । है u के एक समारोह होना चाहिए x ? है c रैखिक में u ? यदि यह नहीं है, तो क्या यह दो बार-भिन्न है? है f में उत्तल u ? क्या यह यू में दो बार अलग है u? अंत में, \ arg \ min_ {u} यू में उन argminuबिंदुओं के सेट को दर्शाता है , जिस पर का न्यूनतम मूल्य प्राप्त होता है। क्या आपको इसके बजाय \ min_ {u} का मतलब है ? ufminu
ज्योफ ऑक्सीबेरी

d(u,x)=u एक विशेष मामला है, लेकिन यह अधिक सामान्य रूप वास्तव में व्यवहार में आम है। आप हमेशा अतिरिक्त चर पेश कर सकते हैं यदि आपकी विधि केवल यू पर सीधे बाधाओं से निपट सकती है u। हम आम तौर पर उस मूल्य यू में अधिक रुचि रखते हैंu , जिस पर न्यूनतम मूल्य के मुकाबले एफ प्राप्त होता है f। शॉन ने [pde] टैग जोड़ा है, जिससे आपको कुछ नियमितता मिल सकती है। उन्होंने यह नहीं बताया कि प्रणाली अतिसक्रिय थी या नहीं, इसलिए चलो मान नहीं। चलो यह नहीं मानते कि f उत्तल है, क्योंकि यह अक्सर नहीं होता है।
जेड ब्राउन

या नियमितीकरण को शामिल करना लिए काफी सामान्य है, इसलिए हमें दो डेरिवेटिव नहीं मानने चाहिए। fL1W1,1
जेड ब्राउन

@ जेडब्रोर्न: यह समझ में आता है; यह "बॉक्स बाधा" के बिना, अच्छी तरह से, एक स्पष्ट बॉक्स बाधा के रूप में उल्लेख करने के लिए भ्रमित था। आप जिस प्रकार की समस्याओं (डिज़ाइन समस्याओं, नियंत्रण समस्याओं) के बारे में बात कर रहे हैं, उनके लिए निश्चित रूप से अधिक दिलचस्प है, लेकिन अनुकूलन समस्याओं को आमतौर पर अंकन का उपयोग करके कहा जाता है, और उनके समाधान सेटों का उपयोग अंकन द्वारा किया जाता है। uminargmin
ज्यॉफ ऑक्सीबेरी

यह निर्दिष्ट करने के लिए उपयोगी हो सकता है कि आप PDEs को किस भाषा / परिवेश में निर्दिष्ट करते हैं। यह आशावादियों की पसंद को प्रतिबंधित कर सकता है।
डोमिनिक

जवाबों:


18

मैंने कुछ टिप्पणियों के आधार पर अपने उत्तर को मौलिक रूप से संपादित करने का निर्णय लिया।

मैंने TAO का उपयोग नहीं किया है। दस्तावेज़ीकरण से इनकार करने से, यह एकमात्र तरीका लगता है कि TAO विवश अनुकूलन समस्याओं को संभाल सकता है (केवल बॉक्स बाधाओं के विशेष मामले को छोड़कर) करुश-कुह्न-टीज़र (KKT) स्थितियों का उपयोग करके समस्या को एक वैचारिक असमानता में परिवर्तित करना है , जो बाधा योग्यता के तहत आवश्यक हैं (जो प्रकार मैं आमतौर पर स्लेटर बिंदु स्थिति है ), और उद्देश्य और बाधाओं के उत्तलता के तहत पर्याप्त है (अधिक सामान्यतः, टाइप 1 invexity)। अगरfगैर-रूपांतरण है, केकेटी की स्थितियों का उपयोग करते हुए परिवर्तनीय असमानता सूत्रीकरण मूल अनुकूलन समस्या के समतुल्य नहीं है, इसलिए कड़ाई से बोलते हुए, यदि आप अनुकूलन समस्या के लिए वैश्विक अनुकूलता चाहते हैं, तो आपको इसे वैचारिक असमानता के रूप में व्यक्त नहीं करना चाहिए। पीडीई-विवश अनुकूलन (नीचे देखें) के लिए वैसे भी एक वैश्विक इष्टतम खोजना मुश्किल होगा, इसलिए शायद इस विवरण को अनदेखा करना ठीक है। वोल्फगैंग ने जो कहा है, उसे देखते हुए, मैं TAO का उपयोग करने पर संदेह करूंगा; मैं पहले से ही संदेह कर रहा हूं क्योंकि यह नॉनप्लियर प्रोग्राम (एनएलपी) को एनएलपी के रूप में हल करने के तरीकों को लागू नहीं करता है, न कि परिवर्तनीय असमानताओं के बजाय।

मैं पीडीई-विवश अनुकूलन पर विशेषज्ञ नहीं हूं; ODE- विवश अनुकूलन समस्याओं पर खदान के सहकर्मी और सहयोगी काम करते हैं। मुझे पता है कि घुसपैठ के योगों के लिए, लैरी बेएग्लर (और अन्य) पीडीई को विवेकाधीन करने के लिए महाधमनी विधियों का उपयोग करेंगे और इसे एक बहुत बड़ा, विरल एनएलपी बनाएंगे, और फिर वह आंतरिक बिंदु विधियों का उपयोग करके इसे हल करेंगे। समस्या को वास्तव में वैश्विक अनुकूलता के लिए हल करने के लिए, आपको उत्तल विश्राम भी उत्पन्न करने की आवश्यकता होगी, लेकिन जहाँ तक मुझे पता है, यह दृष्टिकोण नहीं लिया गया है क्योंकि PDE- विवश अनुकूलन अनुकूलन समस्याओं से ऐसे बड़े एनएलपी होते हैं जो उन्हें हल करना मुश्किल होगा। वैश्विक अनुकूलता। मैं इन विवरणों का उल्लेख केवल इसलिए करता हूं क्योंकि समस्या निर्माण, सॉल्वर पैकेज की पसंद को बहुत प्रभावित करता है। गैर-लाभकारी योगों के लिए, बार-बार PDE अनुकूलन एल्गोरिदम के लिए ढाल जानकारी देता है।

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

अंतत: क्या मायने रखता है, मूल पीडीई की भिन्नता नहीं है, लेकिन निर्णय चर के संबंध में विवेक की भिन्नता है।

यदि निर्णय की गई चर के संबंध में विवेकाधीन समस्या दो-भिन्न है, तो निम्न पैकेज एक स्थानीय समाधान की गणना करेंगे:

  • IPOPT एक खुला स्रोत इंटीरियर पॉइंट सॉल्वर है जिसे IBM पर Andreas Wächter द्वारा विकसित किया गया है। यह एक बहुत ही उच्च गुणवत्ता वाला कोड है। इंटीरियर-पॉइंट सॉल्वर के रूप में, यह बड़े, विरल जैकबियन मेट्रिक्स के साथ उद्देश्य कार्यों के लिए बेहतर है, और पीडीई-विवश अनुकूलन के लिए उपयोगी होगा।
  • SNOPT एक व्यावसायिक अनुक्रमिक द्विघात प्रोग्रामिंग सॉल्वर है जो एक और उच्च गुणवत्ता वाला कोड है। यह छोटे, घने जेकबेरियन मेट्रिक्स के साथ उद्देश्य कार्यों के लिए बेहतर है, इसलिए मुझे उम्मीद नहीं होगी कि यह पीडीई-विवश अनुकूलन के लिए उपयोगी होगा, लेकिन आप इसे आजमा सकते हैं।
  • NLopt , MIT में स्टीवन जॉनसन द्वारा लिखा गया एक छोटा, खुला स्रोत कोड है जिसमें कई नॉनलाइनियर ऑप्टिमाइज़ेशन एल्गोरिदम के बुनियादी कार्यान्वयन शामिल हैं। सभी एल्गोरिदम को बाध्य-बाध्य समस्याओं को हल करने के लिए पर्याप्त होना चाहिए।
  • fmincon मैटलैब में नॉनलाइनियर ऑप्टिमाइज़ेशन के लिए कई एल्गोरिदम (आंतरिक बिंदु और अनुक्रमिक द्विघात प्रोग्रामिंग सहित) लागू होते हैं
  • GAMS और AMPL दोनों व्यावसायिक मॉडलिंग भाषाएं हैं, जिनका उपयोग अनुकूलन समस्याओं को तैयार करने के लिए किया जाता है, और इनमें बड़ी संख्या में नॉनलाइनियर प्रोग्रामिंग पॉवर्स के इंटरफेस होते हैं। मुझे पता है कि GAMS का एक परीक्षण संस्करण है जिसका उपयोग छोटी समस्याओं के लिए किया जा सकता है, और समस्या के उदाहरणों को समाधान के लिए NEOS सर्वर पर भी प्रस्तुत किया जा सकता है ।

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

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

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


4

हमने TAO की कोशिश की है लेकिन यह पाया कि असमानता की समस्या के लिए यह बहुत उपयोगी नहीं है। यह अनिवार्य रूप से केवल कम से कम 2003 के बाद से रखरखाव मोड में है, पेट्स में परिवर्तन पर नज़र रखने के लिए अपडेट के अलावा कोई वास्तविक नई सुविधाएँ नहीं हैं, जिस पर इसे बनाया गया है।


3

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


क्या आप इस बात पर विस्तार से बता सकते हैं कि OPT ++ उपयोग करने के लिए एक अच्छा पैकेज क्यों है? क्या आपको (या आपके सहकर्मियों को) इसका कोई अनुभव है?
जियोफ ऑक्सबेरी

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

2
@ बायरन: आपको अपने उत्तर को शुरू करने के लिए रखना चाहिए। :)
जेएम

2

यदि समस्या को एक पूरक समस्या के रूप में तैयार किया जाता है, तो आप TAO (उन्नत अनुकूलन के लिए टूलकिट) का उपयोग कर सकते हैं । TAO की कुछ विधियाँ, जैसे कि कम स्थान विधि (सक्रिय सेट विधि का एक प्रकार), वर्तमान में PETSc ( SNESVI ) में SNES के भाग के रूप में उपलब्ध है ।


1

[,+]

मुझे नहीं लगता है कि MINUTE आपकी आवश्यकताओं के लिए अच्छा काम करेगा, लेकिन यदि आप कुछ या सभी कोड स्वयं लिखने के लिए मजबूर हैं तो ट्रांसफ़ॉर्म हो सकता है।


यह परिवर्तन बुरा लग रहा है; कोई आश्चर्य नहीं कि यह एक युगल पैराग्राफ के साथ है।
ज्योफ ऑक्सबेरी

1

जैसा कि @Geoff Oxberry ने बताया, कई पैकेज आपको एक स्थानीय समाधान खोजने की अनुमति देते हैं। यदि आप एक ही समस्या के लिए इन अलग-अलग एनएलपी सॉल्वरों की तुलना करने में सक्षम होना चाहते हैं, तो आप रोबोप्टिम का उपयोग कर सकते हैं ।

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

यह खुला स्रोत है ताकि आप GitHub पर स्रोत कोड की जांच कर सकें: https://github.com/roboptim/

नोट: मैं इस परियोजना के डेवलपर्स में से एक हूं।


1
इंगित करना चाहिए कि अन्य उत्तर सॉल्वर का वर्णन करते हैं , न कि फ्रेमवर्क का। एक अच्छे सॉल्वर की तुलना में स्वीकार्य फ्रेमवर्क ( ड्राइवर ) को खोजना आसान है ,
हिरण हंटर

@DeerHunter जब आप किसी दिए गए समस्या को हल करने के लिए एक सॉल्वर की तलाश कर रहे हैं, तो अक्सर एक प्राथमिकताओं को जानना मुश्किल होता है जो सॉल्वर सबसे अच्छा समाधान की गणना करेगा और / या सबसे तेज़ होगा। आप एक "अच्छे सॉल्वर" के बारे में बात कर रहे हैं, लेकिन यह वास्तव में इस बात पर निर्भर करता है कि आप क्या हल कर रहे हैं: एक "सर्वश्रेष्ठ समग्र" सॉल्वर नहीं है। इसके अलावा, सॉल्वर एपीआई आमतौर पर काफी भिन्न होते हैं, इसलिए एक अच्छे ढांचे का उपयोग करने से आप आसानी से एक सॉल्वर से दूसरे में स्विच कर सकते हैं। सवाल "विवश अनुकूलन के लिए सॉफ्टवेयर पैकेज" के बारे में था, और फ्रेमवर्क भी इस श्रेणी में आते हैं।
BenC

1

यहाँ PDE-constrained ऑप्टिमाइज़ेशन पैकेज की आंशिक सूची दी गई है।

डॉल्फिन एडजॉइंट FEniCS FEM का हिस्सा है:

http://dolfin-adjoint.org/

आरओएल, एमओएचसीओ, सनडाइन ट्रिलिनो के हिस्से हैं:

https://github.com/trilinos/trilinos/tree/master/packages/rol/

https://github.com/trilinos/trilinos/tree/master/packages/Sundance/

http://trilinos.org/packages/moocho/

PDE- विवश अनुकूलन के लिए PYOMO उदाहरण:

https://software.sandia.gov/trac/pyomo/browser/pyomo/trunk/examples/dae

TAO मैनुअल PDE- विवश अनुकूलन समस्याओं को हल करने के उदाहरण देता है:

http://www.mcs.anl.gov/petsc/petsc-3.5/docs/tao_manual.pdf


1
SciComp.SE में आपका स्वागत है! बस एक लिंक प्रदान करना (उपयोगी हो सकता है) यह वास्तव में एक अच्छा जवाब नहीं है; meta.stackexchange.com/questions/8231 देखें । क्या आप इस पर थोड़ा विस्तार कर सकते हैं (कंप्यूटिंग भाषा, किस तरह की बाधाओं का इलाज किया जा सकता है, कौन से तरीके लागू किए जाते हैं, आदि)?
ईसाई क्लैसन

मैं @ChristianClason से सहमत हूं। पीडीई-विवश अनुकूलन सॉफ्टवेयर के लिए सॉल्वरों में पर्याप्त विकास हुआ है; हालाँकि, यह उत्तर इस बात पर कोई पृष्ठभूमि नहीं देता है कि कौन से एल्गोरिदम वास्तव में लागू होते हैं।
ज्योफ ऑक्सीबेरी

0

एपीएम MATLAB और एपीएम अजगर संकुल मिश्रित पूर्णांक विभेदक बीजीय समीकरण प्रणाली के बड़े पैमाने पर (100,000+ चर) हल कर सकते हैं। सॉफ्टवेयर व्यावसायिक या शैक्षणिक उपयोग के लिए एक वेब सेवा के रूप में उपलब्ध है। यदि आप एक PDE प्रणाली को हल कर रहे हैं, तो आप इसे APMonitor मॉडलिंग भाषा में रखने के लिए DAE या ODE फॉर्म में प्राप्त करने के लिए एक बार विवेक कर सकते हैं। मॉडलिंग भाषा APOPT , BPOPT, IPOPT, SNOPT और MINOS सॉल्वर का उपयोग करती है।


1
कृपया इसमें अपने APMonitor डेवलपर के रूप में अपनी संबद्धता का खुलासा करें और भविष्य के उत्तर जो आपके सॉफ़्टवेयर का उल्लेख करते हैं। हमारी प्रकटीकरण नीति के विवरण के लिए FAQ देखें।
ज्यॉफ ऑक्सीबेरी

ज्योफ, टिप के लिए धन्यवाद। मैंने 2004 में ऑस्टिन में टेक्सास विश्वविद्यालय में स्नातक छात्र के रूप में एपीमोनिटर प्लेटफॉर्म पर काम शुरू किया। अब हम इसे अपने अनुसंधान समूह में जैविक, रासायनिक, एयरोस्पेस, और अन्य अनुप्रयोगों के प्रक्रिया नियंत्रण और अनुकूलन ( apm.byu.edu/prism ) के लिए ब्रिघम यंग विश्वविद्यालय में उपयोग करते हैं। मैं इसे व्यावसायिक या शैक्षणिक उपयोगकर्ताओं के लिए स्वतंत्र रूप से उपलब्ध कराता हूं।
जॉन हैडनग्रेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.