Научная статья на тему 'Алгоритм решения задачи календарного планирования со складируемыми руссурсами и директивными сроками выполнения работ'

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

CC BY
1031
94
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ЗАДАЧА КАЛЕНДАРНОГО ПЛАНИРОВАНИЯ (ЗКП) / МИНИМАЛЬНЫЕ СРОКИ ВЫПОЛНЕНИЯ ПРОЕКТА / ПЛОСКИЙ ГРАФ РЕДУКЦИИ ЧАСТИЧНОГО ПОРЯДКА

Аннотация научной статьи по математике, автор научной работы — Возный Максим Владимирович

В предложенной статье рассматривается алгоритм решения задачи календарного планирования при отсутствии ограничений на ресурсы возобновляемого типа. Также представлен алгоритм проверки допустимости расписания в задаче календарного планирования и найдена оценка времени построения расписания.

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

Похожие темы научных работ по математике , автор научной работы — Возный Максим Владимирович

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

ALGORITHM OF THE DECISION OF THE TASK OF SCHEDULING WITH WAREHOUSED RESOURCES AND DIRECTIVE TERMS OF PERFORMANCE OF WORKS

In offered article the algorithm of the decision of a task of scheduling is considered at absence of restrictions on resources of renewed type. Also the algorithm of check of an admissibility of the schedule in a task of scheduling is submitted. Also the estimation of time of construction of the schedule is found.

Текст научной работы на тему «Алгоритм решения задачи календарного планирования со складируемыми руссурсами и директивными сроками выполнения работ»

удк 658.512.6:519.86

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

М.В. Возный

В предложенной статье рассматривается алгоритм решения задачи календарного планирования при отсутствии ограничений на ресурсы возобновляемого типа. Также представлен алгоритм проверки допустимости расписания в задаче календарного планирования и найдена оценка времени построения расписания.

В классической задаче календарного планирования (ЗКП) с ограниченными ресурсами необходимо найти расписание выполнения работ с минимальными сроками выполнения проекта. При этом должны быть учтены технологические ограничения предшествования, директивные сроки и ограничения на ресурсы. Прерывания работ не допускаются.

В данной работе рассмотрены некоторые методы решения дискретной ЗКП, в которой все работы имеют целочисленные длительности, а все функции, определяющие ресурсные ограничения, являются кусочно-постоянными, причем все интервалы их постоянства целые.

Рассмотрим полиномиальный алгоритм решения этой задачи в частном случае, когда отсутствует ограничение на ресурс возобновляемого типа.

Постановка задачи для дискретной ЗКП

Рассмотрим проект, состоящий из множества работ 3 = {1,..., л}. На множестве работ задан частичный порядок, обусловленный технологией реализации проекта. Предполагаем, что этот порядок задан орграфом где V = =1,...,и}- множество вершин, соот-

ветствующих работам уе Л С/ - множество дуг графа, причем дуга (у,.,уу) входит в 13 тогда и только тогда, когда работа / непосредственно предшествует работе ; . Предполагается что

С не содержит контуров.

Необходимо различать три типа ресурсов в зависимости от типа создаваемых ими ограничений: невозобновляемые, возобновляемые и складируемые. Множества видов ресурсов каждого типа будем обозначать соответственно через К\КР,К°.

Так как работа «потребление невозобновляемых ресурсов» не зависит от расписания 5 , можно считать, что задача не содержит накладываемых ими ограничений.

Для каждого возобновляемого ресурса к е К* суммарное по всем работам, выполняемым в интервале [0,т), потребление ресурса к не может превосходить суммарного количества ресурса íqk{t')>0, выделенного к моменту I, где дк (0 - количество ресурса к , выделяемого

в интервале [У -1,0 •

Для некоторых у е Зй11 с 3 задан директивный срок й} е завершения работы у

Под допустимым расписанием 5 понимается такое назначение для каждой работы ; е 3 неотрицательного целочисленного момента начала ее выполнения, что, во-первых, выполняются описанные выше ограничения; во-вторых, выполняются ограничения, обусловленные

отношением предшествования: для любых работ г и j таких, что выполняется со-

отношение s, + Р, < Sj; в-третьих, соблюдаются директивные сроки Sj+p,<d, для всякой работы / е JdlI.. Прерывания работ не разрешаются. Задача заключается в нахождении допустимого расписания с минимальным временем завершения проекта Стах

(S)-

Для каждой работы j будем считать известным множество ?red(j) ее непосредственных предшественников, т.е. считаем, что граф G задан набором списков дуг, входящих в каждую вершину v,€K. / = Через Succ(y) = {/ е J | j е Pred(/)} будем обозначать

множество непосредственных последователей работы j е J. Определим также множества работ Jmra ={jeJ | Pred(y) = 0} и Jmax ={jeJ\ Succ(y) = 0}.

Формально рассматриваемая задача может быть записана следующим образом: минимизировать время завершения проекта

= + <1)

