2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Генетический бассейн
Сообщение25.11.2008, 15:36 
Аватара пользователя


17/05/08
358
Анк-Морпорк
Если бы вам поручили создать животный мир на некоторой планете, по какому пути бы вы пошли: задавали бы внешний вид и поведение для каждого из многочисленных видов, или создали бы только простейшие существа и определили бы правила, по которым они смогут дальше совершенствоваться самостоятельно?

Лично для меня привлекательнее второй вариант, как с точки зрения гибкости, так и с точки зрения интереса моделирования. Подобным принципом, похоже, руководствовался и Джеффри Вентрелла, талантливый программист и исследователь, когда создавал свой ”Генетический пруд” (GenePool). О мирах и существах, которых призвать к жизни может эта программа, я и собираюсь рассказать в сегодняшнем обзоре.

Итак, имеется водоём, в котором живут существа – свимботы. У свимбота есть два базовых инстинкта: питания и размножения. Тела их состоят из сегментов, которыми свимбот должен шевелить определённым образом, чтобы плыть. Движение его просчитывается, исходя из реальной физики поведения тел в жидких средах. Чем лучше он плавает, тем больше вероятность, что не погибнет от голода, найдёт партнёра для размножения, и, следовательно, передаст свои гены будущему поколению. В итоге в популяции должны остаться только лучшие пловцы.

Так работает естественный отбор в этом мире. Но здесь введён ещё и половой отбор – свимботы охотнее скрещиваются с теми особями, которые похожи на них по окраске (по крайней мере, такое правило стоит по умолчанию). Таким образом, на сохранение свимбота в общем генофонде бассейна влияют также некоторые параметры, не связанные с его умением плавать.

Вот запустил я эту программу. На старте случайным образом создаются 200 существ и 700-800 кусочков пищи.
Изображение

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

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

Выжили же и дали потомство из стартового набора существ вот такие ”веточки”.

Изображение

Когда пища недалеко, усилия, затрачиваемые ими на покачивающиеся передвижения, вполне окупаются. Однако вскоре в центральной части бассейна еда закончилась, вместе с ней ушла и пора доминирования “веточек”. Им на смену пришли “двухвостки” (справа).

Изображение

Они могут передвигаться на сравнительно большие расстояния, а за счёт амплитуды колебаний головной части, с большей вероятностью захватят пищу. Выжившие на тот момент или мутировавшие из “двухвосток” “черви” (слева), не смотря на более экономное расходование энергии, всё равно продолжают заглатывать пищу, только если плывут прямо на неё. Правда, уже после нескольких попыток они начинают отворачивать от стенок бассейна и плавают в основном по его периметру.

Появляющиеся в это время “веточки” (в центре) выживают, только если неподалёку есть пища в большом количестве.

До сих пор “двухвостки” выживали только за счёт статистики: им, с большими шансами, нежели другим существам, удавалось во время движения захватить еду. Но, где-то через 15 часов моделирования, я обнаружил удивительную вещь: двухвостка, проплыв мимо еды, свернулась клубком и, выпрямившись, изменила направление своего движения по направлению к ней. Приглядевшись, я обнаружил, что все имеющиеся на тот момент в колонии двухвостки обладали этой способностью. Они, без изменения строения тела, научились более эффективно им управлять!

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

Каково же было моё разочарование, когда я обнаружил, что в водоёме, полном еды, осталась всего пара умных двухвосток, причём у разных его бортов. Поскольку обе они уже почти достигли предельного возраста в 40000 тиков, судьба мира была предрешена. Просмотрев исторические графики, я понял, что умение всегда находить еду сыграло против этого вида: умные двухвостки размножились в чрезвычайно большом количестве, съели почти всю еду и погибли от голода, а когда запасы пищи восстановились, последние выжившие не смогли встретиться, чтобы произвести потомство.

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

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

Есть 6 кнопок меню:

Pool – служит для создания новых бассейнов, сохранения текущего и загрузки старых. Создавая новый бассейн, можно заселить его полностью случайными существами, создать группу родственных существ, заселить весь бассейн зелёными существами с двумя гребными лапками, или же подготовить пустую ёмкость. Загрузка и сохранение несколько неудобны: есть всего 4 слота для различных аквариумов, и постоянно путаешься, кто у тебя где живёт.
Tweak – Можно настроить такие параметры мира, как скорость нарастания и распространение пищи, прирост энергии для существа от пищи, предел оставшейся энергии, ниже которого инстинкт размножения уступает место инстинкту питания и процент энергии, который отнимается от существа при рождении у него потомка. Кроме того, в этой закладке можно настроить признак, по которому свимботы будут выбирать предпочтительного партнера для скрещивания (цвет, размер, энергичность, форма тела).
Population – Графики изменения населения бассейна и количества пищи
Help – Справка по механизмам игры, с общих чертах то, о чём рассказывается в данной статье
Swimbot – Информация о выбранном свимботе, а также меню для изменения его генов. ДНК свимбота представляет собой последовательность из 70 чисел, каждое в пределе от 0 до 255. Следовательно, возможны $2^560$ различных их комбинаций, что представляет собой число из 169 цифр. Здесь кодируется как окраска и строение тела, так и то, как он должен двигать частями своего тела, в зависимости от направления на цель. Можно сохранять ДНК интересных экземпляров (опять-таки, в один из четырёх слотов, при большом количестве существ приходится переназывать ранее сознанных через файловый менеджер) и обмениваться ими.
View – Выбор режима просмотра, в частности, можно найти наиболее энергетически эффективно существо, свимбота, оставившего наибольшее количество потомков или съевшего наибольшее количество еды.


