ஜாவாஸ்கிரிப்டில் மரபணு பரிணாம வளர்ச்சியின் விரைவான எடுத்துக்காட்டு: ஒரு குழந்தையை உருவாக்குவோம்.

"பிறழ்வு செயல்முறை என்பது மரபணு மாறுபாட்டின் புதிய பொருட்களின் அறியப்பட்ட ஒரே ஆதாரமாகும், எனவே பரிணாம வளர்ச்சி." - டோப்ஹான்ஸ்கி, 1957.

மரபணு பரிணாம வழிமுறைகள் எனக்கு உண்மையிலேயே கவர்ச்சிகரமானவை. மெய்நிகர் டி.என்.ஏவை நிரல் செய்யும் திறன் கணினி அறிவியலின் ஒரு தனித்துவமான சாதனையாகும். குறியீட்டில், டார்வின் பரிணாமக் கோட்பாட்டை எழுதும் திறன் மற்றும் உண்மையில் செயல்பாட்டில் மிகச்சிறந்த மாதிரியின் சர்வைவலைக் காணும் திறன் வியக்க வைக்கிறது.

நான் இதற்கு முன்பு மரபணு வழிமுறைகளைத் தொட்டதில்லை, நான் தொடங்கிய நேரம் இது என்று முடிவு செய்தேன். உண்மையான, தொடங்குவதை விட சிறந்த இடம் எது? இந்த டுடோரியலில் நான் ஒரு 'குச்சியை' உருவாக்குவேன், அந்த குச்சி ஒரு 'வட்டத்தை' அடைய விரும்புகிறது. அதிலிருந்து நீங்கள் விரும்புவதைக் கவனியுங்கள், ஆனால் நான் குடும்ப நட்புரீதியான பயிற்சிகளை எழுதுகிறேன், அது அப்படியே இருக்கும்.

கோடிங் ரயில்: குறியீட்டு சவால் # 29 இலிருந்து நம்பமுடியாத அளவிற்கு அதிக செல்வாக்கை நான் எடுத்து வருகிறேன். அதற்கான இணைப்பு இங்கே. அவர் ஸ்மார்ட் ராக்கெட்டுகளால் ஈர்க்கப்பட்டார், எனவே நான் புதிதாகவோ அல்லது அசலாகவோ எதையும் உருவாக்கவில்லை என்றாலும், அது ஒரு மரபணு பரிணாம வழிமுறையின் எடுத்துக்காட்டுக்கு உதவும் என்று நம்புகிறேன். நான் ஒரு காட்சி ஜாவாஸ்கிரிப்ட் நூலகமாக சுருக்கமாகக் கூறும் P5.JS நூலகத்தைப் பயன்படுத்துகிறேன்.

நான் எந்த வகையான மரபணு வழிமுறையையும் உருவாக்க முன், நான் முதலில் உண்மையான அமைப்பை அமைக்க வேண்டும். முதலில் நான் மிகவும் எளிமையான HTML பக்கத்தை உருவாக்குகிறேன்.

பி 5 க்கு இரண்டு நூலகங்கள் உள்ளன. திரையில் வரைபடத்தை பிரதானமாகக் கையாளுகிறது, மாறிகள் உடனடிப்படுத்துதல் போன்றவை. ஒரு குச்சி என்பது உருவாகிவரும் கோடு, மக்கள் தொகை என்பது குச்சிகளின் தொகுப்பு, மற்றும் மரபணு வழிமுறையின் மையத்தை நான் கருதுவது dna. ஸ்டிக்கிற்கான குறியீட்டைப் பார்ப்போம்:

எனவே ஒரு குச்சியில் சில அடிப்படை அம்சங்கள் உள்ளன. இது நகரக்கூடியதாக இருக்க வேண்டும், எனவே இது வேகம், முடுக்கம் மற்றும் நிலை மாறிகள் ஆகியவற்றில் ஒரு இயக்கம் 'இயந்திரம்' (ஒரு சிறந்த காலத்தை விரும்புவதற்காக) கொண்டுள்ளது. இந்த நேரத்தில் அனைத்து இயக்கங்களும் மர்மமான டி.என்.ஏ செயல்பாட்டால் கட்டுப்படுத்தப்படுகின்றன. நாம் டி.என்.ஏவைப் பெறுவதற்கு முன்பு, மக்கள் தொகையைப் பார்ப்போம்:

