
मैं फिर से आपका स्वागत करता हूं, प्रिय हरजेटेली!
यह लेख सत्र के बीच में रखा गया है, ताकि मैं टिप्पणियों से गायब हो जाऊं।2. सिमुलेशन और सबसे सरल बॉट
आज हम सिमुलेशन सेटिंग्स से निपटेंगे और सरलतम बॉट (या रोबोट, जैसा आप चाहें) को देखें। नहीं, मैं प्रोग्राम इंटरफ़ेस पर पूरी तरह से विचार नहीं करूंगा - यह आपका होमवर्क होगा :-) और हाँ, "जेनेटिक एल्गोरिथम" की अवधारणा खुद विकिपीडिया पर स्पष्ट रूप से वर्णित है, इसलिए हम इस स्पष्टीकरण को छोड़ देते हैं।
2.1। सिमुलेशन सेटिंग्स।
आइए सिमुलेशन सेटिंग्स के साथ शुरू करें। समझ से बाहर सेटिंग्स के साथ सिर्फ टैब के एक गुच्छा से अधिक कुछ सीखने के लिए आप चाहते हैं रखने के लिए, मैं एक बिगाड़ने के तहत लेख के इस बेवजह हिस्से को छिपाऊंगा।
सिमुलेशन सेटिंग्ससिमुलेशन प्रक्रिया शुरू करने के लिए, आप कर सकते हैं:
- "फ़ाइल" मेनू में "नया सिमुलेशन" आइटम चुनें;
- टूलबार पर उपयुक्त बटन पर क्लिक करें;
- F1 कुंजी दबाएं।
दिखाई देने वाली सिमुलेशन सेटिंग्स विंडो में टैब की सामग्री पर विचार करें। मुझे तुरंत
कहना होगा कि कई सेटिंग्स संदिग्ध लगती हैं - या तो काम नहीं करती हैं, या किसी भी तरह से सिमुलेशन को प्रभावित नहीं करती हैं (
और यह एक ही चीज़ नहीं है? )। मैं इनमें से कुछ कार्यों को छोड़ दूंगा, कुछ पर विचार करूंगा।
टैब "प्रजाति" (चित्र 1):
चित्र 1मूल प्रजातियां - भरी हुई डीएनए कोड (बॉट) के साथ एक सूची। आप सूची का प्रबंधन करने के लिए बटन का उपयोग कर सकते हैं:
जोड़ें - आपको सूची में जोड़ने के लिए नई किस्मों पर विचार करने की अनुमति देता है (बस एक डीएनए कोड फ़ाइल जोड़ें)।
डुप्लिकेट - आपको चयनित बॉट के गुणों को दूसरे बॉट में देने की अनुमति देता है।
प्रजातियों को हटाएं - मॉडलिंग से डीएनए को हटाना।
टिप्पणियाँ - डीएनए कोड के हेडर से टिप्पणियां दिखाता है।
प्रारंभिक गुणों की विविधताएं (खंड प्रॉपर्टीज प्रॉपर्टीज):
त्वचा - व्यक्तियों की सतह पर चित्र। इन पैटर्नों का कोई अर्थ नहीं है, लेकिन जब रोबोट म्यूट करता है, तो पैटर्न भी उत्परिवर्तित होता है, इसलिए आप दोनों बॉट्स के बीच आनुवंशिक अंतर का अंदाजा लगा सकते हैं।
परिवर्तन - प्रारंभिक ड्राइंग में एक यादृच्छिक परिवर्तन।
रंग - बॉट का प्रारंभिक रंग सेट करता है, हालांकि, यह म्यूटेशन के साथ भी बदल सकता है।
प्रारंभिक स्थिति - मॉडलिंग क्षेत्र पर जीनस के लिए प्रारंभिक स्थिति को परिभाषित करता है।
व्यक्तियों - सिमुलेशन की शुरुआत में एक प्रजाति के बॉट की संख्या।
आरंभिक ऊर्जा - स्टार्टअप पर प्रत्येक व्यक्ति की ऊर्जा की मात्रा।
वनस्पति (ऑटोट्रॉफ़) - इस निशान के साथ, प्रजातियों के सभी व्यक्ति ऊर्जा जमा करते हैं। इससे सिमुलेशन में नई ऊर्जा के प्रजनन की सुविधा होनी चाहिए। ऑटोट्रॉफ़्स (ऐसे जीव जिनका विकास और प्रजनन कार्बनिक यौगिकों के बाहरी स्रोतों पर निर्भर नहीं करता है) पौधों की तरह काम करते हैं, खाद्य श्रृंखला का आधार बनाते हैं। ऐसे व्यक्ति हमेशा अनुकरण में मौजूद रहेंगे। एक उत्परिवर्तन ऐसे व्यक्ति को नहीं बदल सकता है।
जगह में तय - इस किस्म के बॉट मॉडलिंग क्षेत्र में कदम नहीं रखते हैं। यह पौधों का अनुकरण है। उत्परिवर्तन इस प्रजाति के व्यक्तियों को नहीं बदल सकता है।
डिसएबल विजन - बॉट्स की आंखों को निष्क्रिय करता है।
स्वैच्छिक आंदोलन को अक्षम करें - यादृच्छिक बॉट आंदोलनों को अक्षम करता है जो उन्हें मॉडलिंग क्षेत्र पर लूपिंग से बचने की अनुमति देता है (इस प्रक्रिया को ब्राउनियन गति भी कहा जाता है)।
पुनरुत्पादन को अक्षम करें - प्रजनन को अक्षम करता है।
वायरस इम्यून - व्यक्तियों की यह प्रजाति कभी भी वायरस से संक्रमित नहीं होगी।
डिसेबल म्यूटेशन - डीएनए म्यूटेशन को डिसेबल कर देता है।
उत्परिवर्तन दर (चित्र 2) - इस किस्म के लिए प्रारंभिक उत्परिवर्तन गुणांक निर्धारित करने के लिए एक विंडो खोलता है। कई अलग-अलग उत्परिवर्तन कारक हैं, कई प्रकार के डीएनए म्यूटेशन। बहुत सारे अस्पष्ट पत्र, शायद कोई इसका पता लगाएगा - यह म्यूटेशन को ठीक करने के लिए है और ज्यादातर मामलों में अपरिवर्तित रहता है।
चित्र 2निम्न पैरामीटर सामान्य टैब पर कॉन्फ़िगर किए गए हैं (चित्र 3):
चित्र 3फ़ील्ड नियंत्रण - सिमुलेशन फ़ील्ड आकार
अपशिष्ट - मॉडलिंग क्षेत्र पर सभी बॉट्स के लिए कचरे की मात्रा का सीमा मूल्य निर्धारित करता है। यदि मान "-1" पर सेट है, तो कचरा डंप नहीं किया जाता है।
रेखांकन - ग्राफ अद्यतन समय (चक्रों में)
जनसंख्या नियंत्रण - एक ऐसा भाग जिसमें आप मॉडलिंग क्षेत्र पर जनसंख्या को समायोजित कर सकते हैं: ऑटोट्रॉफ़्स, ऑटोट्रॉफ़्स से ऊर्जा की मात्रा, इसकी पुनःपूर्ति की अवधि, "ऊर्जा / शरीर" अनुपात, दिन / रात परिवर्तन मोड जब एक निश्चित कुल सहित व्यक्तियों की संख्या पर सीमा निर्धारित करें। सिमुलेशन क्षेत्र में ऊर्जा और बहुत कुछ।
भौतिकी और लागत टैब (चित्र 4) बॉट दुनिया की भौतिकी और प्रत्येक बॉट ऑपरेशन की लागत को नियंत्रित करता है।
चित्र 4भौतिकी अनुभाग में निम्नलिखित सेटिंग्स हैं:
ए की तरह बिग ब्लू स्क्रीन अधिनियम - सिमुलेशन फ़ील्ड के प्रकार का चयन करें। यह एक तरल या एक सपाट सतह द्वारा प्रस्तुत किया जा सकता है, इसमें कस्टम भौतिकी बटन (छवि 5) पर क्लिक करने पर अधिक उन्नत सेटिंग्स भी होती हैं: तरल के गुण, इसका घनत्व और प्रवाह वेग, विश्व गुरुत्वाकर्षण, स्थैतिक और गतिज गुणांक, ब्राउनियन गति गुणांक;
चित्र 5आंदोलन क्षमता - बॉट्स के आंदोलन के लिए एक मॉडल स्थापित करता है: जैविक, यांत्रिक और आदर्श;
ब्राउनियन आंदोलन - ब्राउनियन आंदोलन का प्रकार: जीवाणु या जानवर;
ऊर्ध्वाधर गुरुत्वाकर्षण - ऊर्ध्वाधर गुरुत्वाकर्षण का प्रकार: पृथ्वी या चंद्रमा;
अधिकतम वेग - बॉट की अधिकतम गति;
टकराव लोच - बॉट्स की टक्कर लोच को समायोजित करें।
लागत और प्रतिसादित शॉट्स अनुभाग (चित्र 6) में निम्नलिखित सेटिंग्स हैं:
लागत - प्रत्येक बॉट ऑपरेशन की लागत। यह या तो अक्षम है, या लीग F1 में मानक लागत के अनुसार सेट किया गया है (मैं थोड़ी देर बाद लीग के बारे में बात करूंगा), या कस्टम सिमुलेशन कॉस्ट्स बटन पर क्लिक करने पर इसे मैन्युअल रूप से कॉन्फ़िगर किया जा सकता है। दिखाई देने वाली "लागत" विंडो में, आप डीएनए कमांड की लागत, इसके परिवर्तन, सीमाएं और लागत को कॉन्फ़िगर कर सकते हैं जो चक्र की संख्या पर निर्भर करता है।
चित्र 6शॉट एनर्जी एक्सचेंज मेथड - ऊर्जा की मात्रा को निर्धारित करता है जिसका उपयोग बॉट आग लगाने के लिए कर सकता है। यह एक निश्चित संख्या तक सीमित हो सकता है या वनस्पति ऊर्जा की कुल मात्रा के लिए आनुपातिक हो सकता है। डिफ़ॉल्ट रूप से, एक बॉट आग में अपनी सभी ऊर्जा का उपयोग कर सकता है।
म्यूटेशन टैब (चित्र 7) में म्यूटेशन सेटिंग्स हैं:
चित्र 7सभी म्यूटेशन को अक्षम करें - सभी म्यूटेशन को अक्षम करें
वर्तमान गुणक - म्यूटेशन गुणांक को 1 / 32x से 32x पर सेट करता है।
दोलन आवृत्ति - उत्परिवर्तन गुणांक में एक यादृच्छिक परिवर्तन की आवृत्ति (चयनित गुणांक के भीतर निर्धारित 1 / 16x और 16x)। चयनित चक्रों के माध्यम से यादृच्छिक परिवर्तन लागू किया जाता है।
लिपियों - बॉट पर अभिनय करने वाली स्क्रिप्ट का एक सेट। "स्थिति - डीएनए सेल - कार्रवाई" के आधार पर स्वतंत्र रूप से संकलित। तो, स्क्रिप्ट "अगर रोबोट को सिस्वर - दर्द मिलता है - तो रोबोट को रोकें और उजागर करें" का अर्थ है "अगर बॉट में दर्द हुआ, तो सिमुलेशन को रोकें और इस बॉट का चयन करें।" स्थिति "बॉट मिला", "बॉट लॉस्ट", "डीएनए समाहित है" और "डीएनए शामिल नहीं है" के रूप में सेट है। एक डीएनए सेल डीएनए में गणना में प्रयुक्त एक चर है। कार्रवाई "सिमुलेशन को रोकें और बॉट का चयन करें", "बॉट को मारें" और "एक तस्वीर ले लो" के रूप में सेट की गई है।
"रिस्टार्ट एंड लीग" टैब (चित्र 8) में सिमुलेशन को फिर से शुरू करने और लीग में भाग लेने के लिए सेटिंग्स हैं। बॉट डेवलपर्स के बीच लीग प्रतिस्पर्धाएं हैं। 4 मुख्य लीग हैं जो दुनिया के नियमों, प्रारंभिक स्थितियों और सेटिंग्स में भिन्न हैं। तो, एफ 1 लीग में दुनिया में बॉट्स के व्यवहार के लिए नियम नहीं हैं, और एफ 2 लीग संयुक्त बॉट्स को खाने और हमला करने से रोकता है, साथ ही म्यूटेशन को अक्षम करने और वायरस की दुनिया को मुक्त करने के लिए भी है। सिमुलेशन को फिर से शुरू करना एक स्थिति में आता है - यदि सभी बॉट मर चुके हैं, तो शुरू करें।
चित्र 8"इंटरनेट" टैब (चित्र। 9) में इंटरनेट मोड के लिए सेटिंग्स हैं जिसमें बॉट डेवलपर्स एक दूसरे से जुड़ सकते हैं और एक मॉडलिंग क्षेत्र का उपयोग कर सकते हैं। यह "प्लेयर बनाम प्लेयर" मोड का एक प्रायोगिक कार्यान्वयन है, जो कई नेटवर्क गेम में मौजूद है। इस मोड के संचालन की जांच करने की योजना। जैसा कि वे कहते हैं, देखते रहो!
चित्र 9"रिकॉर्डिंग" टैब (चित्र 10) में एक निर्दिष्ट समय के बाद सबसे अच्छा बॉट के वर्तमान सिमुलेशन या डीएनए को बचाने के लिए सेटिंग्स हैं, साथ ही एक डेटाबेस बनाने के लिए जिसमें सिमुलेशन में मौजूद हर बॉट में प्रवेश किया जाता है।
चित्र 10सिमुलेशन सेटिंग्स को लोड या सहेजने के लिए, क्रमशः "लोड सेटिंग्स" या "सेटिंग्स सहेजें" बटन पर क्लिक करें। "रुका हुआ / बिना रुका हुआ" बटन सिमुलेशन स्टार्ट मोड को स्विच करता है: सिमुलेशन को तुरंत शुरू करने के लिए या इसे शुरू करने के लिए नहीं। "नया प्रारंभ करें" बटन सिमुलेशन शुरू करेगा, और "बदलें" बटन पहले से चल रहे सिमुलेशन के गुणों को बदल देगा।
2.2। सबसे सरल बॉट
इसलिए, हम एक बॉट लिखने के बारे में कहानी के करीब आए। इस लेख में मैं डीएनए की पूरी संरचना (भविष्य के लिए स्टोर) पर विचार नहीं करूंगा। आप प्रोग्राम निर्देशिका में रोबोट फ़ोल्डर में अन्य बॉट देख सकते हैं।
तो डार्विनबॉट्स प्रणाली में एक नियमित बॉट क्या है? और यहाँ है:
'यह कैसे काम करता है?
cond
प्रारंभ
100 * .nrg 1000 उप sgn 0 मंजिल 500 * .body उप sgn 0 मंजिल बहु। Stbody बहु दुकान 100 500 * .nr उप sgn 0 मंजिल .fdbody बहु दुकान 200 * .Shell उप 0 मंजिल 200 मंजिल 200 *। Shell उप sgn abs .mkshell मल्टी स्टोर 10 * .venom sub 0 फ्लोर 10 Ceil * .venom 10 sub sgnath .strvenom मल्टी स्टोर * .tiepres * 51 * .tiepres sub sgn abs * .tiepres sgn मल्टी .deltie मल्टी स्टोर * 51 * .refeye sgn -1 मल्टी 1 ऐड * .refeye * .myeye सब sgn abs * .eye5 35 सब 0 फ्लोर sgn मल्टी मल्टी। मल्टी स्टोर * 51 * .tie sgn * .tiepres * 51 सब sgn -1 मल्टी 1 ऐड sgn जोड़ें। .tienum मल्टी स्टोर -1 * .tie sgn * .tiepres * 51 उप sgn abs -1 मल्टी 1 ऐड sgn .tieloc मल्टी स्टोर -1000 * .tie sgn * .tiepres * 51 सब sgn abs मल्टी 1 ऐड जोड़ें sgn। मध्ययुगीन मल्टी स्टोर 1 * .robage sgn 1 सब एब्स .tie मल्टी स्टोर .mkshell * .vloc sgn -1 मल्टी 1 ऐड। .vloc मल्टी स्टोर -100 * .venval sgn 1 add .venval मल्टी स्टोर rnd 1 ऐड * 51 sgn। -1 मल्टी 1 में 51 मल्टी स्टोर 200 * .aim ऐड * .refeye * .myeye सब sgn abs और मल्टी 1 ऐड। .setaim मल्टी स्टोर * .Maxvel * .vel सब 0 फ्लो जोड़ें। r * .robage sgn * .refeye * .myeye उप sgn abs मल्टी .up मल्टी स्टोर *। coseypos angle * .robage sgn * .refeye * .myeye सब sgn * .eye5 sgn मल्टी मल्टीसेटसेट मल्टी स्टोर *। .refveldx * .refeye * .myeye सब sgn abs * .eye5 sgn मल्टी .dx मल्टी स्टोर * .refeye * .myeye सब sgn abs -1 मल्टी 1 ऐड 50 मल्टी इनक 0 0 * 50% sub 0 फ्लोर sgn .refeye मल्टी स्टोर 0। * 50 30 उप 0 मंजिल sgn 50 मल्टी स्टोर * .refshell 1 उप 0 मंजिल sgn 3 मल्टी 5 सब * .refeye sgn मल्टी 1 सब * .refeye * .eyeye सब sgn abs * .eye5 35% 0 फ्लोर sgn मल्टी .shoot मल्टी। store * .shoot 3 add sgn 10 मल्टी 0 फ्लोर * .refeye sgn 30 मल्टी ऐड * .refshell 1 सब 0 फ्लोर sgn 20 मल्टी सब * .shoot sgn abs .shootval मल्टी स्टोर 50 * .body 250 सबgn 0 फ्लोर * .nrg 2000 सब sgn 0 फ्लोर * .eye5 30 सब 0 फ्लोर sgn -1 मल्टी 1 मल्टी मल्टी .repro मल्टी स्टोर * .thisgene -1 मल्टी 3 ऐड एब्स * .genes 1 सब sgn .delgene मल्टी स्टोर जोड़ें।
बंद
अंत
कोड की जटिलता से आश्चर्यचकित? वास्तव में, यह बॉट उपयोगकर्ता द्वारा प्रयोग के रूप में उपनाम शेन के तहत लिखा गया था। क्या - जल्द ही आप समझ जाएंगे। वास्तव में, यह डीएनए कोड की संभावनाओं के गहन अध्ययन का एक अच्छा उदाहरण है।
तो, चलिए शुरू करते हैं!
डीएनए बॉट कोड एक या एक से अधिक जीन से बना होता है जो एक सिमुलेशन चक्र में सभी एक साथ चलते हैं। जीनों को उन स्थितियों से दर्शाया जाता है जिन्हें निम्नलिखित निर्माणों द्वारा परिभाषित किया गया है:
cond
<एक या अधिक शर्तें>
प्रारंभ
जीन के अंदर <संचालन>
बंद करो
या
sond
<एक या अधिक शर्तें>
अन्यथा
जीन के अंदर <संचालन>
बंद करो
यदि सभी शर्तें सही हैं, और "Else" कमांड - "स्टार्ट" कमांड संचालन को निष्पादित करता है - यदि सभी स्थितियाँ झूठी हैं। उदाहरण स्थिति:
ab> (यदि 'a' 'b' से बड़ा है, तो स्थिति सत्य है)। निम्नलिखित तुलना संचालन का उपयोग किया जा सकता है: = (बराबर); = (बराबर नहीं),% = (लगभग बराबर - यदि सही संख्या दूसरी से १०% से अधिक भिन्न होती है), तो%! =! = (पिछले के विपरीत परिणाम देता है) तुलना),> (इससे बड़ा), <(इससे कम), = = (इससे बड़ा या बराबर), <= (इससे कम या बराबर), ~ = (तीन संख्याओं का उपयोग करता है, यदि दूसरी संख्या प्रतिशत की तीसरी संख्या से पहली संख्या से अधिक है, तो सही है), ! ~ = (पिछली तुलना से विपरीत परिणाम पैदा करता है)। सभी कार्यों के संचालन का सिद्धांत आधिकारिक वेबसाइट के "
ऑपरेटर्स " अनुभाग में वर्णित है। साइट में एक चतुराई से
नक्काशीदार नेविगेशन सिस्टम है, इसलिए आपको पूरी तरह से सही और कठिन खंड की तलाश करनी होगी।
जैसा कि आप शायद पहले ही देख चुके हैं, रिवर्स रिकॉर्डिंग का उपयोग ऑपरेशन रिकॉर्ड करने के लिए किया जाता है। रिवर्स पोलिश नोटेशन की एक विशिष्ट विशेषता यह है कि सभी तर्क (या ऑपरेंड) ऑपरेशन साइन से पहले स्थित हैं। सामान्य शब्दों में, प्रविष्टि इस प्रकार है:
एक ऑपरेशन सेट रिकॉर्ड में ऑपरेंड और ऑपरेशन वर्णों का एक क्रम होता है। लिखे जाने पर अभिव्यक्ति में परिचालनों को रिक्त स्थान द्वारा अलग किया जाता है। अभिव्यक्ति को बाएं से दाएं पढ़ा जाता है। जब एक ऑपरेशन साइन एक अभिव्यक्ति में सामने आता है, तो संबंधित ऑपरेशन पिछले दो ऑपरेंड पर किया जाता है, इससे पहले कि वह जिस क्रम में लिखा गया था। ऑपरेशन का परिणाम इसके ऑपरेंड्स के अनुक्रम और अभिव्यक्ति में इसके संकेत को बदलता है, जिसके बाद अभिव्यक्ति को उसी नियम के अनुसार गणना की जाती है। अभिव्यक्ति का मूल्यांकन करने का परिणाम अंतिम गणना ऑपरेशन का परिणाम है।
अच्छी तरह से समझा । उदाहरण: आपको अभिव्यक्ति
(ए + बी) * (सी + डी) का मूल्यांकन करने की आवश्यकता है। रिवर्स पोलिश प्रविष्टि और, तदनुसार, कोड निम्नानुसार होगा:
ab add
सीडी जोड़ें मल्टी
विकिपीडिया लेख में और पढ़ें।
जीन मेमोरी पॉइंटर्स या संख्याओं के साथ काम करते हैं। उदाहरण के लिए, 110 * या * 110 का अर्थ है "सेल 110 से वापसी मूल्य"। आनुवंशिक स्मृति का आधा भाग बॉट गुण के रूप में कार्य करने के लिए पूर्व निर्धारित है। इस मेमोरी क्षेत्र को Sysvars (या सिस्टम चर) कहा जाता है। उदाहरण के लिए, 501 से 509 तक की कोशिकाओं में बॉट की प्रत्येक आंख के देखने के क्षेत्र में वस्तुओं की दूरी होती है और इसे * 501 ... * 509, और * .eye1 ... * .eye9 जैसे संचालन के साथ इस्तेमाल किया जा सकता है। कक्ष 1 (.up), 2 (.dn), 3 (.sx), 4. (Dx), 5 (.aimdx), 6 (.aimsx) और 11 (.maxvel) विभिन्न दिशाओं में गति को गति देते हैं। कुल्हाड़ी और अधिकतम गति, बॉट के वजन पर निर्भर करता है। प्रत्येक सिस्टम चर का एक नाम और नंबर होता है, इसलिए उन्हें विभिन्न तरीकों से एक्सेस किया जा सकता है। उपयोग के लिए नि: शुल्क कोशिकाओं को
मुफ्त चर खंड में सूचीबद्ध किया गया है, और सिस्टम चर की एक सूची
Sysvar अनुभाग में सूचीबद्ध है।
जीन ऑपरेशन मेमोरी कोशिकाओं के मूल्यों को बदल सकते हैं, उदाहरण के लिए: 10 .up स्टोर या 10 1 स्टोर का अर्थ है "आगे की गति 10 के बराबर सेट करें"। एक ही परिणाम होगा यदि ऑपरेशन 5 निष्पादित करने के लिए 1 स्टोर जोड़ें। ऑपरेशन .up inc ऑपरेशन के बराबर है ।up 1 add .up store (सेल से अर्क मान .up (10), एक जोड़ें, .up लिखें)। तदनुसार, ऑपरेशन .up डिक का अर्थ है "1 से आगे की गति कम करें"। एक तैयार डीएनए कोड का एक उदाहरण नीचे प्रस्तुत किया गया है।
'टिप्पणी लाइन की शुरुआत में एक एपोस्ट्रोफ द्वारा इंगित की जाती है
'जीन 1 आंदोलन
cond
* .nrg 100> 'स्थिति - जबकि ऊर्जा 100 से अधिक है ...
प्रारंभ
10 .dn store '... बॉट 10 की गति से वापस चलता है
बंद
डीएनए कोड का अंत '
बॉट बनाना। जीन के व्यवहार और विकास के एक मॉडल का विकल्प।
इस लेख के लिए, हम एक बॉट पर विचार करते हैं जिसमें बॉट्स की दुनिया में आवश्यक संचालन का बहुमत होगा। डीएनए में चार जीन शामिल होंगे: "भोजन की तलाश करें", "भोजन खाएं", "संयोजन से बचें" और "प्रजनन"।
पूर्ण डीएनए कोड नीचे दिए गए स्पॉइलर के नीचे प्रस्तुत किया गया है, परियोजना की आधिकारिक वेबसाइट से
लिया गया है। नीचे दिया गया पाठ प्रशिक्षण लेख का अनुवाद होगा, जिसमें स्वयं से कुछ अतिरिक्त शामिल होंगे।
पूर्ण कोड'जीन 1 फूड फाइंडर
cond
* .eye5 0>
* .refeye * .myeye! =
प्रारंभ
* .refveldx .dx स्टोर
*। cosvelup 30 add .up store
बंद
'जीन 2 खाओ खाना
cond
* .eye5 50>
* .refeye * .myeye! =
प्रारंभ
-1 .शूट स्टोर
* .refvelup .up स्टोर
बंद
'जीन 3 परिवार से परहेज
cond
* .eye5 0 =
* .refeye * .myeye = या
प्रारंभ
314 रैंड .aimdx स्टोर
बंद
'जीन 4 रिप्रोड्यूस
cond
* .nrg 20,000>
प्रारंभ
10 .repro स्टोर
बंद
अंत
तो, चलो जीन के माध्यम से क्रमबद्ध करें।
जीन "खाद्य खोज"'जीन 1 फूड फाइंडर
cond
* .eye5 0>
* .refeye * .myeye! =
प्रारंभ
* .refveldx .dx स्टोर
*। cosvelup 30 add .up store
बंद
बॉट की रिकॉर्डिंग की सुविधा के लिए, जिसे हम "अलग" करेंगे और जिनके डीएनए पर हम विचार करेंगे, उन्हें "हमारा" कहा जाएगा। यह इस तथ्य को नकारता नहीं है कि एक ही कोड के साथ कई बॉट हो सकते हैं।
इस जीन की स्थितियों पर विचार करें। आई 5 का मूल्य शून्य से अधिक होगा यदि एक और बॉट सीधे हमारे सामने है (पांचवें, केंद्रीय आंख के क्षेत्र में)। इस प्रकार, यह कोड बाद में हमारे बॉट पर हमला करने के लिए मजबूर करेगा जब दुश्मन सीधे "नाक के नीचे" हो। स्ट्रिंग * .refeye * .myeye! = एक क्लासिक मान्यता प्रणाली है जिसका उपयोग कार्यक्रम के विकास की शुरुआत के बाद से बॉट्स द्वारा किया जाता है। यदि अन्य बॉट्स में हमारी जैसी आंखें नहीं हैं, तो वह एक रिश्तेदार नहीं है, बल्कि भोजन है। लगभग वास्तविक दुनिया में जैसा है :-)।
हम संचालन के लिए पास करते हैं। Refveldx और Refvelup हमारे दृश्य में आने वाले किसी भी बॉट की गति को वापस करते हैं। मान रिश्तेदार हैं। ऑपरेशन * .refveldx .dx स्टोर हमारे बॉट को दृश्य में आए बॉट की गति के साथ बग़ल में स्थानांतरित करने की अनुमति देगा। यह हमारे परीक्षण विषय को चारों ओर से घूमती हुई बॉट का शिकार नहीं बनने देगा और हर तरफ शूटिंग करेगा। ऑपरेशन * .refvelup 30 add .up स्टोर हमारे बॉट को शिकार से पकड़ने के लिए दुश्मन की तुलना में 30 यूनिट तेज गति से आगे बढ़ने के लिए मजबूर करेगा। स्वाभाविक रूप से, गति .maxvel सेल के मान से अधिक नहीं होगी, यानी वजन के आधार पर अधिकतम गति। इस जीन के संचालन को निम्नानुसार भी लिखा जा सकता है:
*.refvelup .up store
*.up 30 add .up store
जीन "ईटिंग फ़ूड"'जीन 2 खाओ खाना
cond
* .eye5 50>
* .refeye * .myeye! =
प्रारंभ
-1 .शूट स्टोर
* .refvelup .up स्टोर
बंद
आइए स्थितियों का विश्लेषण करें। पिछले जीन की तरह, हमारा बॉट केवल एक बॉट का जवाब देगा जो पांचवीं आंख के देखने के क्षेत्र में गिर गया है। हालांकि, इस जीन में, खोज 50 यूनिट से अधिक दूरी पर होगी। यदि बॉट 50 से कम दूरी पर पहुंचता है, तो यह हमला करने का संकेत होगा। दूसरा नियम अपरिवर्तित रहता है और पहले जीन से लिया जाता है। समान मान्यता ऑपरेशन को इंगित करने का कारण डीएनए कोड के निष्पादन की एक विशेषता है: सभी जीनों को एक चक्र में क्रमिक रूप से निष्पादित किया जाता है, प्रत्येक बाद का जीन केवल मेमोरी कोशिकाओं के मूल्यों का उपयोग कर सकता है और अतीत के निष्पादन के परिणामों को संदर्भित नहीं कर सकता है यदि वे मेमोरी में नहीं लिखे गए थे।
सभी स्थितियों की पूर्ति के लिए बॉट की प्रतिक्रिया पर विचार करें। इस कोड में, जैसा कि यह पहले से ही स्पष्ट हो गया है, कोई आंदोलन संचालन नहीं है। यह डीएनए कोड के अनुक्रमिक निष्पादन का एक परिणाम भी है - बॉट की गति पहले दर्ज की गई थी, इसलिए हमारे बॉट इसके साथ आगे बढ़ेंगे, जब तक कि निश्चित रूप से, अगले जीन की गति बदल जाती है। लाइन -1 .shoot बॉट को अपने चुने हुए लक्ष्य पर कई बार शूट करने के लिए मजबूर करेगा जितनी जरूरत है। लाइन * .refvelup .up स्टोर बॉट को धीमा कर देगा और अपने लक्ष्य की गति से बढ़ना शुरू कर देगा। यह एक महत्वपूर्ण ऑपरेशन है क्योंकि बॉट टकराव से समय और ऊर्जा बर्बाद हो सकती है।
जीन "से बचें एकीकरण"'जीन 3 परिवार से परहेज
cond
* .eye5 0 =
* .refeye * .myeye = या
प्रारंभ
314 रैंड .aimdx स्टोर
बंद
यह स्थिति पिछले वाले की तुलना में थोड़ी अधिक जटिल है। तार्किक ऑपरेटर या (या) का उपयोग यहां किया जाता है। कोई भी दिखाई न देने पर .eye5 सेल शून्य है। मान्यता बूलियन को "झूठा" लौटाएगी यदि हमारी आंखों के समान एक व्यक्ति अचानक हमारी आंखों के सामने आता है। यह वह जगह है जहां या ऑपरेटर प्रभाव में आता है। इसकी मदद से, पूर्ति के लिए सामान्य स्थिति सही होगी यदि इसमें शामिल शर्तों में से कोई एक सत्य है - या तो कोई भी पास नहीं है, या यदि "आपका" पास है। खैर, यहाँ, मुझे लगता है, कहीं अधिक स्पष्ट है।
यदि स्थिति काम कर गई, तो बॉट 0 से 314 डिग्री तक यादृच्छिक कोणों पर दाईं ओर घूमना शुरू कर देगा। इस ऑपरेशन के साथ, हमारे बॉट भोजन की तलाश में दुनिया के परिवेश का अधिक तर्कसंगत रूप से निरीक्षण करने में सक्षम होंगे। सिद्धांत रूप में, आप किसी भी कोण मान (यादृच्छिक भी नहीं) को सेट कर सकते हैं, लेकिन बहुत छोटा कोण भोजन की खोज करने की क्षमता में गिरावट का कारण होगा।
इसके अलावा, यह जीन दूसरों के साथ गठबंधन करने के लिए बॉट से बचने की एक क्लासिक विधि है, जब तक कि निश्चित रूप से, एक मानक नहीं। मैं आपको निम्नलिखित लेखों में संघों के बारे में बताऊंगा।
जीन "प्रजनन"'जीन 4 रिप्रोड्यूस
cond
* .nrg 20,000>
प्रारंभ
10 .repro स्टोर
बंद
अंतिम जीन बॉट के प्रजनन के लिए नियम निर्धारित करता है।
संक्षेप में, इस जीन को निम्नानुसार समझाया जा सकता है: यदि बॉट की ऊर्जा 20,000 से अधिक है, तो बॉट की एक नई पीढ़ी को मूल ऊर्जा का 10% के बराबर ऊर्जा की प्रारंभिक मात्रा के साथ बनाया जाता है। बेशक, 50% एक वंशज को दिया जा सकता है, लेकिन दोनों पीढ़ियों को खोने का जोखिम है। प्रजनन के लिए ऊर्जा की आवश्यक मात्रा में कमी के साथ एक ही जोखिम जुड़ा हो सकता है। जितनी तेजी से बॉट गुणा करती है, उतनी ही कम ऊर्जा वह किसी वंशज को दे सकती है।
निष्कर्ष
यह बॉट डार्विनबॉट्स प्रोग्राम के आनुवंशिक एल्गोरिथम की मूल बातें का अध्ययन करने के लिए एक उत्कृष्ट उपकरण है, क्योंकि इसमें व्यक्ति के बुनियादी कार्य शामिल हैं। हालांकि, यह बॉट बिल्कुल सही नहीं है - कुछ परिस्थितियों में यह किसी अन्य बॉट की तरह मौत के लिए बर्बाद होता है। इससे डेवलपर के लिए अपनी बॉट्स में सुधार करने की संभावना खुल जाती है, उन्हें लीग या इंटरनेट मोड में लॉन्च करने की कोशिश करें, ताकत और कमजोरियों की पहचान करें और आगे सुधार करें। लीग में भाग लेने के लिए विशेष रूप से लिखे गए बॉट में कई दर्जनों ऑपरेशनों के साथ 20 से अधिक जीन शामिल हो सकते हैं, इनमें केवल दो जीन हो सकते हैं जिनमें बड़ी संख्या में स्थितियां और संचालन होते हैं, या उनमें एक जीन भी हो सकता है, जिसमें बहुत सारे ऑपरेशन निश्चित रूप से किए जाते हैं (बेशक बिल्कुल बिना शर्त नहीं - तार्किक ऑपरेटरों का उपयोग किया जाता है। इस तरह का एक बॉट पहले उदाहरण में था।) - यह सब डेवलपर की रणनीति पर निर्भर करता है। डीएनए में, आप बड़ी संख्या में सिस्टम वैरिएबल का उपयोग कर सकते हैं जो बॉट के जीवन के लगभग हर पहलू के लिए जिम्मेदार होते हैं, दृष्टि की चौड़ाई और कचरा डंपिंग से एकजुट व्यक्ति के अंदर के गुणों और सिमुलेशन फ़ील्ड पर व्यक्तियों की कुल संख्या। यदि आपकी इच्छा है, तो मैं निम्नलिखित लेखों में से एक में एक जटिल बॉट पार्स करने की कोशिश करूंगा।
डार्विनबॉट्स कोड की जटिलता को सीमित नहीं करता है, हालांकि, बॉट जितना अधिक जटिल होगा, उतना ही अधिक कंप्यूटर संसाधनों को निम्नलिखित चक्रों की गणना करने में लगेगा। डेवलपर्स सबसे अच्छा व्यक्तियों को बचाने के लिए सिमुलेशन स्थापित करने के बाद, एक मुफ्त कंप्यूटर पर सिमुलेशन चलाने और एक से दो सप्ताह के लिए इसे छोड़ने की सलाह देते हैं। इस प्रकार, बॉट की कई पीढ़ियों का अध्ययन करना और वैश्विक प्राकृतिक चयन की प्रतीक्षा करना संभव है।
परियोजना के आधिकारिक मंच पर, आप रुचि के किसी भी प्रश्न को पूछ सकते हैं, और वे इसका उत्तर देने में प्रसन्न होंगे। दुर्भाग्य से कुछ के लिए, इसके लिए आपको अंग्रेजी भाषा का कम से कम बुनियादी ज्ञान होना चाहिए।
उम्मीद है कि यह व्यापक लेख परिचयात्मक की तुलना में अधिक मजेदार था। मुझे यकीन है कि इस लेख के बाद कई लोग अपने बॉट लिखने की कोशिश करेंगे। शायद हम टिप्पणियों में बॉट की एक छोटी परेड भी करेंगे। लेकिन यह भविष्य में है अगर कार्यक्रम पाठकों को दिलचस्पी देगा।
हमेशा की तरह, टिप्पणियों में मैं निम्नलिखित लेखों की सामग्री के बारे में आपकी इच्छाओं को स्वीकार करता हूं। हम आपसे मिलेंगे!
सूत्रों का कहना है:
1.
सभी रनट में कार्यक्रम पर एकमात्र प्रयोगशाला का काम, इसके साथ मैंने पाठ्यक्रम पर काम शुरू किया ;
2.
डार्विनबॉट्स परियोजना की आधिकारिक साइट ;
3.
विकिपीडिया ।