Двухмашинный вариант, глава 12. Алгоритмы
После демонстрации дисплей так и остался в машзале всегда включенным. Так надо – обкатка. Каждый мог подойти и задать один из трех перекрестков на отображение. Целый день меняются фазы, цифры на дисплее. ЦУПовцы, ГАИшники ходят, смотрят по видеокамере, правда ли столько машин проехало, как на цифрах, какой сигнал горит на светофоре, вообщем пока это была забава.
А я тем временем все готовил и готовил перфоленты с экранными формами на остальные перекрестки. Наконец мне надоела рутинная работа, и я решил закончить программу управления от М-6000. Тогда играться на дисплее будет нельзя, включать планы координации должно ответственное лицо – дежурный ГАИ под свою ответственность, запись в журнале и все такое.
Главный план координации я выбрал уже давно, алгоритм «резинка-преобразования» проработан, таблицу коэффициентов почти составил. Еще покопался в чертежах планов координации, перепроверил и доработал таблицу, потом продолжил начатую после Северодонецка программу управления «по времени».
Исходными данными служит таблица, пока нарисованная в моей тетради с графами: дата, час, сухая (погода), дождь, сильный дождь, снег, гололед, коэффициент «резинка преобразования».
Месяц, день и час берутся из машинного времени. Оператору нужно только задать текущие погодные условия.
На ассемблере начал заносить таблицу в область памяти программы. Целый день стучал на клавиатуре СИД-1000 и перепроверил по тетради, транслировал, исправил ошибки и, наконец, вывел программу на перфоленту – дисков и магнитных лент тогда не было.
Программисты обычно вводят в программу комментарии, описывающие, что делает группа операторов языка. Я тоже это сделал, больше для себя, чтобы не запутаться – программ то много.
Мои комментарии в программе «по времени» выглядели примерно так:
«Берем дату, время из ячеек машинного времени».
«Ввод погоды». Здесь программа запрашивает пароль доступа и вводит вариант с клавиатуры из списка.
«Выбираем строку таблицы с датой, погодой»
«Коэффициент резинка-преобразования найден».
«Пересчитываем времена включения фаз по перекресткам базового плана, умножая на коэффициент». Это тоже данные ячеек памяти, ранее выведенные на перфоленту. Над этими числами пришлось повозиться на клавиатуре.
«Выдача в Наири-2». Здесь обмен с Наири-2, которая передает принятые от М-6000 команды в линии связи на контроллерам БКТ-7, при этом включаются нужные сигналы светофоров.
Программу написал, но есть одно но - как быть, если новое время включения фазы на перекрестке сильно отличается от старого, ведь неожиданно загорится другой сигнал! Опять засада, надо думать. Придется писать программу плавного вхождения в новый план координации.
Первый вариант – выбрать перекресток, например номер один и дождаться, когда на нем включится первая фаза. Тогда все перекрестки начать переключать с новыми временами. Но! А вдруг первый перекресток оказался неисправным. Ну, все приехали.
Второй вариант – по каждому перекрестку подождать, когда отработает текущая фаза и выдать команду на включение следующей уже из нового плана координации. Так-то лучше.
Появилась программа переходного процесса, она пригодится для всех алгоритмов. Пишем ее на таком хорошем ассемблере 580-й серии. Непросто это оказалось, появились нюансы – например неисправные перекрестки.
Все, обе программы написаны, почти две недели возился, оформил их в виде задачи. Вывел общую перфоленту, загрузил в машину, опробовал, введя новые команды с клавиатуры дисплея. Вроде никто из города не звонит, это хорошо, значит, не заметили чего-то необычного на светофорах. Показал Толику и Вале с Галей. Договорились, на какие перекрестки выйти посмотреть. Взяли блокноты, Валя с секундомером не расстается, и разъехались. Валя пошла на соседний светофор, я отвез Толика на нашем с папой зеленом москвиче, сам проехал подальше. Проверяли до самого вечера и по домам разошлись с перекрестков.
Утром собрались в ЦУПе, поговорили, посмотрели записи. Все было нормально, зеленые волны хорошо работали. Надо повнимательнее проверить переходной процесс. Договорились поставить Гену к СИД-1000 переключать планы координации. Но нужны были рации, чтобы он сообщал нам об этом. Доложили Чернину. Он был недоволен, что его не поставили в известность об испытаниях, но рации приказал выдать.
Двухмашинный вариант начал работать от М-6000 «по времени». Чернин выделял машину для объезда перекрестков почти каждый день. Проверки дали хороший результат, правда, погодные условия сильно не менялись. Мы продолжали наблюдения.
Взялся за основной алгоритм автоподстройки цикла регулирования по минимуму глобальной задержки – назвал его «алгоритм минимизации задержки».
По теории форма пачек транспортных единиц, пересекающих датчики, расположенные за двадцать пять метров перед светофором, близка к перевернутой параболе.
Если скорость зеленой волны отстает от средней скорости в пачке, передовые машины пересекают датчик в конце красного и останавливаются. Значит, если остановок больше в конце красного, надо увеличить скорость зеленой волны, уменьшив цикл по системе.
Если скорость зеленой волны опережает среднюю скорость в пачке, отстающие машины пересекают датчик в начале красного и останавливаются. Значит, если остановок больше в начале красного, надо уменьшить скорость зеленой волны, увеличив цикл по системе.
Количество проехавших и остановившихся автомобилей по датчикам всех перекрестков дает глобальную относительную задержку по сети.
Вырисовался алгоритм и я начал писать новую, основную, программу. При ухудшении глобальной задержки можно каждые пятнадцать минут выдавалось небольшое пробное изменение цикла в большую и меньшую сторону. Отыскивать направление изменения цикла, при котором глобальная задержка уменьшалась, установится цикл, обеспечивающий минимальную задержку. При сменах циклов нужно еще запускать программу переходного процесса.
Здесь действовала теория автоматического регулирования. Я делал проработку в поисках подходящих формул. Книг по теме уже накопилось прилично.
Вырисовывался еще один алгоритм локального регулирования с минимизацией задержек на перекрестках, оборудованных детекторами транспорта. Тоже математика.
В общем, приходилось постоянно изучать теорию, разбирать и подбирать подходящие формулы, сам сочинял рабочую формулу. На работе и дома было много книг по математике теории регулирования. Читать, разбираться и обдумывать приходилось постоянно - в тишине кабинета, дома, в автобусе. Примерно до сорока лет я читал только техническую литературу - на художественную времени не хватало.
Я был увлечен алгоритмами и однажды, когда в очередной раз приехал Олег Ким, начальник отдела программирования Омского «СКБ ПА», мы с ним долго беседовали, и я с увлечением рассказывал о прорабатываемых алгоритмах для двухмашинного варианта. Как потом выяснилось, это я делал напрасно.
Набирался материал для научной работы, в которую можно было включить фактический материал по эксплуатации двухмашинного варианта.
Появилось желание поступить в аспирантуру. Я записался на курсы английского языка для подготовки кандидатского минимума. И раньше читал технические тексты почти без словаря, а в конце трех месяцев обучения каждый из нашей группы мог почти свободно говорить по английски. Я так проникся языковой средой, что на экзаменах испортил два листа анкеты – никак не мог написать ее на русском.
Продолжение: http://proza.ru/2024/06/22/1489
Содержание: http://proza.ru/2024/12/31/1436
Свидетельство о публикации №224062101600