2010-05-18 15 views
7

मैं कुछ ऑपरेशनल रिसर्च प्रोजेक्ट में शामिल होने के लिए कुछ जेनेटिक एल्गोरिदम जोड़ना चाहता हूं। वर्तमान में हमारे पास एक प्रोग्राम है जो कुछ शेड्यूलिंग को अनुकूलित करने में सहायता करता है और हम आनुवांशिक एल्गोरिदम के रूप में कुछ ह्यूरिस्टिक्स में जोड़ना चाहते हैं। सी ++ में जेनेरिक जेनेटिक प्रोग्रामिंग/एल्गोरिदम के लिए कोई अच्छी पुस्तकालय हैं? या आप अनुशंसा करेंगे कि मैं सिर्फ अपना कोड दूं?सी ++ में जेनेटिक प्रोग्रामिंग, लाइब्रेरी सुझाव?

मुझे यह जोड़ना चाहिए कि जब मैं सी ++ में नया नहीं हूं, तो मैं इस तरह के गणितीय ऑप्टिमाइज़ेशन काम को सी ++ में करने के लिए बिल्कुल नया हूं क्योंकि जिस समूह के साथ मैंने पहले काम किया था, वह स्वामित्व अनुकूलन पैकेज का उपयोग करने के लिए प्रतिबद्ध था।

हमारे पास एक फिटनेस फ़ंक्शन है जो मूल्यांकन करने के लिए काफी कम्प्यूटेशनल रूप से गहन है और हमारे पास समानांतर कोड पर इसे चलाने के लिए क्लस्टर है जो अत्यधिक वांछनीय है।

तो सी ++ इस के लिए एक अच्छी भाषा है? यदि नहीं, तो कृपया कुछ अन्य लोगों की सलाह दें क्योंकि मैं जीवन को आसान बनाता हूं, इसलिए मैं एक और भाषा सीखना चाहता हूं।

धन्यवाद!

+0

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

+0

एक संभावित डुप्लिकेट: http://stackoverflow.com/questions/687404/what-genetic-algorithm-programming-library-do-you-use – Kiril

+0

@ डेरिक, बहुत रोचक लगता है, क्या आपके पास अपनी परियोजना के लिए एक वेबपृष्ठ है? – shuttle87

उत्तर

4

मैं आपकी खुद की रोलिंग की अनुशंसा करता हूं। जीपी में 9 0% काम जीनोटाइप को कोडिंग कर रहा है, यह कैसे संचालित होता है, और फिटनेस गणना। ये वे भाग हैं जो हर अलग समस्या/परियोजना के लिए बदलते हैं। वास्तविक विकासवादी एल्गोरिदम भाग आमतौर पर काफी सरल होता है।

वहां कई जीपी पुस्तकालय हैं (http://en.wikipedia.org/wiki/Symbolic_Regression#Implementations)। हालांकि मैं इन्हें उदाहरण और संदर्भ के रूप में उपयोग करूंगा।

सी ++ जीपी के लिए एक अच्छा विकल्प है क्योंकि वे बहुत कम्प्यूटेशनल गहन होते हैं। आमतौर पर, फिटनेस फ़ंक्शन बाधा है, इसलिए कम से कम इस भाग को संकलित/अनुकूलित करने के लिए उपयुक्त है।

+0

मैंने स्क्रैच से अपना खुद का कोडिंग समाप्त कर दिया, निश्चित रूप से एक दिलचस्प सीखने का अनुभव था। अगला और संभावित मुश्किल कार्य कोड को parralelize करना होगा। – shuttle87

+1

यह एक भयानक जवाब है। आप एमपीआई संचार प्रोटोकॉल के बारे में दुःस्वप्न खत्म कर देंगे, जब इसे GAUL में अंतर्निहित किया जाएगा तो आपको इसे लागू करना होगा। –

0

मैं सुझाव है कि आप matlab अनुकूलन टूलकिट में एक नजर है - यह GAs out of the box के साथ आता है, आप केवल बकवाद फिटनेस फंक्शन (और एक समारोह inital आबादी अंत में उत्पन्न करने के लिए) कोड करने के लिए और मेरा मानना ​​है कि matlab कुछ सी ++ अंतर है ताकि आप कर सकते थे कोड जो आप सी ++ में काम करते हैं। मैं इसे अपने प्रयोगों के लिए उपयोग कर रहा हूं और एक बहुत अच्छी सुविधा यह है कि आपको बॉक्स के बाहर भी सभी प्रकार के चार्ट मिलते हैं।

ने कहा - यदि आपका उद्देश्य आनुवंशिक एल्गोरिदम के बारे में जानना है तो आप इसे कोडिंग से बेहतर कर सकते हैं, लेकिन यदि आप केवल प्रयोग मैटलैब और सी ++ (या यहां तक ​​कि केवल मैटलैब) चलाने के लिए एक अच्छा विकल्प है।

+0

सुझाव के लिए धन्यवाद, हालांकि मुझे संदेह है कि मैं मुफ्त सॉफ्टवेयर नहीं होने के कारण मैटलैब का उपयोग करूंगा। – shuttle87

+0

यह एक अच्छा मुद्दा है - एफवाईआई छात्र संस्करण ऑप्टिमाइज़ेशन टूलकिट के लिए 89 $ + 1 9 $ है, जो बहुत खराब नहीं है – JohnIdol

+0

यह इतना नहीं है कि मैटलैब लाइसेंस इतना अधिक खर्च करता है, बल्कि मेरे पास कोड पैकेजिंग पर प्रतिबंध है। Matlab लाइसेंस पर कोई प्रतिबंध नहीं थे मैं निश्चित रूप से ऐसा करेंगे। – shuttle87

1

मैं GAUL

का उपयोग यह सब आप चाहते हैं के साथ एक सी पुस्तकालय है।
(pthread/कांटा/OpenMP/एमपीआई)
(विभिन्न विदेशी/उत्परिवर्तन समारोह)
(गैर जीए अनुकूलन: हिल-चढ़ाई, समुद्री मील दूर सिंप्लेक्स, नकली annealling, तब्बू, ...)

क्यों निर्माण अपने जब ऐसे शक्तिशाली उपकरण होते हैं तो अपनी लाइब्रेरी ???

1

मैंने इसे अभी तक व्यक्तिगत रूप से उपयोग नहीं किया है, लेकिन Age Layered Population Structure (ALPS) विधि का उपयोग मानव प्रतिस्पर्धी परिणामों को उत्पन्न करने के लिए किया गया है और किसी न किसी फिटनेस परिदृश्य में इष्टतम समाधान खोजने में कई लोकप्रिय तरीकों से बेहतर प्रदर्शन किया गया है। इसके अतिरिक्त, लिंक में C++ FTW में स्रोत कोड शामिल है।