Рис. 2.13. (на стр. 86 и 87) Пятьдесят поколений эволюции трех демов компьютерных паутин, полученных половым размножением и выведенных “естественным отбором” в программе NetSpinner. В одиннадцатом поколении два генотипа из третьего дема мигрировали во второй дем, и теперь их можно использовать для перекрестного скрещивания (пути миграции показаны на рисунке стрелками).
В жизни ни одно из этих решений не принимается по чьей-либо воле. Это и не решения как таковые, и здесь не применяются компьютерные технологии. Просто так происходит, само собой и без лишнего шума. Плоть мух действительно превращается в плоть маленьких паучков с уже существующим коэффициентом перевода. Если нам хочется рассчитать его – имеем право. Превращение идет независимо от того, опишет ли кто‐нибудь этот процесс в математическом виде или нет. Точно так же происходит преобразование мушиного “мяса” в паутинный шелк. В сущности, для NetSpinner все мухи равны. В живой природе иногда возникают – тоже сами собой и без шума – всякие непредвиденные трудности и неприятности. Помимо того, что одни насекомые крупнее других, есть еще и качественные различия. Предположим, для выработки паутинного шелка нужна какая‐то аминокислота, и ее мало. Разные виды насекомых способны поставлять определенное количество этой аминокислоты. В таком случае истинную ценность насекомого следует рассчитывать с учетом его вида и массы. NetSpinner позволяет выполнить подобный расчет, но это будет очередное волевое решение. В природе это естественный процесс, не требующий специальных условий. Вот еще пример. Наверное, если запасы белка у паучихи почти восполнены, лишняя муха ей не так дорога, как если белка почти нет. Программа это игнорирует, а природа – нет. Можно было бы ввести в программу и поправку на насыщение. В жизни это делается автоматически. Никакие расчеты для этого не нужны.
К чему я клоню, настолько очевидно, что едва ли надо об этом говорить, но вместе с тем настолько важно, что нельзя не сказать. Всякий раз, когда в программу вносится новая реперная точка, которая усложняет расчет, квалифицированный программист должен добавить еще сколько‐то страниц с кодами команд. В жизни, напротив, бросается в глаза отсутствие расчетов. Коэффициент перевода мушиного белка в белок паутины уже заложен в природе. Безо всяких вычислений ясно, что для голодного паука муха дороже, чем для сытого. Было бы странно, если бы для голодного паука пища значила бы меньше. Мы привыкли рассматривать компьютерную модель как упрощение реальной жизни. Но в некотором смысле компьютерная модель естественного отбора отнюдь не упрощает, а только усложняет реальные природные процессы.
Естественный отбор – предельно простой процесс в том смысле, что он идет при минимальном использовании технических средств. Безусловно, эффекты, которые он производит, и его конечные результаты чрезвычайно непросты. Однако чтобы на живой планете пошел процесс естественного отбора, не нужно ничего, кроме информации о наследственности. Чтобы заработала компьютерная модель естественного отбора, надо иметь эквивалент такой информации и еще много всего. Потребуется умная техника для расчета всевозможных затрат и бонусов, а также надо будет выработать систему их конвертации.
Кроме того, придется создать целый искусственный физический мир. Мы выбрали в качестве примера паутину, потому что из всех природных “устройств” она лучше всего поддается описанию в терминах программирования. В принципе можно оцифровать что угодно – крылья, позвоночники, зубы, челюсти, плавники и перья – и написать программу для оценки эффективности их разновидностей. Но программисту придется изрядно поломать голову. Оценить крылья, плавники или перья можно только в реальной физической среде (в воде или воздухе) с присущими ей свойствами, такими как сила сопротивления, упругость и турбулентность. Воссоздать все эти условия очень трудно. Вне реальной ситуации, где действуют напряжение, рычаги и сила трения, нельзя понять, насколько хорошо функционируют позвоночник и кости конечностей. Жесткость, хрупкость, упругость при изгибе и сжатии – все это надо будет отобразить в программе. Моделирование динамических взаимодействий множества костей, соединенных связками и сухожилиями под разными углами, – сложнейшая математическая задача, и человек постоянно должен решать, какой ход сделать дальше. Воспроизвести турбулентный воздушный поток, омывающий крыло, до такой степени нелегко, что авиаконструкторы часто даже не пытаются сделать это с помощью компьютера – проще поставить эксперимент в аэродинамической трубе.
Впрочем, не стоит недооценивать работу специалистов по компьютерному моделированию. В 1987 году в Лос-Аламосе, где когда‐то ученые разрабатывали атомную бомбу, а ныне занимаются более созидательным трудом, прошла презентация нового направления в науке, получившего название “искусственная жизнь”, и я имел честь присутствовать на церемонии. Кристофер Лэнгтон, инициатор и руководитель той, первой, конференции 1987 года и тех, что состоялись потом, основал одноименный журнал. Опубликованные там статьи развеяли пессимизм предыдущего абзаца. Так, трио ученых из Северной Америки – Деметрий Терцопулос, Сяоюань Ту и Радек Гжещук – описали великолепную модель виртуальных рыб, которые ведут себя совсем как настоящие и взаимодействуют друг с другом в виртуальном водоеме. В компьютерном мире, где обитают эти рыбы, действуют свои физические законы, основанные на физике настоящей воды. Как правило, программисты стараются адекватно воспроизвести поведение одной, отдельно взятой, рыбы. Затем эту правильную рыбу многократно воспроизводят с некоторыми изменениями и всю стаю выпускают в “водоем”, где рыбы “встречаются” и вступают в контакт друг с другом. Например, уходят от столкновений и объединяются в “школе”.
Каждая компьютерная рыба состоит из 23 узлов, соединенных с соседними узлами 29 пружинами в виртуальном трехмерном пространстве (рис. 2.14). Двенадцать пружин могут сжиматься и растягиваться – это “мышцы” искусственной рыбы. По “мышцам” волной прокатываются контролируемые сокращения, которые имитируют игру и виляние живой плывущей рыбы. Исходя из личного опыта, рыба может научиться лучше управлять работой мышц, чтобы плавать, поворачивать и преследовать добычу. Три “переменные ментального статуса” рыбы – “голод”, “либидо” и “страх” – в совокупности формируют “инстинкты” (состояние “побуждения”). Имеется в виду побуждение к “еде”, “спариванию”, “рысканью”, “убеганию” и “уходу от столкновения”. У рыбы есть два органа чувств, один из которых нужен для “восприятия” температуры воды, а другой служит как бы глазом и помогает ей различать положение, цвета и размеры окружающих ее объектов. Для красоты состоящий из узлов и связок скелет помещен в цветное поле, раскрашенное в цвета настоящих рыб. Разные виды рыб – скажем, хищники и жертвы – отличаются не только внешне, но и по повадкам (рис. 2.15). Помимо размеров, хищники и жертвы отличаются “поведенческой предрасположенностью” и разными “инстинктами”, а из‐за влияния переменных ментального статуса они вырастают в разной степени. Надо сказать, что даже на современных быстродействующих машинах такого рода модели требуют столько компьютерного времени, что искусственный мир, населенный множеством взаимодействующих рыб, не дает правдоподобной картины в реальном времени. Рыбы плавают, преследуют одна другую, удирают друг от друга и отправляют брачные ритуалы в замедленном масштабе времени по отношению к реальному, поэтому если мы хотим сохранить жизненный темп игры, нам придется прибегнуть к аналогу покадровой фотосъемки (съемки с интервалами). Но это мелочи, не имеющие существенного теоретического значения; в будущем, когда появятся компьютеры следующих поколений, эта проблема исчезнет.