Привет, Хабр!
Недавно я сдал курсовую работу по генетическим алгоритмам в программе Дарвинботы и решил, что это будет интересно сообществу.
Более того, на данный момент сообщество проекта довольно маленькое.
Статьи будут наполовину переводами документации, а наполовину собственными исследованиями программы.
1. Первое знакомство
2. Симуляция и простой бот
Итак, программа Дарвинботы представляет собой искусственный симулятор жизни.
Первые версии были написаны итальянским программистом Карло Комисом с использованием языка программирования Visual Basic. Последней версией программы на данный момент является 2.45.02D, выпущенная 21 августа 2012 года.
В настоящее время разрабатывается третья версия приложения, полностью переписанная на C#.
Существует также порт на C++.
Исходный код проекта опубликован в системе контроля версий Subversion и доступен каждому.
Программа моделирует жизнь популяции организмов – ботов (роботов), ДНК которых описывается вручную с помощью специально разработанного языка.
ДНК — это, по сути, большой конечный автомат, который считывает информацию со множества различных входов, модифицирует ее и подключает к действенным выходам.
Код бота (далее ДНК) описан в текстовом файле с расширением .
txt, что позволяет работать с ним в любом редакторе, включая Блокнот. Суть моделирования заключается в выполнении ДНК для каждого цикла с учетом возможных взаимодействий организмов, мутаций, вирусов и так далее.
Основным элементом интерфейса программы Darwinbots является мир ботов (или поле моделирования).
Мир ботов — это большая недискретная плоскость (да-да, тот самый синий прямоугольник, что был раньше).
По умолчанию боты могут перемещаться по всей территории мира.
Настройки мира задаются в настройках симуляции.
Каждый бот представлен кругом определенного размера и цвета с каким-либо узором в центре.
«Глаз» бота обозначен белой точкой.
В комплект входит 9 простых глаз.
При выборе бота на поле симуляции можно увидеть сетку полей зрения каждого глаза.
Глаза передают программе значение, примерно соответствующее размеру объекта в поле зрения.
У бота есть система простых тактильных ощущений, позволяющая ему почувствовать столкновение или атаку другого бота.
Сенсорные входные данные ботов анализируются в ДНК, которая записывается на языке с использованием абстракции FILO (первый пришел – последний ушел), основанной на принципе сложенных друг на друга пластин.
Большинство ботов имеют от 6 до 20 процедур ДНК, называемых генами, которые могут выполнять до 200 операций.
Каждая операция может видоизменяться.
Каждый бот имеет свой запас энергии.
Большинство действий уменьшают количество энергии.
Когда энергия достигнет нуля, бот умрет, а когда она поднимется выше уровня, определенного в ДНК, он начнет воспроизводиться.
Энергию можно восполнить, поглощая других ботов (аналог охоты в обычной среде) и накапливая энергию собственного «тела».
Если бот выбран автотрофом, то энергия восполняется автоматически в течение длительного периода времени.
Бот может стрелять неосязаемыми снарядами, атаковать, собирать мусор, заражаться и обмениваться информацией с другими ботами.
Снаряд — это точка на поле моделирования, не имеющая массы и физических размеров.
Бот также может общаться с другими ботами, образуя сложную многоклеточную структуру, внутри которой боты могут обмениваться энергией, операциями и перемещаться по полю.
Когда бот размножается, его ДНК передается потомству, иногда с некоторыми изменениями, влияющими на поведение бота.
Как и в реальном мире, эволюция может происходить с изменением ДНК — боты следующего поколения могут стать более способными атаковать, размножаться, избегать контакта и так далее.
Такие мутации либо передаются из поколения в поколение, либо исчезают. Со временем ДНК может накопить нежелательный код, который не приносит никакой пользы.
Это потребует больше энергии и сделает ДНК более загруженной.
Поскольку программа не решает, какой организм выращивать, способности бота проявляются в долгосрочной перспективе через сочетание стратегий движения, управления энергией, размножения и т. д. Ограничений по сложности кода ДНК нет. «Эволюция дарвинботов занимает довольно много времени.
Поколение ботов может жить в течение нескольких тысяч циклов, а большинство симуляций выполняется со скоростью около 15 циклов в секунду, поэтому могут пройти часы или дни, прежде чем произойдет значительный естественный отбор.
Конечно, в этой вводной статье я вряд ли смог бы заинтересовать вас этим проектом, но в качестве приманки могу вам сказать, что в программе есть интернет-режим (какой-то PvP), а разработчики ботов могут принимать участие в лигах - своего рода соревнование.
В следующей статье мы поговорим о настройках симуляции и программировании ботов.
И напоследок картинки для привлечения внимания:
Секундой позже:
После нескольких сотен циклов моделирования:
Увидимся!
УПД: Друзья! Ответьте, пожалуйста, на вопрос относительно будущего продолжения статьи.
Заранее спасибо! Теги: #генетика #алгоритм #генетический алгоритм #выживание #симуляция #естественный отбор #программирование #Алгоритмы
-
О Чем Молчит Начальник?
19 Oct, 24 -
Пишем Наш Первый Плагин Для Brackets
19 Oct, 24 -
От Сценариев Python К Приложениям Wsgi
19 Oct, 24