Im создает игрока Tetris с использованием генетических алгоритмов и сталкивается с некоторыми проблемами. Я прочитал много связанных работ, но они не дают мне достаточно подробностей о GA.
Проблема в том, что мой агент, похоже, очень быстро застревает... Я использую функцию оценки, занимаю 4 функции: высоту, закрытые отверстия, плоскость и количество очищенных строк. Я прочитал статью, которая использует ту же оценку и способна выполнять тысячи строк.
После 600 поколений, с населением в 100 агентов, лучший из них способен выполнять только 260 строк в среднем, это хромает. Все агенты играют одну и ту же последовательность фрагментов.
Подробности моего GA:
поколения: 600 Население: 100
гены: массив из 4 значений поплавка, от 0 до 1.
Равномерный кроссовер происходит с определенной вероятностью и свопит гены между двумя родителями с определенной вероятностью.
Мутация происходит с определенной вероятностью, здесь я пробовал 3 разных подхода: заменить гены, заменить ген на случайное значение или добавить некоторое значение шума в ген.
У меня элитный уровень 50%, и заметил, что некоторые хорошие агенты выбираются и рождаются худшими агентами, загрязняя население.
Выбор колесика рулетки...
Если кто-то может дать мне информацию о наилучшем способе кроссовера и мутации, я ценю!
Спасибо, и извините за длинный пост!