Я експериментував з GA в молодості. Я написав тренажер в Python, який працював так.
Гени кодували ваги нейронної мережі.
Входи нейронної мережі були "антенами", які виявляли дотики. Вищі значення означали дуже близько, а 0 - не торкатися.
Виходи були на два "колеса". Якщо обидва колеса йшли вперед, хлопець пішов вперед. Якщо колеса були в протилежних напрямках, хлопець повернувся. Сила виходу визначала швидкість повороту колеса.
Створювався простий лабіринт. Це було дійсно просто - навіть дурно. Був початок внизу екрана і мета вгорі, з чотирма стінками посередині. Кожна стіна мала простір, виведений випадковим чином, тому завжди був шлях.
Я почав випадкових хлопців (я вважав їх помилками) на початку. Як тільки один хлопець досяг цілі, або було досягнуто обмеження часу, придатність розраховувалася. Це було обернено пропорційним відстані до мети на той час.
Потім я спарив їх і "розвів", щоб створити наступне покоління. Ймовірність того, що його обрали для розведення, була пропорційна його придатності. Іноді це означало, що когось розводили з собою неодноразово, якщо він мав дуже високу відносну придатність.
Я думав, що вони розвинуть поведінку "обіймаючи ліву стіну", але вони, здавалося, дотримуються чогось менш оптимального. У кожному експерименті помилки сходилися до спіральної картини. Вони будуть спірально виходити назовні, поки не торкнулися стіни праворуч. Вони слідували за цим, тоді, дійшовши до розриву, вони спірально вниз (подалі від розриву) і навколо. Вони зробили б поворот на 270 градусів ліворуч, після чого зазвичай увійшли до проміжку. Це дозволило б їм пройти через більшість стін і часто до мети.
Однією з особливостей, яку я додав, було введення в гени кольорового вектора для відстеження спорідненості між особинами. Через кілька поколінь всі вони будуть одного кольору, що скаже мені, що я повинен мати кращу стратегію розведення.
Я намагався змусити їх розробити кращу стратегію. Я ускладнив нейронну мережу - додав пам’ять і все. Це не допомогло. Я завжди бачив однакову стратегію.
Я спробував різні речі, як, наприклад, окремий генофонд, який рекомбінували лише через 100 поколінь. Але ніщо не підштовхне їх до кращої стратегії. Можливо, це було неможливо.
Ще одна цікава річ - графік фітнесу з часом. Існували певні закономірності, як, наприклад, максимальний рівень фітнесу знижувався до того, як він підніметься. Я ніколи не бачив, щоб книга про еволюцію говорила про таку можливість.