УДК 519.876.3 ББК 22.176 + 65.23
ЭФФЕКТИВНЫЙ СИНТЕЗ СЕТЕВОЙ МОДЕЛИ «РАБОТЫ-ДУГИ» С МИНИМАЛЬНЫМ ЧИСЛОМ ФИКТИВНЫХ РАБОТ
Постовалова И. П.1
(Челябинский филиал Финансового университета при Правительстве РФ, Челябинск)
На практике встречаются сетевые графики с различной структурой: типа «работы-вершины» и «работы-дуги» (стрелочный сетевой график). Переход от сети типа «работы-дуги» к сопряжённой осуществляется однозначно и без затруднений. Решение обратной задачи неоднозначно, поскольку существуют различные эквивалентные сети типа «работы-дуги», отличающиеся составом событий и фиктивных работ. Сеть типа «работы-дуги» не требует фиктивных операций, если списки опорных операций либо совпадают, либо не пересекаются. В противном случае эти списки проверяются на взаимное вложение с целью уменьшения количества фиктивных операций. Эффективность метода по уменьшению количества фиктивных работ проверена на нескольких важных классах тестовых задач, охватывающих практически все встречающиеся составные части проектов.
Ключевые слова: сетевая модель, стрелочный сетевой график, график «работы-дуги», фиктивная работа.
1. Введение
Сетевая модель представляет собой план выполнения некоторого комплекса взаимосвязанных работ (операций), заданного
1 Ирина Павловна Постовалова, кандидат физико-математических наук, доцент ([email protected]).
в специфической форме сети, графическое изображение которой называется сетевым графиком. Сетевой график - это ориентированный граф без контуров (Directed Acyclic Graph; это английское название иногда сокращают до «DAG»), рёбра или вершины которого имеют одну или несколько числовых характеристик. Ориентированные рёбра называются дугами.
Существуют сетевые графики с различной структурой: типа «работы-вершины» (AoN: Activity-on-Node) и «работы-дуги». Последние ещё называются стрелочными сетевыми графиками (AoA: Activity-on-Arrow Network), например, на сайте бизнес-инжиниринговых технологий БИТЕК [5] и в глоссарии проектного менеджера [2] - «это метод построения сетевых моделей, в которых дуги (стрелки) интерпретируются как работы». На стадии разработки удобнее составить сеть AoN, а в процессе управления удобнее пользоваться AoA. Так, например, сеть AoN предпочтительна при частых изменениях состава и структуры проекта, так как отображение этих изменений в AoN производится непосредственно, а в сети AoA может потребовать существенной перестройки. Построение сетей типа AoN предпочтительнее ещё и потому, что не требует введения дополнительных элементов в виде фиктивных работ. Фиктивной работой (зависимостью) называется связь между какими-то результатами работ (событиями), не требующими затрат времени вообще или требующая минимальных затрат времени, не отражаемых в сетевой модели.
Преобразование сети проекта в сопряжённую необходимо также в случае, когда имеющееся математическое обеспечение ориентировано на другой тип сети.
Переход от сети типа AoA к сопряжённой осуществляется однозначно и без затруднений. Решение обратной задачи неоднозначно, поскольку существуют различные эквивалентные стрелочные сетевые графики, отличающиеся составом событий и фиктивных работ, и поэтому требуется структурная оптимизация. Преобразование типа сети легко осуществить растяжением каждой вершины-работы в дугу (j, k), представленную парой номеров начального (j) и конечного (k) событий, принадлежащих множеству вершин новой сети типа AoA. Прежние дуги-
связи называют фиктивными работами [6]. Однако при этом резко увеличивается число узлов и дуг. Фиктивные работы - это просто связи, и функции на них не определены. Количество фиктивных работ стремятся сократить.
В основных положениях по разработке и применению систем СПУ, а также в существующих методах СПУ отсутствуют методы, алгоритмы и программы по построению эффективных сетевых графиков сложных проектов типа «работы-дуги» с минимальным количеством фиктивных работ. Построение сетевых моделей с помощью основных положений базируется на использовании ряда правил, на опыте и знаниях ответственного исполнителя, логически выстраивающего технологические цепочки последовательности работ. При этом имеют место многовариантность и большая трудоемкость процесса проектирования.
Наиболее полные варианты сокращения фиктивных работ предложены Разумовым И.М., Беловой Л.Д., Ипатовым М.И., Проскуряковым А.В. в их совместной работе [7]. Однако их нельзя оценивать как конечный результат по минимизации фиктивных работ, так как для ряда сетевых графиков возможно меньшее количество фиктивных работ. Другая проблема -обязательно ли первоначально формировать полный список фиктивных операций, а потом его сокращать? Возможно ли создание эффективных алгоритмов с меньшей продолжительностью счёта и меньшим объёмом памяти, а главное, позволяющих вводить малое количество фиктивных работ?
Возникает идея метода преобразования типа в некотором смысле противоположного: вначале добавить только необходимые фиктивные операции, после чего генерировать события.
Среди большого списка просмотренной учебной и научной литературы нечто похожее удалось найти только в работе Гришина А.П. - это «синтез рёберной сетевой модели на основе расширения матрицы бинарных отношений непосредственного предшествования элементарных работ» [3]. Однако приведённый алгоритм излишне сложен и не совсем адекватен. Достаточно сказать, что в этой работе рассмотрен пример орграфа с циклами, который не может быть сетевым графиком, а также
сформулирована следующая теорема, требовавшая доработки для сетей проектов: «для того чтобы рёбра ориентированного графа можно было упорядочить, необходимо и достаточно, чтобы граф был деревом». Графы сетевых проектов не являются деревьями. Тем не менее их дуги можно упорядочить так, чтобы номер любой дуги, исходящей из любой вершины, был больше номера любой дуги, заходящей в ту же вершину. Богомоловым A.M. [1] доказана исчерпывающая теорема о том, что «в орграфе G существует правильная нумерация вершин тогда
и только тогда, когда G - бесконтурный орграф». В работе Гришина А.П. также необходимо учесть исключение ненужных элементарных фиктивных операций.
Автором статьи под руководством профессора Дых-нова А.Е. был создан новый метод добавления необходимых фиктивных работ на основе исключения пересечений списков предшествующих работ и элементарный метод генерации событий, в котором одинаковым множествам опорных работ соответствует одно событие.
2. Эффективный синтез сетевой модели «работы-дуги»
2.1. МЕТОД ФОРМИРОВАНИЯ СТРЕЛОЧНОГО СЕТЕВОГО ГРАФИКА НА ОСНОВЕ СПИСКА ПРЕДШЕСТВУЮЩИХ ОПЕРАЦИЙ
Обычно исходная информация о проекте представляется перечнем операций at, i = 1, ..., n. Для каждой at известен список G(ai) предшествующих операций, чем и определяется сеть типа AoN (см. рис. 1).
Рис. 1. Пример сети ЛоЫ
Если после растяжения вершин (см. рис. 2а) применить сокращения из [7], то удастся сократить только две фиктивные операции (1' и 6') и объединить события (1, 2, 3), (10, 11, 12), (4, 7), (6, 9). Результат - 4 фиктивных и 6 событий.
Наш результат (см. рис. 2б) для примера на рис. 1 - всего 2 фиктивных и 5 событий.
Рис. 2. Сеть «работы - дуги»: а) методом растяжения вершин; б) новым методом
Этот метод предусматривает формирование минимального списка 0_(аг) непосредственно предшествующих операций, а также полного списка 0+(аг) всех предшествующих операций.
Заметим, что 0_(аг) = Г-1(а,); 0+(аг) = 2(аг)\{аг}, где Г(аг) -отображение, совпадающее с минимальным списком последующих работ; Q(aг) - контрадостижимое множество операции аг. Построение 0_(аг) сводится к последовательному просмотру аг, О(аг) и исключению тех а}- е О(аг), которые являются дальними предшественниками (Ок) других операций множества О(аг). С этой целью, пока О(аг) не стабилизируется, выполняются в цикле следующие действия: а}- е О(Щ) ^ О(аг) = Н¡, где Н = 0(аг)\а}.
2.2. ДОБАВЛЕНИЕ ФИКТИВНЫХ ОПЕРАЦИЙ С ЦЕЛЬЮ ИСКЛЮЧЕНИЯ ПЕРЕСЕЧЕНИЙ СПИСКОВ ПРЕДШЕСТВЕННИКОВ И ГЕНЕРАЦИЯ СОБЫТИЙ
Сеть типа «работы-дуги» не требует фиктивных операций, если группы опорных операций либо совпадают, либо не пересекаются. В противном случае списки 0+(аг) проверяются на взаимное вложение с целью уменьшения количества фиктивных операций. Если 0+(а}) с 0+(ак), то добавляется всего одна фиктивная операция а', при этом 0_(а') = 0_(а}), 0_(ак) заменяется на а' и (0_(ак)\0_(а})).
При отсутствии вложенности добавляются две фиктивные операции а' и а": 0_(аг) = 0_(а") =0_(а^ п 0_(ак); 0_(а^ и 0_(ак) заменяются на а'и (0_(а})\0_(ак)) и а" и (0_(ак)\0_(а})).
После устранения пересечений множеств 0_(аг) генерируются события по одному на каждую группу 0_(аг) одинакового состава, начиная с 0_(аг) = 0. Завершающее событие соответствует окончанию операций, для которых 0_^1(аг) = 0.
2.3. ЭФФЕКТИВНОСТЬ МЕТОДА
Пример в таблицах 1 и 2 демонстрирует преимущество предложенного метода моделирования сети типа АоА.
Таблица 1. Пример
аг О (а) О+(аг) \ О (а,)
Л, Б, С - -
В Б -
Е С, В Б
^ Л, В Б
О Е С, В, Б
Н Л, Е С, В, Б
I Л, О Е, С, В, Б
J С Л, В, Б
К Е, J С, Л, В, Б
ь О, К Е, J. С, Л, В, Б
Результаты вычислений приведены в таблице 2, где в графе - полный перечень операций, включая фиктивные; операции с одинаковыми предшественниками сгруппированы так, что начальное событие (/) группы последующих операций совпадает с конечным событием (к) группы предшественников, на что и указывают стрелки в таблице 2.
Таблица 2. Результаты вычислений
О_(аь) Начальные события (/) Конечные события (к)
Л, б, .С. .. - 0 ...^у. 3
В ^ .........>3............
Е, С . С, В' 3 у" 5, 8
Л' , Л" '"Л в" -■ ----->4 ^ 8, 6, 7
О, Е, Е" Е 5 7, 6, 9
Н Л', Е 6 11
I, О' Л", О 7 11, 10
J С 8 9
К Е". J 9 10
ь О', К 10 11
В', В" В 2 3, 4
В общем случае работы определяются тройкой чисел (аж,у, к), где - номер работы; у - номер начального события; к - номер конечного события. Кратные дуги а5 имеют одинаковые инцидентные события у, к, поэтому для них вводится номер дуги 5.
При учёте вложенностей G+(aг) добавляются 8 фиктивных операций, иначе потребовалось бы 11 фиктивных операций.
Эффективность метода по уменьшению количества фиктивных работ проверена на нескольких важных классах тестовых задач, охватывающих практически все встречающиеся составные части проектов: класс задач со ступенчатым набором предшественников из п операций {СНПп}, класс задач с полным набором предшественников из п операций {ПНПп}; класс задач с (п - 1)-элементными наборами предшественников из п операций {п - 1ЭНПп}.
В частности, для класса задач {СНПп}: G(aг■) = 0, 1 < ■ < п;
¡—п
) = и а], п + 1 < ■ < 2,
]=1
представленного в таблице 3, при преобразовании типа сети добавляется минимальное количество: п - 1 фиктивная работа и п + 2 события вместо п(п + 1)/2 фиктивных работ и 4п событий при непосредственном преобразовании методом растяжения вершин.
Таблица 3. Данные задач из класса {СНПп}
а■ ад
а1 -
а2 -
ап -
ап+1 а1
ап+2 а1, а2
ап+п а1, а2, ..., ап
Задача из класса {СНПп}, как и любая другая задача, являются частью задачи из класса с полным набором предшественников из п операций {ПНПп}.
Этот класс требует большого количества фиктивных операций. Но и в этом случае предложенный метод приводит к сокращению количества фиктивных работ до минимума. Например, для п = 3 данные для проекта представлены в таблице 4, а соответствующий сетевой график «работы-дуги» - в таблице 5.
Таблица 4. Данные проекта {ПНП3}
а ад
1 -
2 -
3 -
4 1
5 2
6 1, 2
7 3
8 1, 3
9 2, 3
10 1, 2, 3
Таблица 5. Оптимальный по структуре стрелочный сетевой график {ПНП3}____
а ад 7 I
3, 2, 1 - 0 3, 2, 1
1', 1", 4 1 1 4, 5, 8
2', 2", 5 2 2 4, 6, 8
3', 3", 3"', 6 3 3 5, 6, 7, 8
7', 7 1', 2' 4 7, 8
8 1", 3' 5 8
9 2", 3" 6 8
10 7', 3"' 7 8
Для {ПНПп} добавляется всего 2(2" - п - 1) фиктивных операций из возможных "2"-1 связей. Их отношение составляет
... 2(2" - п -1) 4(2" - п - 1)_4Л п +1
(1) -5-=-=— (1--) .
"2 п2" п 2"
Результаты по количеству фиктивных работ для {ПНПп} при п = 1, ..., 10 отражены в таблице 6, а ниже приводятся пояснения к полученным оценкам для {ПНПп}.
Таблица 6. Результаты предложенного алгоритма для задач класса {ПНПп}
Количество начальных работ Минимальное количество фиктивных работ Всего связей
1 0 1
2 2 4
3 8 12
4 22 32
5 52 80
6 114 192
7 240 448
8 494 1024
9 1004 2304
10 2026 5120
Количество подмножеств из п элементов - это кС'п = 2п .
г =0
Фиктивные операции не нужны для начальных операций (Сп0 = 1) и для операций, у которых в предшественниках единственный элемент (Сп1 = п). Итого всего подмножеств с фиктивными операциями: 2п - п - 1. Списки
предшественников G(aг) проекта с п операциями (обозначим Оп(аг)) получаем на основе списков 0„-\(аг) проекта с п - 1 операциями добавлением п-й операции отдельно и к каждому Оп-1(а,). В результате такого построения общее число фиктивных работ будет 2(2п - п - 1). Множество всех связей: п п пп! (2) ТпС'п =1- !
)/'!(п - г)!
= к п(п -1)! ! = п±Сп\ = пТ
Ь (п - 1)!(п -п)! к
г =0
Рассмотрим ещё одну задачу с четырёхэлементными наборами предшественников из 5 операций {4ЭНП5}, представленную в таблице 7, где одинаковым спискам G(aг) в одной строке перечислены операции а, слева.
Таблица 7. Данные проекта {4ЭНП5}
а, ад
5, 4, 3, 2, 1 -
6 1, 2, 3, 4
7 1, 2, 3, 5
8 1, 2, 4, 5
9 1, 3, 4, 5
10 2, 3, 4, 5
Вместо 20 фиктивных достаточно 18 (решение в таблице 8).
Таблица 8. Решение для проекта {4ЭНП5}
а, ад
5, 4, 3, 2, 1 -
6 12', 4'
7 12", 5'
8 11', 13'
9 14', 1'
10 14", 2'
11", 11' 1", 2"
12", 12' 11", 3'
13", 13' 5", 4"
14", 14' 13", 3"
1", 1' 1
2", 2' 2
3", 3' 3
4", 4' 4
5", 5' 5
В данной статье впервые докажем также эффективность в уменьшении количества фиктивных работ для класса проектов
со всеми опорными работами из различных (п - 1)-подмножеств п начальных работ, сокращенно {п - 1ЭНПп} ((п - ^-элементные наборы предшественников из п операций). Анализ решений задач из этого класса показывает, что можно добавить всего 6п - 12 фиктивных операций вместо возможных п2 - п связей. Для этого класса задач список предшественников каждого элемента имеет пересечения со всеми списками предшественников других элементов.
Если п = 1 или п = 2, то фиктивных работ нет, а для каждого п > 3 добавляется 6 фиктивных по сравнению с п - 1 (см. таблицу 9). Напрашивается формула 6(п - 2) для количества фиктивных работ.
Таблица 9. Частные случаи сетей АоА, для каждого из которых в одной графе находятся а,, а в другой - 0(а,)
п = 1 а1
п = 2
а1, а2
аз а4
п = 3
п = 4
а2 а1
а1, а2, аз - а1, а2, аз, -
а4
а4 а2', аз' а5 а2', (аз, а4)'
а5 а1 , аз" а6 а1, (аз,
а4)"
а6 а1", а2" а7 (а1, а2) ' , а4 '
а1 , а\' а1 а% (а1, а2)",
аз'
а2', а2' а2 (а1, а2) , а\ \ а2"
(а1, а2)"
аз ' , аз" аз (аз, а4) , аз", а4"
(аз, а4)"
а1, а1" а1
а2 ' , а2" а2
аз , аз" аз
а4 ' , а4" а4
В общем случае структура сети без пересечений для п предшественников приведена в таблице 10. Фиктивные работы обозначаются группой работ, заключенной в скобки, и
помечены штрихами. Работы с одинаковыми предшественниками записываются слева и разделяются запятыми.
Таблица 10. Общий случай структуры сети класса {п - 1ЭНПп}
Количество а. 0(0)
пар фиктив- 01, . .. , 0п -
ных работ: 0п+1 02', (03, . , 0п)
0п+ 2 01', (03, ... , 0п)"
3 < к < п 0п+к (01, ..., 0к-1)' , (0к+1, ... ,
0п)
02п-1 (01, . , 0п-2) , 0п
02п (01, ... , 0п-2)', 0п-1
1 (01, 02)', 01", 02"
— (01 02) "
(01, ... 0к) , (01, ..., 0к-1)", 0к
(01, ... 0к)"
2(п - 4) (Ок, ..., 0п) , 0к", (0к+1, ... , 0п)"
(0к, ... 0п) "
1 - (0п-1, 0п) , 0п-1 ", 0п"
(0п-1 0п)"
01 , 01 " 01
п
0п , 0п" 0п
Подтверждаем, что минимальное количество добавляемых фиктивных работ для рассмотренного класса задач равно 2(2(п - 4) + п + 2) = 6п - 12 = 6(п - 2).
3. Заключение
На основе метода создана комплексная программа синтеза сетевой модели «работы-дуги», зарегистрированная в отрасле-
вом фонде алгоритмов и программ (ОФАП) [4] и в Информационно-библиотечном фонде РФ. Программа может быть использована на стадии проектирования и в учебном процессе. Проектировщикам не потребуется выявлять и нумеровать события и фиктивные операции, а достаточно только составлять для каждой операции список предшествующих операций. Это уменьшает трудоёмкость и сокращает процесс разработки.
Программа учитывает встречающуюся на практике возможность переопределения отношения порядка, когда пользователь (даже порой искушенный) наряду с необходимыми непосредственно предшествующими операциями указывает по ошибке и некоторые операции дальнего предшествования. Последние выявляются и удаляются.
Минимальность количества фиктивных работ сетевых графиков «работы-дуги», созданных с помощью нового метода, строго не доказана, но пока и не удаётся подобрать проект, для которого бы эта минимальность не выполнялась.
Литература
1. БОГОМОЛОВ А.М. Алгебраические основы дискретных систем. - М.: Наука: Физматлит, 1997. - 397 с.
2. Глоссарий проектного менеджера. - [Электронный ресурс]. - URL: http://www.pm-glossary.com/pmmm-glossary/ 1872-activity-on-arrow-network (дата обращения: 14.09.2014).
3. ГРИШИН А.П. Исследование операций. - М.: МАИ, 1975. -106 с.
4. ДЫХНОВ А.Е., ПОСТОВАЛОВА И.П. Эффективный синтез сетевой модели «Работы-Дуги» // Свидетельство об отраслевой регистрации разработки №2687, 17.06.2003. -Москва, МОРФ, ГКЦИТ, ОФАП, 2003.
5. Информационный портал Betec.Ru. - [Электронный ресурс]. - URL: http://www.betec.ru/secure/indexprint.php? id=11&sid=06&tid=99 (дата обращения: 14.09.2014).
6. КРИСТОФИДЕС Н. Теория графов. Алгоритмический подход. - М.: Мир, 1978. - 432 с.
7. РАЗУМОВ ИМ., БЕЛОВА Л.Д., ИПАТОВ М.И. и др. Сетевые графики в планировании: учеб. пособие- 3-е изд., пере-раб. и доп. - М.: Высш. школа, 1981. - 168 c.
EFFICIENT CONSTRUCTION OF "ACTIVITY-ON-ARROW" PROJECT SCHEDULE WITH MINUMAL NUMBER OF FICTIVE ACTIVITIES
Irina Postovalova, Chelyabinsk branch of the Financial University under the Government of the Russian Federation, Chelyabinsk, Cand.Sc., assistant professor ([email protected])
Abstract: There exist two basic types of project schedules: the "activity-on-node " schedules and "activity-on-arrow " ones. Transition from an "activity-on-arrow" schedule to the corresponding "activity-on-node " schedule is simple and unique, while the inverse transition, in general, is not unique and requires adding to the project fictive zero-time activities. We show that an "activity-on-arrow" schedule does not require zero-time activities, if lists of, so-called, supporting operations, either coincide or do not intersect. Otherwise we look for the lists being subsets of the others lists to minimize the number of zero-time activities being added to the schedule. The efficiency of the suggested method for minimization of the number of zero-time activities is verifiedfor several important classes of test schedules, which include almost all elements met in typical projects.
Keywords: network schedule, activity-on-arrow schedule, zero-time activity.
Статья представлена к публикации членом редакционной коллегии В.Н. Бурковым
Поступила в редакцию 15.09.2014.
Опубликована 30.11.2014.