Научная статья на тему 'Оптимизация плана распределения работ в системе СПУ с ограниченными ресурсами'

Оптимизация плана распределения работ в системе СПУ с ограниченными ресурсами Текст научной статьи по специальности «Математика»

CC BY
79
13
i Надоели баннеры? Вы всегда можете отключить рекламу.
i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Оптимизация плана распределения работ в системе СПУ с ограниченными ресурсами»

ИЗВЕСТИЯ

ТОМСКОГО ОРДЕНА ОКТЯБРЬСКОЙ РЕВОЛЮЦИИ И ОРДЕНА ТРУДОВОГО КРАСНОГО ЗНАМЕНИ ПОЛИТЕХНИЧЕСКОГО ИНСТИТУТА имени С. М. КИРОВА

Том 187 1974

ОПТИМИЗАЦИЯ ПЛАНА РАСПРЕДЕЛЕНИЯ РАБОТ В СИСТЕМЕ СПУ С ОГРАНИЧЕННЫМИ РЕСУРСАМИ

Ю. Н. ЕФИМОВ

(Представлена научным семинаром вычислительной лаборатории)

При создании уникальных образцов новой техники, больших систем и сложных комплексов наиболее удобным инструментом планирования и управления является метод, основанный на анализе сетевых графиков [1]. Сетевые методы планирования и управления (СПУ) позволяют выявить «узкие» места в проекте еще на стадии планирования. На втором этапе — этапе управления — система СПУ помогает сконцентрировать внимание руководителей на «критических» работах, отсрочка в выполнении которых влечет за собой соответствующий сдвиг даты окончания всего комплекса. Используя быстродействующие электронные вычислительные машины (ЭВМ), система СПУ становится оперативной системой управления, быстро реагирующей на всякое изменение первоначально принятых параметров (графической модели и временных характеристик работ).

В настоящее время разработаны алгоритмы временного [2,-3] и логического [4] анализа сетевых графиков, накоплен некоторый опыт применения систем СПУ в промышленности и строительстве. Однако при анализе сетевых графиков обычно не учитывают имеющиеся в наличии ресурсы (рабочая сила, оборудование и т.д.), то есть ресурсы считаются неограниченными. Но так как практически ресурсы всегда ограничены, то такой анализ приводит к занижению общего расчетного времени выполнения всех работ комплекса (¿кр) и дает неправильные даты выполнения отдельных работ. В литературе имеются попытки учета ресурсных ограничений за счет включения в понятие критического пути критичности не только по времени, но и по ресурсам [5]. Практически ограниченные ресурсы учитываются еще при составлении сетевых графиков самой топологией сети (распараллеливание работ, введение фиктивных работ и т. д.). Естественно, что такой учет производится далеко не наилучшим способом. Таким образом, возникает задача оптимального распределения ресурсов по работам, т. е. составления такого расписания работ с учетом их технологических связей, которое при заданных ограниченных ресурсах обеспечивало бы выполнение проекта в минимальное время. Часто представляет интерес решение обратной задачи,то есть нахождение оптимального потребного ресурса для выполнения проекта в заданный срок. До настоящего времени не найдено полного решения этих задач, однако разрабатываются эвристические алгоритмы [6], приводящие к достаточно хорошим,

практически удовлетворительным решениям. Опишем один из таких алгоритмов для решения обратной задачи, а также программу, реализующую алгоритм на ЭВМ «Минск-1».

Пусть сетевой график без контуров С = (I, и) задан множеством работ (¿7), их длин I у и интенсивностей потребления ресурса на каждой работе V) • Будем считать, что все работы потреб-

ляют ресурс одного вида, например рабочую силу. Причем, интенсивность потребления ресурса на каждой работе остается постоянной на все время выполнения работы, т.е. . Пусть график движе-

ния рабочей силы (график загрузки оборудования) представляет собой ступенчатую функцию & (/), имеющую хотя бы один максимум в промежутке времени (о, £кр). Задача состоит в таком размещении работ, чтобы величина шах была минимальной. Другими словами,

