महंगे उद्देश्य समारोह का वैश्विक अधिकतमकरण


12

मैं विश्व स्तर पर (कई के एक समारोह को अधिकतम करने में दिलचस्पी है ) वास्तविक मानकों (एक जटिल सिम्युलेशन के परिणामस्वरूप)। हालांकि, विचाराधीन फ़ंक्शन मूल्यांकन के लिए अपेक्षाकृत महंगा है, प्रत्येक पैरामीटर सेट के लिए लगभग 2 दिन की आवश्यकता होती है। मैं विभिन्न विकल्पों की तुलना कर रहा हूं, और सोच रहा था कि क्या कोई सुझाव था।30

मुझे पता है कि इस तरह की प्रक्रिया के लिए कई तरीके हैं, जिनमें अनुमानित कार्य शामिल हैं और फिर उन को अधिकतम करना है (जैसे जोन्स एट अल। "महंगी ब्लैक-बॉक्स फंक्शंस के कुशल वैश्विक अनुकूलन" )। हालांकि, यह अपेक्षाकृत कोड से जुड़ा हुआ है।

मेरे पास समानांतर (50+) में बड़ी संख्या में सिमुलेशन चलाने की क्षमता है। ऐसा लगता है कि इस अनुकूलन को करने के लिए आनुवंशिक एल्गोरिदम जैसी किसी चीज़ का उपयोग करने का सुझाव दिया गया है - चूंकि मैं उम्मीदवार समाधानों की आबादी को जल्दी से जल्दी बना सकता हूं क्योंकि मैं एक बना सकता हूं।

यहाँ मेरे प्रश्न हैं: 1) क्या किसी के पास इस तरह के वैश्विक सॉल्वरों / सिफारिशों के स्वतंत्र रूप से उपलब्ध कार्यान्वयन के साथ अनुभव है? 2) क्या यहां जेनेटिक एल्गोरिदम को पसंद करने या उससे बचने के कारण हैं?

यह एक शारीरिक समस्या है, और मेरे शुरुआती प्रयोगों ने मापदंडों में बदलाव करते हुए योग्यता के आंकड़ों को काफी आसानी से दिखाया है।

अपडेट करें:

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


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

(एक साल बाद), आपने क्या किया - 30 मापदंडों में से कुछ को अलग करते हुए, मॉडल ...?
Denis

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

यह 2 1/2 साल पहले दिया गया था, लेकिन क्या आपके पास अपने उद्देश्य फ़ंक्शन मूल्यांकन (निर्धारक सिमुलेशन) में सटीकता स्तर का विकल्प है, और सटीकता बनाम रन टाइम का व्यापार कर सकता है?
मार्क एल। स्टोन

जवाबों:


11

आनुवांशिक एल्गोरिदम एक बहुत ही खराब विकल्प है जब उद्देश्य फ़ंक्शन का मूल्यांकन करना बहुत महंगा है- इन विधियों को प्रत्येक पीढ़ी में फ़ंक्शन मूल्यांकन की बहुत आवश्यकता होती है (जो समानता के साथ मदद कर सकता है) और बहुत सारी पीढ़ी (जो स्वाभाविक रूप से अनुक्रमिक हैं।) दो दिनों में। प्रति पीढ़ी, यह बहुत धीमा होगा।

आपने यह उल्लेख नहीं किया है कि यह समस्या कहां से आई है। क्या आप सांख्यिकीय रूप से संभावना की सतह का विश्लेषण कर रहे हैं (जिस स्थिति में आप केवल इष्टतम मापदंडों और उद्देश्य मूल्य से अधिक चाहते हैं) या सिर्फ एक उद्देश्य फ़ंक्शन का अनुकूलन कर रहे हैं?

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

आपने मापदंडों पर किसी भी बाधा का उल्लेख नहीं किया है। क्या वे बंधे हुए हैं? क्या मापदंडों के बीच रैखिक या अरेखीय बाधाएं हैं?

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

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

