Yegor Voronin (shvarz) wrote,
Yegor Voronin
shvarz

Categories:

Роботы Дарвина

Хорошие книжки должны вдохновлять нас на... ну пусть не на подвиги, но хоть какое-либо действие. Вот и Paul McAuley’s “Fairyland” (очень хорошая книга) сподвигла меня на поиски информации о моделирвании эволюции. Должен Вам сказать, что Акелла (в данном случае Google) промахнулся и первые его двадцать ссылок привели меня вовсе не туда, куда я хотел. Пришлось перейти в режим B&M и покликать по ссылкам, как наши деды еще кликали.
И вот Вам результат – прогамма “DarwinBots”, то бишь «Роботы Дарвина». Моделирует эволюцию, да не просто эволюцию, а эволюцию поведения. Я с ней уже немного поигрался и теперь в полном восторге; так что если кому интересно – читайте мои впечатления.

Итак. В программе «Роботы Дарвина» мы имеем дело с роботами. Все они аболютно идентичны по внешнему виду: это разноцветные кружоки с точкой на одном конце (голова робота). Цвет в эволюции никакого значения не имеет и введен лишь для удобства и красоты. Каждый робот стремится набрать как можно больше энергии, потому что энергия нужна для жизни и для размножения. Отличаются эти роботы стратегиями добычи и распределения энергии, а стратегии эти обусловлены специальными программами. Программа состоит из отдельных блоков, называемых «гены», которые написаны на специальном языке, разработанном специально для этих целей. Каждый ген содержит условие и действие. Например, ген размножения выглядит примерно так:

Условие:
Количество энергии > 6000

Действие
Создать новую клетку
Отдать новой клетке 50% энергии

Цифры 6000 и 50% хранятся в специальных ячейках, которые могут мутировать. При этом программа будет работать, вне зависимости от значений ячеек. Эффективно или нет – другой вопрос, но работать будет. На мой взгляд, это довольно элегантное решение проблемы мутирования программного кода.

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

Условие
Количество энергии > 6000

Действие
Создать новую клетку
Отдать клетке 10% энергии
Создать новую клетку
Отдать клетке 10% энергии
Создать новую клетку
Отдать клетке 10% энергии
Создать новую клетку
Отдать клетке 10% энергии

Вы заметили, что я поменял не только 50% на 10%, но и добавил дополнительные строчки? Все верно, мутагенный процесс может не только менять значения параметров, но и манипулировать со строчками (добавлять и удалять) и, даже, с целыми генами. Прекрасная имитации биологических процессов, я Вам скажу!

Какие же еще существуют гены? Все зависит от Вашего воображения! Каждый робот имеет девять глаз, расположенных в передней части робота и смотрящих в слегка разных направлениях. Через эти глаза робот может видеть окружающее его пространство, других роботов, еду, стенки. Он может собирать разную информацию о других роботах, включая их видовую принадлежность и количество запасенной в них энергии. Он может поворачиваться и двигаться во всевозможных направлениях. Он может сцепляться с другими роботами прочной нитью и передовать по этой нити энергию и информацию. Он может чувствовать боль и удовольствие. Так что Вам предоставляется широкое поле деятельности!

Что же потом? А потом, когда Вы продизайнили своего робота (или модифицировали уже существующего), то Вы можете выпустить его в загончик, и задать параметры окружающей среде, скорость мутагенеза и прочее (настроек очень много). Робот Ваш начнет плодиться, размножаться и мутировать. Побеждает, обычно, сильнейший и спустя 200-300 тысяч поколений (около 3 часов на моем компьютере) у вас должен будет появиться «СУПЕР-РОБОТ»!!! Чем он будет отличаться от изначального? Неизвестно, но он будет прекрасно приспособлен к той среде, в которую Вы его поместили. Это, конечно, при условии, что он не вымрет в первые же 5 минут :)

Ну и что? Нафига мне этот «СУПЕР-РОБОТ», спросите Вы? Вообще-то, конечно, если Вы собираетесь спрашивать такой вопрос, то эта программа не для Вас. Но с другой стороны... Вы можете подключиться к интеренету и ... Да-да! Устроить поединок межде Вашим «СУПЕР-РОБОТОМ» и жалкими «супер-роботиками» противников!!!

Но что же это такое? Наш бравый «СУПЕР-РОБОТ» проигрывает! Как же так? Враги, оказывается, нападают стаями! А вот у этого парня они сидят в засадах и ждут, пока мы не растратим свою энергию на их поиски, и тогда уж нападают. А это что за четырехклеточные черви? А странные крутящиеся треугольники?

Это все роботы, с самыми разными стратегиями существования. Программы одних были написаны людьми, другие – образовались сами. И написание программ, и наблюдение за эволюцией – ужасно интересные вещи. Впрочем, вовсе не обязательно самому что-то программировать. Можно просто загрузить одного из стандартных роботов и дать ему поэволюционировать чуток. Результат предсказать невозможно.

Ну и под конец о проблемах:

Во-первых, программе остро не хватает известности. Работает над программой, насколько я понял, всего один человек в Италии. Людей, которые регулярно посещают Message Board и гоняют программу – человек 20-25. Так что пока еще не сложилось community.

Во-вторых, программа не очень устойчива. С одной стороны, я гонял ее и по три часа без проблем, но вот появление роботов, которые делают большое количество «связок» с другими роботами, приводит к крашу в течение 3-5 минут.

Ну и совсем под конец о том, где эту программу можно взять. Вот здесь. Всего 1.6 Mb.
Tags: darwinbots, наука, эволюция
Subscribe

  • О Хенри

    Предыдущие две недели счастливо провел почти не открывая компьютера. Что нибудь критично важное пропустил? Сомневаюсь... Напишу о том, что меня…

  • Песни драконов

    Когда я был в России весной, в книжном магазине случайно наткнулся на целый стенд книг от ЖЖ френдов: scinquisitor про ГМО,…

  • (no subject)

    Перечитал Red Mars by Kim Stanley Robinson - все таки эпическое произведение (даже если взять в отрыве от двух с половиной продолжений), и…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 3 comments