Похоже, вы новичок на сайте.
Чтобы быстрее понять, о чём здесь идёт речь, советую почитать:
что такое виджеты,
чем они хороши
и каковы их перспективы.
Это сообщение показывается только один раз. Такие же ссылки вы можете найти в правой колонке, в блоке "Рекомендую прочесть"
Окт 11

В комментариях к моему посту «Игра «Жизнь» и моделирование естественного отбора» первое же, что предложили — добавить скрещивание, чтобы новая клетка получала не копию генома одного родителя, а смесь от нескольких. Я подозревал, что итог это не изменит. Но, покрутив в голове идею, заинтересовался: ведь так можно получить модель не просто естественного отбора, а уже полноценной эволюции. Благо, реализовать это было не сложно. Так что встречайте: «Жизнь», теперь со скрещиванием и мутациями.
http://widgetok.ru/life_evol/

Ну да, ещё и с мутациями. Моделировать, так моделировать.

Подробности, как водится, под катом.

Так уж сложилось, что мне достались «инопланетные» клетки, которым для рождения нужно не 2, а 3 родителя. Можно было бы поменять правила игры, но кто я такой, чтобы спорить с Конвеем? Пришлось работать с тем, что есть. В результате я сделал так, чтобы зарождающаяся клетка получала в качестве значения каждого гена значение соответствующего гена одного из трёх её родителей, выбранного случайным образом. Плюс я несколько упростил себе жизнь тем, что гены берутся только от прямых родителей, т.е. гены бабушек и прадедушек в клетке проявиться не могут. Для первого приближения этого хватит.

Раз уж пошла речь об изменении генома, грех было обойти тему мутаций. Я сделал, чтобы с некоторой вероятностью (по умолчанию 0.01) один из генов клетки выставлялся в случайное значение (0/1).

Ну и чтобы моим подопечным жизнь совсем раем не казалась, запретил в первом поколении активацию генов 2 и 3 (которые, как мы помним, отвечают за максимальную приспособленность клетки к правилам игры). Получилось, что максимально приспособленные клетки [0,0,1,1,0,0,0,0,0] могут появиться только в результате мутаций, закреплённых естественным отбором.

Мои ожидания оправдались практически полностью.

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

Вначале все клетки красно-синие. И быстро вымирают.

Если активных генов больше 4, вымирают настолько быстро, что популяция может совсем исчезнуть. Но при 4 какие-то очаги жизни продолжают теплиться достаточно долго, чтобы благодаря мутациям появились клетки с 1 «правильным» геном.

Замусоренные лишними генами, грязно-коричневые, но они всё-таки уже не гибнут, а размножаются, постепенно зеленея.

И вот уже мы видим как появляются идеальные [0,0,1,1,0,0,0,0,0]. Они не только приобрели 2 нужных гена, но и избавились от мешающего жить «мусора».

И теперь постепенно отвоёвывают жизненное пространство у своих менее совершенных сородичей.

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

Главное, что результат достигнут: в системе, живущей по простым законам, мы увидели зарождение изначально не существовавшей «идеальной» клетки из далёких от идеала клеток-предков. Впечатляет, не правда ли?

Share Button
Комментарии (6)

Что вы об этом думаете?

Поделились мыслями: 6

  • Владимир:

    1. А зачем нужен ген для перемещения на клетку с 8 соседями? Ведь такого не может быть, т. к. перемещающаяся сама освободит одно из соседних мест. Или число соседей считается с учетом самой перемещающейся клетки?
    2. В каком порядке они перемещаются? В случайном?
    3. А случай, когда клетка уже стоит на «привлекательном» месте учитывается?

    P. S. На хабре только read only аккаунт, поэтому здесь откомментил =)

    • Глеб:

      1. По сути, он избыточен, можно было бы выкинуть.
      2. Да, в случайном, чтобы можно было учитывать ходы других клеток и при этом очерёдность ходов не зависела от координат клеток.
      3. Учитывается.

  • Аня:

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

  • Полностью на javascript ?

    Опишите, пожалуйста, используемые технологии и немного реализацию.

    • Глеб:

      Полностью.
      Технологии — JS, немного HTML5, Canvas, Twitter Bootstrap.
      По реализации даже не знаю, что описывать. Вся логика в этом файле — http://widgetok.ru/life_evol/smart_life.js Если интересует что-то конкретное, спрашивайте.

  • Сергей:

    Ресайз окошка с игрой в настройках криво работает. не раскрывается на всю канву, только часть занимает, если например 320*240 размер выставить

Ответить Глеб