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