Knigi-for.me

Проект «Сфера-82»: Цвет и слой - Станислав Миков

Тут можно читать бесплатно Проект «Сфера-82»: Цвет и слой - Станислав Миков. Жанр: Альтернативная история издательство , год . Так же Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте knigi-for.me (knigi for me) или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
class="p1">— Юрий Павлович, смотрите. Это прямое требование к вашей прикладной программе.

Она постучала обратной стороной карандаша по плотной бумаге.

— Код станции, шифр груза, номер поезда — это константы, их переведем в числа. Но взгляните, как заполняют остальное, — карандаш Егоровой сдвинулся к затертому полю. — Цифра зачеркнута, исправлено поверх. В графе веса вместо тонн указаны штуки. А в особых отметках идет чистый текст: «Сломалась стрелка» или «Ждем до утра». Ваша программа должна блокировать явный мусор при вводе, но оставлять диспетчеру возможность сохранить такие пометки и не завесить систему.

Шрамов склонился над бланками. Произвольный текст — полбеды, под него можно зарезервировать отдельную строку дисплея.

— В каком виде эти данные приходят на узел? — спросил он, потирая подбородок. — И в каком виде должны уходить?

— Исходные сводки приходят телеграммами, либо помощник пишет их на бумаге со слов дежурного по станции, — ответил Ширяев. — Ваш оператор будет переносить цифры в машину. А итоговый маршрут должен ложиться на стол начальнику смены в виде твердой копии.

— Вывод пойдет на АЦПУ или телетайп, — вмешался Морозов. — Юрий Павлович, забирайте формирование бланка на себя. Громов отдаст массив результата и номер расчета, а дальше вы сами собираете символы в строчки.

— Выдавать прямо в порт вывода? — деловито уточнил Шрамов.

— Ни в коем случае, — отрезал Морозов. — Никакой самодеятельности с железом. Используй пятый системный вызов из методички. Система сама опросит готовность и вытолкнет символ. Иначе повесите шину из-за разницы в задержках у АЦПУ и телетайпа.

Шрамов быстро сделал пометку в блокноте. Жесткие рамки профиля не оставляли места для низкоуровневых фокусов, но гарантировали предсказуемость.

— С печатью ясно. Вывод отвязан от железа, — кивнул Шрамов.

Он тяжело вздохнул, оценивая общий объем проверок и блокировок, которые ему предстояло написать для интерфейса программы «МАРШРУТ-82В». Математика не должна защищаться от опечаток оператора — это была исключительно его работа. Громов же, наоборот, выглядел заинтригованным алгоритмической сутью задачи. Он смотрел на разложенные по столу карточки, словно видел не бумагу, а взвешенные графы и матрицы смежности.

— Павел Андреевич, — обратился Громов. — А критерий оптимальности у нас какой? Что мы минимизируем? Время доставки? Стоимость? Пустой пробег вагонов?

Ширяев мрачно усмехнулся:

— Всё сразу, Евгений Александрович. И чтобы к утру.

— Так не бывает, — покачал головой Громов. — Если мы минимизируем время, придется гонять пустые локомотивы ради одного срочного вагона. Если минимизируем пустые перегоны — сорвем сроки поставки. Математика чудес не делает. На Олимпиаде мы искали кратчайший путь, но здесь это не сработает.

Морозов мысленно согласился. Полный перебор вариантов на «Сфере» займет недели, а ответ нужен диспетчеру к утру.

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

Громов нахмурился, обдумывая идею, и быстро кивнул.

— А потом перекидываем составы на соседние ветки, — подхватил он. — Если общая сумма штрафов за маршрут уменьшилась — сохраняем. Если увеличилась — откатываем назад. И так до упора.

— Штраф? — переспросил Ширяев. — Какой еще штраф?

— Математический, — пояснил Громов. — Мы не зашиваем критерии жестко в код. Мы делаем таблицу весов. Опоздание на час — штраф сто очков. Пустой пробег километра — десять очков. Задержка литерного груза — миллион очков. Алгоритм просто ищет вариант с наименьшей суммой штрафов.

— Вот! — Морозов указал на Громова. — И мы можем менять поведение системы, просто исправляя цифры в этой таблице. Не переписывая саму расчетную подпрограмму.

Егорова оторвалась от своих карточек и посмотрела на программистов поверх очков.

— Звучит красиво, — сказала она. — Но я вам не верю.

Громов поперхнулся. Морозов удивленно поднял брови.

— Вы сделаете алгоритм, он выдаст какой-то ответ, и вы скажете, что он оптимальный, — пояснила Егорова. — А как мы это проверим? Вы сами сказали, что идеального ответа нет.

Она вытащила из папки чистый лист и положила перед Громовым.

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

Громов посмотрел на женщину с нескрываемым уважением. Она не просто проверяла бумаги, а переводила бюрократическую рутину в строгие условия машинного теста.

— Договорились, Тамара Николаевна, — Громов забрал чистый лист. — Три варианта. И таблица штрафов вынесена в отдельный блок памяти. Юрий Павлович, — он повернулся к Шрамову. — Я дам тебе фиксированный адрес в памяти, по которому будет лежать структура с результатами. Код ошибки, номер маршрута, расчетное время. Как ты это будешь рисовать на экране — твоя забота.

* * *

Чернов, который всё это время молча стоял у окна и слушал монотонное гудение силового трансформатора в моноблоке, наконец подал голос.

— Вы тут всё память делите, адреса раздаете, — пробасил он. — Но ПЗУ-82В, как мы договаривались, жестко зашито. А операторская часть и справочники будут требовать обновлений.

Горелов предупреждающе поднял руку:

— Сразу говорю: никаких дискет в рабочей зоне диспетчера. Дискета — это грязь, пыль, магнитные поля и человеческий фактор. На узле будет работать только аппаратный блок.

— Поэтому в ПЗУ пойдет только окончательная версия, — подтвердил Морозов. — Аппаратно зашьем весь комплекс: операторскую часть, расчетную подпрограмму и базовые справочники станций.

Шрамов постучал костяшками по глухому кожуху машины.

— Прикладная программа будет меняться каждый день. А на предприятии? Контролер попросит сдвинуть колонку в печатном бланке — мне прикажете микросхему перепаивать?

— Оставим возможность загрузки с дискеты для отладочного режима, — пояснил Морозов. — На этапе доводки и во время выезда на предприятие программа крутится с дисковода. Нашли нестыковку — быстро поправили код на месте. Когда логика стабилизируется, готовим мастер-ПЗУ и ставим в штатную машину.

Чернов шагнул к столу и очертил пальцем воображаемый квадрат на задней стенке моноблока.

— Для замены ПЗУ паяльник вообще не понадобится. Сделаем аккуратный лючок. Микросхемы посадим в цанговые панельки, ключи


Станислав Миков читать все книги автора по порядку

Станислав Миков - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-for.me.

Все материалы на сайте размещаются его пользователями.
Администратор сайта не несёт ответственности за действия пользователей сайта..
Вы можете направить вашу жалобу на почту knigi.for.me@yandex.ru или заполнить форму обратной связи.