GeneralCFR (swimbots) все записи автора
Если бы вам понадобилось создать животный мир на некоторой планете, по какому пути бы вы пошли: задавали бы внешний вид и поведение для каждого из многочисленных видов, или создали бы только простейшие существа и определили бы правила, по которым они смогут дальше совершенствоваться самостоятельно?
Лично для меня привлекательнее второй вариант, как с точки зрения гибкости, так и с точки зрения интереса моделирования. Подобным принципом, похоже, руководствовался и Джеффри Вентрелла, талантливый программист и исследователь, когда создавал свой ”Генетический пруд” (GenePool). И сейчас я хочу рассказать о мирах и существах, которых может эта программа призвать к жизни.
Итак, имеется водоём, в котором живут существа – свимботы. У свимбота есть два базовых инстинкта: питания и размножения. Тела их состоят из сегментов, которыми свимбот должен шевелить определённым образом, чтобы плыть. Всё это: окраска, строение тела и двигательные функции кодируются в ДНК, представляющей собой 70 чисел типа byte.
Движение свимбота просчитывается, исходя из реальной физики поведения тел в жидких средах. Чем лучше он плавает, тем больше вероятность, что не погибнет от голода, найдёт партнёра для размножения, и, следовательно, передаст свои гены будущему поколению. В итоге в популяции должны остаться только лучшие пловцы.
Так работает естественный отбор в этом мире. Но здесь введён ещё и половой отбор – свимботы охотнее скрещиваются с теми особями, которые похожи на них по окраске (по крайней мере, такое правило стоит по умолчанию). Таким образом, на сохранение свимбота в общем генофонде бассейна влияют также некоторые параметры, не связанные с его умением плавать.
После запуска программы случайным образом создаются 200 существ и 700-800 кусочков пищи.
Вначале существа движутся довольно бестолково: некоторые вообще сидят сиднем, другие, того хуже, отчаянно барахтаются на месте, затрачивая огромное количество энергии при нулевом передвижении. Понятно, что такие “черновики эволюции” быстро вымарываются из местной “книги жизни”.
Создаваемые на старте продолговатые существа, с, казалось бы, идеальной формой для плавания, также довольно быстро вымирают, поскольку мало иметь хорошее тело, нужно ещё научиться им управлять. А управлять своим телом первые ”черви” не умеют: видя в стороне пищу они не делают никаких попыток повернуть к ней, а, упёршись в стену бассейна, зачастую в таком положении и остаются, покуда не иссякнет запас их жизненных сил.
Выжили же и дали потомство из стартового набора существ вот такие ”веточки”.
Когда пища недалеко, усилия, затрачиваемые ими на покачивающиеся передвижения, вполне окупаются. Однако вскоре в центральной части бассейна еда закончилась, вместе с ней ушла и пора доминирования “веточек”. Им на смену пришли “двухвостки” (справа).
Они могут передвигаться на сравнительно большие расстояния, а за счёт амплитуды колебаний головной части, с большей вероятностью захватят пищу. Выжившие на тот момент или мутировавшие из “двухвосток” “черви” (слева), не смотря на более экономное расходование энергии, всё равно продолжают заглатывать пищу, только если плывут прямо на неё. Правда, уже после нескольких попыток они начинают отворачивать от стенок бассейна и плавают в основном по его периметру.
Появляющиеся в это время “веточки” (в центре) выживают, только если неподалёку есть пища в большом количестве.
До сих пор “двухвостки” выживали только за счёт статистики: им, с большими шансами, нежели другим существам, удавалось во время движения захватить еду. Но, где-то через 15 часов моделирования, я обнаружил удивительную вещь: двухвостка, проплыв мимо еды, свернулась клубком и, распрямившись, изменила направление своего движения к кусочку пищи. Приглядевшись, я обнаружил, что все имеющиеся на тот момент в колонии двухвостки обладали этой способностью. Они, без изменения строения тела, научились более эффективно им управлять!
На следующее утро, уходя на работу, я оставил компьютер включённым для продолжения симуляции. После вчерашнего успеха я рассчитывал уж если не на то, что свимботы изобретут письменность, провозгласят независимость и начнут строить космический корабль, то, по крайней мере, на то, что разворачиваться к цели научатся не только двухвостки, но и черви.
Каково же было моё разочарование, когда я обнаружил, что в водоёме, полном еды, осталась всего пара умных двухвосток, причём у разных его бортов. Поскольку обе они уже почти достигли предельного возраста в 40000 тиков, судьба мира была предрешена. Просмотрев исторические графики, я понял, что умение всегда находить еду сыграло против этого вида: умные двухвостки размножились в чрезвычайно большом количестве, съели почти всю еду и погибли от голода, а когда запасы пищи восстановились, последние выжившие не смогли встретиться, чтобы произвести потомство.
Разумеется, я не дал этому миру погибнуть окончательно, передвинул выживших к центру бассейна, чтобы они успели дать потомство, и сохранил этот биотоп для дальнейших экспериментов. Как оказалось, не зря. После ещё одного дня симуляции там возникла одна из наиболее приспособленных из известных мне жизнеформ, ”чайки”. Вот как они выглядят:
В нормальном движении ”чайка” машет "крыльями" с одинаковой силой. Если же требуется сделать разворот, то одно "крыло" она выпрямляет, и начинают сильнее махать вторым. Такой способ разворота забирает меньше энергии, чем последовательное скручивание и раскручивание, как у их предков – "умных двухвосток".
Самую новую версию программы, Gene Pool 6, можно бесплатно скачать с официального сайта
http://www.swimbots.com. Джефф собирался также создать там галерею существ и приглашал присылать ему интересные экземпляры на
Jeffrey@Ventrella.com. Однако сейчас он, по-видимому, занят другими своими проектами, так что я пока зарегистрировал это сообщество, где и будем обмениваться опытом свимботоводства, собирать банк ДНК и проводить состязания видов.