अंतिम चरण के रूप में, आप अपनी प्रतिक्रिया सतह अनुकूलन से मापदंडों के साथ शुरू कर सकते हैं और एक समय में उन्हें समायोजित करके स्क्रीन आउट आउट मापदंडों के मूल्यों में सुधार करने की कोशिश कर सकते हैं (वंश को समन्वित करें)।

मैं इस प्रकार के अनुकूलन के लिए DAKOTA की एक रूपरेखा के रूप में सिफारिश करूंगा। यदि आप केवल एक बार यह अनुकूलन करने जा रहे हैं, तो हाथ से संगणना व्यवस्थित करना आसान हो सकता है, लेकिन यदि आप इसे बार-बार करने जा रहे हैं, तो DAKOTA बहुत मददगार होगा।


4
  1. मुझे सॉल्वरों के इन प्रकारों के साथ कोई अनुभव नहीं है; मेरे कुछ सहकर्मियों ने उनका उपयोग किया है। DAKOTA इन प्रकार के कार्यों के लिए अनुशंसित सॉफ़्टवेयर पैकेज प्रतीत होता है। इसमें एक इंटरफ़ेस शामिल है जो एक उपयोगकर्ता को बार-बार एक सबमिशन कतार में नौकरी प्रस्तुत करने और पैरामीटर अध्ययन, संवेदनशीलता विश्लेषण आदि के लिए आउटपुट का उपयोग करने की अनुमति देता है, मैं इससे परिचित नहीं हूं कि यह जानने के लिए कि यह कई सिमुलेशन चलाने का लाभ उठाएगा या नहीं। एक साथ।

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


नियतात्मक व्युत्पन्न-मुक्त अनुकूलन पद्धति का उपयोग करने वाले कुछ कारण बुद्धिमान नहीं हो सकते हैं। सबसे पहले, ये स्थानीय खोज विधियाँ हैं जो एक स्थानीय मैक्सिमम ढूंढने में समाप्त हो सकती हैं और पैरामीटर स्पेस में कहीं और बेहतर बिंदु खो सकती हैं। दूसरा, इन विधियों को आम तौर पर प्रति पुनरावृत्ति अपेक्षाकृत कुछ फ़ंक्शन मूल्यांकन के साथ पुनरावृत्तियों की आवश्यकता होती है, इसलिए वे अच्छी तरह से समानांतर नहीं करते हैं।
ब्रायन बॉर्चर्स

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

1

ब्लैक-बॉक्स ऑप्टिमाइज़ेशन के लिए TOMLAB, DAKOTA और OpenMDAO पर एक नज़र डालें।


# 3 संपादित करें: बायेसियन अनुकूलन ईजीओ के समान है:

https://github.com/mwhoffman/pybo

https://github.com/hyperopt/hyperopt

सीमित लाइसेंस:

https://github.com/rmcantin/bayesopt

https://github.com/HIPS/Spearmint


# 2 संपादित करें:

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

एमडीएएस के रूप में दूसरा दृष्टिकोण, कई स्तरों पर कुछ चतुर अनुकूलन के साथ प्रत्यक्ष खोज करना है।

आनुवंशिक दृष्टिकोण आनुवंशिक / प्रकृति में यादृच्छिक रूप से और बिना किसी गारंटी के होते हैं।


# 1 संपादित करें:

TOMLAB MATLAB आधारित उपकरण है जिसमें साहिनिडिस पेपर के अनुसार अनुकूलन की सर्वोत्तम गति / गुणवत्ता है। लेकिन यह महत्वपूर्ण कॉर्पोरेट उपयोग के साथ वाणिज्यिक उपकरण है। मैं इसका उपयोग नहीं कर रहा हूं।

