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