Нейроэволюция киберкальмаров. Перезагрузка

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!


С интересом слежу за темой симуляции живого посредством компьютерных программ. Нейросети демонстрируют огромный прогресс переваривая гигабайты информации.
Обучение нейронных сетей, в части требуемых ресурсов, далеко ушло от среднего по мощности настольного компьютера. Поэтому всегда интересны "игрушечные" проекты с быстрой обратной связью в части обучения нейросетей. А лучше всего, чтобы нейросеть сама и обучалась без заметных усилий со стороны разработчика. Этой весной был приятно удивлен обнаружив статью Job Talle о нейроэволюции кальмаров.


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


Начнем с источников:



Оригинальная статья взятая за основу при программировании кальмаров(осьминогов)



Перевод вышеуказанной статью на Хабре.


Если читатель пройдет по ссылкам, то обнаружит подробный рассказ(и его перевод) о реализации нейроэволюции на примере кальмаров. Результат статьи будет выглядеть так:



или так:



В статье приводятся исходный код и ссылка на симуляция выполняемую в браузере.


Когда все уже готово, рассказано и показано, остается вопрос, а как эта программа работает на самом деле.


Поэтому решил переписать код изначально созданный под JavaScript на более близкий мне с++. Как всегда бывает с чужим кодом, сначала многое было непонятно. Чего стоит такой вот пассаж:




простыми словами автор программы включил в индекс нейрона и его тип, зачем этот прием из 80-х годов непонятно. Вроде сейчас памяти хватает в компьютерах.


Но в целом прототип заработал и стал выглядеть примерно так:



Щупальца удлинил относительно оригинальных вариантов, показалось более гармонично.
Но картинка выглядела слишком схематично.


Решил добавить для гладкости сплайны по точкам щупалец и сдвиг точек сплайна от центральной линии щупальца в зависимости от расстояния от тела кальмара.



выглядит неплохо, но переход щупальца к телу хотелось увидеть более естественным, добавил более сильный отступ от центра щупальца:



в итоге остановился на таком варианте:



Но кальмары скорее всего не прозрачные, поэтому картинка больше про медуз:



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



или в движении:



и более мультипликационно:



Дело сделано в 2D, но 3D все еще мейнстрим, поэтому переходим к следующему этапу. Сначала понять как буду крепить щупальца:



Решил сначала физику переписать с нуля:




Видно, что опирается на щупальца, добавил коллизии щупалец и прочее из набора физического движка. Потянуло на проверенный временем Bullet Physics Library:



Но вскоре решил не трогать то, что работало изначально и просто добавил еще одно измерение в первоначальную физику:




получилось похоже на оригинал но в 3D. На видео видно баг, когда одна из щупалец ломается. Дело в том, что в 3D поиск нормали к вектору не совсем тривиальная задача. Местами симуляция движения щупальца ошибалась в выборе нормали. Поправил.


Конечный результат, что-то из фильма "Матрица":



Судя по первым комментариям, есть непонимание в части "анимации" движения щупалец. Щупальца приводятся в движение сигналами от конечных(выходных) нейронов, количество которых равно количеству щупалец у кальмара. Смещение начального сегмента щупальца зависимости от величины и знака сигнала(положительный или отрицательный) на выходном нейроне. Сенсоры сейчас особо не развиты и поэтому эволюция больше идет в части скорости движения кальмара.Больше скорость, больше еды собирает. В оригинальной программе на вход нейрона автор вообще ничего не подает. Готов рассмотреть предложения: какие сенсоры разместить на 3D варианте? думаю материала наберется для целой статьи.

Источник: https://habr.com/ru/post/524760/


Интересные статьи

Интересные статьи

Статья о том, как упорядочить найм1. Информируем о вакансии2. Ведём до найма3. Автоматизируем скучное4. Оформляем и выводим на работу5. Отчитываемся по итогам6. Помогаем с адаптацией...
Много всякого сыпется в мой ящик, в том числе и от Битрикса (справедливости ради стоит отметить, что я когда-то регистрировался на их сайте). Но вот мне надоели эти письма и я решил отписатьс...
Вам приходилось сталкиваться с ситуацией, когда сайт или портал Битрикс24 недоступен, потому что на диске неожиданно закончилось место? Да, последний бэкап съел все место на диске в самый неподходящий...
Как широко известно, с 1 января 2017 года наступает три важных события в жизни интернет-магазинов.
Эта статья посвящена одному из способов сделать в 1с-Битрикс форму в всплывающем окне. Достоинства метода: - можно использовать любые формы 1с-Битрикс, которые выводятся компонентом. Например, добавле...