2010-08-13 12 views
12

विकासवादी कंप्यूटिंग में कुछ बहुत परेशान करना यह है कि हल्के ढंग से अलग और ओवरलैपिंग अवधारणा नाटकीय रूप से अलग-अलग नाम चुनते हैं। इस वजह से मेरा नवीनतम भ्रम यह है कि जीन-अभिव्यक्ति-प्रोग्रामिंग कार्टेशियन-जेनेटिक-प्रोग्रामिंग के समान ही दिखती है।जीन अभिव्यक्ति प्रोग्रामिंग और कार्टेशियन जेनेटिक प्रोग्रामिंग के बीच अंतर

  1. (कैसे) ये मौलिक रूप से अलग-अलग अवधारणाएं हैं?
  2. मैंने पढ़ा है कि जीपी निर्देशों का अप्रत्यक्ष एन्कोडिंग एक प्रभावी तकनीक है (जीईपी और सीजीपी दोनों ऐसा करते हैं)। क्या किसी तरह की सर्वसम्मति से पहुंचा है कि अप्रत्यक्ष एन्कोडिंग ने पुराने पेड़ के आधार जीपी को पुराना कर दिया है?

उत्तर

7

ठीक है, ऐसा लगता है वहाँ जीन अभिव्यक्ति प्रोग्रामिंग (GEP) और कार्तीय आनुवंशिक प्रोग्रामिंग (CGP या क्या मैं क्लासिक आनुवंशिक प्रोग्रामिंग के रूप में देखने) के बीच कुछ अंतर है, लेकिन अंतर अधिक यह तुलना में बहुप्रचारित जा सकता है कि वास्तव में होना चाहिए। कृपया ध्यान दें कि मैंने कभी भी जीईपी का उपयोग नहीं किया है, इसलिए मेरी सभी टिप्पणियां सीजीपी के साथ मेरे अनुभव पर आधारित हैं।

सीजीपी में जीनोटाइप और फेनोटाइप के बीच कोई अंतर नहीं है, दूसरे शब्दों में- यदि आप एक सीजीपी के "जीन" को देख रहे हैं तो आप उनकी अभिव्यक्ति को भी देख रहे हैं। यहाँ कोई एन्कोडिंग नहीं है, यानी अभिव्यक्ति वृक्ष जीन ही है।

GEP में जीनोटाइप एक फेनोटाइप में व्यक्त किया जाता है, इसलिए यदि आप जीन को देख रहे हैं तो आप आसानी से नहीं जान पाएंगे कि अभिव्यक्ति कैसा दिख रहा है। जीपी के "आविष्कारक", कैंडीडा फेरेरा ने really good paper लिखा है और कुछ other resources हैं जो पूरी अवधारणा का एक संक्षिप्त अवलोकन देने का प्रयास करते हैं।

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

चुनाव सहित:

  • यादृच्छिक
  • रौलेट व्हील
  • शीर्ष-एन
  • +०१२३५१६४१०६१
  • आधा
  • आदि

टूर्नामेंट आवृत्ति ले:

  • एक बार युग प्रति
  • एक बार हर डेटा उदाहरण
  • पीढ़ी प्रति एक बार
  • प्रति।

टूर्नामेंट संरचना:

  • 3 ले लो, 1 को मारने और अन्य दो के बच्चे से बदल दें।
  • फिटनेस द्वारा टूर्नामेंट में सभी व्यक्तियों को क्रमबद्ध करें, निचले आधे को मार दें और इसे ऊपरी आधे की संतान के साथ प्रतिस्थापित करें (जहां कम खराब फिटनेस और ऊपरी फिटनेस बेहतर है)।
  • यादृच्छिक रूप से टूर्नामेंट से व्यक्तियों को चुनने और अतिरिक्त व्यक्तियों को मारने के लिए चुनते हैं।

