"लाइव रेखांकन" - सिल्वरलाइट पर उदाहरण के साथ सेलुलर ऑटोमेटा पर बढ़ते ग्राफ

परिचय




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



और यहां तक ​​कि एक साधारण जिज्ञासु आम आदमी, जैविक रसायन विज्ञान के विवरण के साथ बोझ नहीं है, इस तरह के सवालों को बाईपास नहीं किया जाता है।



यहां एक खिलौना निर्माता होगा, जिसके साथ आप सरल बढ़ते जीव एकत्र कर सकते हैं। फिर, एक अत्यंत सरलीकृत मॉडल बनाया गया है जो जीवन की कई घटनाओं को प्रदर्शित करता है, जो जीवन की संरचना के प्रश्नों के उत्तर के करीब आ सकता है, या कम से कम यह समझने के लिए कि इन उत्तरों को कहां खोजना है।



जी का ग्राफ



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







"बस देखो कि मैं गोभी कैसे बढ़ी!" (सी) सम्राट और डाउनशिफ्टर डायोक्लेटियन



आलेख "लिविंग ग्राफ़" के अवतारों में से एक के बारे में बात करेगा - ग्राफ़ परिनियोजन GUCA (ग्राफ़ अनफ़ॉल्डिंग सेलुलर ऑटोमेटा) के लिए सेलुलर ऑटोमेटन के बारे में। GUA के प्रदर्शन को सीधे ब्राउज़र में सिल्वरलाइट प्लग इन के साथ "महसूस" किया जा सकता है। वेब एप्लिकेशन बढ़ते ग्राफ के मेरे पहले उदाहरणों में से कुछ के छोटे जीवन की कल्पना करता है - दोनों "जेनेटिक इंजीनियरिंग" के स्व-इंजीनियर उत्पाद और आनुवंशिक एल्गोरिथम के "स्वाभाविक रूप से चयनित" रूप।



भले ही प्रारंभिक ग्राफ में केवल एक नोड शामिल होगा, और ग्राफ के सभी उत्पन्न नोड्स में नियम सेट की एक ही प्रतिलिपि होगी, नियम ट्रिगर के प्रत्येक नए पुनरावृत्ति के साथ, संरचनाओं की एक विस्तृत विविधता के विकास का निरीक्षण करना संभव होगा। यह नोटिस करना आसान है कि प्रारंभिक नोड एक बहुकोशिकीय जीव के भ्रूण के समान है, ग्राफ के शेष नोड्स कोशिकाओं के समान हैं, नियम सेट गुणसूत्र के हैं, और नियम स्वयं जीन के हैं।





मूल






और यह सब कृत्रिम तंत्रिका नेटवर्क (एएनएन) के साथ एक आकर्षण के साथ शुरू हुआ , जिसके अध्ययन में GUCA का विचार पैदा हुआ था।



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



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



हम न्यूरोएवोल्यूशनरी तरीकों के बारे में बात कर रहे हैं, जिसमें तंत्रिका नेटवर्क के टोपोलॉजी के निर्माण के लिए आनुवंशिक एल्गोरिदम का उपयोग किया जाता है।



तंत्रिका-विकासवादी तरीके




इस तरह के तरीकों की समीक्षा हाल ही में एक habr पर प्रकाशित हुई थी: [1] habrahabr.ru/blogs/artific_intelligence/84015 ,



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



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



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



तंत्रिका तंत्र के लिए जो ऑब्जेक्ट कंट्रोल सिस्टम (रोबोट, मैनिपुलेटर) की भूमिका निभाते हैं, फिटनेस फ़ंक्शन एक निश्चित वातावरण में नियंत्रण ऑब्जेक्ट की संचालन क्षमता हो सकती है (भूलभुलैया, जब वस्तुओं को संभालना, उड़ान में, लड़ाई में, आदि)



इसके अलावा, अप्रत्यक्ष कोडिंग विधियाँ निम्नलिखित गुण प्रदान करती हैं:



