Симуляция жизни в системе Darwinbots. I. Первое знакомство

Привет, Хабр!

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

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

2. Симуляция и простейший бот



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

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

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

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

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

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

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

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

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

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

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



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

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

И напоследок, картинки для привлечения внимания:


Секундой позже:


Через несколько сотен циклов симуляции:


Увидимся!



UPD: Друзья!
Ответьте, пожалуйста, на вопрос по будущему продолжению статьи по ссылке. Заранее благодарю!
Share post

Comments 22

    +2
    заинтригован. с нетерпением жду продолжения.
      +1
      А продолжение нескоро — интернет вернут в десятых числах января.
      Зато в планах есть проба пвп-режима и много чего еще)
      И спасибо за комментарий!
        0
        1
      • UFO just landed and posted this here
          +1
          Похожее. Года 2 назад баловался ещё.
            0
            Мда… И эту забаву уже перевели на коммерческие рельсы…
              0
              А что в этом плохого? Все базовые возможности все равно ведь остаются доступны бесплатно.
                0
                А тут все бесплатное, сечете?))
          0
          Спасибо, интересно. Есть ли что-то подобное из области симуляции поведения высших животных и человека? Поведение толпы и т.п.
            +1
            Возможно есть, может быть позже поищу.
            А вообще моделированием толпы или очереди занимается программа GPSS World.
            0
            Вот такой очень древний проект (емнип польский)
            www.framsticks.com/a/al_grafika.html

            Тема alife симуляторов поднимается регулярно, но почему-то так же регулярно и забывается.

            Список симуляторов есть и на en.wikipedia.org/wiki/Digital_organism_simulators#Notable_simulators
              0
              Стоит заценить, спасибо)
              0
              Spore наглядней будет :D
                0
                Интересно.
                Небольшая поправка — может не FILO а LIFO? Насколько знаю бывает только LIFO и FIFO.
                  0
                  Спасибо)
                  Я тоже так сначала подумал, однако оказалось, что это то же самое, что и FIFO, цитата:
                  Разница, возможно, станет яснее, если принять во внимание реже используемый синоним FILO, означающий First-In-Last-Out («первым пришёл — последним ушёл»).
                  Взято отсюда
                  0
                  Чего всё бедного дедушку Дарвина дёргают?
                  Генетика, так Mendelbots тогда уж :)
                    0
                    Один из создателей программы попросил Вам ответить (Botsareus на форуме проекта):
                    Darwinbots так же направлен на развитие (эволюцию) ботов,
                    поэтому и назван Darwinbots.
                    0
                    Друзья!
                    Ответьте, пожалуйста, на вопрос по будущему продолжению статьи по ссылке. Заранее благодарю!
                      0
                      Так и что в итоге? Вот написали вы ботами «habr», а через сотню циклов там с виду просто хаос.
                      Выработали ли боты какие-либо интересные полезные адаптации?
                      Каково дерево эволюции? Если кто-то вырабатывает что-то полезное, то его линия вытесняет всех? Или могут появится несколько долгоживущих линий пошедших по разным путям и выдерживающих конкуренцию друг с другом?
                        0
                        Симуляция жизни в системе Darwinbots. Часть первая

                        Я думаю, вы поймете, что будет дальше.
                        Успехов Вам!
                          0
                          Один из разработчиков программы Botsareus:
                          You need to wait a good 100,000 cycles to see any interesting results.
                          If you DO NOT study how the program works most robot behavior looks chaotic.
                          If you do not hyper-direct the evolution (like in my personal experiments) all the robots are trying to achieve (by evolution) is ecological stasis. So, the results are not always what you expect but they are still interesting.

                        Only users with full accounts can post comments. Log in, please.