Симуляция жизни в системе Darwinbots. Часть первая

в 10:53, , рубрики: алгоритм, Алгоритмы, Биотехнологии, выживание, генетика, генетический алгоритм, естественный отбор, Программирование, симуляция, метки: , , , , ,

Привет!
Симуляция жизни в системе Darwinbots. Часть первая
Недавно сдал курсовую работу по генетическим алгоритмам в программе Darwinbots и решил, что это будет интересно сообществу. Тем более, что в данный момент сообщество проекта довольно мало. Статьи будут наполовину переводом документации, а наполовину своими исследованиями программы.

1. Первое знакомство

Симуляция жизни в системе Darwinbots. Часть первая

Итак, программа Darwinbots является симулятором искусственной жизни. Первые версии написаны итальянским программистом Carlo Comis с использованием языка программирования Visual Basic. Последняя версия программы на данный момент – 2.45.02D, выпущена 21 августа 2012 года. В данный момент ведётся разработка третьей версии приложения, полностью переписанного на C#. Также существует порт на языке C++. Исходный код проекта опубликован в системе управления версиями Subversion и доступен всем желающим.

Программа имитирует жизнь популяции организмов – ботов (роботов), ДНК которых описывается вручную с помощью специально разработанного языка. ДНК, по сути, является большим конечным автоматом, который считывает информацию с множества различных входов, модифицирует ее и подключается к выводам с действиями. Код бота (далее ДНК) описывается в текстовом файле с расширением .txt, что позволяет работать с ним в любом редакторе, в том числе в Блокноте. Суть симуляции состоит в выполнении ДНК за каждый цикл, с учётом возможных взаимодействий организмов, мутаций, вирусов и так далее.

Главный элемент интерфейса программы Darwinbots – мир ботов (или поле моделирования). Мир ботов – это большая недискретная плоскость (да, тот самый синий прямоугольник, что был ранее). По умолчанию, боты могут двигаться по всей площади мира. Настройки мира задаются в настройках симуляции.

Симуляция жизни в системе Darwinbots. Часть перваяКаждый бот представлен окружностью определённого размера и цвета, с некоторым узором в центре. «Глаз» бота обозначается белой точкой. Он включает в себя 9 простых глазков. При выделении бота на поле моделирования можно увидеть сетку из полей зрения каждого глазка. Глазки передают в программу значение, примерно соответствующее размеру объекта, попавшего в поле зрения.

Бот имеет систему простейших тактильных ощущений, которая позволяет ему чувствовать столкновение или атаку со стороны другого бота. Сенсорные входы ботов анализируются в ДНК, которая написана на языке с использованием абстракции FILO («первым пришёл — последним ушёл», по принципу поставленных друг на друга тарелок). ДНК большинства ботов имеют от 6 до 20 процедур, именуемых генами, в которых может выполняться до 200 операций. Каждая операция может мутировать.

Каждый бот имеет свой запас энергии. Большинство действий уменьшают количество энергии. Когда энергия станет равной нулю, бот погибнет, а когда станет выше уровня, определенного в ДНК – начнет размножение. Энергия может быть пополнена путем поглощения других ботов (аналог охоты в обычной среде) и запасами энергии из своего «тела». Если бот выбран в качестве автотрофа, то энергия восполняется автоматически в течение продолжительного времени.

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

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

Когда бот размножается, его ДНК передается потомку, иногда с некоторыми изменениями, которые влияют на поведение бота. Как в реальном мире, с изменением ДНК может произойти эволюция – очередное поколение ботов может стать более способным атаковать, размножаться, избегать контактов и так далее. Такие мутации либо передаются из поколения в поколение, либо исчезают. Со временем в ДНК может накопиться нежелательный код, который не выполняет ничего полезного. Он будет отнимать больше энергии и сделает ДНК более загруженным.

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

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


Конечно, в этой вводной статье я вряд ли смог заинтересовать Вас этим проектом, но, в качестве приманки могу рассказать, что программа имеет Интернет-режим (некое подобие PvP), а разработчики ботов могут принимать участия в лигах – своеобразных соревнованиях.

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

И напоследок, картинки для привлечения внимания:
Симуляция жизни в системе Darwinbots. Часть первая

Секундой позже:
Симуляция жизни в системе Darwinbots. Часть первая

Через несколько сотен циклов симуляции:
Симуляция жизни в системе Darwinbots. Часть первая

Увидимся!


К сожалению, в данный момент у меня нет Интернета, поэтому на комментарии могу и не ответить (Ростелеком уже достал). А НЛО спасибо за приглашение.

Автор: cjmaxik

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js