1) प्रतिरूपकता। सरल नियमों के अनुसार भग्न संरचनाओं का पुनरावर्ती निर्माण और कुछ मानक ब्लॉकों की पुनरावृत्ति, शरीर संरचना में तत्व।



२) पूर्णता। किसी भी नेटवर्क (ग्राफ) के लिए, आप एक कोड चुन सकते हैं।



3) अतिरेक। कोड में अनावश्यक डेटा हो सकता है जो डिकोडिंग परिणाम को प्रभावित नहीं करता है।



4) (संदर्भ कोडिंग नियमों के उपयोग के अधीन)



एक। टोपोलॉजी पीढ़ी एक तंत्रिका नेटवर्क में गुजरने वाले संकेतों के आधार पर



ख। उत्थान - स्थानीय क्षति के साथ पुनर्प्राप्ति



समीक्षा [1] से यह देखा जा सकता है कि शोधकर्ताओं के मुख्य प्रयासों का उद्देश्य नेटवर्क टोपोलॉजी कोडिंग के अधिक या कम सफल तरीकों का आविष्कार करना है, न कि न्यूरॉन / नेटवर्क के सिद्धांतों को डिजाइन करना और इसके मापदंडों को कोड करना, जो कि आश्चर्यजनक नहीं है - क्योंकि यह वह टोपोलॉजी है जो पूरे सिस्टम के संचालन को निर्धारित करती है। तंत्रिका नेटवर्क। "



टोपोलॉजी की खेती




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



एक संकीर्ण समस्या पर प्रयासों का एकाग्रता (निर्माण टोपोलॉजी, तंत्रिका नेटवर्क से अमूर्त) अनुमति देगा :



एएनएन (तंत्रों की ऑटो-असेंबली, एक कंप्यूटर नेटवर्क या वायरस में वितरित कंप्यूटिंग के कॉन्फ़िगरेशन, लड़ाकू रोबोटों की बातचीत) के अलावा अन्य क्षेत्रों में व्यापक आवेदन प्राप्त करें



• शोधकर्ता के लिए दृष्टिगत रूप से परिणाम (न केवल अंतिम, बल्कि मध्यवर्ती भी) प्रस्तुत करें, जो कारण-प्रभाव संबंधों को बेहतर ढंग से समझने के लिए एल्गोरिदम विकसित करने में मदद कर सकता है। इसके अलावा, एक दृश्य प्रतिनिधित्व विचारों / समाधानों / मृत सिरों का सुझाव दे सकता है।



टोपोलॉजी कोडिंग के लिए विभिन्न समाधानों की तुलना करना या "न्यूरॉन्स" के विभिन्न डिजाइनों के साथ कोडिंग टोपोलॉजी के लिए सफल समाधानों को जोड़ना अधिक उद्देश्य है। वस्तुनिष्ठ - अर्थात। आवेदन के विशिष्ट विषय क्षेत्र की परवाह किए बिना।



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



इसी समय, उपरोक्त "प्रतिरूपता", "उत्थान" जैसे दिलचस्प गुण - अनुसंधान के लिए उपलब्ध रहेंगे।



हम यह जोड़ सकते हैं कि जानवरों के मस्तिष्क का विकास एक बहुकोशिकीय जीव (अक्ष समरूपता - उपास्थि - रीढ़ - रीढ़ की हड्डी - विषमता - मस्तिष्क के मस्तिष्क संघनन) के आकार के विकास द्वारा प्राप्त परिणाम से उत्पन्न होता है।



इन विधियों में से एक ग्राफ GUCA तैनाती के लिए सेलुलर ऑटोमेटन है, जिसके सिद्धांतों को अगले खंड में वर्णित किया जाएगा।



GUCA ग्राफ सेल्युलर ऑटोमेटा को अनफॉलो करना




