रैखिक आनुवंशिक प्रोग्रामिंग: Difference between revisions
(Created page with "{{Evolutionary algorithms}} : रैखिक आनुवंशिक प्रोग्रामिंग रैखिक प्रोग्रामिंग से अ...") |
(text) |
||
Line 1: | Line 1: | ||
{{Evolutionary algorithms}} | {{Evolutionary algorithms}} | ||
रैखिक आनुवंशिक प्रोग्रामिंग [[रैखिक प्रोग्रामिंग]] से असंबंधित है। | |||
'रैखिक आनुवंशिक प्रोग्रामिंग' (एलजीपी)<ref name=book>M. Brameier, W. Banzhaf, "[https://link.springer.com/book/10.1007/978-0-387-31030-5 Linear Genetic Programming]", Springer, New York, 2007</ref> आनुवांशिक प्रोग्रामिंग की | '''रैखिक आनुवंशिक प्रोग्रामिंग''' (एलजीपी)<ref name="book">M. Brameier, W. Banzhaf, "[https://link.springer.com/book/10.1007/978-0-387-31030-5 Linear Genetic Programming]", Springer, New York, 2007</ref> आनुवांशिक प्रोग्रामिंग की विशेष विधि है जिसमें किसी सरंध्रता में [[कंप्यूटर प्रोग्राम]] को [[अनिवार्य प्रोग्रामिंग|जननप्रोग्रामिंग]] लैंग्वेज या [[मशीन कोड]] से [[निर्देश (कंप्यूटर विज्ञान)]] के अनुक्रम के रूप में दर्शाया जाता है। विशेषण "रैखिक" इस तथ्य से उत्पन्न होता है कि निर्देशों का अनुक्रम सामान्यतः रैखिक तरीके से निष्पादित होता है। अन्य प्रोग्राम की तरह, एलजीपी में डेटा प्रवाह को ग्राफ के रूप में तैयार किया जा सकता है जो [[प्रोसेसर रजिस्टर]] सामग्री के संभावित एकाधिक उपयोग और संरचनात्मक रूप से गैर-प्रभावी कोड ([[इंट्रोन्स]]) के अस्तित्व की कल्पना करेगा जो कि अधिक सामान्य ट्री-आधारित [[आनुवंशिक प्रोग्रामिंग]] (टीजीपी) संस्करण से इस [[आनुवंशिक प्रतिनिधित्व]] के दो मुख्य अंतर हैं।<ref name="Brameier">Brameier, M.: "[https://eldorado.uni-dortmund.de/handle/2003/20098 On linear genetic programming] {{webarchive|url=https://web.archive.org/web/20070629120053/https://eldorado.uni-dortmund.de/handle/2003/20098 |date=2007-06-29 }}", Dortmund, 2003</ref><ref>W. Banzhaf, P. Nordin, R. Keller, F. Francone, [https://www.amazon.com/Genetic-Programming-Introduction-Artificial-Intelligence/dp/155860510X Genetic Programming - An Introduction], Morgan Kaufmann, Heidelberg/San Francisco, 1998</ref><ref>{{cite book | author1=Poli, R.|author2= Langdon, W. B.|author3= McPhee, N. F. |year=2008 |title=जेनेटिक प्रोग्रामिंग के लिए एक फील्ड गाइड| url=https://archive.org/details/AFieldGuideToGeneticProgramming| publisher=Lulu.com, freely available from the internet | isbn = 978-1-4092-0073-4}}</ref> | ||
<ref>{{cite book | author1=Poli, R.|author2= Langdon, W. B.|author3= McPhee, N. F. |year=2008 |title=जेनेटिक प्रोग्रामिंग के लिए एक फील्ड गाइड| url=https://archive.org/details/AFieldGuideToGeneticProgramming| publisher=Lulu.com, freely available from the internet | isbn = 978-1-4092-0073-4}}</ref> | |||
रैखिक आनुवंशिक प्रोग्रामिंग को | अन्य आनुवंशिक प्रोग्रामिंग विधियों की तरह, '''रैखिक आनुवंशिक प्रोग्रामिंग''' को प्रोग्राम सरंध्रता को चलाने के लिए डेटा के इनपुट की आवश्यकता होती है। फिर, फिटनेस फ़ंक्शन का उपयोग करके प्रोग्राम के आउटपुट (उसके व्यवहार) को कुछ लक्ष्य व्यवहार के विरुद्ध आंका जाता है। हालाँकि, ऊपर बताए गए दो मुख्य अंतरों के कारण एलजीपी आमतौर पर '''ट्री आनुवंशिक प्रोग्रामिंग''' की तुलना में अधिक कुशल है: मध्यवर्ती परिणाम (रजिस्टरों में संग्रहीत) का पुन: उपयोग किया जा सकता है और सरल इंट्रोन निष्कासन कलन विधि मौजूद है।<ref name="book" />जिसे इच्छित डेटा पर प्रोग्राम चलाने से पहले सभी गैर-प्रभावी कोड को हटाने के लिए निष्पादित किया जा सकता है। ट्री में अत्यधिक बाधित डेटा प्रवाह और टीजीपी में सभी ट्री नोड्स को निष्पादित करने की सामान्य विधि की तुलना में इन दो अंतरों के परिणामस्वरूप अक्सर संक्षिप्त समाधान और पर्याप्त संगणनात्मक बचत होती है। | ||
'''रैखिक आनुवंशिक प्रोग्रामिंग''' को तंत्र मॉडलिंग और तंत्र नियंत्रण सहित कई प्रांत में काफी सफलता के साथ लागू किया गया है।<ref>M. Brameier, W. Banzhaf, [https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=7cb0f6755e325494afbda4f822026e8e6953ffe1 A Comparison of Linear Genetic Programming and Neural Networks in Medical Data Mining]", ''IEEE Transactions on Evolutionary Computation'', ''5'' (2001) 17-26</ref><ref>A. Guven, [https://link.springer.com/article/10.1007/s12040-009-0022-9 Linear genetic programming for time-series modelling of daily flow rate], ''J. Earth Systems Science'', ''118'' (2009) 137-146</ref><ref>R. Li, B.R. Noack, L. Cordier, J. Boree, F. Harambat, [https://link.springer.com/article/10.1007/s00348-017-2382-2 Drag reduction of a car model by linear genetic programming control], ''Experiments in Fluids'', ''58'' (2017) 103</ref><ref>P.-Y. Passagia, A. Quansah, N. Mazellier, G.Y. Cornejo Maceda, A. Kourta, [https://aip.scitation.org/doi/full/10.1063/5.0087874 Real-time feedback stall control of an airfoil at large Reynolds numbers using linear genetic programming], ''Physics of Fluids'', 34 (2022) 045108</ref> | |||
'''रैखिक आनुवंशिक प्रोग्रामिंग''' को ट्री आनुवंशिक प्रोग्रामिंग में '''रैखिक ट्री''' प्रोग्राम के साथ भ्रमित नहीं किया जाना चाहिए, प्रोग्राम चर संख्या में एकाधारी फ़ंक्शंस और [[ लसीका नोड |एक टर्मिनल]] से बना होता है। ध्यान दें कि रैखिक ट्री जीपी बिट स्ट्रिंग [[आनुवंशिक एल्गोरिदम|आनुवंशिक कलन विधि]] से भिन्न है क्योंकि सरंध्रता में अलग-अलग लंबाई के प्रोग्राम हो सकते हैं और दो से अधिक प्रकार के फ़ंक्शन या दो से अधिक प्रकार के टर्मिनल हो सकते हैं।<ref> | |||
[http://www.cs.ucl.ac.uk/staff/W.Langdon/FOGP/ Foundations of Genetic Programming]. | [http://www.cs.ucl.ac.uk/staff/W.Langdon/FOGP/ Foundations of Genetic Programming]. | ||
</ref> | </ref> | ||
==एलजीपी प्रोग्राम के उदाहरण== | |||
क्योंकि एलजीपी प्रोग्राम मूल रूप से निर्देशों के रैखिक अनुक्रम द्वारा दर्शाए जाते हैं, वे अपने ट्री-आधारित समकक्षों की तुलना में पढ़ने और संचालित करने में आसान होते हैं। उदाहरण के लिए, 3 इनपुट (R1, R2, R3 में) और एक आउटपुट (R0 में) के साथ बूलियन फ़ंक्शन समस्या को हल करने के लिए लिखा गया सरल प्रोग्राम इस तरह पढ़ सकता है: | |||
क्योंकि एलजीपी प्रोग्राम मूल रूप से निर्देशों के | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
R4 = R2 AND R3 | R4 = R2 AND R3 | ||
Line 22: | Line 21: | ||
R0 = R0 OR R2 | R0 = R0 OR R2 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
R1, R2, R3 को इनपुट (रीड-ओनली) रजिस्टर के रूप में घोषित किया जाना है, जबकि R0 और R4 को गणना (रीड-राइट) रजिस्टर के रूप में घोषित किया गया है। यह प्रोग्राम बहुत सरल है, इसमें केवल 5 निर्देश हैं। लेकिन | R1, R2, R3 को इनपुट (रीड-ओनली) रजिस्टर के रूप में घोषित किया जाना है, जबकि R0 और R4 को गणना (रीड-राइट) रजिस्टर के रूप में घोषित किया गया है। यह प्रोग्राम बहुत सरल है, इसमें केवल 5 निर्देश हैं। लेकिन उत्परिवर्तन और विनिमय ऑपरेटर प्रोग्राम की लंबाई, साथ ही इसके प्रत्येक निर्देश की सामग्री को बढ़ाने के लिए काम कर सकते हैं। | ||
ध्यान दें कि | ध्यान दें कि निर्देश अप्रभावी या इंट्रॉन (चिह्नित) है, क्योंकि यह आउटपुट रजिस्टर R0 को प्रभावित नहीं करता है। उन निर्देशों की पहचान इंट्रॉन निष्कासन कलन विधि का आधार है जिसका उपयोग निष्पादन से पहले कोड का विश्लेषण करने के लिए किया जाता है। तकनीकी रूप से, यह किसी व्यक्ति की प्रतिलिपि बनाने और फिर एक बार इंट्रोन निष्कासन चलाने से होता है। हटाए गए इंट्रोन्स वाली प्रतिलिपि को प्रशिक्षण मामलों की संख्या के अनुसार कई बार निष्पादित किया जाता है। विशेष रूप से, मूल को बरकरार रखा गया है, ताकि विकासवादी प्रक्रिया में भाग लेना जारी रखा जा सके। यह केवल वह प्रतिलिपि है जिसे निष्पादित किया जाता है जो इन संरचनात्मक इंट्रोन्स को हटाकर संपीड़ित किया जाता है। | ||
एक और सरल प्रोग्राम, यह एलजीपी | एक और सरल प्रोग्राम, यह एलजीपी लैंग्वेज में लिखा गया है [https://github.com/arturadib/slash-a Slash/A] स्लैश द्वारा अलग किए गए निर्देशों की श्रृंखला जैसा दिखता है: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
input/ # gets an input from user and saves it to register F | input/ # gets an input from user and saves it to register F | ||
Line 35: | Line 34: | ||
output/. # outputs result from F | output/. # outputs result from F | ||
</syntaxhighlight> | </syntaxhighlight> | ||
ऐसे कोड को [[ बाईटकोड ]] प्रारूप में प्रस्तुत करके, यानी बाइट्स की | ऐसे कोड को [[ बाईटकोड |बाईटकोड]] प्रारूप में प्रस्तुत करके, यानी बाइट्स की सरणी के रूप में प्रत्येक अलग निर्देश का प्रतिनिधित्व करता है, कोई भी ऐसे सरणी के तत्व को बदलकर उत्परिवर्तन (आनुवंशिक कलन विधि) संचालन कर सकता है। | ||
== यह भी देखें == | == यह भी देखें == |
Revision as of 17:45, 22 July 2023
रैखिक आनुवंशिक प्रोग्रामिंग रैखिक प्रोग्रामिंग से असंबंधित है।
रैखिक आनुवंशिक प्रोग्रामिंग (एलजीपी)[1] आनुवांशिक प्रोग्रामिंग की विशेष विधि है जिसमें किसी सरंध्रता में कंप्यूटर प्रोग्राम को जननप्रोग्रामिंग लैंग्वेज या मशीन कोड से निर्देश (कंप्यूटर विज्ञान) के अनुक्रम के रूप में दर्शाया जाता है। विशेषण "रैखिक" इस तथ्य से उत्पन्न होता है कि निर्देशों का अनुक्रम सामान्यतः रैखिक तरीके से निष्पादित होता है। अन्य प्रोग्राम की तरह, एलजीपी में डेटा प्रवाह को ग्राफ के रूप में तैयार किया जा सकता है जो प्रोसेसर रजिस्टर सामग्री के संभावित एकाधिक उपयोग और संरचनात्मक रूप से गैर-प्रभावी कोड (इंट्रोन्स) के अस्तित्व की कल्पना करेगा जो कि अधिक सामान्य ट्री-आधारित आनुवंशिक प्रोग्रामिंग (टीजीपी) संस्करण से इस आनुवंशिक प्रतिनिधित्व के दो मुख्य अंतर हैं।[2][3][4]
अन्य आनुवंशिक प्रोग्रामिंग विधियों की तरह, रैखिक आनुवंशिक प्रोग्रामिंग को प्रोग्राम सरंध्रता को चलाने के लिए डेटा के इनपुट की आवश्यकता होती है। फिर, फिटनेस फ़ंक्शन का उपयोग करके प्रोग्राम के आउटपुट (उसके व्यवहार) को कुछ लक्ष्य व्यवहार के विरुद्ध आंका जाता है। हालाँकि, ऊपर बताए गए दो मुख्य अंतरों के कारण एलजीपी आमतौर पर ट्री आनुवंशिक प्रोग्रामिंग की तुलना में अधिक कुशल है: मध्यवर्ती परिणाम (रजिस्टरों में संग्रहीत) का पुन: उपयोग किया जा सकता है और सरल इंट्रोन निष्कासन कलन विधि मौजूद है।[1]जिसे इच्छित डेटा पर प्रोग्राम चलाने से पहले सभी गैर-प्रभावी कोड को हटाने के लिए निष्पादित किया जा सकता है। ट्री में अत्यधिक बाधित डेटा प्रवाह और टीजीपी में सभी ट्री नोड्स को निष्पादित करने की सामान्य विधि की तुलना में इन दो अंतरों के परिणामस्वरूप अक्सर संक्षिप्त समाधान और पर्याप्त संगणनात्मक बचत होती है।
रैखिक आनुवंशिक प्रोग्रामिंग को तंत्र मॉडलिंग और तंत्र नियंत्रण सहित कई प्रांत में काफी सफलता के साथ लागू किया गया है।[5][6][7][8]
रैखिक आनुवंशिक प्रोग्रामिंग को ट्री आनुवंशिक प्रोग्रामिंग में रैखिक ट्री प्रोग्राम के साथ भ्रमित नहीं किया जाना चाहिए, प्रोग्राम चर संख्या में एकाधारी फ़ंक्शंस और एक टर्मिनल से बना होता है। ध्यान दें कि रैखिक ट्री जीपी बिट स्ट्रिंग आनुवंशिक कलन विधि से भिन्न है क्योंकि सरंध्रता में अलग-अलग लंबाई के प्रोग्राम हो सकते हैं और दो से अधिक प्रकार के फ़ंक्शन या दो से अधिक प्रकार के टर्मिनल हो सकते हैं।[9]
एलजीपी प्रोग्राम के उदाहरण
क्योंकि एलजीपी प्रोग्राम मूल रूप से निर्देशों के रैखिक अनुक्रम द्वारा दर्शाए जाते हैं, वे अपने ट्री-आधारित समकक्षों की तुलना में पढ़ने और संचालित करने में आसान होते हैं। उदाहरण के लिए, 3 इनपुट (R1, R2, R3 में) और एक आउटपुट (R0 में) के साथ बूलियन फ़ंक्शन समस्या को हल करने के लिए लिखा गया सरल प्रोग्राम इस तरह पढ़ सकता है:
R4 = R2 AND R3
R0 = R1 OR R4
R0 = R3 AND R0
R4 = R2 AND R4 # This is a non-effective instruction
R0 = R0 OR R2
R1, R2, R3 को इनपुट (रीड-ओनली) रजिस्टर के रूप में घोषित किया जाना है, जबकि R0 और R4 को गणना (रीड-राइट) रजिस्टर के रूप में घोषित किया गया है। यह प्रोग्राम बहुत सरल है, इसमें केवल 5 निर्देश हैं। लेकिन उत्परिवर्तन और विनिमय ऑपरेटर प्रोग्राम की लंबाई, साथ ही इसके प्रत्येक निर्देश की सामग्री को बढ़ाने के लिए काम कर सकते हैं।
ध्यान दें कि निर्देश अप्रभावी या इंट्रॉन (चिह्नित) है, क्योंकि यह आउटपुट रजिस्टर R0 को प्रभावित नहीं करता है। उन निर्देशों की पहचान इंट्रॉन निष्कासन कलन विधि का आधार है जिसका उपयोग निष्पादन से पहले कोड का विश्लेषण करने के लिए किया जाता है। तकनीकी रूप से, यह किसी व्यक्ति की प्रतिलिपि बनाने और फिर एक बार इंट्रोन निष्कासन चलाने से होता है। हटाए गए इंट्रोन्स वाली प्रतिलिपि को प्रशिक्षण मामलों की संख्या के अनुसार कई बार निष्पादित किया जाता है। विशेष रूप से, मूल को बरकरार रखा गया है, ताकि विकासवादी प्रक्रिया में भाग लेना जारी रखा जा सके। यह केवल वह प्रतिलिपि है जिसे निष्पादित किया जाता है जो इन संरचनात्मक इंट्रोन्स को हटाकर संपीड़ित किया जाता है।
एक और सरल प्रोग्राम, यह एलजीपी लैंग्वेज में लिखा गया है Slash/A स्लैश द्वारा अलग किए गए निर्देशों की श्रृंखला जैसा दिखता है:
input/ # gets an input from user and saves it to register F
0/ # sets register I = 0
save/ # saves content of F into data vector D[I] (i.e. D[0] := F)
input/ # gets another input, saves to F
add/ # adds to F current data pointed to by I (i.e. F := F + D[0])
output/. # outputs result from F
ऐसे कोड को बाईटकोड प्रारूप में प्रस्तुत करके, यानी बाइट्स की सरणी के रूप में प्रत्येक अलग निर्देश का प्रतिनिधित्व करता है, कोई भी ऐसे सरणी के तत्व को बदलकर उत्परिवर्तन (आनुवंशिक कलन विधि) संचालन कर सकता है।
यह भी देखें
- मल्टी एक्सप्रेशन प्रोग्रामिंग
- कार्टेशियन आनुवंशिक प्रोग्रामिंग
- व्याकरणिक विकास
- आनुवंशिक प्रोग्रामिंग
टिप्पणियाँ
- ↑ 1.0 1.1 M. Brameier, W. Banzhaf, "Linear Genetic Programming", Springer, New York, 2007
- ↑ Brameier, M.: "On linear genetic programming Archived 2007-06-29 at the Wayback Machine", Dortmund, 2003
- ↑ W. Banzhaf, P. Nordin, R. Keller, F. Francone, Genetic Programming - An Introduction, Morgan Kaufmann, Heidelberg/San Francisco, 1998
- ↑ Poli, R.; Langdon, W. B.; McPhee, N. F. (2008). जेनेटिक प्रोग्रामिंग के लिए एक फील्ड गाइड. Lulu.com, freely available from the internet. ISBN 978-1-4092-0073-4.
- ↑ M. Brameier, W. Banzhaf, A Comparison of Linear Genetic Programming and Neural Networks in Medical Data Mining", IEEE Transactions on Evolutionary Computation, 5 (2001) 17-26
- ↑ A. Guven, Linear genetic programming for time-series modelling of daily flow rate, J. Earth Systems Science, 118 (2009) 137-146
- ↑ R. Li, B.R. Noack, L. Cordier, J. Boree, F. Harambat, Drag reduction of a car model by linear genetic programming control, Experiments in Fluids, 58 (2017) 103
- ↑ P.-Y. Passagia, A. Quansah, N. Mazellier, G.Y. Cornejo Maceda, A. Kourta, Real-time feedback stall control of an airfoil at large Reynolds numbers using linear genetic programming, Physics of Fluids, 34 (2022) 045108
- ↑ Foundations of Genetic Programming.
बाहरी संबंध
- 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)
- [1]