Самая новая версия, Gene Pool 6, вышла совсем недавно, её можно скачать с официального сайта http://www.swimbots.com. Также там планируется создать галерею существ для этой версии игры, если вы пошлёте Джеффу интересное существо, у вас будут все шансы попасть в первое обновление. Его почта Jeffrey@Ventrella.com. Мне тоже очень интересно, какие существа выведутся в ваших бассейнах, присылайте их, пожалуйста, мне на intelmath@yandex.ru. Если несколько человек займётся разведение свимботов, можно будет устроить турнир существ: запустить по паре каждого вида в бассейн и определить сильнейших.

Сам я недели три назад вернулся к своему давнему увлечению: моделированию биологических процессов на компьютере. Сначала смахнул пыль со своей программы для игры ”Жизнь”, добавил в неё возможность изменения правил. Затем познакомился с великолепным набором клеточных автоматов Mirek's Cellebration. после переключился на игры семейства Аква-Тор, моделирующие взаимоотношения между популяциями продуцентов и консументов в замкнутом ареале и сделал собственную версию этой игры. Потом вспомнил о Террариуме от Майкрософт, лаборатории-практикуме для программистов .NET, поэкспериментировал с существами там, и, наконец, узнал про Генетический бассейн.

P.S.

Всё-таки, не зря я сохранил тот мир с двухвостками. После ещё одного дня симуляции там возникла наиболее приспособленная на данный момент из известных мне жизнеформа, ”чайки”. Вот как они выглядят:

Изображение

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

 Профиль  
                  
 
 
Сообщение27.11.2008, 21:57 
Аватара пользователя


17/05/08
358
Анк-Морпорк
Удалось мне-таки вывести и конкурентноспособного червя. Вот он:
Изображение

При запуске в один бассейн 4 червя и 4 чайки сначала бы паритет в выжирании стартового кружочка, но затем при нехватке пищи червякам повезло больше.
Правда, потом переиграл, изменив на пару пикселей стартовое расположение существ - и при наступившем голоде, и далее, в эпоху восстановления пищи, мир продолжают делить чайки с червями, затем победили чайки. Итого счёт 1:1

Вот их ДНК:

чайка
8-червь

Завтра как пойду на работу, запущу бассейн с чайками - пусть этот вид теперь совершенствуется.

 Профиль  
                  
 
 
Сообщение04.12.2008, 12:56 


21/03/06
1545
Москва
Скачаю, посмотрю, спасибо за рассказ - увлекло!

 Профиль  
                  
 
 
Сообщение05.12.2008, 08:22 


21/03/06
1545
Москва
Ну что ж, посмотрел - прикольно. Однако, слишком ограниченный набор инстинктов, что еще хуже - оч. малое число генов и форм поведения. Но главное - получающиеся бассейны обречены повторять эволюцию по некоторому кругу: много еды->медленные, но быстро поворачивающиеся особи->мало еды->быстрые, неповоротливые особи. В общем, постоянного развития нет, есть некоторые колебания вокруг некоторого уровня, к которому система приходит достаточно быстро (за пол часа). В критериях выбора партнера слишком мало вариантов, и все они мало соотносятся с повышением качеста особей (эффективности). В общем, идея очень интересная, но находится в зачаточном состоянии имхо.

 Профиль  
                  
 
 
Сообщение05.12.2008, 23:53 
Аватара пользователя


17/05/08
358
Анк-Морпорк
Да, то, что критерий выдора партнёра мало соотносится с эффективнойстью сам Джеф и писал, так специально было задумано.

А вообще полчаса мало, более-менее путные особи дня за 2 получатся. Вот можете попробовать в первозданный или уже несоклько эволюционировавший бассейн кинуть парочку моих чаек или червячков (Кстати, можно даже одну, эффект будет).

Чем ещё интересны эти виды: когда они заселяют аквариум и население более-менее стабилизируется, то количество особей превышает количество пищи.

 Профиль  
                  
 
 
Сообщение07.12.2008, 00:54 