जीयूसीए का "जीवित ग्राफ" एक परिमित सेलुलर ऑटोमेटन है जिसमें प्रत्येक नोड राज्यों में से एक है (राज्यों की संख्या परिमित है), और कुछ नियमों के अनुसार दूसरे राज्य में जा सकते हैं, यह दोनों नोड की स्थिति पर और अपने पर्यावरण पर निर्भर करता है। ये नियम सभी नोड्स के लिए समान हैं, समय में स्थिर हैं और एक ही समय में सभी नोड्स के लिए समान रूप से काम करते हैं।



सेलुलर ऑटोमेटन का क्लासिक प्रतिनिधि जीवन खेल है । लिविंग ग्राफ़ और क्लासिक गेम लाइफ और इसकी विविधताओं के बीच मुख्य अंतर यह है कि इंट्रासेल्युलर ऑटोमेटा एक आयताकार विमान पर स्थित नहीं है, लेकिन कनेक्टेड पड़ोसियों की एक चर संख्या के साथ ग्राफ के नोड्स में स्थित हैं।



उसी समय, समीक्षा [1] में वर्णित नेटवर्क टोपोलॉजी के अधिकांश कोडिंग तरीकों के विपरीत, "लाइव काउंट" GUCA निम्नलिखित सिद्धांतों को स्वीकार करता है:



• लागू नियमों का प्रासंगिक चयन



• केवल स्थानीय और एक-चरण परिवर्तन



• न केवल जन्म बल्कि मृत्यु भी



अजीब तरह से, ये सभी विशेषताएं शुरू में "लाइफ" सेलुलर मशीन में निहित थीं, हालांकि उन्हें नियमों और संचालन के सेट की लंबी खोज के परिणामस्वरूप चुना गया था जो समस्या को हल करते हैं

ग्राफ की तैनाती सबसे सरल और पूर्ण है।



हालांकि, निष्कासन ऑपरेशन को व्याख्यान पाठ्यक्रम के अभ्यासों में से एक में प्रस्तावित किया गया था [2]



सिद्धांतों




तो, जीयूसीए के "लाइव ग्राफ" में, नोड राज्यों में से एक में है । और ऐसे नियम हैं जिनके द्वारा, ऑपरेशन की कुछ शर्तों के तहत, संचालन ग्राफ पर किया जाता है।



"लिविंग ग्राफ" के कुछ उदाहरणों के लिए उपरोक्त "मेटा-नियमों" को पूरा करने वाले नियमों का एक सेट निम्नलिखित सूची है:



1. "यदि नोड राज्य ए में है, तो राज्य बी में एक लिंक नोड बनाएं"



2. "यदि नोड राज्य बी में है, और लिंक की संख्या दो से कम है, तो राज्य बी में एक जुड़ा नोड बनाएं"



3. "यदि नोड राज्य बी में है और पिछली स्थिति बी थी, तो राज्य सी पर जाएं"



4. ...



एक राज्य एक परिमित सेट के तत्वों में से एक है। इसे वर्णमाला के एक नंबर या अक्षर - A, B, C, D,… से दर्शाया जा सकता है।



संचालन । यह स्पष्ट है कि ग्राफ़ पर कई प्रकार के ऑपरेशन किए जा सकते हैं - एक अलग समूह के साथ नोड्स को जोड़ें / अलग करें, और नोड्स को संयोजित करें। मैं चार आदिम परिचालनों पर बस गया, जो, ऐसा लगता है कि किसी भी मनमाने ढंग से जटिल संरचना को पुन: पेश करने के लिए काफी होगा।



• नोड का राज्य एक्स में संक्रमण (इस प्रकार, राज्य एक्स ऑपरेशन का ऑपरेटर है)



• वर्तमान एक के साथ जुड़े एक नए नोड का जन्म। नए नोड X की स्थिति



• राज्य X में एक नोड को निकटतम असंबद्ध नोड से जोड़ना



• राज्य एक्स में एक नोड को डिस्कनेक्ट करना



