Выбрать главу

Те картинки, что я здесь привожу, получены в программе NetSpinner II, над которой в основном работал Питер Фукс (NetSpinner I – это черновая версия, и ее мы обсуждать не будем). Разработанные Тимо Кринком более поздние версии этой программы составляют конкуренцию биоморфам еще в одном важном вопросе. В NetSpinner III добавлено размножение половым путем. Биоморфы и объекты программы NetSpinner II размножаются только бесполым путем. Что мы имеем в виду, когда говорим о половом способе размножения компьютерных пауков? Вы не увидите на экране акта спаривания с вероятным каннибалистическим финалом, хотя, очевидно, это можно было бы устроить. Просто в программе происходят характерные для полового размножения взаимодействия – рекомбинация половины генов одного родителя с половиной генов другого родителя.

Рис. 2.12. Последовательные превращения паутины, смоделированной в программе NetSpinner, с интервалом в пять поколений. На каждое превращение потребовалась примерно одна ночь.

Вот как это работает. В каждом поколении имеется особая группа в полдюжины пауков, каждый из которых плетет свою ловчую сеть; это локальная популяция, или дем. Геометрия паутины зависит от хромосомы, то есть цепочки генов. Как мы уже знаем, роль гена такова, что он оказывает влияние на специфический “закон” строительства ловушки. Затем в паутину вбрасывают мух. Качество паутины все так же определяется по функции количества пойманных “мух” с вычетом затрат на использованный шелк. В каждом поколении погибает определенный процент пауков – тех, чьи ловчие сети работают хуже всего. Выжившие пауки спариваются в произвольном порядке и дают жизнь новому поколению. Под спариванием подразумевается, что хромосомы двух пауков выравниваются относительно друг друга и обмениваются своими участками. Казалось бы, странная, надуманная схема, если не вспомнить, что при размножении половым путем живые хромосомы – и наши, и паучьи – именно так себя и ведут.

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

Во всех трех популяциях первое поколение включает в себя паутины разных форм, в большинстве своем с невысоким КПД. Мы видим, что по мере смены поколений, как и в случае неполового размножения (рис. 2.12), происходит постепенный переход к более качественным и эффективным вариантам. Но теперь “свежая кровь” распределяется за счет полового размножения, поэтому отдельные экземпляры в деме довольно похожи друг на друга. С другой стороны, генетически они являются отпрысками других демов, так что и различия достаточно заметны. На какой‐то стадии в одиннадцатом поколении гены двух паутин из дема 3 мигрировали в дем 2, то есть “инфицировали” дем 2 “кровью” дема 3. К пятидесятому поколению, а в некоторых случаях гораздо раньше, паутины превратились в прочные, надежные и экономичные ловушки.

Итак, можно воссоздать на компьютере некое подобие естественного отбора и получить искусственные ловчие сети, которые захватывают мух эффективнее, чем исходные. Это еще не подлинный естественный отбор, но существенный шаг вперед, больше приближающий нас к цели, чем полностью искусственная селекция биоморфов. Однако даже NetSpinner не воссоздает природный естественный отбор. Для того чтобы с помощью программы найти достаточно экономичные ловчие сети и выбрать наиболее пригодные для воспроизводства, требуется выполнить расчет. Программист должен сам определить стоимость “шелка” для данной паутины, причем в тех же единицах, что и ценность “мухи”. Он может, если захочет, изменить обменный курс. Например, удвоить “цену на шелк”. Тогда паутина большей площади или более плотная, на которую потратили больше шелка ради того, чтобы поймать больше мух, окажется менее пригодной для воспроизводства. Программист должен сам выбрать коэффициент пересчета. Это лишь один, самый очевидный пример конвертации. Коэффициент соответствия “мушиного мяса” вновь рожденным паучкам тоже должен задать программист. Он может быть любым. Сколько пауков погибает по разным причинам, не связанным с качеством паутины, также решает программист. Эволюция вида зависит от его волюнтаризма.