
книги из ГПНТБ / Цой, С. Синтез оптимальных сетей в системе управления горными предприятиями
.pdfсвязи не существует, то контурная работа соединяется вы ходящей стрелкой с мажорантой 1 м•
Правило 15. Внешними работами — вершинами по отно шению к рассматриваемому полному контуру — могут слу жить работы других полных контуров. Это показано на ри сунках :
Правило 16. Если все работы полного контура II выпол няются только после завершения работ полного контура I, то на графе они изображаются следующим образом:
50
i , ■
Другими словами, каждая вершина контура I должна соеди няться стрелкой с вершинами контура II. При отсутствии одной из таких связей, например
работа п при условии п-^-т по времени может начинаться параллельно с работами i и но обязательно после k. Если же для п-й работы будет лучше порядок т-^п, то, естествен но, она выполнится после окончания i-й и j-й работ, так как т-я работа будет начата только после работ i и у.
Порядок осуществления контурных работ устанавлива ется в процессе вычислений. При построении обычного сете вого графа, как известно, не допускается наличие контуров. Под контуром понимается фрагмент графа, в котором рабо ты соединены стрелками следующим образом:
а
Подобное изображение противоречит правилу 7.
В полном контуре, в отличие от рассмотренного, две лю бые работы соединены стрелками в двух различных направ лениях :
В процессе вычислений для контурных работ устанавли вается наилучший вариант топологии, минимизирующий Ткр , и лишние связи — дуги — удаляются. Предлагаемый алгоритм не позволяет анализировать обычные контуры, так как схема их построения не удовлетворяет описанным правилам. Отсюда вытекает следующее правило.
Правило 17. На графе не должно быть контуров, кроме полных. Машинный алгоритм обнаружения всех контуров, кроме полных, изложен в первом параграфе главы VI.
§ 2. АЛГОРИТМ ВЫБОРА ОПТИМАЛЬНОЙ ПОСЛЕДОВАТЕЛЬНОСТИ ВЫПОЛНЕНИЯ РАБОТ ПОЛНОГО КОНТУРА
ПО КРИТЕРИЮ ВРЕМЕНИ
1.Общие замечания. Имеем комплекс работ, образу
щих полный контур. Обозначим эти работы через 1, 2, . . .
. .., тп. Каждая работа полного контура может начинаться в любой момент вре мени независимо от других работ контура, но не одновременно.
Если допускается од новременное выполне ние работ, то в состав полного контура та кие работы не вклю чаются. В сетевом гра фе их можно предста
вить параллельными, и по времени это Судет наилучшии вариант.
Предположим, что имеются работы i*, которые не при надлежат к полному контуру и предшествуют контурным работам или следуют за ними. Назовем подобные работы
62
внешними по отношению к контурным. Таким образом, ра боты полного контура и внешние составляют проект (рис. 3.1). Пусть проект начинается с работы г0 и заканчивается работой , которые соответственно назовем минорантой и мажорантой. Обозначим через tj продолжительность выпол нения j-й внешней работы. Тогда длина максимального пути Li от миноранты го до г-й работы полного контура представ ляет промежуток времени, по истечении которого может быть начата г-я работа.
Если Li = 0 , то внешних работ, предшествующих г-й, нет, и г-я работа комплекса может начинаться в любой момент времени. Обозначим через L * длину максимального пути от г-й работы контура до мажоранты гм. Тогда работы, лежа щие на этом пути, будут осуществляться в течение проме
жутка времени, |
равного L *. Условие L * = 0 |
означает, что |
||||
внешних работ, зависящих от г-й, не существует. |
||||||
|
Заметим, |
что продолжительность Li и L * |
составляется |
|||
только из |
ti |
внешних |
|
|||
работ, не принадлежа |
|
|||||
щих к рассматриваемому |
|
|||||
полному контуру. Внеш |
|
|||||
ние работы путей |
Lt и |
|
||||
L * |
могут |
выполняться |
|
|||
одновременно |
|
или |
па |
|
||
раллельно с другими ра |
|
|||||
ботами полного |
контура, |
|
||||
отличными от г-й рабо |
|
|||||
ты. Например, на рисун |
|
|||||
ке |
3.2 внешние |
работы, |
|
|||
лежащие |
на |
пути |
L3 и |
|
||
L3*, могут начинаться па |
|
|||||
раллельно с работами г= |
|
=1, 2 и 4 полного контура.
2.Постановка задачи. Для работ 1, 2, . . . , г, . . . , пг пол ного контура I необходимо выбрать такой порядок выполне ния, при котором длина критического пути проекта от ми норанты г0 до мажоранты гм минимальна. Как уже отмеча лось, критический путь зависит от топологии сети. Поэтому для каждого выбранного порядка следования работ полного контура продолжительность критического пути проекта есть
величина определенная.
Если учесть, что количество всевозможных последова тельностей для тп работ проекта равно числу перестановок Pm — 1 •2 •3 •... •т, то перебор такого количества и выбор наилучшей последовательности при достаточно большом т практически невозможны. Вознйкает необходимость разра ботки специального алгоритма.
53
3. Алгоритм. Сущность предлагаемого алгоритма закл чается в том, что за каждую итерацию по определенному правилу выбирается работа полного контура I и ставится на очередь. В результате за m итераций будут растянуты в це почку все тп работ полного контура, т. е. установлен иско мый порядок их выполнения.
Разберем действие алгоритма на конкретном примере (рис. 3.2). Заданный полный контур I состоит из четырех работ ( i = l , 2, 3, 4). На рисунке 3.2 они условно изображе ны прямоугольниками, в каждом из которых проставлена продолжительность £г в днях. Контурные связи на рисунке не представлены. Предполагается, что любая пара работ связана противоположно направленными дугами. Работы, внешние по отношению к работам полного контура, на ри сунке не показаны. Продолжительность внешних путей L t и Lt* для каждой i-й работы полного контура проставлена над стрелками.
Одновременное выполнение хотя бы двух из четырех за данных работ недопустимо. Необходимо уложить их в цепоч ку так, чтобы общая продолжительность критического пу ти от i0 до гм была бы минимальной. При этом следует учи тывать, что работа i= 1 полного контура может выполнять ся не раньше, чем через два дня, работа i= 2 — не раньше, чем через 7 дней, и т. д. Работа i— 4 может начинаться в любое время, так как L4= 0 (рис. 3.2). Внешние работы, ле жащие на пути длины L2*, например, будут следовать после завершения контурной работы г = 2 в течение 30 дней.
Рассмотрим действие алгоритма по шагам.
Шаг 1. Построение исходной таблицы. Для работ полно го контура строим таблицу, количество строк которой равно числу контурных работ (п г = 4). Количество столбцов таб лицы постоянно для любого полного контура и равно шести
(табл. 3.1).
|
|
|
|
|
Таблица 3.1 |
i |
|
Li |
|
|
Рабочий |
Р |
ti |
4 |
столбец |
||
2 |
|
7 |
20 |
30 |
+ |
1 |
|
2 |
25 |
15 |
|
4 |
|
0 |
3 |
5 |
min |
3 |
|
1 |
5 |
0 |
|
В каждую строку таблицы заносим информацию для од ной работы i. В первом столбце указываем номера работ полного контура. Второй столбец отводим под индекс р, ко
54
торый будет показывать искомый порядок осуществления работ i. Например, р = 1 означает, что работа i, против ко торой стоит этот индекс, должна выполняться в комплексе первой, при р = 2 — второй и т. д. В начальный момент при нимаем все значения р равными нулю, а это говорит о том, что ни одна работа полного контура не поставлена на оче редь. В третьем столбце таблицы помещаем суммарные зна чения продолжительности внешних предшествующих работ Lit в четвертом — время выполнения г-й работы tt, в пятом— сумму продолжительностей внешних последующих работ Li. Шестой столбец рабочий и используется при вычислениях.
Строки таблицы располагаются сверху вниз в порядке уменьшения величин L *. При одинаковых значениях L * в первую очередь записывается строка для контурной работы i с меньшей продолжительностью t t . При одинаковых зна чениях L * и tt первой заполняется строка с меньшим зна чением L i .
Шаг 2. В третьем столбце (табл. 3.1) среди элементов находится минимальный. Если имеется несколько одинако вых минимальных значений Lt, то выбираем верхний в столбце. В нашем случае Lt = 0 для г = 4 . В шестом столбце таблицы в строке выбранного элемента L4 делаем пометку «min». Работа i= 4 может быть взята в качестве первооче редной. Условимся обозначать ее индексом I (£ = 4).
Шаг 3. Для отмеченной на шаге 2 строки l-Vi работы оп
ределяем сумму |
. В таблице 3.1 L/ +f / = 0 + 3 . Най |
денную сумму |
сравниваем со всеми значениями Lt строк |
ik столбца таблицы, находящимися выше строки с отметкой «min». Строки ik, для которых справедливо неравенство
Lik^-Li-\-ti, |
(3.1) |
отмечаем в шестом столбце знаком «минус». При соблюде нии условия (3.1) выбранную работу с номером Z= 4 целесо образно производить раньше любой i*-й работы, так как в течение промежутка времени Lik одновременно будут выпол
няться внешние работы на пути длины L* и контурная ра бота I.
Строки, для которых неравенство (3.1) не удовлетворя
ется, т. е. |
|
Lik<C.Li~\~ti, |
(3.2) |
помечаем знаком «плюс». Действие шага 3 на этом закан чивается.
Поскольку неравенство 3.1 справедливо для 2, то в первой строке шестого столбца таблицы 3.1 ставим знак
55
«минус» (7 ^ 0 + 3 ). Вторую строку для i= 1 отмечаем зна ком «плюс», так как удовлетворяется условие (3.2): 2<С0+ + 3 . Выбор одной из работ, строки которых помечены знаком «плюс», может оказаться наилучшим вариантом на данном этапе, чем ранее найденная на шаге 2 работа I с отметкой «min». Это условие проверяется на шаге 4.
Шаг 4. В шестом столбце сверху вниз последовательно просматриваем обозначенные плюсом строки работ г* и для них проверяем выполнение двух условий:
£ i+ f/+ m a x {L z*; fift+ L ?A}> L iA+ fiA+m ax{Lift; ti+Li*}; (3.3)
ТП |
|
|
|
2 f ‘ (р-0) + m i,n <Ч о - о ) l + m i n { Ч р - о > 1 < |
! * + |
||
*=1 |
k |
k |
(3.4) |
|
+m ax{LiA; fz+ L z*}. |
||
|
|
||
Левая часть |
неравенства (3.3) |
определяет общую продол |
|
жительность T(l->-ik) в предположении, что |
первой будет |
начинаться работа I, а затем работа г*. Правая часть нера венства допускает обратный порядок выполнения этих же работ.
Соблюдение условия (3.3) означает, что порядок следо вания работ г*-*-/ лучше, чем Z-W*, поскольку продолжи тельность T(l-*ik)> T {ik-+l). Следовательно, работа г* долж на начинаться первой.
Неравенство (3.4) проверяется при выполнении условия (3.3), которое устанавливает общую продолжительность Ткр с учетом работ, уже поставленных на очередь, включая ана лизируемые работы I и ik .
Если у рассматриваемой работы г* продолжительность максимального пути от момента ее начала до мажоранты — правой части неравенства (3.4) больше суммы продолжи тельностей работ, не поставленных на очередь — левой ча сти неравенства (3.4), то ее необходимо осуществлять пер вой (рис. 3.3, а). Это вытекает непосредственно из того, что ik -я работа, согласно (3.4), лежит на критическом пути. Дей ствительно, если принять во внимание общую продолжи тельность работ k с индексом р = 0, включая суммарную продолжительность их внешних работ на путях L** (левая часть неравенства (3.4)), то она будет меньше суммарной про должительности анализируемой й работы и внешних ра бот пути L*k (правая часть условия (3.4)). Другими словами,,
если поставить на очередь оставшиеся контурные работы к, то найденная к данному моменту продолжительность T(ik -W) не увеличится. Это говорит о том, что ik лежит на кри
56
тическом пути и ее необходимо выполнять в первую очередь. Заштрихованными прямоугольниками на рисунке 3.3 пока заны работы, поставленные на очередь.
Рис. 3.3.
Условие (3.4) позволяет установить принадлежность ра бот I и г* к критическому пути. Если работы г* и I располо жены на критическом пути, то, согласно (3.3), порядок i* -> -W будет предпочтительнее, и на очередь ставится работа ik, поскольку общая продолжительность проекта Т vip = T(ik~+
Это вытекает непосредственно из условия (3.4), левая часть которого представляет минимально возможное время для осуществления оставшейся части проекта. Действитель но, если неравенство (3.4) справедливо при
max{L*ft; ti-\-Li*)=Likf
57
то в правой его части величина ?гА+^Гйпоказывает, что вре мя завершения работы ikи всех работ пути L*k больше сум
марной продолжительности работ, не поставленных на оче редь (р = 0 ). Следовательно, ik лежит на критическом пути.
В другом случае, когда условие (3.4) |
выполняется при |
т а x{Llk; |
|
а правая часть его есть величина |
то работы 2* |
и I находятся на критическом пути. Действительно, соглас но (3.4), суммарная продолжительность работ с индексом р = = 0 меньше величины 2 ^ + 2z+£/*. Учитывая (3.3), работу
ik необходимо начать раньше 1 -й.
При одновременном соблюдении условий (3.3 )и (3.4) оче редной порядковый номер р присваивается рассматривае мой й работе и проставляется в 2*-й строке таблицы 3.1. Далее выполняется шаг 5. Если не удовлетворяется хоть од но из неравенств для всех строк ik таблицы, лежащих выше
I, то порядковый номер р ставится в строке I с minL* = Z+ i
В нашем случае для ik= 1 (вторая строка таблицы 3.1 поме чена знаком «плюс») справедливо неравенство (3.3):
0 + 3 + т а х {5 ; |
25+15} > 2 + 2 5 + т а х {1 5 ;3 + 5 } ; 4 3> 42 . |
|
Условие (3.4) не удовлетворяется: |
||
(^i I ^2 1 |
1^4) I -^4 I |
^i+max{i<i*j t±-\-L* ); |
(2 5 + 2 0 + 5 + 3 )+ 0 + 0 < 2 5 + m a x{1 5 ; 3+5}; 53>40.
Так как строк со знаком «плюс» в шестом столбце таблицы больше нет, то порядковый номер р = 1 будет у работы 2 = = 1— 4 и записывается во второй столбец таблицы 3.2.
Шаг 5. Для вычисления общей продолжительности про екта на каждой итерации находим две суммы: <+* и о2”* Пер вая сумма представляет отрезок времени от момента начала проекта до момента окончания работы полного контура i, которой присвоен очередной индекс р = п :
|
^ п= ^ -1 + (Х ," -1 + ^ ). |
|
(3.5) |
На первой итерации ( п = 1) 0^ = 0, с2° = 0 , |
£ г° = |
Ьцр=П) и |
|
^i1= ° i° + (А + |
1)= О+ (Li+ f *)= L 1 + f*. |
|
продол |
Вторая сумма предназначена для определения |
|||
жительности |
Ткр и вычисляется с помощью |
агп. |
Значение |
о2в после каждой очередной итерации увеличивается и, ко
58
гда станет на очередь последняя работа полного контура, будет равно
o2n=max{a2n-1; |
(3.6) |
После первой итерации имеем:
c^m axfo.*0; o11-{-Li*}=max{0; a11JrL i*\=311Jr Li*=
Для рассматриваемого примера, используя данные таб лицы 3.1, для i= l= 4 получаем две суммы:
ai1= ai°+(L4+ t 4)= 0 + (0 + 3 )= 3 ; |
|
a21= m a x {a 2°; a-i1+ L 4 }= m a x {0 ; 3 + 5 |
} = 8 . |
Шаг 6. Для работы i полного контура, которой присво ен индекс р, находим сумму £ г+ £ * . Эту величину вычита ем из всех элементов третьего столбца таблицы 3.1. Если при этом получится отрицательное число, то вместо него в тре тий столбец заносим нуль. Разность будет отрицательной,
если |
£*+£*. Это |
равносильно тому, что в течение |
|
промежутка времени |
!/*+;£* внешние работы на пути длины |
||
Lk полностью выполнены. |
Таким образом, на следу |
||
ющей итерации у контурной |
работы k уже не будет пред |
шествующих внешних работ, что означает равенство нулю длины L.
Результаты вычитания показаны в таблице 3.2.
|
|
|
|
|
Таблица 3.2 |
i |
|
Li |
ti |
L *i |
Рабочий |
Р |
столбец |
||||
2 |
|
4 |
20 |
30 |
+ |
1 |
|
0 |
25 |
15 |
min |
4 |
1 |
0 |
3 |
5 |
|
3 |
|
0 |
5 |
0 |
|
Шестым шагом заканчивается очередная итерация и действие алгоритма повторяется с шага 2. Строки, в кото рых индекс р проставлен, т. е. р~^ 1, в последующих итера циях не рассматриваются. Таким образом, за. т (т — коли чество работ полного контура) итераций устанавливается порядок следования работ заданного полного контура, т. е. определяются индексы р для всех работ.
59