अब नियम में ऑपरेशन को निर्धारित करने वाली शर्तों के बारे में। मैं नोड की वर्तमान स्थिति और इस नोड और अन्य नोड्स के बीच कनेक्शन की संख्या के आधार पर सीमित नहीं था। इन स्थितियों में मैंने नोड की पिछली स्थिति पर निर्भरता जोड़ी और नोड के माता-पिता / डिवीजनों की संख्या पर निर्भरता (आखिरकार, प्रत्येक नोड, संचालन की सूची के अनुसार, एक और केवल एक माता-पिता नोड द्वारा उत्पन्न होती है)।



नियम और शर्तें:



• नोड राज्य X में है



• नोड की पिछली स्थिति Y है



• नोड कनेक्शन की संख्या - C1 से C2 तक



• नोड के पूर्वजों की संख्या (जिनसे यह पैदा हुआ था) - पी 1 से पी 2 तक।



पूरे जीव और / या उसके व्यक्तिगत मॉड्यूल के विकास को रोकने के लिए अंतिम स्थिति और नोड डिवीजनों ( टेलोमेरेस का एक एनालॉग) की संख्या का काउंटर शुरू किया जाता है।



मैंने ऑपरेशन "राज्य नोड में सभी नोड्स को जोड़ने", "एक नोड की मौत" पर भी विचार किया - लेकिन मैंने उन्हें अनावश्यक माना। मैं "डिवीजन काउंटर को रीसेट करना" ऑपरेशन शुरू करने के बारे में भी सोच रहा हूं। मैं ध्यान देता हूं कि सभी ऑपरेशन स्थानीय हैं और नोड के चारों ओर "घूमते हैं" (केवल नोड या इसके तत्काल वातावरण को बदल दिया जाता है)।



हालांकि, शायद पाठक नियमों के अधिक सुसंगत प्रणाली को खोजने में सक्षम होगा।



व्याकरण के नियम




GUCA नियमों को संक्षिप्त रूप में भी लिखा जा सकता है, एक पत्र के साथ वर्तमान स्थिति का संकेत, कोष्ठक में एक पत्र के साथ पिछले, एक "सी" (कनेक्शन से), "पी" (माता-पिता से) के साथ माता-पिता की संख्या के साथ पड़ोसियों की संख्या। यदि पिछली स्थिति को स्थिति में अनदेखा किया जाता है, तो हम कोष्ठक में डैश का संकेत देंगे। एक औपनिवेशिक प्रतीक के साथ शर्तों से संचालन नियमों को अलग करें, और संभव संचालन को निम्नानुसार निरूपित करें:



• दूसरे राज्य एक्स के लिए संक्रमण का संचालन एक्स द्वारा दर्शाया गया है



• कनेक्टेड नोड बनाने की कार्रवाई को ++ X द्वारा दर्शाया गया है



• नोड X से जुड़ने की क्रिया को + X द्वारा निरूपित किया जाता है



• नोड X से डिस्कनेक्ट करने के संचालन को –X द्वारा चिह्नित किया जाता है



फिर, "जीवित ग्राफ़" के कुछ उदाहरणों के लिए, व्याकरण का उपयोग करते हुए नियम लिखा जाएगा:



1. ए (ए), पी = 0: ++ बी

2. बी (-), सी <2: ++ बी

3. बी (बी): सी

4. ए (ए): जी

5. सी (बी), सी = 1: जी

6. जी (जी), सी <5: एच



यदि ग्राफ का शुरुआती नोड "ए" स्थिति में है, तो नियमों को लागू करने के लगातार 12 पुनरावृत्तियों के बाद, हमें "फिंगर्ड डंबल" मिलेगा:



'जीनिंग डम्बल' और इसके जीन मैप्स के सशर्त प्रदर्शन की गणना करें।



चित्रा गणना "Fingertip dumbbell" और इसके जीन मानचित्र के सशर्त प्रदर्शन।



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



इसके बाद, जब ग्राफ विमान पर और जीन मैप के सशर्त मानचित्र पर प्रदर्शित होता है, तो लाल राज्य ए, गुलाबी - बी, हरा - सी, रास्पबेरी - जी इंगित करता है।



