Нейронная сеть оптимизируемая с помощью генетического алгоритма. Задача агента контролируемого при помощи нейронной сети состоит в том, чтобы избегать контакта с противниками, как можно более длительное время.
Проект создан на чистом python 3.x без использования сторонних библиотек.
Внимание!!! прошу прощения за код, делал на скорую руку. Некоторые архитектурные решения могут покалечить психику.
Для начала обучения необходимо запустить скрипт run.py
пример:
python run.py -s 16 32 -F 0.3 -D 0.5 -L 5000 -b 40 -r 42
-h, --help show this help message and exit
-s Форма нейронной сети
--no-mutate Отменить мутации новых особей
-M {gauss,normal} Функция мутации генов
-F Доля мутируемых генов
-D Отклонение при мутации
-L Лимит необходимых очков
-b Количество противников
-p Количество особей в популяции
-c Количество новых детей
-g Количество поколений
-W Ширина комнаты симуляции
-H Высота комнаты симуляции
-r Начальное состояние генератора случайных чисел
В папке sample есть пара уже обученных сетей.
Для просмотра работы обученной сети, необходимо воспользоваться player.py передав в качестве аргумента json файл с обученной сетью.
Пример:
python player.py sample/17-34-2_5120_30122017_1450.json
Из названия файла видно, что сеть имеет 17 входных нейронов 34 в скрытом слое и 2 выходных.