Найти тему

Lunar Lander или искуственный интеллект для "посадки на Луну"

Всем привет! Команда продолжает работу и сегодня мы готовы представить новый проект - Lunar Lander.

Идея проекта

Возможно вы знаете игру выходившую ещё под платформу Atari в 1979 году. Цель игры - управляя космическим кораблём "посадить его на поверхность луны".

Скриншот оригинальной игры.
Скриншот оригинальной игры.

Если вы с ней не знакомы можете поиграть в эмуляторе - это хорошая возможность вернуться и ощутить сложность старых игр. Вот ссылка на один из онлайн эмуляторов - http://moonlander.seb.ly.

Наша команда решила воссоздать игру с использованием языка программирования Python3 и написать искусственный интеллект, цель которого - обучиться сажать космический корабль. Пример нашей версии игры.

Реализация

Python3 был выбран как один из самых простых и удобных языком программирования. Для вывода картинки был использован модуль PyGame.

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

Генетический алгоритм
Генетический алгоритм

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

Входами нейронной сети является:

  1. Угол наклона ракеты
  2. Сила с которой в данный момент включен двигатель и оставшееся количество топлива.
  3. Вертикальная и горизонтальная скорость ракеты
  4. Координаты ракеты
  5. Данные о поверхности ракеты
-4

На выход нейронная сеть может подать команду о повороте ракеты, а так же прибавить или убавить мощность двигателя. В нейронной сети 2 скрытых слоя.

Процесс обучения нейронной сети наглядно:

Наука
7 млн интересуются