Генетический алгоритм и Тетрис
Im создание игрока Тетрис с использованием генетических алгоритмов, и сталкиваются с некоторыми проблемами. Я читала много работ, но они не дают мне достаточно информации на GA.
проблема в том, что мой агент, кажется, очень быстро застрял...Im, используя функцию оценки, берет крышки 4 функции:высота, закрытые отверстия, плоскостность и количество очищенных строк. Я прочитал статью, которая использует ту же оценку и способна делать тысячи строк.
после 600 поколений, с населением 100 агентов, лучший из них способен делать только 260 строк в среднем, это хромота. Все агенты играют одну и ту же последовательность.
детали моего GA:
поколений:600 население:100
гены: массив из 4 значений float, между 0 и 1.
равномерное пересечение происходит с определенной вероятностью и меняет гены между двумя родителями с определенной вероятностью.
мутация происходит с определенной вероятностью, здесь я попробовал 3 разных подхода: поменять гены, заменить ген случайным значением или добавить некоторое значение шума к гену.
У меня элитная ставка 50%, и я заметил, что некоторые хорошие агенты отбираются и рождаются худшие агенты, загрязняя население.
выбор колеса рулетки...
Если кто-то может дать мне подробную информацию о лучшем способе кроссовера и мутировать, я ценю!
спасибо, и извините за длинный пост!
2 ответов
кажется, есть некоторая разница в функциях оценки. Вы описываете четыре особенности:
- высота
- покрыты отверстиями,
- плоскостности и
- количество очищенных строк
однако документ, на который вы ссылаетесь, описывает пять характеристики:
функция, которую агент использует для определения полезности состояния платы, является взвешенной линейной суммой числовых признаков вычисляется из состояния. Агенты Колина Фейхи использовали следующие возможности:стопка-высота число закрытые отверстия и ряд колодцы (Fahey 2003). Функции, которые мы добавили количество строки, которые были только что сделаны, и число, которое представляет как "ухабистая" куча.
(курсив мой)
таким образом, кажется, что вам не хватает функции "колодцы" в вашей функции оценки и состава генов.
в отличие от бумаги, вы должны выполнить 'следующий' аспект игры.
имитировать все возможные места размещения "текущей части", а затем "следующая часть" перед вычислением "полезности".
для производительности вы можете кэшировать места размещения "следующая часть" для лучшей "утилиты", чтобы их не нужно было пересчитывать как "текущие места размещения".
в то время как расчеты будут медленнее, я считаю, что ваши агенты будут развиваться быстрее/умнее.