Метод сетевого программирования в задачах дискретной оптимизации

УДК 378.1:696.9

МЕТОД СЕТЕВОГО ПРОГРАММИРОВАНИЯ В ЗАДАЧАХ ДИСКРЕТНОЙ

ОПТИМИЗАЦИИ

ИВ. Буркова

Метод сетевого программирования разработан для получения точных решений или верхних (нижних) оценок задач многоэкстремальной (в частном случае - дискретной) оптимизации. Идея метода заключается в представлении задачи в виде суперпозиции более простых задач. Такое представление удобно изображать в виде сети (сетевое представление), вершины которой соответствуют задачам, входящим в суперпозицию. В каждой вершине решаются простые задачи оптимизации. Решение задачи в конечной вершине сети дает верхнюю (нижнюю) оценку для исходной задачи. Если сетевое представление является деревом, то решение задачи в конечной вершине сети дает оптимальное решение исходной задачи. В статье дается обзор применения метода для решения различных задач управления проектами

Ключевые слова: сетевое программирование, управление проектами, дискретная оптимизация

Введение

Задачи оптимизации в управлении проектами, в основном, связаны с определением предметной области проекта (т.е. состава работ проекта) и с построением календарного плана при ограниченных ресурсах.' Как правило, это задачи многоэкстремальной (в частном случае - дискретной) оптимизации. В общем случае для их решения применяются эвристические алгоритмы. Из точных методов следует отметить метод ветвей и границ, и метод динамического программирования. Эффективность метода ветвей и границ в большой степени зависит от качества верхних или нижних оценок (границ). Для получения таких оценок достаточно универсальным является метод множителей Лагранжа.

В 2004 году авторами был предложен метод дихотомического программирования [1], а несколько позднее его обобщение - метод сетевого программирования (МСП) [2]. Как метод точного решения задач, МСП обобщает метод динамического программирования, а как метод получения верхних (нижних) оценок - метод множителей Лагранжа.

В статье дается обзор применения МСП к задачам управления проектами. Дадим краткое описание МСП.

Метод сетевого программирования

Рассмотрим следующую задачу дискретной оптимизации: определить вектор х е X, обеспечивающий

тах /

хеХ

при ограничении

Далее будем предполагать, что X = П X, ,

I

где X, - дискретное множество чисел.

Любая функция дискретных переменных допускает сетевое представление, такое, что вычисле-

Буркова Ирина Владимировна - ИПУ РАН, канд. техн. наук, доцент, тел. (495) 276-40-07

ние значений функции сводится к последовательному вычислению значений более простых функций.

Пример 1. Рассмотрим функцию четырех переменных

/

Ее сетевое представление приведено на рис.

1, где >-1 = Х1Х2 + XI2, >-2 =>№, Уз =Х1Х4, >4 =ХзХ4,

У5 = >2 + >3 + >4

Рис. 1

Определение 1. Функции fx) и px) называются структурно-подобными (с-подобными) в заданном классе сетевых представлений, если существуют сетевые представления этих функций такие, что соответствующие сетевые структуры совпадают.

Пример 2. Рассмотрим функцию

px) =

Нетрудно показать, что одно из сетевых представлений этой функции имеет вид рис. 1.

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

вершины нулевого уровня, которым соответствуют переменным xf. Вершинам первого уровня соответствуют задачи оптимизации следующего вида: максимизировать

yi = f

где p принимает все допустимые значения.

Как уже отмечалось выше, в сетевом представлении те задачи, которые соответствуют вершинам сетевого представления (за исключением вершин первого уровня) имеют более простой вид, такой, что существуют эффективные алгоритмы их решения. В частности, если сетевое представление является дихотомическим, то каждая задача является задачей оптимизации функции двух переменных, и в дискретном случае легко решается на основе матричного представления. Решив задачи первого уровня, переходим к решению задач второго уровня, и т.д. Последней решается задача, соответствующая выходу сети. Обозначим yk(b) - значение целевой функции в оптимальном решении задачи, соответствующей выходу сети.

Теорема 1. Величина yk(b) является верхней оценкой для исходной задачи (1), (2).

Задача выбора портфеля проектов

Имеются n проектов, каждый из которых характеризуется затратами ai на реализацию и эффектом ci от реализации проекта. Задача заключается в выборе портфеля проектов с максимальным суммарным эффектом при заданной величине R инвестиционного фонда. Формально задача сводится к классической задаче о ранце [3].

Математическая постановка задачи имеет

вид:

f

J

p

J

Xj e {0,l}, J = 1, n