J&J

при условиях

■v -rp <d . / е jdir; (2)

,v. -г /; < .v i е Pred(y), ; е ./ ; (3)

X r!k(t-~s;)<qk(t), keK\tGT\{0}; (4)

/'=1 ,/e/(i') i'=l

где ./(i) = {y - множество работ, выполняемых в единичном интервале

[Г-1,0 при расписании S ; = {0,1, 2,...}.

Множество ограничений (2) гарантирует соблюдение директивных сроков. Неравенство (3) соответствует ограничениям предшествования. Соотношения (4), (5) обеспечивают соблюдение ограничений по возобновляемым, складируемым ресурсам соответственно. Условия (6) отражают требования на переменные sr

Нетрудно заметить, что ресурсные ограничения (4), (5) расположены в порядке убывания их «строгости». Ограничение (4) является наиболее сильным в том смысле, что если расписание допустимо относительно некоторого возобновляемого ресурса, то оно остается допустимым, если перевести этот ресурс в разряд складируемых.

По классификации, предложенной в [1], сформулированная задача обозначается как

PS |prec| Стах. Поскольку эта задача является обобщением известной задачи job-shop scheduling, она принадлежит к классу NP -трудных задач [2]. Вместе с тем, как будет показано далее, при отсутствии ограничений на возобновляемые ресурсы нахождение точного решения сформулированной задачи возможно за полиномиальное время.

Доклады ТУСУРа. 2003 г. Автоматизированные системы обработки информации, управления и проектирования Задача Р510 и формулировка основного результата

Далее будем рассматривать задачу (1)-(6), не содержащую ограничений (4) на возобновляемые ресурсы. Поскольку в формулировке основного результата участвует оценка временной сложности алгоритма, необходимо уточнить, в каком виде предполагаются представленными

исходные данные задачи Р8°.

Директивные сроки работ предполагаем заданными в виде списка УШг работ, для которых

назначены директивные сроки. Ограничения предшествования на множестве работ заданы в

виде семейства списков {Ргес1(у)'|е У} работ, непосредственно предшествующих работе

7 е У. Функции г;Дг), предполагаем неотрицательными кусочно-постоянными с произ-

вольными целыми длинами интервалов постоянства. Будем предполагать, что для V/ е 3 и УкеКа задана последовательность пар (г'к,р'к), / = 1,т)к - значение функции г1к{1) в /-м интервале постоянства, а р\к - длина этого интервала. Аналогично каждую функцию гД/), кеКс, предполагаем заданной последовательностью пар / =

где д'к - значение функции в г -м интервале ее постоянства, а р'к - длина этого интервала.

Для нахождения оптимального расписания достаточно определить минимально возможное значение Т , при котором соответствующее Т-позднее расписание существует и допустимо

по ограничениям. В этом случае минимально возможное Т совпадает с величиной Сор, [1].

Теорема 1. Решение задачи может быть получено с временной сложностью

+ + " + ГД6 /-шиРиначастичного порядка, м-чис-

ло дуг в графе редукции частичного порядка, К - число видов ресурсов, ^-множество работ с директивными сроками, число различных директивных сроков, М'- суммарное по всем работам и всем ресурсам число интервалов постоянства функции интенсивности потребления ресурсов, ¿-длина двоичной записи наибольшего директивного срока [1].

