Елисей Медведев – Алгоритм вне контроля. Последнее решение (страница 1)
Елисей Медведев
Алгоритм вне контроля. Последнее решение
ПРОЛОГ
Двадцать восемь градусов ниже нуля. Ветер дул с Баренцева моря, продирался сквозь щели в обшивке командного модуля и заставлял мониторы мелко дрожать. Алексей Воронов сидел перед пультом управления и не чувствовал холода. Он чувствовал только пульс в висках и то, как пальцы левой руки вцепились в край клавиатуры.
Восемь радаров стояли в тундре полукругом, каждый – шестиметровая фазированная решётка на бетонном основании. Проект «Периметр-6» должен был доказать, что восемь обычных радаров, сложенных когерентно, могут работать как один гигантский. Идея принадлежала Воронову. Алгоритм синхронизации – тоже его. И ответственность за всё, что произойдёт в ближайшие двадцать минут, – тоже.
Он посмотрел на часы. 14:42. Через восемнадцать минут – финальный цикл испытаний.
– Первый – норма, – сказал оператор слева. – Второй – норма. Третий…
Воронов не слушал. Он смотрел на колонку фазовых сдвигов на правом мониторе. Восемь строк, восемь зелёных цифр. Фазовый сдвиг каждого радара относительно опорного. Если цифры совпадают с расчётными, восемь лучей сложатся в один. Если нет – энергия уйдёт не туда.
Цифры совпадали. Воронов разжал пальцы и откинулся на спинку кресла.
– Алексей Николаевич, – окликнул его майор Костюков, куратор от военных. – Старт через десять минут. Ваша команда.
Воронов кивнул. Он должен был сказать «подтверждаю готовность». Вместо этого он ещё раз посмотрел на фазовые сдвиги. Зелёные цифры. Всё в порядке.
Но что-то мешало. Какое-то чувство, которому он не мог подобрать формулу. Утром, когда он проверял калибровку четвёртого и пятого радаров, он заметил, что иней на краях антенных элементов выглядит толще обычного. Он подумал: надо пересчитать температурные поправки. Потом посмотрел на часы, на график испытаний, на лицо Костюкова – и решил: обойдётся. Разница в сотых долях градуса. Не может повлиять.
Он ошибался.
В 14:57 Воронов нажал клавишу старта. Восемь радаров одновременно излучили импульс. Когерентное сложение должно было сформировать единый луч, направленный на мишень в сорока километрах к северу – старый металлический отражатель на сопке.
Первые три секунды всё шло по плану. На центральном экране появилась яркая точка в нужном месте – отражённый сигнал от мишени.
– Есть захват! – оператор хлопнул ладонью по столу.
Воронов не улыбнулся. Он смотрел на колонку фазовых сдвигов.
Пятая строка ползла.
Не быстро. На сотые доли градуса, потом на десятые. Алгоритм интерпретировал это как небольшое смещение цели и начал компенсировать. Он слегка поворачивал луч, подстраиваясь под ложную коррекцию.
Воронов почувствовал, как по спине прошла волна холода, и это был не ветер.
– Пятый радар уходит, – сказал он негромко.
– Что? – Костюков подался вперёд.
– Фазовый сдвиг пятого радара. Дрейфует. Алгоритм компенсирует, но…
– Но что?
Воронов не успел ответить.
Четвёртая строка тоже поплыла. Температурная деформация антенных элементов – тот самый иней, который он заметил утром и решил проигнорировать, – меняла геометрию излучающих элементов на микроны. Микроны, которые на рабочей частоте превращались в градусы.
Алгоритм компенсировал. В неправильную сторону.
Луч поворачивался. Медленно, как стрелка компаса в магнитной аномалии. На один градус, на два, на пять…
– Остановите, – Воронов вскочил. – Остановите излучение!
– Не могу. Цикл не завершён. Аварийное отключение – только вручную, на каждом радаре.
Двенадцать градусов.
Луч, сложенный из восьми излучателей, смотрел теперь не на сопку, а на диспетчерскую вышку местного аэродрома. Двадцать два километра, прямая видимость. Мощность суммарного луча – двести киловатт в импульсе.
На вышке были люди.
Потом были крики по рации, вертолёт, санчасть. Воронов стоял на мёрзлой земле рядом с командным модулем и смотрел на столб дыма над аэродромом. Ветер рвал дым на клочья, и они летели над тундрой, как серые птицы.
Дмитрий Кузнецов, диспетчер, тридцать два года, двое детей. Ожоги лица и рук. Контузия. Полная потеря слуха на правое ухо. Второй диспетчер, Женя Сорокин – ожоги легче, но психологическая травма на годы.
Причина: неучтённая температурная деформация антенных элементов при арктических температурах. Виновник: ведущий инженер Воронов А.Н., не внёсший поправки в модель при изменившихся погодных условиях.
Воронов не спорил. Он знал, что виноват. Иней на элементах – это он видел своими глазами. Он мог остановить испытания, пересчитать, перекалибровать. Но он посмотрел на часы, на лицо куратора, на график – и решил, что сотые доли не имеют значения.
Он выбрал график вместо безопасности. И Дмитрий Кузнецов больше никогда не услышит правым ухом, как его дети зовут его по утрам.
Проект закрыли. Воронова понизили до рядового инженера и перевели в отдел технической документации. Шесть лет он писал инструкции для чужих проектов и каждую ночь видел одно и то же: столб дыма над тундрой и зелёные цифры, которые ползут вправо.
Но каждый вечер, закончив работу над чужими инструкциями, он открывал на домашнем компьютере другой файл. Новый алгоритм. Тот, который учитывал всё: температуру, деформацию, влажность, вибрацию. Алгоритм, который никогда не позволит лучу уйти в сторону.
Алгоритм, который станет ядром Horizon-Mesh.
Но об этом Воронов ещё не знал. Он просто писал код. Каждую ночь. Чтобы не слышать тишину в правом ухе Дмитрия Кузнецова.
ГЛАВА 1. АНОМАЛИЯ
Лаборатория № 7 находилась на четвёртом этаже корпуса «В», между складом оптического оборудования и туалетом. В ней стояли три рабочие станции, серверный шкаф с кластером обработки сигналов и электрический чайник, который не выключался никогда, потому что Воронов тоже не выключался никогда.
Был час ночи. За окном мельтешил мартовский снег – мокрый, ленивый, липнущий к стеклу. В корпусе «В» не осталось никого, кроме охраны на первом этаже и Воронова.
На трёх мониторах крутилась симуляция. Восемь точек на чёрном фоне – виртуальные дроны, каждый с имитацией фазированной антенной решётки. Они двигались по заданным траекториям, излучали сигналы, принимали отражения и передавали данные друг другу через виртуальный канал. Алгоритм Воронова складывал их сигналы когерентно – как если бы восемь маленьких антенн были одной огромной.
Этот алгоритм он писал шесть лет. Каждую ночь, после основной работы. Никому не показывал, ни с кем не обсуждал. Потому что если он ошибётся снова, это касается только его.
Симуляция завершила очередной цикл. Воронов отпил чая – чёрного, без сахара, уже почти холодного – и открыл лог.
И замер.
В данных последнего цикла был пик, которого не должно было быть. На частоте 119,7 мегагерц – узкий, резкий, как игла на электрокардиограмме. Сигнал, который появился только тогда, когда все восемь виртуальных дронов оказались в определённой конфигурации.
Воронов поставил кружку. Подвинул кресло ближе. Перезапустил цикл.
Пик повторился.
Он перезапустил ещё раз, изменив начальные позиции дронов. Пик исчез. Вернул прежнюю конфигурацию – пик вернулся.
Воронов откинулся в кресле и посмотрел в потолок. В потолке не было ответа. Он посмотрел на данные.
Этот пик не был помехой. Он появлялся только при определённом взаимном расположении дронов – когда они образовывали неправильный многоугольник с определёнными межузловыми расстояниями. Это был эффект когерентного сложения. Восемь слабых сигналов, сложившись в фазе, давали эффективную мощность, которую ни один дрон не мог обеспечить в одиночку.
Воронов почувствовал, как сердце ударило сильнее. Не от страха. От узнавания. Восемь маленьких дронов могли видеть то, что не видел ни один радар в мире. За горизонт. За рельеф. Сквозь помехи.
Если, конечно, он не ошибался.
Воронов встал, прошёлся по лаборатории. От двери до окна – девять шагов. От окна до двери – девять шагов. Он ходил так всегда, когда думал.
Восемь дронов – это восемь радаров, но движущихся. Не прикованных к бетонным основаниям в тундре. Не зависящих от инея на элементах. Они могут перестраиваться. Менять геометрию на лету. Компенсировать любые искажения.
Если сделать их не восемь, а двадцать. Или пятьдесят. Или тысячу…
Воронов остановился у окна. Снег лип к стеклу, таял, стекал каплями. Он прижал лоб к холодному стеклу и закрыл глаза.
Мурманск. Дым. Лицо Кузнецова на больничной койке – половина в бинтах, один глаз смотрит. Не зло. Не с упрёком. Просто смотрит.
Воронов открыл глаза.