8

मैं चर के एक त्वरण की लागत को कम करने के लिए एक ढाल वंश अनुकूलन चलाने के लिए देख रहा हूँ। मेरा कार्यक्रम बहुत कम्प्यूटेशनल रूप से महंगा है, इसलिए मैं जीडी के तेज कार्यान्वयन के साथ एक लोकप्रिय पुस्तकालय की तलाश में हूं। अनुशंसित पुस्तकालय/संदर्भ क्या है?सी ++ लाइब्रेरी में तेज़ ढाल-मूल कार्यान्वयन?

+0

_fast_ क्या होगा? गैर सटीक? पिछले प्रश्नों के लिए कैश किए गए उत्तर? या किसी अन्य प्रकार के मानदंड? – sarnold

+0

@ कर्नाल्ड ट्रू। गैर-सटीक ठीक है, मुझे वैश्विक इष्टतम हिट करने की आवश्यकता नहीं है।मुझे बस ऐसा कुछ चाहिए जो यादृच्छिक खोज से बेहतर परिणाम प्राप्त कर सके :) मैं उस समय के साथ खेलना चाहता हूं जब मैं इसे समय/सुधार व्यापार को देखने के लिए दौड़ने की अनुमति देता हूं। – Jim

+0

आपका कार्यान्वयन धीमा क्यों है? – Jacob

उत्तर

9

GSL एक महान (और मुफ्त) लाइब्रेरी है जो पहले से ही गणितीय और वैज्ञानिक रुचि के सामान्य कार्यों को लागू करती है।

आप पूरे reference manual online के माध्यम से देख सकते हैं। चारों ओर पोकिंग, this दिलचस्प दिखने लगते हैं, लेकिन मुझे लगता है कि हमें समस्या के बारे में और जानना होगा।

+1

जीएसएल संदर्भ में सूचीबद्ध उन वैकल्पिक एल्गोरिदम conjugate/biconjugate ढाल विधियों हैं, और जब तक आपका डेटा "अच्छी तरह से व्यवहार" होता है तब तक ग्रेडियेंट वंश से बेहतर प्रदर्शन देना चाहिए। –

+2

और यदि आप संख्यात्मक रूप से फ़ंक्शन मानों से अपने डेरिवेटिव की गणना कर रहे हैं तो आप शायद इसके बजाय इसे चाहते हैं: http://www.gnu.org/software/gsl/manual/html_node/Multimin-Algorithms-without-Derivatives.html –

+0

यह वास्तव में एक अच्छा जवाब की तरह दिखता है, लेकिन मुझे वीएस -2010 (पिक्य, मुझे पता है ...) – Jim

2

CPLEX का प्रयास करें जो छात्रों के लिए मुफ्त में उपलब्ध है।

4

इस तरह के अनुकूलन कार्य के लिए सबसे सम्मानित पुस्तकालयों में से एक NAG libraries है। इन्हें विश्वविद्यालयों और उद्योगों में दुनिया भर में उपयोग किया जाता है। वे सी/फोरट्रान के लिए उपलब्ध हैं। वे बहुत ही मुक्त हैं, और केवल न्यूनतमकरण कार्यों की तुलना में बहुत अधिक हैं - बहुत से सामान्य संख्यात्मक गणित शामिल हैं।

वैसे भी मुझे संदेह है कि इस पुस्तकालय की आवश्यकता के लिए अधिक है। लेकिन यहां कम से कम भागों हैं: Local Minimisation और Global Minimization

+0

यह लाइब्रेरी भी वास्तव में अच्छी लगती है, लेकिन "बहुत गैर-मुक्त" भाग मुझे – Jim

4

ऐसा लगता है कि आप कम करने के तरीकों के लिए बिल्कुल नए हैं। जब भी मुझे संख्यात्मक तरीकों का एक नया सेट सीखने की आवश्यकता होती है, तो मैं आमतौर पर Numerical Recipes देखता हूं। यह एक पुस्तक है जो क्षेत्र में सबसे आम तरीकों, उनके व्यापारिक कार्यों, और (महत्वपूर्ण रूप से) अधिक जानकारी के लिए साहित्य में कहां देखना है, का एक अच्छा अवलोकन प्रदान करता है। यह आमतौर पर नहीं है जहां मैं रुकता हूं, लेकिन यह अक्सर एक उपयोगी प्रारंभिक बिंदु है।

उदाहरण के लिए, यदि आपका कार्य महंगा है, तो आपका लक्ष्य अभिसरण की आवश्यकता को कम करने के लिए मूल्यांकन की संख्या को कम करना है। यदि आपके पास ढाल के लिए विश्लेषणात्मक अभिव्यक्तियां हैं, तो एक ढाल-आधारित विधि शायद आपके लाभ के लिए काम करेगी, यह मानते हुए कि कार्य और उसके ढाल रुचि के क्षेत्र में अच्छी तरह से व्यवहार (एकवचन की कमी) हैं।

यदि आपके पास विश्लेषणात्मक ग्रेडियेंट नहीं हैं, तो आप downhill simplex जैसे दृष्टिकोण का उपयोग करने से लगभग हमेशा बेहतर होते हैं जो केवल फ़ंक्शन का मूल्यांकन करता है (इसके ग्रेडियेंट नहीं)। संख्यात्मक ग्रेडियेंट महंगा हैं।

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

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

वास्तविक कोड के संदर्भ में, आप अन्य पुस्तकालयों के अलावा NETLIB पर बहुत अच्छी दिनचर्या पा सकते हैं। अधिकांश दिनचर्या फोरट्रान 77 में हैं, लेकिन सभी नहीं; उन्हें सी में बदलने के लिए, f2c काफी उपयोगी है।

+1

का उपयोग करने के बारे में थोड़ा सा झुकाव बनाता है, फोर्टन फ़ंक्शंस का उपयोग करने पर एक अतिरिक्त नोट यह है कि आमतौर पर सी और फोर्टन कोड को लिंक करना बहुत आसान होता है। विशेष रूप से अच्छी तरह से संरचित फोर्टन पुस्तकालयों। –