13

मैं एक जेनेटिक प्रोग्रामिंग (जीपी) सिस्टम लिख रहा हूं (सी में लेकिन यह मामूली जानकारी है)। मैंने साहित्य (कोज़ा, पोली, लैंगडन, बानजाफ, ब्रैमेयर, एट अल) के लॉट पढ़े हैं, लेकिन कुछ कार्यान्वयन विवरण मैंने कभी समझा नहीं है। उदाहरण के लिए:जेनेटिक प्रोग्रामिंग में क्रॉसओवर लागू करना

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

क्यू 1। जीपी में, जीए के विरोध में, जब आप क्रॉसओवर करते हैं तो आप दो माता-पिता का चयन करते हैं, लेकिन क्या आप एक या दो बच्चे बनाते हैं, या क्या आपके पास मुफ्त विकल्प है?

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

Q3। क्या जीपी पर केंद्रित एक वेब फोरम या मेलिंग सूची है? विचित्र रूप से मुझे एक नहीं मिला है। याहू का जीपी समूह लगभग विशेष रूप से घोषणाओं के लिए उपयोग किया जाता है, पोली/लैंगडन फील्ड गाइड फोरम लगभग चुप है, और gamedev.net जैसे सामान्य/गेम प्रोग्रामिंग साइटों पर जीपी चर्चाएं बहुत बुनियादी हैं।

आपकी सहायता के लिए धन्यवाद!

+1

मैं दृढ़ता से [मेटाइरिस्टिक्स के अनिवार्य] (http://cs.gmu.edu/~sean/book/metaheuristics/) पर एक नज़र रखने की अनुशंसा करता हूं। यह मुफ्त में उपलब्ध है (यदि आप एक फॉर्म भरते हैं) और इसमें आनुवंशिक प्रोग्रामिंग, क्रॉसओवर ऑपरेटरों, स्थिर-राज्य मॉडल इत्यादि सहित मेटाएरिस्टिक तकनीकों के विस्तृत स्पेक्ट्रम का एक अवलोकन शामिल है। – zegkljan

उत्तर

8

सबसे पहले, आराम करो।

जीपी में कोई "सही" विधियां नहीं हैं। जीपी विज्ञान की तुलना में अधिक कला है। कई योजनाओं को आजमाएं और सर्वोत्तम काम करने वाले लोगों को चुनें।

प्रश्न 1: 1, 2, या कई। आप चुनते हैं।

प्रश्न 2: बदलें, 1, 2, सब कुछ। या कुछ elitism कोशिश करो।

Q3: आप शायद इन सवालों पर चर्चा b/c कोई सही/सबसे अच्छा जवाब हैं मंचों नहीं मिलेगा। माफ़ कीजिये।

पीएस। मेरे अनुसंधान में, विदेशी वास्तव में कभी नहीं अच्छा प्रदर्शन किया ...

0
  1. रे, कहते हैं, यह ज्यादातर आप पर निर्भर है, लेकिन आम तौर पर एक स्थिर राज्य सेटअप में आप केवल एक ही वंश बनाने जाएगा के रूप में।

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

  3. आप यूएसनेट (और Google Groups) पर comp.ai.genetic को आजमा सकते हैं।

1

यदि आप पाइथन पढ़ सकते हैं, तो आप Pyevolve पर एक नज़र डालना चाहेंगे। मैं मुख्य रूप से जीए पक्ष में शामिल हूं, लेकिन इसमें जीपी के लिए भी समर्थन है। हो सकता है कि आप वहां कुछ संकेत प्राप्त कर सकें।

0

ऐसा लगता है जैसे आपके कुछ प्रश्न आनुवांशिक प्रोग्रामिंग के लिए आवश्यक नहीं हैं; यदि यह सच है, तो हो सकता है कि आप NEAT Users Group पर लोगों से पूछें कि कुछ भाग्य हो।

वे मुख्य रूप से ऑगमेंटिंग टोपोलॉजीज (या एनईएटी) एल्गोरिदम के न्यूरोविवल्यूशन पर चर्चा करते हैं, जो एक आनुवांशिक एल्गोरिदम है जो तंत्रिका नेटवर्क विकसित करने के लिए उपयोग किया जाता है। लेकिन elitism और क्रॉसओवर रणनीतियों जैसे विषयों बहुत सामान्य हैं, और जीए और जीपी एल्गोरिदम दोनों पर लागू कर सकते हैं।

अन्यथा, जैसे दान और रे ने कहा है, इनमें से कई निर्णय किसी विशेष सॉफ्टवेयर और डोमेन के प्रयोग के बाद किए जाते हैं। अलग-अलग समस्याओं के लिए अपना एल्गोरिदम लागू करने का प्रयास करें और यह ध्यान दें कि यह कैसे व्यवहार करता है - थोड़ी देर के बाद, आप शायद काम करने के लिए अंतर्ज्ञान विकसित करेंगे और क्या नहीं।

1

क्यू 1 आपकी पसंद है, लेकिन एकल बच्चा शायद अधिक आम होगा। हर बार जब आप माता-पिता के लॉटरी चयन करते हैं, तो आप चयन दबाव लागू कर रहे हैं, जो आप चाहते हैं।

प्रश्न 2: नकारात्मक टूर्नामेंट चयन बिल्कुल सही दृष्टिकोण है। हां, आबादी के कम फिटनेस सदस्यों को खोने से तेजी से अभिसरण होता है, लेकिन एक बार जब आपकी आबादी समाधान स्थान के कठिन खोज में आती है, तो यह कट-एंड-सूखे नहीं होगा जो टूर्नामेंट/लॉटरी। आप क्या से सावधान रहना है जीन पूल की स्थिरता है; मैं अपने विषमता को ट्रैक करने के लिए जीनोम के एंट्रॉपी की निगरानी करने का सुझाव देता हूं। "elitism निहित है" - ठीक है, हाँ, यह बात है! ;-)