"उंगली खींची डम्बल" से जीन 5 को बंद करके, आप एक "फ्रीक" - एक "साधारण हाथ" बना सकते हैं:



गणना 'साधारण हाथ'



यदि आप जीन को वापस चालू करते हैं, तो दूसरा "हाथ" वापस बढ़ेगा।



इस प्रकार, सरल नियमों का एक सेट ग्राफ के टोपोलॉजी को निर्धारित कर सकता है। सामान्यतया, ग्राफ टोपोलॉजी न केवल नियमों के सेट और उसके नोड (एस) की प्रारंभिक स्थिति से निर्धारित होता है, बल्कि कुछ वैश्विक प्रतिबंधों द्वारा भी - उदाहरण के लिए, पुनरावृत्तियों की अधिकतम संख्या या नोड कनेक्शन की अधिकतम संभव संख्या।



विचारों की जाँच करना




यह सुनिश्चित करने का एक तरीका है कि ऊपर वर्णित नियमों की प्रणाली किसी भी टोपोलॉजी के रेखांकन के निर्माण के लिए पर्याप्त है, निर्माण के लिए "नियंत्रण समस्याओं" को हल करना है। एक विशेष आकृति के बारे में सोचते हुए, एक "जीन" के साथ आने की कोशिश करें, जिससे यह पैदा होगा। और यदि गर्भित आकृति किसी भी तरह से नहीं बनाई जा सकती है, तो नियमों की प्रणाली न केवल बढ़ते ग्राफ के लिए, बल्कि एक जटिल कृत्रिम तंत्रिका नेटवर्क के निर्माण के लिए भी उपयुक्त होने की संभावना नहीं है।



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



इन कार्यों में से कुछ बेहद कठिन (लंबे) थे और विश्वसनीय नहीं थे (उत्तर अक्सर सहमत नहीं थे) को हल करने के लिए मन में या कागज पर, और इन पहले प्रयोगों का संचालन करने के लिए, हमें खुद को एक "प्रयोगात्मक सेटअप" के साथ बांटना पड़ा।



पायलट इंस्टॉलेशन (सिल्वरलाइट एप्लिकेशन)




इस तरह की एक प्रायोगिक स्थापना एक सॉफ्टवेयर एप्लिकेशन थी जो आपको "जेनेटिक कोड" और प्लेबैक मशीन को डीबग करने की अनुमति देती है। इसके अलावा, इसकी मदद से आप कर सकते हैं:



• ग्राफ वृद्धि प्रक्रिया की कल्पना करें,



• ग्राफ वृद्धि के दौरान गुणसूत्र और जीन गतिविधि के एक रंग "मानचित्र" को नेत्रहीन रूप से प्रदर्शित करें



• देखें कि किसी विशेष जीन को बंद करने या "जीवित ग्राफ़" को काटने का क्या परिणाम होगा।



"प्रयोगात्मक सेटअप" का सिल्वरलाइट डेमो संस्करण http://roma.goodok.ru/guca/GUCA_DemoSL.html पर उपलब्ध है



'लाइव ग्राफ' के लिए प्रायोगिक एनसीआर



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



ग्राफ विस्तार शुरू करने के लिए , आपको दाईं ओर "नियंत्रण कक्ष" पर ड्रॉप-डाउन सूची से उदाहरण (नमूना चुनें) का चयन करना होगा और प्रारंभ बटन ("प्रारंभ") पर क्लिक करना होगा।



काली पृष्ठभूमि के साथ केंद्रीय क्षेत्र में, एक भ्रूण एकल नोड से इसकी वृद्धि की प्रक्रिया में एक ग्राफ प्रदर्शित किया जाएगा। नोड्स के विभिन्न राज्यों को इसी रंग में प्रदर्शित किया जाता है। आप प्रदर्शन के पैमाने और उपस्थिति को बदल सकते हैं, या प्रक्रिया के विवरण पर विचार करने के लिए ग्राफ के विकास को धीमा कर सकते हैं।



