नॉनलाइनर के लिए C ++ लाइब्रेरी कम से कम विवश है


9

मैं वर्तमान में matlab "fmincon" फ़ंक्शन में कार्यान्वित किए गए गैर-समसामयिक कम से कम समस्या को हल करने का प्रयास कर रहा हूं। मेरी अपेक्षाएँ हैं, कम से कम (fun1, x0, uB, lB, fun2) जहाँ x0 प्रारंभिक अवस्था है, fun1 वह कार्य है जिसे कम से कम करने की आवश्यकता है, uB ऊपरी सीमाएँ हैं, lB कम सीमाएँ हैं और fun2 कार्य है जो nonlinear समानता के वैक्टर प्रदान करता है। http://www.mathworks.com/help/optim/ug/fmincon.html में वर्णित असमानताएंNonlcon फ़ंक्शन के रूप में। ये वैक्टर पुनरावृत्तियों के माध्यम से बदल रहे हैं (वे x_n पर गैर-रैखिक रूप से निर्भर हैं, समाधान वेक्टर के एन-वें पुनरावृत्ति)। मैटलैब कार्यान्वयन में वे एक रूप में हैं c (x) <= 0। यह कोड का अंतिम टुकड़ा है जिसे matlab से c ++ में पोर्ट करने की आवश्यकता है और मैं इस एल्गोरिथम वाले उपयुक्त c ++ लाइब्रेरी को खोजने की कोशिश करते हुए बहुत संघर्ष कर रहा हूं। यही कारण है कि मैं यहां मदद मांग रहा हूं और अगर आप अपनी विशेषज्ञता प्रदान कर सकते हैं तो मैं बहुत सराहना करूंगा।

मैं जो करना चाहता हूं उसका अच्छा उदाहरण इस पृष्ठ पर पहला है http://www.mathworks.com/help/optim/ug/constrained-nonlinear-optimization-examples.html#f10960?s_tid=doc312b केवल यही अंतर है कि मैं सीमाओं की आवश्यकता है ...

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

पीटर


NLOPT ab-initio.mit.edu/wiki/index.php/NLopt_C-plus-plus_Reference का उपयोग करने की संभावना है, लेकिन मुझे कई कॉल का उपयोग करके परिमित अंतर की गणना करने की आवश्यकता होगी "उद्देश्य फ़ंक्शन से" मूल्यांकन का मूल्यांकन और मैं दयालु था। उम्मीद है कि प्रदर्शन को बेहतर बनाने के लिए एल्गोरिथम द्वारा इसका ध्यान रखा जाएगा। मेरा न्यूनतम फ़ंक्शन गणना करने के लिए वास्तव में महंगा है। बस स्पष्ट करने के लिए, न्यूनतम फ़ंक्शन टाइम-सीरीज़ मार्कोव-स्विचिंग मॉडल अनुमान में मूल डेटा के साथ अनुमानित मॉडल का लॉग-लाइक है।
पीटर कोट्टस

1
क्या आपने इस प्रश्न के उत्तर को देखा है ? यदि आपकी आवश्यकताओं को वहां पर्याप्त रूप से संबोधित नहीं किया गया है, तो आपको मददगार सिफारिशों को प्राप्त करने के लिए उन्हें इंगित करने के लिए अपने प्रश्न को संपादित करना चाहिए।
क्रिश्चियन क्लैसन

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

1
कई प्रश्न: 1. क्या आपकी समस्या उत्तल है? 2. क्या उद्देश्य और बाधाएं अलग-अलग हैं? यदि हां, तो कितनी बार? एक बार? दो बार? 3. यदि आप मौजूद हैं, तो क्या आप आसानी से उन डेरिवेटिव्स की गणना कर सकते हैं? यदि आप उन डेरिवेटिव को आसानी से उपलब्ध नहीं हैं, तो क्या अंतर अंतर अनुमानों की गणना करना आसान होगा? 4. आपके पास कितने निर्णय चर हैं? (यानी, कितने चर आप कम करने की कोशिश कर रहे हैं?) एक मोटा अनुमान पर्याप्त होगा। 5. क्या फ़ंक्शन मूल्यांकन महंगे हैं? आपको बेहतर उत्तर देने के लिए यह सब जानकारी होना उपयोगी होगा।
ज्योफ ऑक्सीबेरी

नमस्ते! सबसे पहले, उत्तर के लिए धन्यवाद। 1. बताने के लिए मुश्किल है, लेकिन सबसे अधिक संभावना नहीं है, क्योंकि न्यूनतम फ़ंक्शन मार्कोव स्विचिंग मॉडल के बीच फाइनेंशियल एप्लिकेशन में टाइमरीज के आकलन के बीच लॉग-लाइक है और इसकी प्रकृति से मैं शोर आउटपुट का प्रकार मानता हूं। 2. कोई 3. बारीक अंतर का उपयोग करते हुए। 4. सॉल्यूशन वेक्टर में एन वेरिएबल्स होते हैं जहां n वांछित मॉडल मापदंडों पर निर्भर होता है, सामान्य रूप से 12 से 30 तक कहने देता है। मॉडल और मूल डेटा के बीच 5.log- संभावनाएं महंगी हैं, अतिरिक्त गैर-असमानताएं हैं। गणना करने के लिए
गाल हैं

जवाबों:


2

यदि आपका कार्य अलग नहीं है, तो आपको इस बात से सावधान रहना चाहिए कि आप परिमित अंतर का उपयोग कैसे करते हैं। यदि आप व्युत्पन्न जानकारी का उपयोग करना चाहते हैं, तो आपकी सबसे अच्छी शर्त शायद कुछ प्रकार की अर्ध-न्यूटन-प्रकार विधि है। ऐसे तरीकों का वर्णन करने वाले नोटों का एक सेट यहां पाया जा सकता है

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

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


2

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

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

@Geoff Oxberry द्वारा किया गया विश्लेषण nonlinear solver के चयन के लिए आवश्यक है जिसे RobOptim द्वारा बुलाया जाएगा। ध्यान दें कि जब इस तरह के सॉल्वरों के साथ काम करते हैं, तो पैरामीटर ट्वीकिंग का प्रदर्शन पर भारी प्रभाव पड़ सकता है, और आप अभी भी स्थानीय न्यूनतम में फंस सकते हैं (यह वास्तव में जिस तरह की समस्या से आप निपट रहे हैं, उस पर निर्भर करता है)।

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

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