Структура сетевого представления является деревом, поэтому метод сетевого или дихотомического программирования дает оптимальное решение.

Различные обобщения этой задачи связаны с учетом ограничений на совместимость проектов, с учетом риска или ограничений на число проектов в тех или иных областях рассмотрены в [4, 5].

Задача календарного планирования

Рассмотрим задачу формирования календарного плана реализации проекта, состоящего из n работ.

Примем, что плановый период разбит на Т интервалов определенной длины Д

Обозначим Ri - множество интервалов в которых может выполняться работа i, Psj - множество работ, j-го вида которые могут выполняться в s-ом интервале. Заданы ограничения Qj на объем проектных работ каждого вида в каждом интервале. Для каждой проектной работы, в свою очередь, задан объем работ, выполняемый ресурсами каждого

вида. Более того, примем, что каждая работа выполняется только одним видом ресурсов. Таким образом, все работы разбиты на m подмножеств, так, что работы j-го подмножества выполняющиеся ресурсами j-го вида. Обозначим через xis - объем i-ой работы, выполняемый в s-ом интервале. cis - максимальный объем i-ой работы, который можно выполнить в s-ом интервале. Задача заключается в определении {xis}, i = 1, n , s = 1, T , так, чтобы

Xs < CtS , i e Ps, s = 1 T

E Xis < W , i = 1, n

jeR,

где Wi - объем i-ой работы,

E хк < Qsj, j = 1 m,

iePsf

а суммарный объем выполненных работ j-го вида

E E xK

s=1 iePsi SJ

был максимален.

Ограничимся случаем независимых работ. Для решения задачи определим двудольный граф G(X,Y). Вершины i e X соответствуют работам, а вершины s e Y соответствуют интервалам. Пропускные способности вершин i e X равны объектам Wi соответствующих работ, а пропускные способности вершины s e Y равны объему работ, который можно будет выполнить в соответствующем интервале, то есть Qs.

Пропускные способности дуг (i, s), i = 1, n ,

s e R¡ равны Cis. Задача свелась к определению максимального потока в полученной сети, что соответствует минимальному объему работ, отдаваемых на субподряд. Опишем алгоритм определения потока максимальной величины, основанный на методе сетевого программирования.

Задача о максимальном потоке Рассмотрим произвольную сеть без контуров на дугах (i, j), которой заданы пропускные способности Cj> 0. Как известно, потоком в сети, называется совокупность чисел 0 < Xj < Cj (i, j) e U (U -множество дуг сети), таких что

E xj =E xki

j k

для всех i Ф 0, n, где 0 - вход сети, a n - выход сети. Величиной потока называется

4>0 =E x0, =E xn

ij

Задача заключается в определении потока максимальной величины. Для решения этой задачи, как правило, применяется алгоритм Форда-Фалкерсона. Мы рассмотрим другой подход, в основе которого лежит метод сетевого программирования.

Сначала дадим определение агрегируемой

сети.

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

за исключением начальной, имеет степень захода 1, и любая вершина, за исключением конечной имеет степень исхода 1 (рис. 2).

Рис. 2

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

Определение 3. Параллельным множеством дуг называется подмножество дуг сети, у которых начальная и конечная вершины совпадают.

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

Определение 4. Сеть называется агрегируемой, если путем агрегирования последовательных и (или) параллельных множеств дуг ее можно свести к одной дуге.

Задача о максимальном потоке для агрегируемой сети эффективно решается. Как известно, задача о максимальном потоке для агрегируемой сети может быть представлена сетевой структурой типа дерева. На рис. 3. приведен пример агрегируемой сети (числа у дуг равны пропускным способностям), а на рис. 4. сетевое представление задачи о максимальном потоке. Числа в нижних половинах вершин равны пропускным способностям соответствующих дуг, а в верхних половинах указаны операции, которые проводятся над числами вершин нижних уровней для определения величины максимального потока. Операции взятия минимума выполняются для последовательного множества дуг, а операция суммирования для параллельного множества дуг. Число в корневой вершине дерева равно величине максимального потока.

Рис. 4

Числа в нижних половинах вершин равны пропускным способностям соответствующих дуг, а в верхних половинах указаны операции, которые проводятся над числами вершин нижних уровней для определения величины максимального потока. Операции взятия минимума выполняются для последовательного множества дуг, а операция суммирования для параллельного множества дуг. Число в корневой вершине дерева равно величине максимального потока.

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

Рассмотрим произвольную сеть. Произвольную сеть всегда можно преобразовать в агрегируемую сеть путем разделения ряда вершин на несколько вершин. Так, если в сети (рис. 5) вершину 4 разделить на две вершины 4 и 4', то получим агрегируемую сеть, приведенную на рис. 6.