आप न केवल ग्राफ़ के विकास और जीवन का निरीक्षण कर सकते हैं, बल्कि एक "स्केलपेल" ("नाइफ़" स्विच) या एक विशेष जीन को बंद करके, "शैतान" को जन्म देते हुए, एक "घातक परिणाम" या "कैंसर की सूजन" को दूर करके इस प्रक्रिया में हस्तक्षेप कर सकते हैं



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



एक व्यक्ति "जीन" की आयत पर माउस को इंगित करते हुए, आप पाठ के रूप में जीन द्वारा एन्कोड किए गए नियम के डिकोडिंग को देख सकते हैं, और माउस बटन पर क्लिक करके, चयनित जीन को बंद (या चालू करें) कर सकते हैं।



इस लेख में मैं "प्रयोगशाला सेटअप" डिवाइस के विवरण पर ध्यान केंद्रित नहीं करूंगा, हालांकि इसका "असेंबली" स्वयं एक बहुत ही दिलचस्प व्यवसाय था - गणितीय सिद्धांत, ज्यामिति, आदि के संख्यात्मक रूप से हल करने वाले गणित, ज्ञान और अनुभव के अलावा। इसके अलावा, इसका आनुवंशिक "स्रोत" कोड स्वयं विकास का परिणाम है और इसमें दूर के पूर्वजों की विरासत शामिल है - आखिरकार, डेल्फी 7.0 पर पहला संस्करण और डिजाइन निर्णय लागू किया गया था। आप यह भी कह सकते हैं कि यह मेरी पहली "हेलो वर्ल्ड!" सिल्वरलाइट पर है। WPF प्लेटफॉर्म। मैं केवल QuickGraph (रेखांकन और एल्गोरिदम) और AForge (आनुवंशिक एल्गोरिथम) पुस्तकालयों के उपयोग पर ध्यान देता हूं।



सबसे सरल उदाहरण हैं




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



"हेअर सर्कल"




गिनती 'बालों वाली मंडली'



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



अंदर से बढ़ते हुए "जीव" शुरू करना, कोई यह देख सकता है कि नए किनारों के सम्मिलन के चक्रीय पुनरावृत्ति के परिणामस्वरूप सर्कल के अलग-अलग खंड कैसे दिखाई देते हैं।



उंगली परिधि (हाइब्रिड)




अगर हम "उँगलियों के डंबल" और "हेअर सर्कल" के जीन लेते हैं और उन्हें "भ्रूण" के एक गुणसूत्र में मिलाते हैं, तो एक हाइब्रिड उसमें से निकलेगा, डंबल के "फ़िंगरनेस" और "राउंड" दोनों गुणों को विरासत में मिलेगा:



हाइब्रिड 'फिंगर्टिप डंबल' और 'हेमी सर्कुलेशन'



चित्रा हाइब्रिड "उंगली के आकार का डम्बल" और "बालों की परिधि" में सामान्य गुण हैं



कृपया ध्यान दें कि ग्राफ परिनियोजन की पूरी प्रक्रिया के दौरान "उंगली के आकार के डम्बल" के कुछ जीन निष्क्रिय रहते हैं (जीन गतिविधि जीन मैप पर हरे रंग में हाइलाइट की जाती है)।



"बुश" (भग्न)




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



आदिम भैंस



एक आदिम भग्न केवल जीन की एक जोड़ी द्वारा परिभाषित किया गया है।



Kokoshnik (आयताकार जाल)




यह और अगले दो अजीब आकार एक वर्ग के रूप में एक वर्ग ग्रिड के निर्माण के मेरे प्रयासों का परिणाम है।



'कोकसोनिक' - एक आयताकार स्टूडियो का विस्तार



Kokoshnik ड्राइंग - एक आयताकार ग्रिड का विस्तार



जीन की एक जोड़ी को बदलकर, आप एक मनमाने ढंग से बड़े (और छोटे) ग्रिड विकसित कर सकते हैं। आप चाकू से छेद बना सकते हैं। जीन 13 "O (O): + L" को बंद करने का प्रयास करें और तैनाती के बाद इसे चालू करें।



