ฉันทดลอง GA กับเด็ก ๆ ฉันเขียนโปรแกรมจำลองใน Python ที่ทำงานดังนี้
ยีนเข้ารหัสน้ำหนักของเครือข่ายประสาท
อินพุตของเครือข่ายประสาทเทียมคือ "เสาอากาศ" ที่ตรวจพบการสัมผัส ค่าที่สูงกว่าหมายถึงใกล้มากและ 0 หมายถึงไม่ได้สัมผัส
ผลลัพธ์คือ "ล้อ" สองล้อ ถ้าล้อทั้งสองเดินไปข้างหน้า ถ้าล้ออยู่ในทิศทางตรงกันข้ามชายผู้นั้นก็เลี้ยว ความแรงของเอาต์พุตกำหนดความเร็วของการหมุนล้อ
เขาวงกตที่เรียบง่ายถูกสร้างขึ้น มันง่ายมาก ๆ - แม้แต่คนโง่ มีจุดเริ่มต้นที่ด้านล่างของหน้าจอและเป้าหมายที่ด้านบนมีสี่กำแพงในระหว่างคือ ผนังแต่ละห้องมีช่องว่างแบบสุ่มดังนั้นจึงมีเส้นทางเสมอ
ฉันเริ่มสุ่มคน (ฉันคิดว่าพวกเขาเป็นข้อบกพร่อง) ในตอนเริ่มต้น ทันทีที่ชายคนหนึ่งไปถึงเป้าหมายหรือถึงเวลาที่กำหนดออกกำลังกายจะถูกคำนวณ มันแปรผกผันกับระยะทางกับเป้าหมายในเวลานั้น
จากนั้นฉันจับคู่พวกเขาออกและ "อบรม" พวกเขาเพื่อสร้างคนรุ่นต่อไป ความน่าจะเป็นที่ได้รับเลือกให้เป็นมารยาทเป็นสัดส่วนกับความเหมาะสม บางครั้งสิ่งนี้หมายความว่ามีใครผสมพันธุ์กับตัวเองซ้ำ ๆ ถ้ามันมีความแข็งแรงสูงมาก
ฉันคิดว่าพวกเขาจะพัฒนาพฤติกรรม "ซ้ายกำแพง" แต่พวกเขาดูเหมือนจะทำตามสิ่งที่ดีที่สุดน้อยกว่า ในการทดลองทุกครั้งข้อผิดพลาดมารวมกันเป็นรูปแบบเกลียว พวกเขาจะเกลียวออกไปด้านนอกจนกว่าพวกเขาจะสัมผัสกำแพงทางด้านขวา พวกเขาทำตามนั้นจากนั้นเมื่อพวกเขาถึงช่องว่างพวกเขาก็จะม้วนตัวลง (ห่างจากช่องว่าง) และรอบ ๆ พวกเขาจะเลี้ยวไปทางซ้าย 270 องศาจากนั้นก็มักจะเข้าช่องว่าง สิ่งนี้จะพาพวกเขาผ่านกำแพงส่วนใหญ่และมักจะไปถึงเป้าหมาย
หนึ่งคุณลักษณะที่ฉันเพิ่มคือการใส่เวกเตอร์สีลงในยีนเพื่อติดตามความเกี่ยวข้องระหว่างบุคคล หลังจากผ่านไปหลายชั่วอายุคนพวกเขาจะมีสีเดียวกันซึ่งบอกฉันว่าฉันควรมีกลยุทธ์การผสมพันธุ์ที่ดีขึ้น
ฉันพยายามทำให้พวกเขาพัฒนากลยุทธ์ที่ดีกว่า ฉันซับซ้อนโครงข่ายประสาท - เพิ่มหน่วยความจำและทุกอย่าง มันไม่ได้ช่วยอะไร ฉันเห็นกลยุทธ์เดียวกันเสมอ
ฉันลองสิ่งต่าง ๆ เช่นมีการแยกยีนที่รวมตัวกันใหม่หลังจาก 100 รุ่นเท่านั้น แต่ไม่มีอะไรจะผลักพวกเขาไปสู่กลยุทธ์ที่ดีกว่า บางทีมันเป็นไปไม่ได้
สิ่งที่น่าสนใจอีกประการหนึ่งคือการสร้างกราฟความฟิตให้กับเวลา มีรูปแบบที่แน่นอนเช่นความฟิตสูงสุดจะลดลงก่อนที่มันจะสูงขึ้น ฉันไม่เคยเห็นหนังสือวิวัฒนาการพูดถึงความเป็นไปได้นั้น