Я пытался реализовать генетический алгоритм для игры «крестики-нолики».На данный момент я делаю следующее:
- Инициализируем 50 случайных сетей
- Пусть каждая сеть играет против каждой сети.
- После этого каждая сетьсыграет 98 игр (против каждого игрока на каждой стороне)
- пригодность каждой сети рассчитывается следующим образом:
fitness = wins + draws -loses
Применить генетический алгоритм:
5,1.Выберите 5 лучших сетей по значению их пригодности.
5.2.Скопируйте эти 5 сетей в другие 45 сетей.(То есть 10 раз первое, 10 раз второе ...)
5.3.Измените p процентов от веса со случайным гауссианским множителем, умноженным на коэффициент s.
if(p < Random(0,1)){
weight/bias += Random.gaussian() * s;
}
Мои значения, которые я сейчас использую:
p = 0.05
s = 0.05
И моя сеть принимает решения следующим образом:
Я использую минимаксный алгоритм с глубиной 2 (не много, я знаю).Оценка платы выполняется сетью.
Моя проблема сейчас заключается в том, что она не работает должным образом.Когда я играю против него впоследствии, он обычно делает глупые ходы и позволяет мне выиграть или не выигрывает сам, когда я позволю.
Я очень рад, если кто-то может помочь мне с этим.
Привет, Финн