10 ноября 2010

Михаил Зизин: топор для расчётчиков

В Обнинске 26 октября 2010 года открылся семинар "Нейтроника-XXI". На вопросы электронного издания AtomInfo.Ru любезно согласился ответить один из участников семинара главный научный сотрудник РНЦ КИ Михаил Николаевич ЗИЗИН.

Тема о топоре

Михаил Николаевич, нам очень понравилось название Вашего доклада "Как я перековывал цепочку стационарных и нестационарных программ решения уравнения переноса". Вы не могли рассказать, о чём в нём идёт речь?

Начнём с эпиграфа. В качестве эпиграфа к выступлению я взял цитату из Авраама Линкольна "Если бы у меня было десять часов для того, чтобы срубить дерево, шесть из них я бы точил топор".

У меня было большое желание назвать доклад "Как я точил топор", но, к сожалению, в этом случае ушла бы предметная ориентированность. Поэтому основную идею я оставил, но название пришлось подкорректировать.

На самом деле, проблема очень серьёзная. Мы говорим о проблеме создания инструмента, с помощью которого мы будем работать, и о его качестве. Острый топор - условие необходимое, хотя, к сожалению, и недостаточное.

Теперь о докладе. В своём выступлении на обнинской конференции "Нейтроника XXI" я затрагиваю вопросы юстировки инструментов для проведения нейтронно-физических расчётов ядерных реакторов.

Обозначьте, пожалуйста, о каком коде идёт речь?

Всю свою жизнь я занимался автоматизацией реакторных расчётов. За последние 15 лет мы с нашими сотрудниками сделали интеллектуальную программную систему ShIPR для математического моделирования ядерных реакторов.

Основой системы выступает оболочка. Важно отметить, что это интеллектуальная оболочка, в которую можно погружать программы и знания. Использовать оболочку можно в разных предметных областях, но в моём частном случае это нейтронная физика.

Что Вы имеете в виду, когда говорите о "погружении знаний"? Например, сохранение результатов предыдущих расчётов?

И это тоже. Но, в первую очередь, это знания об объектах, их взаимосвязях, правилах использования, и так далее. На семинарах "Нейтроники" я представлял несколько докладов с подробным разбором - что считать знаниями в нашей предметной области?

А вот у нас другой вопрос появился. Что такое объект с точки зрения оболочки ShIPR?

Под объектами я понимаю саму программу, файлы, которые привлекаются для её работы, наборы входных данных в разных видах и форматах ("чёрный ящик", текстовые файлы и т.д.).

Как проводится расчёт в системе ShIPR? С одной стороны, я должен задать цепочку вычислительных модулей и задать файлы, которые могут быть присоединены к расчёту - например, файл с константами. В дополнение я должен указать наборы данных.

На данных остановлюсь особо. Пользователю ShIPR не требуется вводить каждый отдельный параметр. Он указывает крупные блоки, из которых выбирается всё, что нужно для заданной цепочки. Процесс этот автоматизирован. При выборке проверяется адекватность, полнота, собственно наличие входных данных.

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

Тема о языке

Некогда были популярны идеи написать такие расчётные комплексы, которым можно было бы ставить задание на естественном языке. Буквально как-то так: "Посчитай, пожалуйста, коэффициент размножения для реактора БН-350 с таким-то и таким-то обогащением". И комплексы сами будут создавать модели, описывать цепочки кодов, и так далее, и тому подобное.

Это мы проходили. В своей жизни я имел счастье работать с Бернардом Анатольевичем Загацким. Мы окончили с ним один университет и какое-то время вместе трудились в Сибирском отделении Академии наук в Новосибирске. Под руководством академика Андрея Петровича Ершова мой товарищ занимался разработкой трансляторов для Алгола.

Это советские трансляторы, не Алгол-ГДР?

Да, отечественная разновидность Алгола, а именно, Альфа. Это тема, требующая отдельного разговора. Сейчас скажу только, что наша программистская школа была в те времена высочайшего уровня, а академик Ершов - настоящий Эверест, с кем мало кто может сравниться.

Язык Альфа возник как итог работы коллектива А.П.Ершова над Алголом-58. Новосибирцы развили возможности Алгола-58, например, добавили в него матричные операции, операции над многомерными значениями, инициирование переменных и многие другие возможности. Альфа, как и другие возникшие на стыке 50-60-ых годов советские трансляторы Алгола, предназначалась исходно для использования на ЭВМ М-20. - Прим. AtomInfo.Ru.
 

С Загацким мы несколько лет вместе трудились в НИИАР. В тесном сотрудничестве с ним и родилась идея автоматизации реакторных расчётов. Под таким названием в 1974 году в "Атомиздате" у нас вышла книга, где мы обобщили собранный на тот момент опыт.

