АЛГОРИТМ РЕШЕНИЯ ОДНОЙ ЭКСТРЕМАЛЬНОЙ ЗАДАЧИ ТЕОРИИ РАСПИСАНИЙ
УДК 004
Геннадий Александрович Беркетов,
к.т.н., профессор, профессор кафедры автоматизированных систем обработки информации и управления, Московский государственный университет экономики, статистики и информатики (МЭСИ) Тел.: (495) 442-61-11 Эл. почта: [email protected]
В статье рассматривается оригинальный алгоритм решения обобщенной задачи теории расписаний, основанный на методе ветвей и границ. Задачи составления расписания выполнения комплекса работ (операций) при ограничениях на используемые ресурсы часто возникают при календарном планировании операций дискретного производства, оптимизации сетевых графиков реализации научных, экономических или технических проектов. Инструментарий решения подобных задач включается в системы поддержки принятия решения АСУ многих предприятий.
Эффективность предлагаемого алгоритма позволяет решать с его помощью характерные для практики задачи большой размерности.
Ключевые слова: общая задача теории расписаний, календарное планирование работ, метод ветвей и границ, системы поддержки принятия решений.
Gennady A. Berketov,
PhD in Technical Sciences, Professor,
Department of Automated Systems of
Information Processing and Management,
Moscow State University of Economics,
Statistics and Informatics
Tel.: (495) 442-61-11
E-mail: [email protected]
ALGORITHM FOR SOLVING EXTREME SCHEDULING PROBLEMS
The article considers the original algorithm for solving the generalized problem of scheduling theory, based on the branch and bound method. Task scheduling perform works (operations) and restrictions on resources used often occur with scheduling discrete manufacturing operations, optimizing network implementation schedules of scientific, economic or technical projects. Tools to solve such problems are included in the decision support system ACS in many businesses. The effectiveness of the proposed algorithm allows solving with it specific for practice large-scale problems.
Keywords: general problem of scheduling, scheduling of work, branch and bound method, decision support system.
Пусть необходимо обслужить п требований. Обслуживание /-го требования заключается в проведении над ним комплекса из п, упорядоченных операций;у-ю операцию над /-м требованием обозначим через (/,у), причем, если (/, у) - операция предшествует (/, I) - операции ((/, у) < (/, /)), тоу < 1. Каждая (/, у) - операция при наличии соответствующих ресурсов выполняется за время ту время ее выполнения не зависит от порядка, в котором обслуживаются требования.
Все операции над требованиями должны быть выполнены без прерывания и нарушения упорядоченности, т.е.
/у = + Ту и ^ > / для у < 1.
Где $ уу и/у - моменты начала и окончания выполнения (/,у) - операции соответственно. При обслуживании требований используется т видов ресурсов типа мощности; величина ресурса к-ого вида, необходимая для выполнения (/ , у) - операции, определяется величиной Щ > 0 .
Суммарное требование к ресурсу к-ого вида в каждый момент времени не должно превышать величины Як - мощности ресурса.
Расписание $ = {$■} (или / = {/}) обслуживания требований назовем допустимым, если оно удовлетворяет перечисленным условиям. Очевидно, знание моментов окончания операций / и продолжительность операций ту позволяет легко находить 81у - моменты начала операций.
Рассматривается следующая задача: среди допустимых расписаний найти оптимальное по быстродействию, для которого время, затрачиваемое на обслуживание всего пакета требований, минимально.
Алгоритм, предлагаемый в данной работе для решения вышепостав-ленной задачи, использует идеи метода ветвей и границ [1-4]. Алгоритм не требует запоминания дерева вариантов: вся информация, необходимая для вычислений запоминается в виде частичного решения специального вида. Эта особенность алгоритма позволяет значительно понизить требования к объему необходимой памяти, что существенно при решении задач большой размерности.
Прежде чем дать описание алгоритма, введем некоторые понятия и операции, которые потребуются нам в дальнейшем.
Введем переменные
(г чГ1» еслиЛ =г,
[0, если /уф г.
Следует заметить, что индекс t играет здесь чисто формальную роль и введен для удобства описания алгоритма. Очевидно, что для восстановления расписания по переменным ху(0 нет необходимости в знании значений всех переменных.
Пусть для части операций уже составлено расписание; такое расписание будем называть частичным. Частичное решение запоминается как последовательность записей вида
I,у, 4 Ху(().
Некоторые записи могут быть помечены (в качестве метки используется символ *). Содержательный смысл этой операции заключается в том, что при неоптимальном продолжении частичных решений происходит возврат к прежним вариантам и ищется новое продолжение; метки играют при этом значительную роль. Ниже приводится пример записи частичного решения, в которой третий элемент помечен:
1, 1, 3, 1| 1, 2, 5, 0| 2, 1, 4, 1 *| 2, 2, 7, 1
При машинной реализации алгоритма частичное решение представляет собой массив переменных указанной структуры; в качестве метки используется какой-либо числовой код. Работа алгоритма заключается в поиске наиболее оптимального продолжения частичного решения. В ходе поиска решения переменным xy(t) присваиваются те или иные значения. Заметим, что при присвоении значений некоторым из n переменных другие переменные не могут принимать произвольных значений: их значения определяются ограничениями, накладываемые на допустимые решения. Такие переменные будем называть зависимыми.
Введем теперь понятия множества конфликтных операций и дефицитности ресурса.
Пусть Х - некоторое частичное решение. Обозначим через G множество очередных операций, не вошедших в Х. Множеству G поставим в соответствие множество переменных G, определяемое равенством
G = {у. f)'-'xnj, (j
где fj - минимально возможное время окончания операции
Очередная операция (i, j) называется инцидентной с операцией (g, h), если при их выполнении используется один и тот же ресурс причем G'qg ^ Gj ^ fqh запись
(i,j)< k > (q,h) означает, что операции инциденты по k-ому ресурсу. Определим Gk как подмножество множества G, для элементов которого выполняется
V(i,j),(q,h)e Gk [(i,j(q,h)\
Z Gkj > Gk
(i,j)Gt
Множество Gk называется множеством операций, конфликтных по k-ому ресурсу. Если Gk Ф 0, то ресурс k-ого вида называется дефицитным. Дефицит ресурса определяется равенством
Ak = Z G,j - Gk
(jG
Множество О1 и О2 и обозначим через О*.
При работе алгоритма возникает необходимость в определении
номера последней операции 1-ого требования из числа записанных в частичное решение, а также времени окончания этой операции. Номер такой операции обозначим через g¡(X), а момент ее окончания через ¿¡(X).
Для нахождения g ¡(X) и ¿¡(X) необходимо просматривать записи частичного решения в обратном порядке до тех пор, пока впервые не встретится запись с I = 1.
В соответствии с основной идеей метода ветвей и границ, для частичных решений Х ищется оценка снизу Q(X).
Оценка Q(X) вычисляется следующим образом.
Перенумеруем требования так, чтобы выполнялись неравенства
¿1 < Ь < ... < 4
где = (X)+ £ т,.
]=gl (х )+1
Величина определяет минимально возможное время начала последней операции.
Пусть tj*, t2
tn* - моменты
окончания обслуживания соответствующих требований.
= шах(?1, 0,} + т,т
где 01 - момент высвобождения необходимых ресурсов. Тогда
QX) =
Рис. 1. Блок-схема алгоритма
Экономика, Статистика и Информатика
239
№3, 2015
Дадим теперь описание алгоритма. Его блок схема приведена на рис. 1. Ниже приводится описание блоков алгоритма.
Блок 1 С = {{ (^),..., х„1 (/'П1)}.
Блок 2. Выбирается ресурс с наибольшим дефицитом. Пусть это будет ресурс к-ого вида. Из подмножества Ок выбирается переменная х,к(0) доставляющая минимум вектору (t, /); переменная х,к(0) доставляет минимум вектору (, /), если для любой другой переменной xу.(t) е Ок, 0 < t, либо 0 = t, но q < /. Смысл этого правила в том, что приоритет дается операции, выполнение которой позволяет наиболее быстро освободить дефицитный ресурс. Значение х,к(0) полагается равным единице. Вновь сформированная запись присоединяется к частичному решению. Выполнение блока заканчивается пересчетом подмножества Ок. Переменная х,к(0) заменяется на х^+1(^(х)). У остальных переменных t заменяется на ^X).
Блок 3. Ищется переменная Ху■(t) е О, доставляющая минимум вектору (^ / ). Если выполняется
УкМ0) г Ок]
то переменная х,Д0) считается зависимой и полагается равной единице. Смысл этой процедуры заключается в том, что ресурсы, необходимые для выполнения х,к(0) - операции, свободны и откладывание ее выполнения не имеет смысла.
Блок 4. Формируется очередная запись и приписывается к частичному решению X. Переменная х,^) заменяется в С? на переменную х,к + l(t(X)). Остальные переменные остаются без изменения.
Блок 5. X является допустимым решением, если О = 0, т.е. все операции выполнены.
Блок 6. Для частичного решения X находится оценка Q(X).
Блок 7. Из частичного решения удаляется последняя запись ,, к, 0, х,к(0). В множестве О переменная с первым индексом заменяется переменной х,к(0). Если значение х,к(0) было равным нулю, у всех переменных ху(^ также, что 3 к ху (г)< к >хф (9), пересчитываются индексом t. Тем самым восстанавливается множество О, соответствующее предыдущей вершине дерева вариантов.
Блок 8. Последняя запись частичного решения изменяется; значение переменной полагается равным нулю, сама запись метится. Восстанавливается прежнее значение множества О. В множестве О \ху(^, аналогично тому, как это делалось во втором блоке, выбирается переменная х,к(0). Формируется новая запись и присоединяется к частичному решению.
Вышеописанный алгоритм находит оптимальное расписание за конечное число шагов.
Доказательство этого утверждения носит стандартный характер и поэтому здесь не приводится.
Расписание с минимальным временем реализации (из числа найденных) обозначается через Хт. Каждое вновь найденное расписание X сравнивается с расписанием Хт, которое хранится в памяти вычислительной машины. Если Q(X) < Q(Xm), то расписание X запоминается в качестве Xm.
По окончании работы алгоритма Xm - оптимальное расписание.
Литература
1. Чернявский А. Л. Алгоритм для решения комбинаторных задач, основанные на методе неявного перебора / Автоматика и телемеханика, №2, 1972.
2. Беркетов Г.А. К вопросу о решении обобщенной задачи построения расписания /Сб. Математические методы решения инженерных задач - М.: МО СССР, 1978.
3. Brooks G.H., White C.R. An algorithm for finding optimal or near optimal solutions to the production scheduling problem. J. Indust. Eng., V.16, №1, 1965.
4. Shrade L. Solving resource -constrained network problems by implicit enumeration nonpreemptive case. Oper. Res., V. 188, №2, 1970.
References
1. Chernjavski A.L. An algorithm for solving combinatorial problems based on the implicit enumeration / Avtomatika i telemehanika, №2, 1972.
2. Berketov A.G. To the question of the solution of a generalized problem for scheduling / Sb. Matematicheskie metody resheniya inzhenernyh za-dach - M.: MO SSSR, 1978.
3. Brooks G.H., White C.R. An algorithm for finding optimal or near optimal solutions to the production scheduling problem. J. Indust. Eng., V. 16, №1, 1965.
4. Shrade L. Solving resource -constrained network problems by implicit enumeration nonpreemptive case. Oper. Res., V. 188, №2, 1970.