रैखिक आनुवंशिक प्रोग्रामिंग


 * रैखिक आनुवंशिक प्रोग्रामिंग रैखिक प्रोग्रामिंग से असंबंधित है।

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

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

एलजीपी कार्यक्रमों के उदाहरण
क्योंकि एलजीपी प्रोग्राम मूल रूप से निर्देशों के एक रैखिक अनुक्रम द्वारा दर्शाए जाते हैं, वे अपने पेड़-आधारित समकक्षों की तुलना में पढ़ने और संचालित करने में आसान होते हैं। उदाहरण के लिए, 3 इनपुट (R1, R2, R3 में) और एक आउटपुट (R0 में) के साथ बूलियन फ़ंक्शन समस्या को हल करने के लिए लिखा गया एक सरल प्रोग्राम इस तरह पढ़ सकता है: R1, R2, R3 को इनपुट (रीड-ओनली) रजिस्टर के रूप में घोषित किया जाना है, जबकि R0 और R4 को गणना (रीड-राइट) रजिस्टर के रूप में घोषित किया गया है। यह प्रोग्राम बहुत सरल है, इसमें केवल 5 निर्देश हैं। लेकिन म्यूटेशन और क्रॉसओवर ऑपरेटर प्रोग्राम की लंबाई, साथ ही इसके प्रत्येक निर्देश की सामग्री को बढ़ाने के लिए काम कर सकते हैं।

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

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

यह भी देखें

 * मल्टी एक्सप्रेशन प्रोग्रामिंग
 * कार्टेशियन आनुवंशिक प्रोग्रामिंग
 * व्याकरणिक विकास
 * आनुवंशिक प्रोग्रामिंग

बाहरी संबंध

 * Slash/A A programming language and C++ library specifically designed for linear GP
 * DigitalBiology.NET Vertical search engine for GA/GP resources
 * Discipulus Genetic-Programming Software
 * MicroGP Genetic-Programming Software (open source)
 *