21/03/06
1545
Москва
Цитата:
Да, то, что критерий выдора партнёра мало соотносится с эффективнойстью сам Джеф и писал, так специально было задумано.

Специально - это зачем??

Цитата:
А вообще полчаса мало, более-менее путные особи дня за 2 получатся. Вот можете попробовать в первозданный или уже несоклько эволюционировавший бассейн кинуть парочку моих чаек или червячков (Кстати, можно даже одну, эффект будет).

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

Цитата:
Чем ещё интересны эти виды: когда они заселяют аквариум и население более-менее стабилизируется, то количество особей превышает количество пищи.

Да, у меня сейчас в семь с лишним раз кол-во особей превышает кол-во еды (настройки еды не трогал). Ерунда все это. Дело в том, что генетические алгоритмы с моей т.з. (практика) очень сильны, и я не раз их применял на практике, однако в этой игре они сильно ограниченны, разьве что наглядны. Еще раз повторю свою мысль - после получаса моделирования игра не имеет смысла, а жаль - автор мог бы развить ее в гораздо более интересную игру-модель.

 Профиль  
                  
 
 
Сообщение07.12.2008, 15:04 
Аватара пользователя


17/05/08
358
Анк-Морпорк
Цитата:
Специально - это зачем??


Ну вот что он пишет:

Цитата:
Привлекательность против эффективности

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

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

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


А правила игры - тут, конечно, можно развивать и развивать, интересно бы написать что-то подобное, но чтобы развивался мозг существа и усложнялось поведение. В ДНК тогда может передаваться строение нейронной сети, отвечающей за поведение существа.

Цитата:
Да, у меня сейчас в семь с лишним раз кол-во особей превышает кол-во еды (настройки еды не трогал).


Ого! у меня где-то всего вдвое. Выложите, пожалуйста, ДНК своих существ, интересно будет поскрещивать или устроить "битву видов". Выьираете свимбота, - swimbot - save - выбираете слот - потом файл с ДНК вида swimbotX.dna вышлите мне, пожалуйста, на aviglau<at>gmail.com

А генетические алгоритмы - сила! :) Несколько лет назад узнал о них, попробовал на задачах о загрузке рюкзака и коммивояжёра - довольно интересно получается. Возмождно, придётся использовать и при решении задачи диссертационного ислледования. Поделитесь, пожалуста, ссылками, которые помогли бы выйти с уровня "занимательного" на "научный".

 Профиль  
                  
 
 
Сообщение07.12.2008, 21:24 


21/03/06
1545
Москва
Цитата:
Ого! у меня где-то всего вдвое. Выложите, пожалуйста, ДНК своих существ, интересно будет поскрещивать или устроить "битву видов". Выьираете свимбота, - swimbot - save - выбираете слот - потом файл с ДНК вида swimbotX.dna вышлите мне, пожалуйста, на aviglau<at>gmail.com

Завтра вышлю Вам с работы - дома инет никакой.

Цитата:
А генетические алгоритмы - сила! Несколько лет назад узнал о них, попробовал на задачах о загрузке рюкзака и коммивояжёра - довольно интересно получается. Возмождно, придётся использовать и при решении задачи диссертационного ислледования. Поделитесь, пожалуста, ссылками, которые помогли бы выйти с уровня "занимательного" на "научный".

Вообще-то я не совсем научный работник (хотя хотелось бы, если бы платили, хехе) - я использовал генетические алгоритмы несколько раз для настройки ПИД_регуляторов в реальной системе. Особой литературы не использовал (хотя все-таки одна довольно интересная книжка есть - только никак не доеду до родственников, не заберу) - как только сами принципы увидел - понял, что это сила - развивал по своему разумению. Результат в любом случае получится, как бы хреново не были сформулированы начальные условия - пробуйте!

 Профиль  
                  
 
 
Сообщение14.12.2008, 19:53 
Аватара пользователя


17/05/08
358
Анк-Морпорк
Спасибо, получил, очень интересные червячки получились у Вас. Там уже более 2 000 000 тиков прошло, это для формирования вида нормально, как мне кажется.

Получается, они тратят мало энергии на передвижение, умеют отворачивать от стенов бассейна, а низкая маневренность компенсируется статистикой. Попробовал четверых посадить в пустой бассейн на пустом компе у друга в кабинете. Взрывного размножения не было, лишь черед минут 10 два червячка смогли встретиться и произвестии пятого, однако на следующий день там всё уже кишело.

Своих я пока отложил - реал даёт о себе знать, но в ближайшее время попробую сделать что-то вроед каталога видов.

 Профиль  
                  
 
 
Сообщение09.02.2009, 15:08 
Аватара пользователя


17/05/08
358
Анк-Морпорк
Создал в Ливинтернете сообществе по свимботам и выложил туда каталог:
http://www.liveinternet.ru/community/sw ... t95800700/

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Модераторы: Toucan, maxal, PAV, Karan, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group