क्यू 3: comp.ai.genetic शायद आपकी सबसे अच्छी शर्त है। कभी-कभी विषय विकास विकास मंच में उठाया जाता है, जैसे Gamasutra।

पीएस जेनेटिक प्रोग्रामिंग सी में?! आप संतान की व्यवहार्यता का आश्वासन कैसे दे रहे हैं? गैर-होम्योनिक भाषा में अनुवांशिक प्रोग्रामिंग करना एक असली चुनौती है।

0

मैं असीमित संख्या में संतान पैदा करूंगा, लेकिन केवल सफलता के आधार पर, और आबादी के पुराने सदस्यों को मरने दें। फिटनेस की कमी से शुरुआती मौत भी हो सकती है। यह सिर्फ एक प्राकृतिक आदेश का पालन करने लगता है।

0
Q1. In GP, as opposed to GA, when you perform crossover you select two parents but 
do you create one child or two, or is that a free choice you have? 

हाँ यह आपकी पसंद है; लेकिन आम तौर पर, यह एक ही माता-पिता के साथ कई व्यक्तियों को बनाने की सलाह नहीं देता है, क्योंकि एक ही माता-पिता द्वारा बनाए गए व्यक्ति के रुझानों में अंतर बहुत सीमित होगा और इससे प्रसंस्करण गति और स्मृति लागत हो सकती है जो अन्य व्यक्तियों पर अलग-अलग रुझान दिखाती है और ऐसे व्यवहार जिनके लिए विश्लेषण की आवश्यकता होती है (लेकिन अगर विकास प्रक्रिया अपने एंडपॉइंट तक पहुंचने के करीब है तो अधिक व्यक्तियों को बनाना कोई समस्या नहीं हो सकती है)।

Q2. In steady state GP... 

सलाह दी जाती है कि आपके द्वारा अपनाई गई फिटनेस फ़ंक्शन द्वारा प्रदान की गई रैंकिंग के आधार पर व्यक्तियों को प्रतिस्थापित किया जाए।

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