Рой
Шрифт:
– А я думаю, что понимали.
– Нет, что ты, – Рики сделал вид, что его незаслуженно обвиняют, и обиженно надул губы. Но я уже устал от этой его игры.
– Рики, – сказал я. – Когда я прилетел сюда, вместе со мной в вертолете сидела толпа пиарщиков. Кто их нанял? Кто уведомил их, что здесь какие-то проблемы с пиаром?
– Я ничего не знаю ни о каких пиарщиках.
– Им запретили выходить из вертолета. Сказали, что это опасно.
Он покачал головой.
– Я понятия не имею… Не знаю, о чем ты говоришь.
Я махнул рукой и вышел из душевой.
– Я не знал! – крикнул
Через полчаса Рики в знак примирения принес мне недостающий код, о котором я у него спрашивал. Код был короткий – всего один листок бумаги.
– Извини, Джек, – сказал он. – Пришлось повозиться, чтобы его найти. Несколько дней назад Рози закрыла сетевой доступ к целой поддиректории, чтобы ее переработать. Наверное, она просто забыла снова открыть доступ. Поэтому кода и не было в основной директории.
– Хм-м… – я просмотрел запись. – И что она перерабатывала?
Рики пожал плечами.
– Понятия не имею. Один из этих файлов. Я открыл файл с кодом.
/* Модуль комп. стат.*/
Выполнить (движение{0ij (Cx1, Cy1, Сz1)})/*начало*/
{Sij (x1, y1, z)}/*движение*/
{Sik1 (x1, y1, z1)(x2, y2, z2)}/*отслеживание*/
Усилие {z (i)}/*сохранение*/
Реакция усложн./*состояние бегства*/
S1{(dx(i,j,k)}{(место(Cj,Hj)}
S2 {(fx, (a, q)}
Место {z (q)}/*сохранение*/
Намерение усложн./*намерение бегства*/
S1{(dx(i,j,k)}{(место(Cj,Hj)}
S2 {(fx, (a, q)}
Загрузка {z (i)]/*сохранение*/
Выполнить (движение {0ij (Cx1, Cy1, Cz1)})
Выполнить (пре-{0ij (Hx1, Hн1, Hz1)})
Выполнить (пост-{0ij (Hx1, Hy1, Hz1)})
Усилие {Sij (x1, y1, z1)}
{Sik1 (x1, y1, z1) движение(x2, y2, z2)}/*отслеживание*/
(0, 1, 0, 01)
– Рики, – сказал я, – этот код почти не отличается от предыдущих.
– Ну да, наверное. Изменения всегда очень незначительные. Не понимаю, почему ты придаешь этому такое значение, – он пожал плечами. – Я имею в виду вот что – как только мы потеряли контроль над роями, первоначальный код утратил всякий смысл. Мы ведь все равно уже не могли его изменить.
– А как случилось, что вы потеряли контроль? В этом алгоритме нет эволюционного кода.
Рики развел руками и сказал:
– Джек, если бы мы это знали, мы бы знали и все остальное, и никаких неприятностей не было бы.
– Рики, меня пригласили сюда для того, чтобы разобраться с проблемами кода, который написала моя прежняя группа. Мне сказали, что агенты теряют цель…
– Можно сказать, что неподчинение управляющим радиосигналам и есть потеря цели.
– Но код не менялся.
– Ну, знаешь, Джек, сам код никого особо не волнует. Только то, что код собой подразумевает. Обусловленное поведение, которое возникает из этого кода. Нам нужно, чтобы ты помог именно в этом, Джек. Потому что это ведь твой код, верно?
– Да, но это ваши рои.
– Совершенно верно, Джек.
Рики пожал плечами и вышел из комнаты. Я какое-то время смотрел на листок с кодом, а потом задумался – почему Рики распечатал его для меня? Это означало, что он не хотел показывать мне электронную версию документа.
«Ну и черт с ним!» – подумал я. Смял листок с распечаткой и бросил его в мусорную корзину. Решать эту проблему все равно нужно не через компьютерный код. Это было мне совершенно ясно.
Мае сидела в биологической лаборатории и смотрела на монитор, подперев подбородок рукой. Я спросил:
– Ты как, нормально себя чувствуешь?
– Да, – она улыбнулась – А ты?
– Просто устал. И голова опять разболелась.
– У меня тоже. Но у меня – из-за этого фага, – Мае показала на экран. На экране было черно-белое изображение вируса под сканирующим электронным микроскопом. По форме вирус напоминал минометный снаряд – толстая вытянутая головка, прикрепленная к более узкому хвосту.
– Это тот новый мутировавший фаг, о котором ты говорила? – спросил я.
– Да. Я уже отключила от линии один ферментационный чан. Производство работает на шестьдесят процентов от полной мощности. Все равно, вряд ли это имеет какое-то значение.
– А что ты сделала с отключенным чаном?
– Исследую чувствительность фага к разным антивирусным реагентам, – сказала Мае. – Вообще-то их здесь немного. Мы не должны анализировать фаги. По инструкции любой зараженный чан следует отключить от производственной линии, уничтожить все его содержимое, а чан простерилизовать.
– А почему ты этого не сделала?
– Наверное, я так и сделаю, со временем. Но, поскольку этот вирус новый, лучше сразу попробовать найти эффективный реагент против него. Это может пригодиться впоследствии. Потому что вирус появится снова.
– Ты имеешь в виду, он образуется опять? Заново?
– Да. Может быть, не настолько агрессивный, но, по сути, тот же самый.
Я кивнул. Я знал о такой тенденции, потому что изучал генетические алгоритмы – программы, специально разработанные для того, чтобы воспроизводить процесс эволюции. Большинство людей считают, что эволюция – одноразовый процесс, результат случайных совпадений. Если бы растения не начали производить кислород, животные никогда бы не появились. Если бы астероид не уничтожил динозавров, им на смену не пришли бы млекопитающие. Если бы какая-нибудь рыба не выбралась на сушу, все животные по-прежнему жили бы в воде. Ну и так далее.
Все это было в достаточной мере справедливо, однако в эволюции существовали и другие закономерности. Определенные формы, определенные способы существования продолжали возникать снова и снова. Например, паразитирование – когда одно животное живет за счет другого – появлялось в ходе эволюции множество раз, независимо друг от друга. Паразитирование – эффективный способ взаимного существования жизненных форм, поэтому он появлялся и будет появляться снова и снова.
Подобные феномены наблюдаются и в генетических программах. Программы имеют тенденцию возвращаться к испытанным и надежным решениям. Программисты рассматривают эту тенденцию на трехмерной модели горного ландшафта, с пиками и долинами. Но факт остается фактом – эволюция имеет и стабильную составляющую.