Проверка алгоритма решения задачи на основе Т -поздних расписаний Далее К будет означать число видов ресурсов складируемого типа: К = \Ка\. Определим функцию а (0 " суммарное количество ресурса к еК°, выделяемого в интервале [0;0

После предварительного вычисления (за время О(Щ)) значения функции & (?) в «узловых»

точках =р' +... + Р'*, где / пробегает значения 1,М'к> значения в промежуточных можно

вычислять за константное время.

Необходимо исключить из дальнейшего рассмотрения два тривиальных случая, когда задача не имеет решения. Это, во-первых, случай, когда наиболее раннее расписание (длины Тц) не является полудопустимым (т.е. не удовлетворяет директивным срокам) и ни для

какого Т >Т не существует расписания длины Т. Во-вторых, это случай, когда хотя бы для

АНОДНОГО вида к е\кв| суммарный объем ресурсов Rkl = ' тРебУемых для вь,полне-

jeJ /=I

ния работ проекта, строго превышает суммарный объем выделяемых ресурсов.

Исключение из рассмотрения первого случая означает, что для любого Т^>Т существует Т -позднее расписание длины ST.

Исключение второго случая означает существование конечного момента времени

Т = max min {Г е Т | Rk у < Qk (Г)}, который является еще одной тривиальной нижней оцен-

^ кеКа

кой длины Сор( оптимального расписания. Поэтому далее в качестве нижней оценки длины оптимального расписания будем использовать величину Т - max jTKV\T^ .

Легко видеть, что проверка полудопустимости раннего расписания осуществляется за время О (и), а вычисления параметра Ту - за время 0(Аг + Аг').

Введем еще несколько обозначений, используемых для обоснования алгоритма решения задачи PS0. Для Т>Т' определим функцию Rk (г) как суммарное количество ресурса к,

потребляемое работами проекта в интервале [0;г) при расписании S1 . Определим следующие величины: - минимальное целое значение / , для которого Т -позднему расписанию не хватает ресурсов в интервале [0;г): /п'пп = minji; Qk (/) < R; (f);l < t < T;k e Kö}, при этом

полагаем = T +1, если множество таких t пусто; А (Г) - минимальное целое значение, на которое нужно увеличить моменты начала всех работ в Т -позднем расписании, чтобы выполнились все ограничения (кроме, может быть, ограничения на директивные сроки): Д(Г) =

Очевидно, что Д(Г) = тш{д б Z+ | R'k (г) < Qk (t + A);t = l,...,T\t < е ; Rk(t)< <R]k(T1)<Qk(T1)<Qk(t + T1) для любых ¿ = 1,...,^; k e Ka, имеем неравенство Д(Г)<Г1(

влекущее конечность Д(Г) при конечном 7V.

Непосредственно из определения параметров и Д(Г) следует, что //шп > Т тогда и только тогда, когда Д(Г) = 0, откуда вытекает используемый далее критерий проверки допустимости расписания S1 .

Утверждение 1. Т-позднее расписание S7 допустимо тогда и только тогда, когда Д(У) = 0.

Все работы из множества J разделим на две категории. Первая категория - это множество J' «директивно зависимых» работ, в которое входят как работы из Jdir, так и все предшествующие им работы. Вторая категория состоит из множества J" «свободных» работ с потенциально неограниченным сроком их начала в Т -позднем расписании.

Обозначим Г = /)-нГго, где В - наибольший директивный срок; гт1П=^ш; А' = - тт] А е 1 К[ (г) < й (Г + А); г = 1,..., Д* еГ}; А" = Д (Г). Очевидно, А' < А". В качестве нижней оценки для Сор( взята величина Г = {Г^}. Центральное место в обосновании предлагаемого ниже алгоритма решения задачи Р8а занимает следующая теорема.

Теорема 2. В зависимости от параметров А' и А" решение задачи разбивается на три качественно различных случая.

При А' > 0 задача не имеет решения.

При А' = 0 и А" > 0 расписание 5ор1 = {$, | е з] может быть получено из Г"-позднего расписания увеличением моментов начала всех работ из множества У на величину А":

г

если у е Г, (?)

При этом длина оптимального расписания Сор, - Т" + А".

При А" = 0 оптимальное расписание 5ор, имеет длину Сор1 ={Г',...,Г"} и может быть найдено за о(/>) итераций, на каждой из которых осуществляется вычисление Г-позднего расписания для некоторого Г = {Г....,Г} и проверка допустимости. Доказательство приведено в [1].

Процедура Р0

1. Считая известными параметры Г, Г и Г"-позднее расписание положить т т> и т т" в качестве нижней и верхней границ интервала неопределенности для

ниж • верх •

Т

значения Сор1. При этом известно, что расписание 5 крх допустимо.

2. Положить Т := (Тшж + Гверх) / .

3. Если Т := Гверх, то получено оптимальное расписание £ор1 = с длиной Сор, = Твгрх.

Стоп.

4. Если Т < Гве , то построить Т -позднее расписание .

5. Если допустимо, то уменьшить верхнюю границу: Гверх :=Т, иначе увеличить нижнюю границу: Тшж := Т 4-1. В обоих случаях вернуться на п. 2.

Процедура Р0 описана полностью.

Нетрудно заметить, что построение каждого Т -позднего расписания для некоторого Т е[г,г] в п. 4 и проверка его допустимости в п. 5 сопровождаются уменьшением разности Т -Т как минимум вдвое. Таким образом, не более чем за ю§2(Г-Г)< В итераций

верх ниж ' 3

цикла по п. 2 эта разность достигнет величины Т^ -Тт = 1, после чего на следующей итерации станет равной нулю. Из теоремы 2 вытекает следующий алгоритм решения задачи №.

Доклады ТУСУРа. 2003 г. Автоматизированные системы обработки информации, управления и проектирования Алгоритм А

Этап 1. Вычисляем критическое время параметр Тъ и нижнюю оценку длины оптимального расписания Т = тэх^Т^.Т^|.

Этап 2. Находим Т -позднее расписание. £г, где V = Гкр + £>. Вычисляем значения А'

и А". Если А' > 0, то Стоп (задача не имеет решения). Если А" > 0, то переходим к этапу 3. Если А" = 0, переходим к этапу 4.

Этап 3. Оптимальное расписание £ор{ определяется соотношениями (7). Стоп.

Этап 4. Оптимальное расписание 5ор, находится с помощью процедуры Р0. Стоп.

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

Алгоритм А описан.

Далее приведены оценки временной сложности алгоритма проверки допустимости Т-позднего расписания по ресурсным ограничениям и алгоритма вычисления А(7').

Алгоритм проверки допустимости Т -позднего расписания в задаче

В процедуре Р0 при различных значениях Т требуется построить Т -позднее расписание и проверить его допустимость относительно каждого ресурсного ограничения. При проверке допустимости расписания воспользуемся критерием в форме утверждения 1, в котором фигурирует величина А(Г), для вычисления которой необходимо знать функции объемов выделенного ()к (/) и потребляемого (г) (при расписании ) количества ресурса к . Поскольку обе функции кусочно-линейны, то они полностью определяются значениями в своих узлах. Таким образом, необходимо найти все узлы функций <2к (г) и К\ (/), кеКа, после чего становится

возможным вычисление параметра А (Г) и установление допустимости расписания 5,г. Отыскание узлов функции Як (г)

Опишем алгоритм Ан (Т) отыскания убывающей по времени последовательности у1к,у2к,... узлов функции (/) для каждого к е К0. Попутно в алгоритме будет построено Т -позднее расписание , так что его предварительного построения не требуется.

Узел у'к будет отождествляться с парой (г,Л) = (/(>{),Я, где Г и Я - значения Г

и Я'к (г) в узле у'к. Информацию о директивных сроках будем считать заданной в виде упорядоченного по возрастанию списка V различных директивных сроков. При каждом директивном сроке <3 еТ> имеется список работ J(d), чей директивный срок совпадает с с!

Алгоритм АК(Т)

ШагО. Для каждого ресурса к е Ка определить исходный узел у°к Я (у°к ) = Як 1 — суммарная по всем работам /еУ потребность в ресурсе ; через

обозначаем номер последнего найденного узла функции Ятк (г), исходно полагаем = 0.

В списке V найти максимальный директивный срок ¿/'такой, что <£ <Т \ переменной присвоить номер этого директивного срока в списке V. Если множество таких директивных сроков пусто, то положить 3* := 0, := 0.

Каждой работе у е 3 ставим в соответствие переменную с], отражающую состояние

этой работы в алгоритме: с} е {1,...,8исс(у) +1} означает, что осталось с, -1 не просмотренных работ у" е 8исс(у); с,= 0 означает, что работа включена во фронт, но ее просмотр еще не начался; с]е{-К,...,-1} означает, что по с] ресурсам она уже. Исходно полагаем с = 8исс(у')! + 1, /еЛ Определяем также глобальный счетчик С не просмотренных работ: исходно С = п.

Формируем фронт Т7 текущих работ. На шагеО в него войдут все работы у е 3 такие, что 3] = Т (при этом полагаем с] =0). Для каждой работы и ресурса к е Кс формиру-