*е(о,'кр)

требуется определить минимальное количество рабочих (машин), необходимых для выполнения всего комплекса работ не позже /кр ; где ¿кр —величина, рассчитанная без учета ресурсных ограничений.

Оптимальное размещение работ в пределах времени (о, ¿кр ) может быть достигнуто за счет задержки времени начала некоторых работ, не лежащих на критическом пути. Такие работы, называемые «некритическими», обладают некоторым резервом времени для своего выполнения. Как известно [7], можно выделить четыре рода резервов некритических работ: полный, свободный и два вида частных. Полный резерв времени РЛ(Ц) работы — это максимально возможное время отдаления окончания данной работы за счет задержки ее начала, при котором срок завершающего события комплекса операций не отдаляется, т.е. продолжительность критического пути не увеличивается.

где

¿п(/) — наиболее поздний из допустимых сроков свершения конечного события (/') работы (¿/),

¿р(г)—наиболее ранний из возможных сроков свершения начального события (¿) работы (¿¡)>

1ц —продолжительность (длина) работы (¿/). Полный резерв времени работы (г'/) является резервом времени максимального из путей, проходящих через эту работу. Использование части полного резерва времени работы для задержки начала ее выполнения изменяет полные резервы времени всех последующих за ней работ и требует их пересчета. Кроме того, может случиться, что весь резерв времени будет израсходован на начальных работах, а конечные работы уже не будут иметь возможности быть задержанными, что значительно ухудшает план распределения. Следовательно, использование Рп(Ч) Для оптимизации размещения работ при заданном времени выполнения проекта (7кр ) связано с вычислительными трудностями и не всегда приводит к удовлетворительным результатам. Для целей оптимизации желательно использовать такие резервы времени, расходование которых на начальных работах никак не отражается на величине резервов последующих работ. Таким резервом может явиться свободный резерв времени работы — максимальное время, на которое можно задержать начало выполнения работы без изменения сроков свершения ее начального (¿) и конечного (/) событий.

Однако, как показал опыт расчетов, подавляющее большинство работ реальных сетевых графиков имеют Р (i/) =0. Сдвиги начала работ только в пределах их Рс дают в большинстве случаев незначительное уменьшение величины тахЯ(^) . Поэтому нам представляется целесо-

*е(<МкР)

образным использовать для оптимизации размещения работ при заданном времени выполнения проекта частный резерв второго вида. Частный резерв второго вида [Рп (ij) ] образуется у работ, непосредственно предшествующих событию, ib котором пересекаются пути разной длины. Этот резерв показывает, какая часть полного резерва времени работы может быть использована для сдвига начала этой и предшествующей ей работ, принадлежащих отрезку пути, лежащему между двумя ближайшими точками его пересечения с путями большей длины, при условии, что этот сдвиг не вызовет сокращения резерва ни у одной из последующих работ.

Pn'{ii)=m-m-tu=pn{ii)-p{i), (1)

P(j) — резерв времени события /, определяемый по формуле

p[i)=W)-hU)

Как видно из (1), использование PyI' (ij) изменяет только величины Рп (ij) у предшествующих работ, величины же Р п" (ij) всех работ не изменяются, поэтому не требуется пересчета резервов времени.

Исходная информация о каждой работе, видимо, должна включать в себя:

1) ¿рн — время раннего начала работы,

2) Рп" —резерв времени,

3) N —обозначение работы (двухиндексное или одноиндексное),

4) tij — продолжительность работы,

5) и ij — интенсивность потребления ресурса.

Следовательно, исходная информация представляет собой матрицу M размерами (пХ5), где п— число работ. Тогда решаемую задачу оптимизации можно сформулировать следующим образом.

Увеличивая fPHнекоторых работ (ij)^U на величину найти план размещения работ во времени (о,/кр ), минимизирующий

шах R(t). Очевидно, что искомый minmax R(t)^>Rc$ > где Rcp= -

е (о,*Кр) кр

среднее количество ресурса, потребляемое в единицу времени. Рассмотрим следующие подмножества множества U.

A(t) = {(ij)£UltPH(ij) = t), (2)

C(t) = {(ij)£U/U'7)+iiy=i}, (3)

B(t) = {ij)£UltpMi)<t<tpH(4)+tcj}- (4)

Эти подмножества можно рассматривать как одноместные функции независимого переменного t (времени). Из (2—4) следует, что A(t) включает в себя работы, начинающиеся в момент времени t, C(t)—работы, оканчивающиеся ib момент t, B(t)—работы, начатые ранее и продолжающиеся в момент времени t. Назовем фронтом работ F(t) подмножество работ, выполняющих в момент времени t.

F(t) = miUltvÂii)+tiP>t}. (5)

Очевидно, что F (t) = A(t)VB (t). При / = О 6(0) =0; F(0) = Л(0). При