மக்கள் தொகை உண்மையில் சுவாரஸ்யமானது அல்ல. இது 25 குச்சிகளை உருவாக்குகிறது, இது ஒரு மக்களுக்கு போதுமானது என்று நான் நம்புகிறேன், பின்னர் அவற்றை திரையில் நகர்த்துகிறது. இந்த செயல்பாட்டுடன் எந்த தடைகளையும் உடைக்கவில்லை! டி.என்.ஏ:

இந்த கட்டத்தில், டி.என்.ஏ அடிப்படையில் எதுவும் செய்யாது. ஒரு குச்சிக்கு ஒரு டி.என்.ஏ கிடைக்கிறது, ஒரு டி.என்.ஏவில் 200 மரபணுக்கள் உள்ளன, இது எனது சிறிய குச்சியின் ஆயுட்காலம் ஆகும். கவலைப்பட வேண்டாம், சரியான நேரத்தில் மேலும் சேர்க்கப்படும். முதன்மை கோப்பு:

எனவே மெயின் இங்கே ஒரு நியாயமான சில விஷயங்களைச் செய்கிறார். முதலாவதாக, நாம் ஒரு புதிய தலைமுறை குச்சிகளை உருவாக்க வேண்டும், இது மக்கள்தொகையை உடனடிப்படுத்துகிறது, பின்னர் நாங்கள் எங்கள் வட்டத்தை உருவாக்குகிறோம், இது குச்சிகள் பின்னர் வரிக்கு கீழே இருக்கும். ஒவ்வொரு முறையும் அவர்களின் வாழ்க்கைச் சுழற்சி முடிவடையும் போது, ​​ஒரு புதிய தலைமுறையினரைக் கொன்று உருவாக்கும் திறனுடன், எல்லாவற்றையும் திரையில் வரைந்து கொண்டிருக்கிறோம்.

ஆகவே, தற்போதுள்ளதைப் போலவே இதை இயக்கினால், இதைப் பெறுகிறோம்:

குழப்பமான சிறிய குச்சிகள்

இப்போது இந்த கட்டத்தில், இது உண்மையில் ஒரு மரபணு வழிமுறை அல்ல. அதற்கு பதிலாக, இது தோராயமாக தேர்ந்தெடுக்கப்பட்ட திசையன்களில் நகரும் குச்சிகளின் தொகுப்பாகும், திரையில் ஒரு புள்ளி வரையப்படுகிறது. எனவே மரபணு பகுதியை சேர்ப்போம்.

ஆகவே, அதன் மரபணுக்களை அதன் குழந்தைகளுக்கு அனுப்பும் குச்சியாக இருக்க வேண்டும் என்று நாங்கள் விரும்புகிறோம். இது அடிப்படையில் மிகச்சிறந்தவரின் உயிர்வாழ்வு: நீண்ட காலமாக உயிர் பிழைத்தவர், அவர்களின் மரபணுக்களை கடந்து செல்வவர்.

எனவே ஒவ்வொரு குச்சிக்கும் ஒரு புதிய மாறியைக் கொடுப்பதன் மூலம் இதைச் செயல்படுத்தத் தொடங்கலாம்: உடற்பயிற்சி.

var உடற்பயிற்சி = 0

வட்டத்தின் நிலைக்கு (இலக்கு) தொடர்புடைய குச்சியின் தற்போதைய நிலை மூலம் உடற்தகுதி கணக்கிடப்படும். ஒவ்வொரு குச்சியிலும் உடற்தகுதியைக் கணக்கிட இதை ஒரு செயல்பாடாக செயல்படுத்தலாம்.

this.calculateFitness = செயல்பாடு () {
var தூரம் = dist (this.pos.x, this.pos.y, target.x, target.y)
this.fitness = 1 / தூரம்
}

இப்போது, ​​உடற்பயிற்சி மதிப்பீட்டைக் கொண்ட குச்சிகள் எங்களிடம் உள்ளன - அதாவது அவற்றில் சிறந்த மரபணுக்கள் உள்ளன, ஏனென்றால் அவை நீண்ட காலம் உயிர் பிழைத்தன. எனவே இப்போது அந்த குச்சிகளை மேல் அடுக்கு மரபணுக்களுடன் இனப்பெருக்கம் செய்ய ஒரு வழி தேவை. உள்ளிடவும், பூல்:

