SamProf - Developer
02 November 2018
07 May 2018
Мир ботов и генетический алгоритм
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi69BeOlpxrZ5aD9OIkktNYbH5Wk0CDvzFozS5jk5R5XXOkrJjSmBNAJ61-gFfgL3nDhT_YFQ8XgAbLsxDtEf8wMk9MLOAi7c76vEKqz8bUadDhZbKNPcBqyVhIPKheZkmagyRm2MhvFaw/s400/Screenshot+2018-05-06+19.30.59.png)
Примерно пол года назад набрел на видео о том, как человек сделал искусственный интеллект. И это видео полностью перевернуло мое понимание того, чего можно добиться с помощью ИИ.
![](https://img1.blogblog.com/img/video_object.png)
И вот я приболел и решил сделать нечто похожее.
Итак, я тоже сделал маленьких синих ботов, которые будут самостоятельно выживать в мире.
Боты имеют мозг - микропрограмму, которая является геномом бота, которая будет создаваться и эволюционировать сама.
Мозг - 64 ячейки памяти (чисел). Каждое число - команда.
Команды:
- ходить,
- повернуться
- схаватить еду или преобразовать яд в еду,
- посмотреть что в соседней ячейке,
- безусловный переход
- добавил дальнее зрение (посмоотреть на ячейку дальше соседних)
В начале все йчейки заполняются случайными числами, потом боты помешаются в мир, где они могут за ход выполнить 1 команду хода и до других 10 команд.
Если бот попал на еду, ему добавляется 10 здоровья, если на яд - он умирает. Каждый ход бот теряет 1 здоровья. Когда здоровье доходит до 0, бот умирает.
После каждой симуляции жизни мира новое поколение составляют только лучшие боты с предыдущей симуляции и плюс добавляются мутации (случайной изменение нескольких ячеек памяти на случайные числа).
В итоге боты начинают эволюционировать и с каждым поколением боты становятся умнее.
Если пройти несколько поколений (несколько тысяч), то боты уже вполне могут жить. Для быстрой симуляции большого количества поколений - нажать на кнопку Fast by Generations. Потом можно вернуться на Slow by Step.
В целом идея слизана с этого видео и немного развита. Код написан на TypeScript/JS и выложен на GitHub.
Ссылка на демо: https://samprof.github.io/SamProfAI/#/world?autoStart=true
Subscribe to:
Posts (Atom)