* = B(tKp)=0; A(¿KP) = 0; F{tKp)=0.

Функцию можно определить как сумму интенсивностей потребляемых ресурсов всех работ фронта F(t).

Ritmar (6)

(ii)em

Поэтому для нахождения R(t) достаточно сформировать фронт работ для каждого t в интервале (0,íKp) и просуммировать v.у работ, принадлежащих F(t). Тогда алгоритм минимизации сводится к следующему.

1. Находится функция Ro(t) и значение maxR0(t)J т. е. строится график движения рабочей силы без оптимизации.

Пусть для какого-ю ьре&сп i уже сформирован фронт работ F(tK), тогда функция RQ(t строится следующим образом:

а) Суммируется интенсивности потребления ресурса на этих работах и находится точка R0{tK).

(ФВПЫ)

б) Сравниваются величины R(tK) и шах R0(tK), большая из них принимается за max R0(tK).

в). Длительности всех работ F(tк) уменьшаются на единицу.

г) Из работ, длительность которых становится равной нулю, формируется подмножество, C(¿K+1), из остальных — подмножество B(tK+i).

B(tK+l)=F(tK)/C[tK+1).

д) Из множества работ U выбираются работы, начинающиеся в момент времени ¿K+i , и формируется подмножество A(tK V\).

е) Находится новый фронт работ F[tK+\).

F(tK+l)=A(tK+i)U B(tK.{l).

ж) При t < t кр перейти к а), при t=tKP функция Ro(t) построена и найдено значение max R0(t).

2. Делается попытка построить функцию R\(t), задав предел шах R\(¿) s^max Ro(t) — 1.

Пусть для какого-то времени tK уже сформирован фронт работ F (tK), тогда построение Ri(t) осуществляется следующим образом:

а) Работы фронта упорядочиваются по возрастанию величины Л/' [Ц) (т. е. приоритет получают работы с меньшим резервом времени) .

б) Находится R (tK) v¿;» причем суммирование производится до

тех пор, пока получаемая сумма не превзойдет величину [max Ro(t)— 1]. Работа, интенсивность потребления ресурса которой делает сумму больше величины [max R0(t) — 1 ] , сдвигается вправо, т.е. исключается из F (tK) и переносится в F(tK+i) . При этом время ее начала увеличивается, а резерв времени уменьшается на единицу. Однако сдвиг вправо возможен лишь в случае, если резерв сдвигаемой работы боль-

me нуля. В противном случае дальнейшее улучшение плана невозможно и следует перейти к 3. После сдвига работы продолжается суммирование интенсивностей потребления ресурса остальных работ фронта.

в) Из длительностей всех несдвинутых работ фронта вычитается по единице и всем этим работам присваивается значение Л,и = 0 » так как считается, что работы не допускают перерыва.

г) Остальные шаги построения R\(t) аналогичны построению Ro(t)... После построения R\ (t) делается попытка построения R2 (t) с учетом ограничения

max R2(t)^maxRi{t)—l

и т.д., пока после построения Rn(t) дальнейшее улучшение плана невозможно.

3. Находится коэффициент улучшения

__ шах Ru(t)

у 7| «

max/?0(f)

Этот коэффициент дает количественную характеристику степени улучшения первоначального плана распределения работ. Очевидно, что

/Сул<1.

Ниже приводится формальное описание алгоритма в терминах языка АЛГОЛ-60 [8].

begin integer г, Ct 1, CtF, n, no, шах S, max 1 S; procedure пересылка (u, d, A, B); integer u, d; integer array A, B;

begin integer j; for j: = 1 step 1 until 5 do B[d, j]:=A[u, j) end; ввод (n, no); 0; max S: = 0;

begin integer AH, f; integer array N [no: no+n, 1:5]; ввод (N);

LI : Ctl: = 0; CtF: = l; AH :=no; f: = 0; L2: begin integer i, Ct4; integer array F [l:CtF, 1:5]; Ct4:—0; fori:-l step 1 whil Ct4 = CtF do begin go to if F [i, 3] >0 then M2 else Ml Ml:CtF: = CtF—1; if F[CtF, 3] >0 then пересылка (CtF, i, F, F) else go to Ml; M2:Ct4: —Ct4+1 end end;

go to if f=0 then формирование F else if CtF>0 then L3 else L5; формирование F: begin integer i;

for i:= A „ step 1 while N[i, l]>Ctl V A „ >no+n do if N[i, 3] >0 then begin CtF: = CtF+l; пересылка (i, CtF, N, F) end; AH :=AH + 1;