DAKOTA सामान्य अनुकूलन के अलावा अनिश्चितता मात्रा का ठहराव के लिए अधिक अनुरूप है। सी ++ और कुछ विरासत फोरट्रान कोड के आधार पर। हालांकि LGPL लाइसेंस और डाउनलोड के लिए उपलब्ध बायनेरिज़ के तहत, GCC या MSVS / ifort के साथ Win7 पर मेरे अनुभव से कम से कम recompile करना बहुत मुश्किल है। निर्माण के लिए बढ़ावा, गोद, सीमेक पर निर्भरता है। मूल रूप से यह कई ओपन सोर्स सॉल्वरों और कुछ वाणिज्यिक लोगों के लिए एक आवरण है। यह एसएनएल उत्पाद है और सैंडिया एनएल से अन्य परियोजनाओं के साथ मजबूती से एकीकृत है। मैं कुछ IMSL दिनचर्या के बजाय इसे सफलतापूर्वक एकीकृत करने में सक्षम था। साहिनिदिस के पेपर में डाकोटा के साथ बड़े पैमाने पर समानता संभव थी।

OpenMDAO APACHE लाइसेंस के तहत नासा द्वारा पायथन में विकसित अनुकूलन आधारित डिजाइन सॉफ्टवेयर है। मैं वर्तमान में यह कोशिश कर रहा हूँ।


SciComp में आपका स्वागत है! जैसा कि वर्तमान में लिखा गया है, आपकी पोस्ट वास्तव में यह नहीं बताती है कि TOMLAB या OpenMDAO को देखना एक अच्छा विचार क्यों होगा (अन्य उत्तर पहले से ही DAKOTA पर चर्चा करते हैं)। हम उन उत्तरों की तलाश में हैं जो न केवल सिफारिशें प्रदान करते हैं, बल्कि चर्चा करते हैं कि वे सिफारिशें उपयोगी, संभावित नुकसान और इसी तरह क्यों हैं।
ज्योफ ऑक्सीबेरी

मैं अपने जवाब के साथ पहले गया और अब मैंने स्पष्टीकरण जोड़ा।
denfromufa

0

यदि आप 30 रन नहीं दे सकते हैं, तो प्रत्येक एक पैरामीटर को अलग-अलग करके, उन्हें समूहों में भिन्न कर सकते हैं:
उदाहरण के लिए, प्रत्येक 8 अलग-अलग 4 मापदंडों को एक साथ चलाता है, तो सर्वश्रेष्ठ 2 रन / 8 मापदंडों को परिष्कृत करें ...
(मुझे नहीं पता कि कैसे व्यापार करना है जानकारी लाभ बनाम कुल क्रम; बहु-सशस्त्र डाकू ?)


-3

यहां एक कोड है जो मल्टीकोर सीपीयू का उपयोग करके महंगी ब्लैक-बॉक्स फ़ंक्शन को कुशलतापूर्वक अनुकूलित करने की अनुमति देता है।

कोड के पीछे गणित का विवरण यहां दिया गया है


1
यह वही उत्तर है जो आपने इस पोस्ट में दिया है । इसके अलावा, ऐसा लगता है कि यह आपका अपना काम है। यदि यह सच है, तो कृपया अपने उत्तर में स्पष्ट रूप से बताएं।
nicoguaro

क्या आप कागज में वर्णित दृष्टिकोण और सॉफ्टवेयर में लागू किए गए विवरण के बारे में जानकारी दे सकते हैं? उपयोग की जाने वाली विधि क्या है? क्यों अच्छा है? इस दृष्टिकोण में क्या प्रदान किया गया है कि अन्य उत्तर कवर नहीं करते हैं?
nicoguaro

1
इसके अलावा, कृपया उल्लेख करें कि आप इस सॉफ़्टवेयर के लेखक हैं , इसलिए इसे पढ़ने वाले किसी को भी पता चल जाएगा कि आप जानते हैं कि आप क्या बात कर रहे हैं और बी) थोड़ा आंशिक हो सकता है।
ईसाई क्लासन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.