настроить параметры генетического алгоритма - PullRequest
0 голосов
/ 23 июня 2018

Мой проект - сделать ИИ, играющего 2048 на питоне, используя генетический алгоритм и нейронные сети. Я использую нейронную сеть в качестве структуры для вычисления того, что является лучшим движением, учитывая текущую сетку и генетический алгоритм для корректировки весов и смещений. Так что я не использую обратное распространение.

На данный момент лучшие результаты составляют всего 512, что чуть выше, чем у полностью случайного игрового продукта (в среднем случайный пробег достигает 128, а самый удачливый дает 256).

Во многих руководствах по искусственному интеллекту они говорили, что найти правильные настройки - это вопрос опыта. Так как это мой первый проект в этой области, у меня нет такого опыта. У меня вопрос , в котором содержится вся информация ниже, , что можно отрегулировать для улучшения результатов ? Жирные цифры - это параметры, которые, я думаю, должны быть скорректированы.

Я следую основным шагам в алгоритме генетики:

  1. поколение:

    Я создаю совокупность 600 сетей. Структура сетей:

    • 16 нейронов для входного слоя (по одному на каждый квадрат сетки)
    • 3 скрытые слои с 10 нейронами каждый
    • 4 нейронов для вывода
  2. оценка

    Я проверяю все население, выполняя полную игру 2048 года (конечно, это неграфическое моделирование) и собирая их счет и значение максимальной плитки. (Я использую многопроцессорность, чтобы сделать несколько запусков параллельно) Я рассчитываю пригодность на оценка + (maxTileValue) ²

  3. выбор

    Я просто сортирую их и убиваю половину самого плохого фитнеса

  4. воспроизведение

    для каждой сети, которую мне нужно воссоздать, я выбираю одного из выживших и добавляю к каждому весу случайное значение между -0,5 и 0,5, умноженным на 100 / (средняя пригодность генерации)

Я повторяю это для 200 поколений.

Я не использую Tensorflow или какую-либо библиотеку. Полный код на github (https://github.com/Nonoreve/2048Solver/tree/master/solver/AIsolver)

(я студент из Франции, поэтому извиняюсь за синтаксис и грамматику) .

...