Возврат (return) на оглавление мемуаров


Виктор Андреев.
Записки математика.
Проблемы вычислений.


      Клиорин сначала пытался вывести приближенную формулу вычисления параметров моделей для инженерных расчетов. Многие не подозревают, что средняя школа дает возможность делать инженерные расчеты, обучив считать логарифмы, синусы и косинусы. Но получалось сложно, неточно и от этого традиционно инженерного подхода отказались. Выход был - считать надо на ЭЦВМ. В нашем распоряжении тогда были три машины: Урал-1, МИР и БЭСМ-2.
      ЭЦВМ Урал - 1 считалась уже рухлядью. Многие уже перешли считать на БЭСМ -2. На этой ЭЦВМ был уже установлен транслятор языка программирования АЛГОЛ. Кстати, это вначале отпугивало людей, привыкших программировать в кодах ЭЦВМ, расписывая машинные адреса и операции.
      Для программирования на Алголе надо было освоить язык Бэкуса, который описывал работу языковых конструкций Алгола. Программы расчетов для ЭЦВМ БЭСМ - 2 сначала писали на бланках на языке программирования АЛГОЛ. На каждой строке бланка были размечены позиции для 80 символов текста. Затем бланки сдавали на перфорацию на перфокартах.
      Перфокарта представляла из себя прямоугольную картонку размерами примерно 8 х 20 см. По узкой стороне перфоратор пробивал небольшие отверстия, сочетания которых определяли коды символов алфавита, цифр и разных знаков. А вдоль всей карты могло быть перфорировано 80 рядов кодов символов.
      После перфорации программа представляла собой колоду перфокарт. В практике программистов бытовое выражение: "колода перфокарт", - заменялось на: "пакет перфокарт".
      Пакет перфокарт всегда неоднократно дублировали для страховки от заминания на устройствах ввода информации.
      Сверху пакета перфокарт клали перфокарту вызова транслятора АЛГОЛА, и сдавали диспетчеру вычислительного центра на трансляцию (диспетчер тогда был человек). Вводное устройство с помощью световых датчиков переводило информацию с перфокарты в электронную форму и далее начиналась обработка информации ЭЦВМ. Транслятор выдавал перечень ошибок программирования, так называемых синтаксических ошибок. Их исправляли, перебивая на перфораторе необходимые карты, и вставляли их на место в пакете перфокарт.
      Когда трансляция проходила успешно, далее к пакету подкладывали карты вызова сборщика - программы для подсоединения в момент счета стандартных программ АЛГОЛа, и карты контрольного примера.
      Контрольный пример -массив исходных данных для первого расчета. Но результат этого примера заранее рассчитывался вручную.
      Начиналась отладка логики программы "; программист не всегда мог сам заметить свои логические ошибки при написании текста программы. В пакет перфокарт: программы, заданий на трансляцию и сборку, контрольного примера, - вставлялись операторы выдачи на печать промежуточных результатов. Пакеты перфокарт сдавались диспетчеру вычислительного центра (тогда диспетчер был еще человеком) , и от этого диспетчера на следующий день получали результаты счета -распечатки (листинги). Если пакет перфокарт заминался в устройстве ввода ЭЦВМ, что случалось нередко, то начиналась отладка дубля пакета.
      Счет шел днем и ночью с длительными перерывами на устранение технических боев. Техника тогда была ненадежная, и великое счастье было, когда ЭЦВМ работала без сбоев хотя бы пол -часа.
      Такой режим работы назывался пакетным. Практическая скорость отладки программ -одна коррекция программы в день, а требовались десятки корректировок программы для ее отладки.
      В нашем отделе только -только установили ЭЦВМ "Мир"; рядом с ракетой, лежащей на стапелях. К этой ЭЦВМ прилагалась техническая документация по обслуживанию, по математическим методам, по программированию, инструкции для операторов - пользователей. "МИР"; была одной из первых машин индивидуального пользования. Я сознательно пишу ЭЦВМ, поскольку так тогда было принято говорить, для отличия от АВМ - аналоговой вычислительной машины.
      Никто, никогда нам лекций по программированию не читал, и тем более по технике работы оператора ЭЦВМ. Поэтому, бегло просмотрев примерно весь объем необходимой документации, мы сели за консоль управления МИР и начали работать. Могу отметить, что язык программирования АЛМИР был очень похож на АЛГОЛ, только операторы были русифицированы. Работа на "МИР"; заключалась в следующем:
      - Текст программы вводился непосредственно в память ЭЦВМ с консоли, похожей на печатающую машинку.
      - Листинг ввода (распечатку введенного текста) мы проверяли визуально и исправляя ошибки печатанием предложений на консоли: Вместо ... Заменить на ....
      - Результат каждого ввода текста и каждой корректуры сохраняли на длинной и узкой бумажной перфоленте.


      Программы были небольшие, примерно, до 1000 символов. Больше не позволяла память МИРа. Проверка синтаксических ошибок происходила быстро -секунды, для этого разработчики МИРа использовали систему интепретации, а не трансляции. Список ошибок за несколько минут анализировался, вводились корректуры и опять запуск на счет. Скорость отладки в таком режиме удивляла - за рабочий день добирались до стадии работы с контрольным примером. Формально рабочий день заканчивался в 17 часов. По специальной заявке в отдел режима сохранения секретности мы могли задерживаться до 19 часов. Кроме отдела режима за рабочим графиком следил профсоюз. Но видя усилия нашей молодежной группки: Миши Клиорина, Саши Сафонова и меня, - на нас махнули рукой и расслабившаяся охрана выпускала нас и в 22 часа. Конечно, это сказывалось на посещении вечерних занятий в МАИ, но я был староста студенческой группы, и прогулы сходили для меня безнаказанно. Также у меня была и хорошая память, и были хорошие отношения с девушками -аккуратистками из моей институтской группы. Я постоянно переписывал у них конспекты лекций, которые требовалось предъявлять на зачетах и экзаменах.
      Хорошая память была не случайно, я занимался прикладной психологией, тренировкой памяти и зрительного аппарата, чтобы решать в уме технические задачи. Также тренировался в устном счете по системе Я. Трахтенберга. (Э. Катлер и Р. Мак-Шейн "Система быстрого счета по Трахтенбергу")
      Но для меня тогда главным было в то, что мы были на острие науки и институтские учебники и конспекты даже близко не содержали необходимой информации. Много позже, учась в аспирантуре, на кафедре "Высшая математика"; МАТИ я читал студентам -вечерникам лекции по программированию на фортране по 26- часовому семестровому курсу. Я сразу объяснял студентам разницу между этим курсом и реальным программированием. Даже был весьма либерален -разрешал на зачетах пользоваться любым справочным материалом. Только требовалось без ошибок переписать коротенькую программу из лекционного цикла и прочитать ее вслух на русском языке, рассказав, что за расчеты программа описывает. И это было не так просто как кажется.
      Вернусь к методике определения надежности. Клиорин начал исследовать функцию правдоподобия на контрольных примерах. С помощью датчика случайных чисел он имитировал цепочку квалификаций опытов
      {Zi}.
      Функция была двух параметров и он разработал программку для печати значений функции в зависимости от значений параметров в допустимой области значений. Также производилась печати кривых одного уровня, как на географических картах. Я с интересом наблюдал, как Клиорин, выпускник мехмата МГУ, проводит исследование функции.
      Оказалось, что поверхность отклика значений функции правдоподобия на изменение параметров представляет собой как бы изогнутый серпом узкий гребень горы. А значения функций правдоподобия меняются на сотни порядков. В этом случае, традиционно, рассматривают не произведение, просчитывая функцию правдоподобия, а ее логарифм и сумму логарифмов сомножителей. Но опять проблема, логарифм считается не точно, а вычисляется через приближенные функции. Уникальная ЭЦВМ МИР имела переменную точность вычислений и могла оперировать с 1000- значными числами в арифметических операциях.
      Показалось, что надо было решать задачу методами поиска экстремума нестрого унимодальных функций. Этот термин введен Д. Уальдом в его книге: "Методы поиска экстремума". Естественно этой книги в библиотеке предприятия не было, в библиотеке МАИ тем более, она нами была выбрана по планам издательства и куплена по открытке, присланной из книжного магазина. Отмечу, что в то время НИИ занимающиеся конкретной проблемой финансировались лучше учебных институтов, но главная проблема была в специалистах, которые комплектовали библиотеки. Их по новым разделам науки специалистов просто не было.
      Эта книга была интересна тем, что вводила элементы случайности в анализ процесса поиска экстремума в зависимости от применяемого метода.
      Иллюстрирую примером восхождения на гору слепого человека. В то время у слепых не было еще систем электронного протезирования зрения. (Как и сейчас в РФ).
      Слепой ощупывает палочкой вокруг себя (по осям координат) и переходит на место, где выше. Там опять ощупывает и очередной переход на более высокое место. Так продолжается до тех пор пока все точки исследования не окажутся ниже того места, где он находится. Тогда слепой уменьшает размах ощупывания вокруг себя и опять продолжает подъем. Когда размах станет маленьким и двигаться уже нельзя, то считается, что достигнута вершина. Если гора узкая, и ее гребень напоминает серп, то двигаться к вершине можно только малыми шажками.
      А если учитывать и неточность вычислений, когда нельзя сравнивать сравнивать значения функций в ближних точках, то гребень горы можно представить заваленным глыбами камней. И двигаться слепому мелкими шажками в таком случае также невозможно.
      В вычислительном процессе требовалось максимально уменьшать количество вычислений исследуемой функции, из-за большого расхода машинного времени - быстродействие тогдашних ЭЦВМ было всего сотни или тысячи арифметических операций в секунду.
      В книге Уальда был предложен метод конфигураций. Особенностью которого был дополнительный шаг в направлении движения. Запоминалась траектория переходов, аппроксимировалась вектором. В этом случае вдоль гребня горы шли дополнительные шаги направлению этого вектора. Я написал и отладил программу, несколько модифицировал этот метод - добавив ускорение или замедление движения вдоль этого вектора и добавил учет поворотов этого вектора.
      Программа была очень компактная, удобна в использовании и мы быстро подготовили отчет о новой методике, начав обрабатывать результаты испытаний ракетных двигателей. Описаний экспериментов было много, пришлось вникать в тонкости проведения огневых испытаний. Но все пошло для нас, кажется, удачно.
      Сборка ракеты перед каждым пуском осуществлялась вручную. Конечно, ее испытывали на разных стендах: трясли, замораживали и нагревали. Но проблема была в базовой составляющей надежности - устойчивости технологии изготовления, которая обеспечивала взаимозаменяемость элементов ракетной системы при ее производстве, и в ответственности персонала на каждой технологической операции.
      Пока все сотрудники, и разработанная технологическая оснастка производства ракеты, не превратились в единый производственный комплекс работающий без сбоев, говорить об успешных испытаниях не приходилось.
      И, наконец, чудо, все прошло первый раз штатно. Т.е. как надо. Вскрыли самописец, чтобы понять при каких сочетаниях параметров это произошло. Оказалось, что ... самописец не сработал, кусочек металла, попал в редуктор передвижения фотоленты самописца, на которой световые зайчики рисовали параметры процесса. Оказывается рабочий забыл продуть сжатым воздухом узел после сборки, чтобы удалить посторонние примеси. Но руководство министерства уже почуяло награды. Начались смены и замены руководства - в налаженное производство, посадили временщика, затем другого. Каждый временщик вносил свои изменения в конструкцию двигателя. Но ничего принципиального с надежностью не происходило. Она, надежность, зависила не от главного конструктора, а от всего коллектива конструкторов, рабочих и испытателей.



Hosted by uCoz