Поскольку вместо одной дуги (4,5) мы получили две дуги (4,5) и (4',5), то разделим пропускную способность С45=5 на две части произвольным образом. Возьмем, например, С45=4, С45=1. Опре-

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

Нетрудно видеть, что величина потока равна 7, а в разрез заходят дуги (0,1) и (4',5). Имеет место

Теорема 2. Величина максимального потока в агрегируемой сети меньше или равна величине максимального потока в исходной сети.

Доказательство следует из очевидного факта, что любому потоку в агрегируемой сети однозначно соответствует некоторый поток в исходной сети.

Теорема 3 (двойственности). Существует разбиение пропускных способностей дуг, исходящих из разделенных вершин такое, что величина максимального потока в агрегируемой сети равна величине максимального потока в исходной сети.

Следствие. Если (, р) дуга, заходящая в разрез минимальной пропускной способности в исходной сети, то все дуги () также заходят в разрез минимальной пропускной способности в агрегируемой сети.

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

Рассмотрим пример сети (рис. 6). В разрез минимальной пропускной способности заходит дуга (4',5), но не заходит дуга (4,5). Поэтому поток можно увеличить, если «перекинуть» часть пропускной способности дуги (4,5) на дугу (4',5). Увеличим С4,5 на 3 единицы, уменьшив С45 на 3 единицы (рис. 7).

Получаем разрез минимальной пропускной способности с дугами (1,3), (4,5) и (4’,5), заходящими в разрез.

Поскольку обе дуги (4,5) и (4',5) заходят в разрез, то условия оптимальности выполнены. Следовательно, поток максимальной величины ф0 = 10 получен.

Оптимальное размещение работ между подразделениями организации

Пусть в организации имеются 1 подразделений, располагающих мощностями ресурсов одного вида. Обозначим &г объем работ, который может выполнить г-е подразделение, Жг - объем г-й работы, г = 1, п. Требуется распределить работы между подразделениями, так, чтобы загрузка подразделений (или их перегрузка) была максимально равномерной. Обозначим Хр = 1 если г-я работа выполняется подразделением р, Ху = 0 в противном случае. Тогда уровень загрузки (перегрузки) подразделения г можно оценить величиной

Ъ =Х ™,Ху - & .

Задача заключается в распределении работ по подразделениям так, чтобы минимизировать

( \

max

Z w,x,j- Q,

vj

Рассмотрим сначала частный случай, когда &г=& для всех г. В этом случае задача сводится к классической «задаче о камнях».

Дадим постановку «задачи о камнях». Имеется п «камней» разного веса. Требуется разбить их на т групп так, чтобы максимальный вес камней в группе был минимален. Задача о камнях имеет многочисленные варианты применения (равномерное распределение работ между исполнителями, функций по подразделениям организационной структуры и т.д.). Дадим формальную постановку задачи.

Задача 1. Обозначим через аг - вес 1-го камня, Ху= 1 если камень г попал в р-ю кучку (группу), Ху = 0 в противном случае. Суммарный вес камней в р-й группе равен

Максимальный вес группы

T = max Z aixi, ^ min .

J i

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

Z xiJ = 1, i = 1, n .

J

Задача заключается в минимизации (17) при ограничениях (18). Мы будем рассматривать вспомогательную задачу следующего вида:

Задача 2. Фиксируем допустимый вес каждой группы Т и сформулируем следующую задачу: максимизировать сумму весов размещенных в ящики вместимостью Т камней:

Ф = Z aixiJ ^ max .

i,J

при ограничениях (18) и (19):

Z a,xp < T , j = 1, m .

i

Связь между задачами (17)-(18) и (18)-(20) очевидна. Минимальное Т, при котором в оптимальном решении задачи 2 размещены все камни, дает оптимальное решение задачи 1.

Сначала получим сетевое представление задачи 2. Оно представлено на рис. 8 для случая n =

3, m = 2.

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

Все аг также делим на 2 части игр и угр для каждой вершины нижнего уровня так, что

игр + Угр = а,, для всех г',р. (21) Рассмотрим следующие две задачи.

Задача 3. Определить Хгр так, чтобы максимизировать

X ирХр

г,з

при ограничениях (18).

Задача 4. Максимизировать

X УрХр

г,з

при ограничениях (20).

Обозначим 5Ци) и Ьт(у) оптимальные решения первой и второй задач при заданных и и у. Оценочная задача заключается в определении {игр} и {Ур}, минимизирующих

Г

при ограничении (21). Заметим, во-первых, что в оптимальных решениях первой и второй задач можно принять

Uj = У, Vij = ai - y, j = 1, m Во-вторых, решение первой задачи очевидно:

Sm

i

В третьих, решение m вторых задач при заданных {уг} сводится к решению одной задачи о

ранце: определить хг = 0,1, максимизирующие

X xi

i

при ограничении

X ха < T.

i

Решим задачу (26) и (27) при yt = 0, i = 1, n . Обозначим через Q = {Qp} множество векторов х, удовлетворяющих (27) и упорядоченных по убыванию Mj= X а, , Yj= X У, , а Z = max(Mp-Yp).

ieQj ieQj j

Заметим, что при заданных {y} Z определяет оптимальное решение каждой из m вторых задач. Оценка (24) при этом равна

F

i

где Уг > 0 удовлетворяют неравенствам

X у, + z >Mj, j = 1N .

ieQj

где N - число различных решений неравенства (27). Таким образом, оценочная задача свелась к определению 0 < yi < ai, i = 1, n и 0 < Z < Mp, максимизирующих (28) при ограничениях (29). Это обычная задача линейного программирования. Фиксируем величину Z и определяем максимальный номер к такой, что Z < Мк.Рассматриваем следующую задачу линейного программирования: определить 0 < У г < а„ i = 1, n, минимизирующие

Y

i

при ограничениях (29), где j = 1, к . Двойственная

задача имеет вид: определить Uj > 0, j = 1, к, максимизирующие

X (Mj - Z)Uj ,

j=1

при ограничениях

X Up < 1, i = 1, n

рщ

где Ri — множество номеров Qp, содержащих камень i.

Обозначим через Y0(Z) минимальное значение Y(Z). Оценочная задача сводится к минимизации функции одного переменного

Y0

Берем T0 = A/m, где A = X at, и решаем за-

i

дачу 2. Если Ф„1ах(Т0) < A, то увеличиваем Т0 до T1 так, чтобы появился хотя бы один новый вектор Qj. Если Ф„,ах(Т1) < A, то продолжаем увеличение T до тех пор, пока не получим величину Тк такую, что

Фтах(Тк) ^ А. Величина Тк является нижней оценкой для задачи 1. Далее можно применить метод ветвей и границ на основе полученной оценки.

Заключение

Анализируя рассмотренные задачи можно заметить универсальность схемы применения метода сетевого программирования, включающей четыре этапа:

1. Построение сетевых представлений для целевой функции и ограничений с одинаковой структурой.

2. Выбор начальных значений двойственных переменных.

3. Решение оценочных задач.

4. Целенаправленное изменение значений двойственных переменных.

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

На повестке дня стоит задача разработки программного комплекса для решения широкого класса задач дискретной оптимизации на основе метода сетевого программирования

Литература

1. Бурков В.Н., Буркова И.В. Задачи дихотомической оптимизации. - М. Радио и связь. 2003. - 156 с.

2. Бурков В.Н., Буркова И.В., Овчинникова Т.И. Метод сетевого программирования - Проблемы управления № 3, 2005. С. 25-27.

3. Сигал И.Х., Иванова А.П. Введение в прикладное дискретное программирование. М.: Физматлит, 2007. - 304 с.

4. Алферов В.И. Управление проектами в дорожном строительстве [текст]: монография. / В.И. Алферов, С.А. Баркалов, П.Н. Курочка. - воронеж: «научная книга», 2009. - 340 с.

5. Теория систем и системный анализ [текст]: учебное пособие / С.А, Баркалов [и др.]. - Воронеж: «научная книга», 2009. - 626 с.

6. Буркова И. В. Метод сетевого программирования в симметричной задаче коммивояжера. - «Проблемы управления» научно технический журнал. 2008. №4. С. 7-10.

Институт проблем управления им. В. А. Трапезникова РАН

METHOD OF NETWORK PROGRAMMING IN PROBLEMS OF DISCRETE

OPTIMIZATION

I.V. Burkova

The method of network programming is developed for reception of exact decisions or the top (bottom) estimations of problems multiextreme (in that specific case - discrete) optimization. The idea of a method consists in representation of a problem in the form of superposition of more simple problems. Such representation is convenient for representing in the form of a network (network representation) which tops correspond to the problems entering into superposition. In each top solve simple problems of optimization. The decision of a problem in final top of a network states the top (bottom) estimation for an initial problem. If network representation is a tree the decision of a problem in final top of a network gives the optimum decision of an initial problem. In clause the review of application of a method for the decision of various problems of management is given by projects

Key words: network programming, management of projects, discrete optimization