underwit / agentsmith

Нейронная сеть оптимизируемая с помощью генетического алгоритма. Задача агента контролируемого при помощи нейронной сети состоит в том, чтобы избегать контакта с противниками, как можно более длительное время.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Agent Smith

Описание

Нейронная сеть оптимизируемая с помощью генетического алгоритма. Задача агента контролируемого при помощи нейронной сети состоит в том, чтобы избегать контакта с противниками, как можно более длительное время.

demo

Проект создан на чистом 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 выходных.

About

Нейронная сеть оптимизируемая с помощью генетического алгоритма. Задача агента контролируемого при помощи нейронной сети состоит в том, чтобы избегать контакта с противниками, как можно более длительное время.

License:MIT License


Languages

Language:Python 100.0%