An open API service indexing awesome lists of open source software.

https://github.com/underwit/agentsmith

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

agent evolutionary-algorithms evolutionary-strategy game genetic-algorithm machine-learning machine-learning-algorithms neural-network nn python python3 tkinter unsupervised-learning

Last synced: 3 months ago
JSON representation

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

Awesome Lists containing this project

README

          

# Agent Smith

### Описание

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

![demo](https://raw.githubusercontent.com/underwit/agentsmith/master/pics/demo.gif)

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