अजीब चित्रा 1 और अजीब चित्रा 2




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



अजीब आंकड़ा 1



फसल के बाद चित्रा "अजीब आंकड़ा"



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



अजीब आंकड़ा 2



अजीब चित्रा 2 - अजीब चित्रा 1 के एक करीबी रिश्तेदार - सिर्फ एक जीन में भिन्न होता है



"प्रक्रियाओं के साथ षट्कोण" (विकास का परिणाम)




इस आंकड़े के 10 जीन प्राप्त करने के लिए आनुवंशिक एल्गोरिथ्म के हजारों पुनरावृत्तियों को लिया गया। रूसी में अनुवादित फिटनेस फ़ंक्शन कुछ इस तरह था: "चेहरे की संख्या दो के करीब, और डिग्री 1 से छह के नोड्स की संख्या और डिग्री 3 से छह के नोड्स की संख्या और जीन की संख्या शून्य करने के लिए, ग्राफ को जीवित करने का अधिक से अधिक मौका" (नोड डिग्री - संख्या लिंक)



इस प्रजाति का विकास कई चरणों से गुजरा है: एक त्रिकोण, प्रक्रियाओं के साथ एक वर्ग, अनियमित प्रक्रियाओं के साथ छह वर्ग और, अंत में, सही एक। खुलासा करने की प्रक्रिया को धीमा करते हुए, आप देख सकते हैं कि आकृति बनाने के लिए क्या समाधान विकास पाया गया।



पत्तियों के साथ षट्कोण



चित्रा "पत्तियों" के साथ हेक्सागोन - आनुवंशिक एल्गोरिथ्म का परिणाम



निष्कर्ष




इसलिए, हमने देखा कि कैसे परिमित राज्य मशीनों और रेखांकन जैसी अमूर्त वस्तुओं की मदद से, ऐसे सिस्टम का निर्माण संभव है जो मनोरंजक रूप से बहुकोशिकीय जीवित जीवों से मिलते जुलते हैं, जो "जीवित रेखांकन" अंतर्निहित सिद्धांतों की व्यापकता को प्रदर्शित करते हैं और जीवित चीजों के ज्यामितीय आकृतियों के गठन के कानूनों में।



हालांकि, इसका मतलब यह नहीं है कि हमने जीवन के रहस्यों को प्रकट किया है। इसका सिर्फ यह अर्थ है कि आप आगे बढ़ सकते हैं: "लिविंग ग्राफ" के विकास के पैटर्न का पता लगाने के लिए। मुझे आपको याद दिलाना है कि डेमो एप्लिकेशन में हमने "ओटोजेनेसिस" और विकास का परिणाम देखा, न कि केवल विकास।



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



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



यह भी दिलचस्प होगा कि आदिम रोबोट के स्वयं-व्यवस्थित कॉलोनी के रूप में रहने वाले रेखांकन का एक भौतिक अवतार बनाया जाए, जिसमें फर्मवेयर में समुदाय के आनुवंशिक कोड को सीवन किया जाता है।



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



साहित्य




[१] "तंत्रिका नेटवर्क के विकास के लिए तरीकों का अवलोकन" http://habrahabr.ru/blogs/artific_intelligence/84015/



[२] "मॉडलिंग और अनुकूलन के लिए विकासवादी संगणना" डैनियल ऐशलॉक , १२ जनवरी २००४ http: //orion.math। iastate.edu/danwell/ma378/



UPDATE ने xml से "जीनोम" डाउनलोड करने की क्षमता जोड़ी। उदाहरण फ़ाइल: "अजीब आंकड़ा 1" जीनोमअब आप अपने ग्राफ को बढ़ाने की कोशिश कर सकते हैं, अपने विचारों की जांच कर सकते हैं ... त्रुटियों को ढूंढ सकते हैं, अंत में।

अद्यतन 2 मैंने रिलीज़ बिल्ड के साथ स्रोत (1.8Mb) पोस्ट किया है



All Articles