Pull to refresh

Игра «Жизнь»: моделируем эволюцию

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

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

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

UPD 30.04.2019: Ссылки на игру из поста пришлось удалить: я не продлил домен, где она была размещена, и его перехватили

Так уж сложилось, что мне достались «инопланетные» клетки, которым для рождения нужно не 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 нужных гена, но и избавились от мешающего жить «мусора».



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



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

Главное, что результат достигнут: в системе, живущей по простым законам, мы увидели зарождение изначально не существовавшей «идеальной» клетки из далёких от идеала клеток-предков.
Впечатляет.
Tags:
Hubs:
Total votes 73: ↑72 and ↓1+71
Comments70

Articles