जनजाति
एक जनसंख्या जनजातियों कि प्रत्येक-दूसरे की स्वतंत्र रूप से विकसित में विभाजित किया जा सकता है:

  • समय-समय पर, व्यक्ति (ओं) एक जनजाति से एक और जनजाति
  • को ले जाया जाएगा Migration-
  • जनजाति तार्किक रूप से अलग हो गई हैं ताकि वे अलग-अलग वातावरण में चल रहे अपनी अलग-अलग आबादी की तरह हों।

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

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

+0

उस विस्तृत उत्तर के लिए बहुत धन्यवाद! बहुत सराहना की। – Jelle

+0

यह उत्तर सही नहीं है। कार्टेशियन जीपी क्लासिक जीपी के समान नहीं है। कार्टेसियन जीपी भी एक अप्रत्यक्ष प्रतिनिधित्व है (इसी तरह जीईपी के समान), और पेड़-आधारित नहीं है, भले ही आप क्लासिक जीपी पेड़ के समान ग्राफ तैयार करते हैं। – rll

2

सामान्य रूप से, जीईपी जीपी से सरल है। आइए मान लें कि आप अपने प्रोग्राम में निम्नलिखित नोड्स को अनुमति देते हैं: स्थिरांक, चर, +, -, *, /, यदि, ... जीपी के साथ ऐसे प्रत्येक नोड्स के लिए आपको निम्नलिखित ऑपरेशन बनाना होगा: - यादृच्छिक - उत्परिवर्तन - क्रॉसओवर - और शायद अन्य अनुवांशिक ऑपरेटरों के साथ-साथ

ऐसे प्रत्येक नोड्स के लिए जीईपी में केवल एक ऑपरेशन लागू करने की आवश्यकता है: deserialize, जो संख्याओं की सरणी लेता है (जैसे सी या जावा में डबल), और लौटाता है नोड। यह जावा या पायथन जैसी भाषाओं में ऑब्जेक्ट deserialization जैसा दिखता है (अंतर यह है कि प्रोग्रामिंग भाषाओं में deserialization बाइट arrays का उपयोग करता है, जहां यहां हमारे पास संख्याओं के सरणी हैं)। यहां तक ​​कि इस 'deserialize' ऑपरेशन प्रोग्रामर द्वारा लागू नहीं किया जाना चाहिए: इसे एक सामान्य एल्गोरिदम द्वारा कार्यान्वित किया जा सकता है, जैसा कि यह जावा या पायथन deserialization में किया गया है।

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

+0

धन्यवाद iirekm, बहुत अंतर्दृष्टि! – Jelle

2

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

CGP में प्रतिनिधित्व (जीनोटाइप और फेनोटाइप के बीच मैपिंग) अप्रत्यक्ष है, दूसरे शब्दों में, एक सीजीपी जीनोम में सभी जीन घटना में व्यक्त नहीं होंगे (एक अवधारणा जीईपी और कई अन्य लोगों में भी मिलती है)। जीनोटाइप को ग्रिड या नोड्स की सरणी में कोड किया जा सकता है, और परिणामी प्रोग्राम ग्राफ़ केवल सक्रिय नोड्स की अभिव्यक्ति है।

GEP में प्रतिनिधित्व भी अप्रत्यक्ष है, और इसी तरह सभी जीन phenotype में व्यक्त नहीं किया जाएगा। इस मामले में प्रतिनिधित्व पेड़ या सीजीपी से बहुत अलग है, लेकिन जीनोटाइप भी एक कार्यक्रम पेड़ में व्यक्त किए जाते हैं। मेरी राय में जीईपी एक और अधिक सुरुचिपूर्ण प्रतिनिधित्व है, जो कार्यान्वित करने में आसान है, लेकिन कुछ दोषों से भी पीड़ित है जैसे: आपको उचित पूंछ और सिर का आकार मिलना है जो समस्या विशिष्ट है, mnltigenic संस्करण अभिव्यक्ति पेड़ के बीच एक मजबूर गोंद है , और अंततः इसमें बहुत अधिक bloat है।

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

संबंधित मुद्दे

 संबंधित मुद्दे