எனவே, இந்த குளம் கருத்தில் நேராக முன்னோக்கி உள்ளது. மிக வெற்றிகரமான மரபணுக்கள் வட்டத்திற்கு மிக நெருக்கமானவை என்பதை நாம் ஏற்கனவே மேலே கண்டறிந்துள்ளோம். குச்சி எவ்வளவு நெருக்கமாக இருக்கிறதோ, அவ்வளவு முறை அதன் மரபணு குளத்தில் நுழையும், மேலும் அது இனப்பெருக்கம் செய்ய அதிக வாய்ப்புள்ளது. 5% வழியை உருவாக்கிய ஒரு குச்சி இனப்பெருக்கம் செய்ய 5% வாய்ப்பு இருக்கும், அதேசமயம் 70% வழியை உருவாக்கிய ஒரு குச்சி, இனப்பெருக்கம் செய்ய 70% வாய்ப்பு உள்ளது. நான் அதை நன்றாக விளக்கினேன் என்று நம்புகிறேன். மிகவும் வெற்றிகரமான குச்சி = புதிய குச்சியின் ஒரு பகுதியாக மறுபிறவி பெற சிறந்த வாய்ப்பு.

மேலே உள்ள இரண்டு புதிய செயல்பாடுகள். தேர்வு என்பது பெயர் குறிப்பிடுவதுபோல், மரபணு குளத்திலிருந்து பெற்றோர் மரபணுக்களைத் தேர்ந்தெடுப்பது. இந்த மரபணுக்கள் பின்னர் கிராஸ்ஓவரில் ஒரு புதிய டி.என்.ஏவை உருவாக்குகின்றன, இது புதிய குச்சிக்கு ஒதுக்கப்படுகிறது! ஒப்பீட்டளவில் எளிமையாகவும், அடிப்படையாகவும் இதை நாங்கள் வைத்திருக்க விரும்புகிறோம்.

மிகவும் அருமையாக இருக்கிறது, எங்கள் குச்சிகள் இப்போது முன்னோடிகளின் சிறந்த திறன்களை எடுக்க முடிகிறது, மேலும் அவற்றை வட்டம் கண்டுபிடிக்க பயன்படுத்தவும்! நாம் இப்போது அதை செயலில் பார்த்தால்:

இன்னும் குழப்பமான ஆனால் சற்று புத்திசாலித்தனமான குச்சிகள்.

பல டஜன் மறு செய்கைகளுக்குப் பிறகு, ஒரு சில கோடுகள் மட்டுமே தெரியும் என்பதால், அவை இறந்துபோனதாகத் தெரிகிறது. ஆனால் அது அப்படி இல்லை: இலகுவான குச்சி, பல குச்சிகள் சரியான பாதையை பின்பற்றுகின்றன என்று பொருள். ஒப்பீட்டளவில் வரையறுக்கப்பட்ட மரபணுக்கள் நம்மிடம் இருப்பதால் இதை எதிர்பார்க்க வேண்டும்.

மிகவும் புத்திசாலி, ஆல்பா குச்சிகள்.

நீண்ட நேரம் அது இயங்கும்போது, ​​திரையில் ஒரே ஒரு குச்சி மட்டுமே தோன்றும். இந்த குச்சி உகந்த குச்சியைக் குறிக்கிறது! தேர்ந்தெடுக்கப்பட்ட குச்சி. இங்கே அவை, நமது மரபணு வழிமுறையின் உச்சம்:

ஜீனியஸ் குச்சி (கள்)!

எனவே இது ஒரு மரபணு பரிணாம வழிமுறை, உலாவியில் முழுமையாக எழுதப்பட்டுள்ளது! இது மரபணு பரிணாம வளர்ச்சியின் சரியான எடுத்துக்காட்டு அல்ல, நிச்சயமாக, ஆனால் அது வேலையில் ஒரு சிறந்த எடுத்துக்காட்டு. எங்கள் சிறிய குச்சி இப்போது வட்டத்தைப் பெறலாம், அடுத்தது பின்வருவது இன்றைய தலைப்பு அல்ல.

ஆரம்பத்தில் குறிப்பிட்டுள்ளபடி இது தி கோடிங் ரயிலால் பெரிதும் பாதிக்கப்படுகிறது. அவர்களின் ரெப்போவுடன் இணைக்கவும்.

எனது முழு குறியீடு.