if А н =no+n then f:=f+l end; 1.3: begin integer i, ro; integer array F [1; CtF, 1:5], r[l:5];

if CtF=l then begin CtF:=CtF+l; печать <0>; go to L4 end;

Ml: го: = 0; for i:=l step 1 until CtF-1 do begin if F[l,2]>F[i+l, 2] then begin

пересылка (i, 1, F, г); пересылка (i+1, i, F, F); пересылка (¿, i + 1, r, F); ro: —ro+1 end end;

go to if ro>0 then Ml else M2; M2: end; begin integer S, i; S:~0; i: = 0;

MO: i: = i+l; ifi>CtF then go to M4;

if F[i, 5] =0 then go to M3; S:=S + F[i, 5]; if Ss^max S then go to M2 else if r=0 then go to Ml; S: = S-F[i, 5]; if F[i, 2j>0 then begin F[i, 2]:=F[i, 2] — 1; F[i, 1]: = F[i, 1] + 1; go to MO end else go to L8; Ml: max S: = S;

M2: F[i, 2] :=0; F[i, 4] : =F[i, 4] — 1;

go to if F[i, 4] =0 then M3 else MO; M3: F[i, 3]: = 0—F[i, 3]; печать (F[i, 3], F[ i, 1]);

go to MO; M4: end; печать (S); L5: интервал; go to if r=0 then L6 else L7; L6: max 1S: = max S; L7: max S:=max S—1; go to LI end;

L8: begin real Кул ; К ул : —max S/max IS; печать (Кул ) end;

Описанный алгоритм был апробирован на ЭЦВМ «Минск-1». Исходная информация об одной работе записывалась в одну ячейку оперативной памяти машины в виде

(m) tn Р N t и, (7)

где

т — номер ячейки памяти, N •—одноиндексный номер работы. Программа занимает 233 «8» ячейки оперативной памяти машины и может оптимизировать сетевые графики, содержащие до 770 работ. Причем. информация о работах может задаваться с пропусками, тогда в пропущенной ячейке должно стоять стандартное слово — нули во всех разрядах.

Программа выдает на печать по желанию оператора:

1) функцию Ro (t),

2) функцию Rn(t) и /СуЛ,

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

3) все промежуточные функции RK(t).

При этом во всех трех случаях может быть отпечатано время начала для каждой работы или только для сдвинутых работ. Программа позволяет улучшать план распределения работ крупных сетевых графиков многотемных разработок, потребляющих несколько видов ресурсов. Для этого из всех работ рассчитанного по времени сетевого графика выбираются работы, потребляющие только один вид ресурса. Эти работы представляют исходную информацию о каком-то подграфе G\dG(I} U), к которому применяется описанный алгоритм. Аналогичные расчеты надо применить для каждого вида ресурсов. Производить оптимизацию следует после полного временного анализа сетевого графика, ибо тогда достаточно просто программным путем сформировать исходную информацию в форме (7).

ЛИТЕРАТУРА

1. Г. С. Поспелов, А. И. Т е й м а н. Автоматизация процессов управления разработками больших систем или сложных комплексов. Изв. АН СССР, сер. техническая кибернетика, № 4, 1963.

2. Г. М. А д е л ь со н-В е л ь с к и й, Ф. М. Филлер. Программа вычисления сетевых графиков. Ж- вычисл. мат. и мат. физики, том 5, №, 1, 1965.

3. А., Г. П е т р о в а, Н. Н. К а р н а у х о в а. Об одном алгоритме нахождения критического пути сетевого графика. Сб. «Вычислительные системы», вып. 11, Новосибирск, изд-во ИМ СО АН СССР, 1964.

4. Л. Я. Л е й ф м а н, А. Т. Петрова. Некоторые алгоритмы для анализа ориентировочных графов. Сб. «Вычислительные системы», вып. 11, Новосибирск, изд-во ИМ СО АН СССР, 1964.

5. I. D. Wiest. Operations Research, 12, 1964.

6. С. И. Зуховицкий, И. А. Радчик. Математические методы сетевого пла* нирования, М., 1965.

7. Основные! положения по разработке и применению СПУ. М., «Экономика», 1965.

8. М. И. Агеев. Основы алгоритмического языка АЛГОЛ-бО. ВЦ АН СССР, М., 1965. ' .

i Надоели баннеры? Вы всегда можете отключить рекламу.