
книги из ГПНТБ / Цой, С. Синтез оптимальных сетей в системе управления горными предприятиями
.pdfДля нашего примера на второй итерации верхний в столбце минимальный элемент Lt будет выбран для i = l =
= 1, а «плюсом» помечена строка i = 2 (табл. |
3.2). Посколь |
|
ку неравенства (3.3) и (3.4) выполняются, |
то |
индекс р = 2 |
присваивается работе г* = 2 . На третьей |
итерации индекс |
р = 3 запишем для работы i= |
1, а р = 4— для работы г = 3 |
|||
(табл. 3.3). |
|
|
|
|
|
|
|
|
Таблица 3.3 |
i |
|
Li |
ti |
Рабочий |
Р |
столбец |
|||
2 |
2 |
0 |
20 |
30 |
1 |
3 |
0 |
25 |
15 |
4 |
1 |
0 |
3 |
5 |
3 |
4 |
0 |
5 |
0 |
Для определения Ткр на каждой итерации по формулам (3.5) и (3.6) проводим следующие вычисления:
|
I о11= 3 ; а21= 3 + 5 = 8 |
|
|
II |
а12= 3 + 4 + 2 0 = 2 7 ; |
o22=m ax{8; |
27+30}=57 |
III |
о13= 27 + 2 5= 5 2; |
o23=max{57; |
52+15}=67 |
IV 0^ = 52+ 5= 57; o24=max{67; 57+0}=67.
Следовательно, Ткр = 67.
Окончательный вариант распределения работ полного контура во времени представлен на рисунке 3.4. Здесь обо-
Рис. 3.4.
60
значения работ полного контура и величин Lt и Lt* совпа дают с элементами рисунка 3.2. Легко проверить, что поря док выполнения работ полного контура на рисунке 3.4 яв ляется оптимальным. Любой другой вариант последователь ности дает большую длину критического пути. Например, при 2->-4->-1->-3 продолжительность Ткр = 7 0 , а при 2->4->■ ->3->1 Т кр = 7 5 .
Проведенные расчеты с помощью программы, реализу ющей изложенный метод, позволяют сделать следующие выводы.
1.Набор правил, лежащих в основе предложенного алго ритма, дает достаточно хорошее приближение к оптимуму.
2.Получаемое решение не однозначно. При одном и том же значении Ткр порядок следования работ может быть раз личным.
3.В ряде случаев величину Ткр можно улучшить за счет перемещения работ с минимальным значением индекса р при L t = 0 в конец последовательности. Это обусловлено тем, что в начальный момент первый порядковый номер р при сваивается работам, для которых Lt= 0. Если tt работ до
статочно велико (например, t£(P=i) > L A(P» 2)) , то последующие работы начнутся позже, чем это допустимо.
Описанный алгоритм упорядочения контурных работ по ложен в основу последующих методов, поэтому для кратко сти назовем его алгоритмом А.
§ 3. ПОСТРОЕНИЕ ОПТИМАЛЬНОГО СЕТЕВОГО ГРАФА
Объектом исследования в алгоритме А является граф, состоящий из одного полного контура. При решении полу чаем оптимальную последовательность выполнения всех контурных работ, при которой длина критического пути всего проекта минимальна. Однако сетевая модель сложных проектов может содержать несколько контуров, связан ных между собой какими-либо внешними работами. Тогда возникает следующая задача: установить порядок следо вания работ в каждом полном контуре таким образом, что бы длина критического пути всего проекта была минималь ной. При этом полагаем заданной продолжительность tj для каждой работы j.
Предлагаемый алгоритм синтеза оптимального сетевого графа включает действия алгоритма А и имеет специфиче ские особенности, обусловленные тем, что наличие несколь ких полных контуров в сети требует определенной последо вательности их анализа.
Существующие методы расчета сетей не позволяют про водить вычисления на графах с полными контурами. Поэто
61
му исходный граф с полными контурами необходимо преоб разовать так, чтобы вновь полученная сетевая модель преду сматривала не только соблюдение технологии в выполнении работ (на графе не должно быть контуров), но и была бы оп тимальной с точки зрения принятого критерия. Таким кри терием может быть требование минимума общей продолжи тельности осуществления всего проекта. Другими словами, критический путь искомого сетевого графа должен быть ми нимальным по отношению к другим сетевым моделям, реа лизующим рассматриваемый комплекс работ.
В настоящее время имеющимися методами нельзя ре шить поставленную задачу за один прием. Приведение се ти проекта к директивному сроку обычно осуществляется последовательным, иногда многократным улучшением пер воначального варианта (например, методом пересмотра оце нок) и выбором наилучшего варианта. При этом каждый раз приходится повторять пересчет всей сети, чтобы убе диться в том, что сделанное преобразование рационально. Поэтому одним из важных факторов оптимизации должно явиться определение оптимальной последовательности ра бот в масштабе всей сети.
Описанный метод построения оптимального сетевого гра фа основан на использовании способов изображения сети, изложенных в первом параграфе. Имеется в виду, что окон чательный вариант сети будет получен в процессе решения задачи.
Алгоритм. На графе с полными контурами (см. § 1), до пуская изменение топологии сети в процессе решения, необ ходимо найти оптимальный порядок выполнения работ при условии, что будет соблюдаться технология и минимизиро ваться критический путь.
Рассмотрим эвристический алгоритм, сущность которого состоит в следующем. В исходном графе G(X, U) все полные контуры анализируем в определенной последовательности. Работы полных контуров вытягиваем в цепочку по алгорит му А . В результате граф G(X, U) преобразуется в обычный сетевой, т. е. граф без контуров.
Считаем, что исходный граф G(X,U) построен на язы ке «работа — связь», содержит полные контуры и удовлет воряет всем условиям первого параграфа. Пусть дан сете вой граф с полными контурами (рис. 3.5). Продолжитель ность tj указана в квадратах возле соответствующих узлов. Номера узлов (работ) заданы произвольно. Рассмотрим сущность алгоритма построения оптимального сетевого гра фа по шагам.
Предварительный шаг. Упорядочение вершин исходно^
62
го графа. В заданном графе (рис. 3.5) временно вычеркива ем все дуги полных контуров. В нашем примере зачеркива ем дуги, соединяющие между собой работы 6 и 1, 8, 11 и 2. К полученному графу применяем метод нумерации вершин графа [27]. Для этого в преобразованном графе отыскиваем
вершину, куда не входят дуги. Такой вершиной будет ми норанта — начальная работа проекта с номером 5. Присво им этой вершине номер 1. Затем вычеркнем все дуги, выхо дящие из пронумерованной вершины 1. Вновь отыскиваем вершины, в которые не входят дуги. Такими вершинами яв ляются узлы 3 и 6. Дадим вершинам следующие порядко вые номера: вершине 3, например, — новый номер 2, а вер шине б — новый номер 3. Повторяем описанные действия до тех пор, пока у всех вершин графа не будут новые номе ра. Восстановив затем все вычеркнутые дуги и дуги, соеди няющие работы полных контуров, получаем граф, где все вершины (работы) имеют сквозную нумерацию, начиная с 1 (рис. 3.6). Теперь контурными стали работы 3, 4 и 7, 8, 9.
63
Граф G(X, U) будем считать исходным для последующих расчетов.
Шаг 1. Нумерация полных контуров. Пронумеровать полные контуры — это значит найти определенный порядок их анализа для дальнейшего построения сетевого графа. Для нумерации полных контуров выполняем следующие дейст
вия. В исходном графе (рис. 3.6) все работы каждого полно го контура «сжимаем» в узел, т. е. полный контур представ ляем одной объединенной работой. Такой узел назовем кон тур-вершиной. В преобразованном графе (рис. 3.7) устанав ливаем порядок для анализа полных контуров. С этой целью к графу вновь применяем метод нумерации вершин [27]. В результате все вершины графа (рис. 3.7) приобрета ют новую нумерацию, включая и контур-вершины. Новый граф изображен на рисунке 3.8.
Просматривая у вершин новые номера, выясняем, что контур-вершина (3,4) получила порядковый номер 3, контурвершина (7, 8, 9) — номер 6. Выпишем эти номера в возра
стающем порядке: 3 и 6. Номеру 3 |
приписываем число I, |
а номеру 6 — число II. Это означает, |
что полный контур, |
соответствующий контур-вершине 3 |
и состоящий из работ |
3 и 4 (рис. 3.6), при синтезе будет анализироваться первым, а полный контур, включающий работы 7, 8, 9,— вторым.
Шаг 2. Перенос временных оценок вершин на дуги. Для последней, замыкающей работы i = 11 исходного гра
64
фа G(X, U) (рис. |
3.6) вводим фиктивный узел г = |
12 |
с нуле |
выми оценками, |
который соединяем с работой i= |
1 1 |
стрел |
кой (рис. 3.9). |
|
|
|
Временные оценки t t работ i графа переносим на дуги, выходящие из узлов (работ). Исключение составляет фиктив ный узел — мажоранта i— 1 2 , нулевые оценки которой не переносятся. У всех дуг, выходящих из одного узла г, будут, таким образом, одинаковые значения £*. Полученный граф представлен на рисунке 3.9.
Все предыдущие шаги можно считать вспомогательны ми. По существу, синтез сетевого графа начинается с шага 3. Как уже отмечалось, синтез основан на использовании алго ритма А, в котором производится упорядочение работ одно го полного контура. Одним из основных параметров, влия ющих на порядок выполнения работ полного контура, бу дет величина L i , т. е. максимальная продолжительность внешних путей от миноранты го до работы г полного конту ра. Значения Ьг устанавливаем на следующем шаге. Как известно, максимальная продолжительность пути Ь-ь от ми норанты до вершины является ранним началом £?-н рабо
ты г.
Шаг 3. Определение ранних начал работ. Для графа G(X, U) (рис. 3.9) применяем известный алгоритм Л. Р. Фор да [27, 61], с помощью которого вычисляем ранние начала работ tf-H. При этом контурные связи не учитываем, т. е.
контурные связи — дуги считаем временно вычеркнутыми. Расчеты проводим по формуле
tf-H=max{fP-H-Kft}, |
(3.8) |
к |
|
5 -9 1 |
65 |
где k — номера вершин (работ), от которых непосредственно зависит выполнение рассматриваемой г-й работы;
— раннее начало k-x работ, т. е. максимальная про
должительность пути от миноранты io до k-x работ; tk — продолжительность k-x работ.
Раннее начало первой работы (миноранты) принимаем равным нулю: fP-H= 0 . Для остальных работ ранние нача
ла, вычисленные по формуле (3.8), имеют следующие зна чения :
*р-н= 0 , *р-н= 0 , *р-н= 2, Ц-«=2, £Р-Н= 4 , *р-н=13, *р-н= 6,
*р-н= 13, ^1(5Н=16, *£н=26,
Полученные ранние начала определяют величины L ис пользуемые в алгоритме А при анализе полных контуров. Возьмем полный контур I. Для работ 1= 3 и 4 этого контура
величины L3 и 1 ц, т. е. |
ранние начала |
и £|,н, найдены |
по формуле (3.8): L3 = |
О, L^= 2. |
определяем значения |
На следующем, четвертом шаге |
L *,которые в алгоритме А используются при анализе работ полных контуров. Напомним, что £г*есть продолжительность максимального пути от момента окончания контурной рабо ты г до мажоранты (конечной работы). Суммарная продол жительность работ, лежащих на этом пути, составляет Li*. Поскольку мы рассматриваем путь максимальной продол жительности после i-й работы, то в значение Lt* не должна входить ее временная оценка t-t .
Далее заметим, что контурная работа г и работа k, в ко торую входит дуга (г, k) из г-й вершины, могут принадлежать к различным путям, оканчивающимся в вершине k. Если продолжительность этих путей неодинакова по величине, то, как известно, работа г обладает частным резервом времени Дti первого рода. Отрезок времени Д£г есть величина от мо мента окончания работы г до момента начала k-й работы.
На рисунке 3.9 работы г = 4 и k = 7 лежат на разных путях. Через работу k = 7 проходит путь от вершин 5, 6 и 4. Если продолжительность путей, оканчивающихся в вершине 7, различна, то работы г = 4, 5, 6 будут иметь различные ре зервы АЦ относительно работы k = 7. Резерв можно вычис лить по формуле
Д * г = * Г -(ф н+**)‘ |
(3.9) |
Эта величина определит момент ожидания, который пред шествует началу работы k = 7 после окончания г-й работы.
66
Для работы i = 4, например, резерв времени будет равен
At4 = 13— (2—[—8) = 3.
Величина At4 = 3 означает, что после окончания работы i = 4 в течение трех дней работа k = 7 будет ожидать своего начала, так как шестая работа, через которую проходит максимальный путь, будет выполнена за 13 дней.
Таким образом, продолжительность L** максимального пути от i-й работы до мажоранты на графе G(X, U) (рис. 3.9) включает не только временные оценки работ, лежащих на пути Ц*, но и дополнительно величину Att. Действительно, для работы г = 4 максимальный путь Ы состоит не только из суммарной продолжительности работ внешнего пути 1 4 , но и отрезка времени At4 = 3 .
Перейдем к четвертому шагу.
Шаг 4. Определение длины максимального пути L * от i-й вершины полного контура до мажоранты. Анализируем вершины k полного контура 7=1, в которые входят дуги
из L В нашем случае для вершины 3 |
fe = |
6, а для вершины |
|
4 k = 7. Вершины k не принадлежат |
к |
рассматриваемому |
|
контуру 7=1. |
|
|
|
Значение Li вычисляем по формуле |
|
||
L* = тах{тах [(7 Л |
—tj); |
(L%+£*)]}> (3.10) |
|
k |
|
|
|
где L% — максимальная длина пути от k-й вершины до ма жоранты, не включая продолжительность k-й работы;
tk— продолжительность работы k ;
Ati— резерв времени для работы г, определяемый по формуле (3.9);
ti — продолжительность работы ц полного контура 7, от которой зависит раннее начало k-й работы (i* Ф
фт).
Поясним формулу (3.10) на условном примере (рис. 3.10).
Пусть на |
графе полный контур |
состоит из двух вершин |
i = 3 и 4. |
Временные оценки работ |
проставлены в прямо |
угольниках. Выберем такой порядок выполнения работ 3 и 4, чтобы продолжительность критического пути от мино ранты г'0 до мажоранты iM была минимальной. Чтобы ис пользовать алгоритм А, рассчитаем для работ полного контура (рис. 3.10, а) значения Lt и L*i . По формуле (3.8) най
дем ранние |
начала Ц-* , т. е. |
Lt : L2= L 3= L 4= |
0, L&= |
= fP-H-{-£4= |
8, L7=t|*H +^ 2= 2 |
0 . Контурные связи |
работ |
г = 3 и 4 при этом не учитываем.
Перейдем к вычислению L\. Из вершины г = 3 дуга вхо дит в k = 7 , вершина i = 4 связана дугой с k = 6 . После окон чания работы i = 3 работа k = 7 не может начинаться ера*
67
зу, так как не закончена работа i= 2 (максимальный путь до fe-й вершины проходит через вершину 2). Поэтому макси мальное время для всех работ, следуемых после i-й работы,
ш
будет включать еще время ожидания, т. е. резерв времени Д?з, определяемый по формуле (3.9):
д?з= ?р.я_ (^ р.н+ ? з)==2 0 -(0 -| -4 )= 1 6 ,
д^ = ?р.н_ ( ?р.н+ ^ ) = 8 - (0 4 - 8 )= 0 .
Таким образом,
L3* = L 7* + t7+A£3= 0 - f 30-{-16=46,
L 4* = L 0* -}-1в - } - Л14 = 0 - }30- - j -0= 30.
Применяя алгоритм А для полного контура, состоящего из работ г = 3 и 4 (рис. 3.10, б), получим
T(4->3)=L 4-f? 4-fm ax{L4*; |
Z 3* + t 3}= 0 + 8 + |
-rmax{30; 46-J-4}=58, |
|
T (3 ->4)=Z 3+ ? 3-fm ax{L3*; |
L4*4-?4}= 0 - 4 ^ - |
-fmax{46; 30-f-8}=50.
Следовательно, общая продолжительность Т(3->-4) = 50 бу
63
дет соответствовать наилучшему порядку (3->-4) следования работ г = 3 и 4; при этом Т кр = 5 0 .
Как видно из рисунка 3.10, а, |
раннее |
начало |
работы |
|||
fe = 6 не зависит от i = 3, а раннее начало работы k = |
7 — от |
|||||
i = 4. |
|
|
|
|
|
|
Разберем другой случай (рис. 3.10, в, г) с подобной зави |
||||||
симостью. Пусть k-я работа (k = 7 ), в которую входит |
дута |
|||||
из контурной |
работы г = 4, зависит |
от выполнения |
другой |
|||
работы i этого |
же полного контура, |
например ik= |
3. |
Про |
||
ведя аналогичные вычисления, получим |
|
|
|
|||
*p-h= L 3= 0 , |
*p-h= Z ,4= 0 , L6= 4, |
Lr=13, |
At.=0, Af4= 5 , |
L3*= Z,6* + t 6+ A f3= 3 0 + 9 + 0 = 3 9 ,
Z,4* = L 7* + t7+ A t4= 0 + 3 0 + 5 = 3 5 .
Используя затем алгоритм А, имеем
T (4 -*3)=L 4+ f 4+m ax{L4*; L3* |
+ ?3}=0+8+m ax{35:; |
39+4}=51, |
|
T(3->4)=L3+ £ 3+m ax{L 3*; L4*+if4}=0 -f4+m ax{39; |
|
35+8}=47. |
|
Как видно из расчетов, минимальная продолжительность завершения всех работ равна 47. При этом порядок следо вания работ полного контура будет 3-^-4.
С помощью визуального просмотра графа (рис. 3.10, в) убеждаемся в том, что критический путь на графе для вы бранного порядка 3->-4, т. е. путь io—^3—^6—^7, имеет продол
жительность Ткр = 43, что на четыре единицы |
меньше Т |
|
(3—>-4) = 47. Это объясняется тем, |
что общая продолжитель |
|
ность найденного пути T(3->4) = |
L3+ £ 3-f £4- г .7,4 = |
47 вклю |
чает в качестве слагаемого значение Ы , которое определяет ся как L*4 = 1,7 -j-£7+A£4, где А£4 = —Z/P-h+ ? 4. В свою
очередь, 1,р-н есть продолжительность максимального пути
от i0 до k = 7. Этот путь проходит через вершины io, 3 и 6 и длина его равна ti0+ £ 3+£б = 0+ 4 + 9 = 1 3 . Таким образом, резерв времени А£4 для i= 4 зависит от продолжительности работы i = 3 и входит как слагаемое в L I .
Учитывая сказанное, необходимо при вычислении вели чин Li в формуле (3.10) сделать поправку на значение t j , которое является продолжительностью контурной работы iki отличной от рассматриваемой i (в нашем случае i = 4,
69