ИЗВЕСТИЯ
ТОМСКОГО ОРДЕНА ТРУДОВОГО КРАСНОГО ЗНАМЕНИ ПОЛИТЕХНИЧЕСКОГО
ИНСТИТУТА имени С. М. КИРОВА
Том 168
1969
ПРОГРАММА ПРЕДВАРИТЕЛЬНОГО АНАЛИЗА СЛОЖНОГО
СЕТЕВОГО ГРАФИКА С ЛОКАЛИЗАЦИЕЙ ЛОГИЧЕСКИХ
ОШИБОК
Ю. Н. ЕФИМОВ
(Представлена научным семинаром вычислительной лаборатории ТПИ)
В настоящее время все большее признание получает автоматизированная система сетевого планирования, известная под названием PERT [1, 2]. Сущность этой системы заключается во всестороннем исследовании технологической зависимости работ друг от друга, составлении сетевого графика в виде логической последовательности работ и дальнейшем анализе графика с целью выделения участков потенциальных затруднений. Одним из преимуществ системы является то, что отдельные части графика составляются непосредственными исполнителями работ. Однако при «сшивании» этих частей сетевого графика в единую сеть из-за несогласованности между отдельными составителями возможно появление логических ошибок в виде замкнутых контуров и обрывов.
Для сетевого графика G=(/, Г) [3], имеющего некоторое подмножество исходных Ei0 и завершающих Ein событий, определим путь L, как последовательность работ, начинающуюся с какого-нибудь события h е £/0.
~ (¿о, ^г--) ¿к,---) •
Такие пути в общем случае могут быть конечными и бесконечными. Очевидно, что для последнего события in конечного пути IЧ п — 0. Конечный путь назовем простым, если в нем:
а) последнее событие iп t
б) никакие события не встречаются дважды.
Логически непротиворечивые сетевые графики имеют только простые пути. В бесконечных и конечных путях с повторяющимися событиями всегда можно выделить контур \х— последовательность, у которой начальное событие совпадает с конечным.
¡l — (/к, /K+i..,im), где im — /к.
Конечный путь, для которого in£Ein, имеет обрыв первого рода. Если найдется хотя бы одно событие ¿6/, для которого Г/-1 = 0, но ¿'t Ei о, то в сетевом графике имеется обрыв второго рода.
Противоречивость исходной информации затрудняет анализ сетевого графика и ставит под сомнение правильность результатов вычислений. Некоторые особенности самих методов анализа иногда позволяют обнаружить логические ошибки в исходной информации. Так, при расчете временных параметров методом итераций [4] или при нахожде-
3G
нии порядковой функции [5] замкнутые контуры в сетевом графике могут быть обнаружены по несходимости процесса счета. Обрывы же при этом не обнаруживаются, а приводят к неверным результатам вычислений. Наличие замкнутых контуров ведет к «зацикливанию» в программах, использующих алгоритм непосредственного анализа (полного перебора) [6]. Поэтому в программы анализа сетевых графиков обычно включают специальные блоки для прерывания счета и локализации обнаруженных ошибок. После необходимых исправлений машиннный анализ часто приходится начинать сначала до обнаружения следующей ошибки и т. д. Такая методика расчета намного увеличивает непроизводительные затраты машинного времени. Естественно., возникает необходимость создания специальной программы для локализации всех логических ошибок в сетевом графике. Эта программа должна использоваться для предварительного анализа сетевого графика на стадии его «сшивания». При этом желательно вычислить и длину критического пути (¿.р ) с тем, чтобы, исправляя логические ошибки, произвести одновременно временную корректировку работ. Опишем принцип работы такой программы, составленной для двухадресной ЭЦВМ «Минск-1».
Программа использует видоизмененный алгоритм непосредственного анализа сетевого графика. Исходная информация (1Ш) для работы программы задается в виде упорядоченного списка работ и их длин [7]. Каждой работе соответствует элемент ии, занимающий одну ячейку оперативной памяти машины.
О г а / ¿,7 .
Перед началом работы программы ячейки памяти, соответствующие событиям 1пк-Е1п , отмечаются знаком минус. В противном случае эти события будут выделены как места обрывов первого рода.
Работа программы (см. блок-схему на рис. 1) заключается в упорядоченной последовательности шагов, называемых шагами вправо и влево. Первый шаг делается вправо, начиная с события ¿(} Шаги вправо совершаются до встречи события г, имеющего Г7 — 0 или метку (зн-ак минус). В этом случае считаем очередной шаг вправо невозможным и делаем шаг влево. Событию, в которое ведет любой шаг влево, присваивается метка и временная оценка 1гп(1), вычисляемая по формуле
¥п (¿) — шах [¥*п (0; Ьгп (¿) + где
Ь'п (¿) -— наибольшая длина пути, последующего за событием £*п (г) — значение полученное к моменту вычисления.
Каждый шаг вправо фиксируется строкой в специальной таблице пути, характеризующей пройденный путь и определяющей шаги влево. Количество строк в этой таблице, равное числу работ, входящих в путь до рассматриваемого события, подсчитывается счетчиком О*!. Содержимое С^ сравнивается с заранее заданной величиной р>?тах(г')> где сртах(/) —максимальное значение порядковой функции анализируемого графика [5]. При [Сг^^-р печатается таблица пути до первого повторяющегося события ¿е. Событию 1е присваивается метка и от него делается шаг влево. Так выделяются контуры из бесконечных путей.
Если при шаге вправо встречается событие ¿к, для которого Г/к = 0, то печатается таблица пути, т. е. локализуется обрыв первого рода. Событие 1К получает м^тку, и делается шаг влево.
Если при шаге вправо встречается меченное событие г т , то по таблице пути проверяется, первый ли раз в рассматриваемый путь
входит это событие. Затем делается шаг влево с печатью таблицы пути, если 1т встречается повторно, и без печати в противном случае. Так выделяются замкнутые контуры из конечных путей.
н ¿7
Jac¿i'^r ¿<,££¿<,6/
-г / *
УГМ 77у/77 &
ЦШ <$ С/р0*у лу/гги
//Р/7?
¿Я
////а сЗап/ие
лге/г7
<#¿7нец Лу/тти ?
есгггб ли Х^ /гв/77
нр/77 / ¿с тб
ь
£¿7г / — /
налам дмае г^а
9а
&С/ГГ& мет
жг/лгягсг лгег/лЪ
! *
1 Засб/утЯЩ * ¿у у
//г/к
¿а
ФсрАгг/угабаше
¿¿г /
яс/адмы сяЯбгтг/*
\
¿7д /¿сели аагГл/гаЬ^ мет
Рис. 1. Блок-схема программы предварительного анализа сложного сетевого графика с локализацией логических ошибок
На к-м шаге влево производится вычисление величины 1!п{ь) для события /0, из которого делается первый шаг вправо. Ь'п (г0) = = где ¿кр (¿о) — максимальная длина пути, начинающегося в
Описанный процесс анализа повторяется для каждого /0 б
После исправления обнаруженных логических ошибок весь расчет надо повторить с целью проверки внесенных исправлений и вычисления верных значений 4'п(ь). Для локализации обрывов второго рода необходимо повторить анализ для сетевого графика с обратной ориентацией работ.
ЛИТЕРАТУРА
1. Г. С. Поспелов, А. И. Т е й м а н. Автоматизация процессов управления разработками больших систем или сложных комплексов. Изв. АН СССР, сер. техн. ки-берн., 1963, № 4.
2. Ю. А. Авдеев, А. П. Николаева. Управление сложными разработками по методу критического пути. Сб. Вычислительные системы, вып. II, Новосибирск, Изд-во ИМ СО АН СССР, 1964.
3. К. Б ер ж. Теория графов и ее применения. М., изд-во ИЛ., 1962.
4. А. Т. Петрова, Н. Н. Карнаухова. Об одном алгоритме нахождения критического пути сетевого графика. Сб. Вычислительные системы, вып. II, Новосибирск, Изд-во ИМ СО АН СССР, 1964.
5. Ю. Н. Ефимов. Алгоритм нахождения порядковой функции сетевого графика, (данный сборник).
6. Г. М. А дел ьсон-Вельский, Ф. М. Филлер. Программа вычисления сетевых графиков. Ж- вычисл., мат. и мат. физики, т. 5, № 1, 1965.
7. Ю. Н. Е ф и м о в, В. И. К и з е в, В. М. Разин. Об одном алгоритме автоматизации расчетов для процессов управления разработками сложных систем. Изв. ТПИ, т. 154, изд. ТГУ, 1967.