Intereting Posts
Запись строки Android в файл занимает слишком много времени Как я могу назвать метод в Котлин с другой верхней границей? Android: Kotlin: пользовательский webView – не может быть вызван как функция. Функция 'invoke ()' не найдена Мутидекс и Котлин Как документировать параметр первичного конструктора с помощью Kotlin Dokka Ошибка приложения при попытке отправить SMS-сообщение WeakReference не работает в Котлине отношения kotlin coroutine и основного обработчика Room Persistence @Relation работает на Java, но не в Колине SugarORM + Kotlin: Неопубликованная ссылка "listAll" Kotlin: как передать массив в аннотацию Java Активность фрагмента фрагмента kotlin имеет вид с одинаковым идентификатором, это не нормально Есть ли способ сделать виджет ViewPager DecorView с содержимым фрагмента? Сигнал / событие AboutToQuit в Android Не удалось загрузить ошибку класса kotlin.collections.CollectionsKT при попытке синхронизации градиента

Астероиды Игра AI – Усиление обучения Входы

в свободное время, для учебы и развлечений, я создал искусственный учебный ИИ для моей собственной реализации классической игры Asteroids. Реализация игры прямолинейна – я использую простую двумерную физику Ньютона в фиксированном цикле времени обновления. Я запускаю 100 экземпляров игры параллельно, представляя их в сетке с использованием JavaFX, чтобы пользователь мог сразу увидеть все симы. Если пользователь щелкает ячейку в сетке, экземпляр игры в этой ячейке отображается в полноэкранном режиме, щелчок снова возвращается к виду сетки. Корабли в игре контролируются нейронной сетью. У каждого корабля есть своя сеть. Все сети инициализируются случайными значениями. Я измеряю их пригодность, поскольку количество астероидов уничтожено. Каждые 90 секунд я выполняю генетический алгоритм на текущем наборе сетевых весов с возможностью выбора, непосредственно пропорциональной фитнесу. Со временем они «учатся» улучшаться в астероидах игры. Это стандартное учебное пособие по изучению текста.

Сети имеют 3 выхода от -1 до 1: крутящий момент, тяга и стрельба. Упор и крутящий момент преобразуются в 1, если они больше 0, иначе они равны 0. Крутящий момент остается между -1 и 1.

Мне интересно, каковы должны быть входные данные в сеть? На данный момент я использую векторы к ближайшим 5 астероидам – ​​нормализуя их до диапазона от -1 до 1 по отношению к свойствам ширины sim / sim. Сети также принимают скорость тока кораблей, также нормализуется между -1 и 1 относительно максимальной скорости кораблей. Я думал, что это похоже на разумные исходные данные, но моя система никогда не сходится на том, что я бы назвал эффективным решением. Я надеялся / ожидал, что сети будут сходиться на решении, где корабль действительно хорошо справляется с тем, чтобы избежать астероидов и уничтожить все астероиды в кратчайшие сроки. Однако то, что на самом деле происходит, это то, что они вообще не сходятся ни на что. Даже после 50 поколений они кажутся довольно случайными.

У кого-нибудь есть идеи?

Код находится здесь:

https://github.com/ThomasCookDeveloperInfo/AsteroidsNeuralNetwork