2009-12-11 3 views
9

मेरे ब्लॉग पर एक लिंक डालने का मेरा इरादा नहीं होगा, लेकिन मेरे पास वास्तव में इसका अर्थ स्पष्ट करने के लिए कोई और तरीका नहीं है। लेख काफी लंबा है, और यह तीन भागों में है (1, 2, 3), लेकिन यदि आप उत्सुक हैं, तो यह पढ़ने योग्य है।कोड बैक्टीरिया: गणितीय व्यवहार विकसित करना

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

अब, यह बात सिर्फ एक खिलौना है। मेरे पास बर्बाद करने का समय था और मैं अपनी जिज्ञासा को पूरा करना चाहता था। हालांकि, मुझे लगता है कि कुछ, अनुसंधान के मामले में, बना दिया गया है ... मैं पहिया यहाँ पुनर्रचना कर रहा हूँ, मुझे आशा है कि। क्या आप प्रोग्राम किए गए जैसे सिलिक बैक्टीरिया बनाने में अधिक गंभीर प्रयासों से अवगत हैं?

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

+5

नहीं, यह स्पष्ट रूप से एक GA है। आप एक स्कोरिंग फ़ंक्शन के विरुद्ध एक पैरामीटर (निष्पादित करने के लिए कोड का ऑपोड प्रतिनिधित्व) अनुकूलित कर रहे हैं (चाहे वह कोड आपके द्वारा इच्छित आउटपुट उत्पन्न करता हो या नहीं)। –

+1

अच्छी तरह से, वास्तव में, यदि आप पैरामीटर के रूप में कोड पर विचार ... तुम पूरी तरह से ठीक कह रहे हैं :) बेशक –

+1

यह आनुवंशिक एल्गोरिथम का एक विशेषज्ञता (GA) है, लेकिन इस विशेषज्ञता आनुवंशिक प्रोग्रामिंग (जीपी) के रूप में जाना जाता है, के रूप में सही ढंग से नीचे लिखा हुआ। – MaD70

उत्तर

10

यदि आप कोड को अनुकूलित कर रहे हैं, तो शायद आप genetic programming में व्यस्त हैं?

2

मुफ्त उपयोगिता Eureqa इस अर्थ में समान है कि बहुविकल्पीय इनपुट डेटा के आधार पर फिटिंग प्रतीकात्मक कार्यों (सरल रैखिक प्रतिगमन आदि से अधिक जटिल) बना सकते हैं। लेकिन, यह कार्यों के साथ आने के लिए जीए का उपयोग करता है, इसलिए मुझे यकीन नहीं है कि यह वही है जो आपके मन में था।

यह कैसे काम करता है के सामान्य विचार के टूटने के लिए "Download Your Own Robot Scientist" article on Wired देखें।

+0

यह संबंधों का अनुमान लगाने के लिए एक उपकरण की तरह लगता है ... पीसीए के प्रकार से जुड़े एक तर्क के साथ। –

1

क्या आप Core Wars से परिचित हैं? मुझे याद है कि इस गेम के लिए कई कोड डेवलपर लिखे गए थे जिनमें कुछ सफलता थी। उदाहरण के लिए, MicroGP++ एक असेंबली कोड जनरेटर है जिसे कोर वॉर्स असेंबली भाषा (साथ ही वास्तविक समस्याओं के लिए भी लागू किया जा सकता है!) पर लागू किया जा सकता है।

2

अच्छा लेख, मैं कहूंगा कि आप, "जीन अभिव्यक्ति प्रोग्रामिंग" के बजाय "आनुवंशिक प्रोग्रामिंग" की तुलना के बारे में बात कर रहे हैं btw।

+0

जीईपी के बारे में संदेह पर विकिपीडिया पर अपने लेख का टॉक पेज देखें: http://en.wikipedia.org/wiki/Talk:Gene_expression_programming – MaD70