ем пятерку Ук т), где /- номер текущего интервала постоянства функции

г - значение функции г]к (г) в /-м интервале; т - момент начала 1-го интервала в строящемся расписании Б7. Исходно для каждого у е ^ и к е Ка полагаем = г[Ук) = г]кУ

х[И]к) = Т-р'1к. Множество пятерок Я = \к]к |у е/% кеК°\ организуем в виде «кучи» (т. е.

двоичного дерева, полуупорядоченного по ключу т: в корневой вершине этого дерева находится

пятерка с максимальным значением т* ключа т, а по любой цепочке, идущей из корня в один из «листьев», значение т монотонно не возрастает, при этом длина такой цепочки не превышает

0(к^|Я); согласно [3] такая «куча» Я может быть построена за время О(;Я) Для каждого к<=Ка вычислить гк = ) - текущую суммарную интенсивность потребления ресурса к.

Шаг у(у = 1,2,...). Находим Г* = шах{т\/}. Если /*=т\то выполнить процедуру А.

Если I - сС , то выполнять процедуру В . Процедура А

Пусть А = (у'Д,/,г,т) - пятерка, соответствующая корневому элементу «кучи» Я, т = т

Удалить А из Я и перестроить «кучу», с тем чтобы элемент с максимальным значением т вновь оказался в вершине «кучи». (Согласно [3] такая перестройка выполняется за время

0(к^2 |Я|) .) Если Я = 0 , то полагаем т* = 0.

При Г* <t(yk{k))^ те- ПРИ обнаружении нового узла функции, вычислить значение функции в этом узле по формуле

после чего положить + 1; у*} ' :=(/

Пересчитать интенсивность потребления ресурса к: гк := ^

Если ¿ = /(й)>1, то добавить в Н новый элемент И - р)к) (соответ-

ствующий (/-1) -му интервалу постоянства функции интенсивности потребления ресурса к работой Л, перестроить «кучу» Н, пересчитать т и интенсивность потребления ресурса к: Гк.= Гк+г^У Если / = /(й) = 1 (т. е. работа у просмотрена по ресурсу к), то Выполнить

Положить с, := с, -1, если с; = -К (работа у полностью просмотрена), то Выполнить

Определить момент начала работы у в расписании 5: := Г . Изменить значение счетчика непросмотренных работ: С := С -1. Если С = 0, то Стоп (алгоритм АК (Т) завершил работу).

Иначе сг := с-1, для у/'еРгес1(у). Если с/=1 => все работы /евисф) уже просмотрены и при этом йу>{ , то включить работу / во фронт текущих работ, выполняя

следующие действия:

- положить с . := 0;

- для каждого ресурса к е К° определить пятерку к,к =(/Д,/,г,т), где i = Nrk,

г = г'1к1 X = {-р)к\

- включить ее в дерево Н и перестроить Я до «кучи»;

- пересчитать гк: гк:=гк+г\ пересчитать х*. Конец.

Процедура В

В момент х* = (£ во фронт ¥ могут добавиться работы, чей директивный срок совпадает с £. Для выявления всех таких работ просмотреть список J[d*): если для / eJ{d) выполнено с . = 1. то включить работу / в ^ , выполняя все предусмотренные действия (см. выше).

Директивный срок й = £ из списка V считаем «просмотренным», счетчик цс/ уменьшить на 1 и найти новое значение равное ц^-му директивному сроку из V, еспи цв-=0, то

(Г := 0. Алгоритм АК (Т) описан.

Лемма 1. Алгоритм Ан (Т) строит Т -позднее расписание Зт и находит все узлы функций К1: (г) интенсивности потребления ресурсов к е К° при расписании 57 . Временная сложность

алгоритма не превышает 0(N(\ogf + \ogK) + u), где N - суммарное по всем работам и ресурсам число интервалов постоянства функций интенсивности потребления ресурсов; / - ширина частичного порядка графа G ; и - число дуг в графе G ; К - число ресурсов.

Доказательство. Для обоснования того, что алгоритм завершает работу за конечное время, достаточно показать, что каждая работа jeJ на каком-то шаге будет включена во

фронт F . Допустим противное, откуда следует, что множество Jx работ, не включаемых алгоритмом Ar{T) во фронт, не пусто. Тогда в алгоритме неизбежно наступает момент, когда все работы j е J/Jx и все директивные сроки d е V уже просмотрены. Поскольку в зтот момент фронт пуст, то х , а так как все директивные сроки просмотрены, то d =0 и i = 0 . Из неотрицательности директивных сроков следует, что для всех работ j е Jx выполнено d] > t и

единственной причиной их не включения во фронт может быть неравенство cj > 1. Пусть j -максимальная из работ Jx, т. е. в Jx не существует работы j, которой предшествует /. Отсюда следует, что Succ(/)nЛ = 0. т. е. все работы j e$ucc(f) просмотрены и с,. Противоречие доказывает, что в процессе работы алгоритма ÂR (Т) все работы jeJ будут просмотрены.

Факт построения алгоритмом AR (Т) Т -позднего расписания ST вытекает из того, что любая работа jeJ включается во фронт либо на шаге 0 (тогда ^ = Т- р, = d] - pt ), либо

на одном из последующих шагов в процедуре А (тогда s, либ° в

процедуре В (тогда Sj = dJ -Pj= min j^, jùn ^ J-p, ). Во всех случаях значения совпадают со значениями sf; , определяющими Т -позднее расписание.

Очевидно также, что величина R , вычисляемая по формуле (8), совпадает со значением функции R]k(t) и что множество пар вычисляемых алгоритмом содержит мно-

жество всех узлов функций Rl(t), ke К°.

В процессе работы алгоритма каждый директивный срок d е D просматривается лишь один раз. Сложность такого просмотра не превосходит О(л) < O(iV). Каждая дуга ueU также

просматривается в алгоритме лишь однажды, что дает вклад О(г^).

Наконец, добавление или удаление одного эпемента из «кучи» Я требует 0(log Н ) действий. Поскольку в каждый момент времени t одновременно может выполняться не более / работ, то на каждом шаге в «куче» содержится не более fK элементов, т. е. Я < /К . Так

как элементами «кучи» являются пятерки, соответствующие узлам функций rJk (/), и общее

число этих узлов равно O(N) и так как, очевидно, каждая пятерка включается в «кучу» и исключается из нее лишь однажды, то преобразование «кучи» Я в процессе работы алгоритма требует не более О(N\og(JK))операций. Сложив все приведенные выше оценки, получим

требуемую в лемме 1 оценку времени работы алгоритма AR (Т). Лемма 1 доказана.

Отыскание узлов функции Qk (t)

Каждый узел Y' будет отождествляться с парой = где f~ м0менТ

времени, a Q-значение функции Qk{t). Последовательность узлов Yk\Yk,...Jkk находится из рекуррентных соотношений: Yk =(0,0); Yk =Yk 1 i = h-,Nk.

Вычисление величины Д(Г)

Для каждого ресурса к е К* вычисляется значение &к величины минимального сдвига графика функции RTk (t) вправо, при котором (сдвинутый) график целиком помещается под графиком функции & (/). Максимальное из чисел А,, к е К\ выбирается в качестве значения величины Д(Г).

В силу сказанного о суммарных объемах выделяемых и потребляемых ресурсов для всякого k е К° имеем Rkl = R(ykk) < Q(y"'1 ). Ясно, что в этом случае величина Ак равна максимальному горизонтальному расстоянию между графиками функций Qk(t) и RTk(t). Так как эти функции кусочно-линейны, то значение &к достигается в одном из узлов этих функций. При вычислении Ак все узлы функций Qk (f) и RTk (/) последовательно просматриваются по

возрастанию номеров; при этом узлы сравниваются по объемам ресурсов

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

ЛИТЕРАТУРА

1. Гимади Э.Х. Глебов Н.И. Экстремальные задачи принятия решений. - Новосибирск: Но-восиб. гос. ун-т, 1982.

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

3. Taryan R. Е. Data structures and network algorithm PA: SIAM Philadelphia, 1983.

4. Белоусов Е.Г. Разрешимость и устойчивость задач полиномиального программирования.-М.: МГУ, 1993.

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