Предложения об использовании в расчётах естественного языка возникали. Но дело вот в чём - мы к этому не готовы. По разным причинам, не буду на них долго останавливаться. Просто скажу, что при нашей жизни мы вряд ли увидим подобные системы.

Поэтому нам нужно искать компромисс и последовательно справляться с встающими перед нами проблемами. Этим я занимаюсь многие годы. Как компромисс, возникла система ShIPR. Она работает, развивается, к ней постоянно добавляются новые и новые возможности.

У меня в группе есть великолепный системный программист Н.Б.Николаенко. Она писала системную часть ShIPR и защитила по ней диссертацию. Между прочим, это редкая удача - сочетание высококлассного системного программиста и физиков как постановщиков задач. В нашей предметной области системных программистов практически не осталось. Они, как правило, находят себе работу существенно более высокооплачиваемую.

К большому сожалению, всё наше общество устроено сейчас так, что никому ничего не надо. Каждый пашет свою маленькую делянку, и использовать чужой трактор абсолютное большинство людей не хотят.

Тема о реакторах

Михаил Николаевич, Вы предвосхищаете наш следующий вопрос. Есть ли потребители на систему ShIPR?

Потребители есть, и это хорошая новость. К сожалению, пока это только узкий круг специалистов. В Обнинске в ГНЦ РФ-ФЭИ наша система работает, и более того, её даже преподают студентам ИАТЭ. Есть надежда, что с весны следующего года для них будет введен отдельный спецкурс по ShIPR, в чём большую роль сыграл Анатолий Игнатьевич Невиница.

На какой тип реакторов на данный момент настроена система ShIPR?

Это общая система. Я с её помощью считал разные типы реакторов.

Но так же не бывает!

Извините! Программы решения уравнения переноса общие для разных типов реакторов. Константное обеспечение, разумеется, для каждого типа своё. В реакторных расчётах есть вещи общие, а есть специализированные. Настоящее искусство заключается в том, чтобы иметь набор общих и конкретных программ и файлов, и из них выбирать требуемые для решения конкретной задачи.

Я с помощью ShIPR считал реакторы РБМК, ВВЭР, быстрые реакторы… По своей биографии, я профессионал в области быстрых реакторов и считаю это основной специальностью. Но жизнь устроена так, что приходилось заниматься и расчётами аппаратов других спектральных классов.

В данный момент, например, мы изучаем пространственно-временные процессы для ВВЭР. Мы можем это делать, но для нас это… как бы это сказать? Хобби.

То есть, быстрые всё-таки лучше?

(Михаил Николаевич смеётся). Мы умеем считать всё, но сердце у меня лежит всё-таки к быстрым реакторам.

Тема о правилах

Возвращаясь к вопросу о знаниях, погружённых в оболочку. Известно, что такой-то метод не подходит для расчёта таких-то систем. Умеет ли ShIPR диагностировать ошибки расчётчика, выбравшего для своего задания неподходящую программу?

В системе ShIPR заложены правила для различных параметров. Например, по выбору геометрии, по абсолютным значениям и так далее. Правила постепенно формулируются и накапливаются. Таким образом, создаётся база знаний.

Кроме обычных ограничений, в системе есть правила о применимости вычислительных модулей для определённого типа реакторов. Пример - если длина пробега нейтрона в среде превышает заданное значение, то система может выдать предупреждение при попытке воспользоваться некоторыми из модулей.

Пока в основном наши правила касаются ограничений для наборов данных. Каждый расчётчик знает - очень большие потери времени идут на выверку правильности входных данных. Опыт позволяет избегать простейших ошибок, но не решает всех проблем. Я всю жизнь занимаюсь расчётами, но до сих пор система меня периодически поправляет.

Проверка входных данных на адекватность и непротиворечивость - казалось бы, простая операция, но она позволяет сэкономить массу времени.

Иными словами, если расчётчик перепутает концентрации урана-235 и урана-238, то система такую ошибку поймает?

Да, она вполне в состоянии догадаться, что в задании есть ошибка. Или другие более нестандартные вещи - например, в задании часть исходных данных оказалась для гексагональной геометрии, а часть для треугольной. Система обнаружит противоречие и проинформирует об этом расчётчика.

Традиционный вопрос - есть ли аналоги у Вашей системы за рубежом?

Я аналогов не знаю. За рубежом есть много различных комплексов, но все они специализированные. По степени интеллектуальности наша система уникальна.

Спасибо, Михаил Николаевич, за интервью для электронного издания AtomInfo.Ru.