Научная статья на тему 'Метод сетевого программирования'

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

CC BY
449
77
i Надоели баннеры? Вы всегда можете отключить рекламу.
Журнал
Проблемы управления
ВАК
Область наук

Аннотация научной статьи по математике, автор научной работы — Бурков В. Н., Буркова И. В., Попок М. В., Овчинникова Т. И.

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

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

NETWORK PROGRAMMING TECHNIQUES

A new approach to discrete optimization tasks named network planning techniques is offered. The method is based on the opportunity to present multivariable functions as a superposition of several simpler functions. The superposition structure is presented as a network whose inputs correspond to arguments, while the outputs correspond to the function. The paper shows that if the network has a tree structure, then the solution is reduced to sequential solving of simpler problems. In the general case, it is proposed to transform the network into the tree by separating network vertexes. It is proved that the problem solution for the transformed structure delivers the lower bound of the original problem's objective function (in case of a minimization task). The technique is illustrated with the example of the known stones problem.

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

етоды оптимизации в управлении

УДК 65.012

МЕТОД СЕТЕВОГО ПРОГРАММИРОВАНИЯ

В. Н. Бурков, И. В. Буркова, М. В. Попок, Т. И. Овчинникова

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

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

ВВЕДЕНИЕ

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

следующей постановке: определить вектор т = Ц.} с

дискретными компонентами, минимизирующий аддитивную функцию

п

М(т) = X М/(т() (1)

I = 1

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

/(т) О >. (2)

Любая функция дискретных переменных допускает сетевое представление, такое, что вычисление значений функции сводится к последовательному вычислению значений более простых функций. В частности, любая функция дискретных переменных допускает дихотомическое представление, когда вычисление значения функции сводится к последовательному вычислению значений функций двух переменных. Так, функция /(т) = Уо[-В1(т1, т2), У2(т2, т3)] допускает дихотомическое представление (рис. 1). При этом функции^, /1 и/2 удобно представлять в матричном виде (рис. 2). Такое представление широко используется в методах комплексного оценивания программ развития предприятий, регионов, результатов деятельности подразделений, уровня безопасности объектов и др.

В работах [1, 2] доказаны теоремы о представлении непрерывных функций нескольких переменных суперпозициями непрерывных функций меньшего числа переменных (в частности, двух переменных). Так, например, любая непрерывная функция трех переменных

представима в виде [2] /(х1? т2, т3) = D (х1? ф1(т2, т3)) +

+ D2(t1, m2(t2, t3)) + D3(t1, m3(t2, t3)). Ее сетевое представление приведено на рис. 3.

В сетевом виде можно представить и систему неравенств. Рассмотрим, например, систему неравенств

fj(T) < >, j = 1, m. (3)

Без ограничения общности можно принять, что > — положительные и одинаковые числа, > = b ! 0. В этом случае систему неравенств (3) можно заменить одним

неравенством f (я) P b, где /(т) = max f.(t).

j J

Очевидно, что функция f(я) допускает сетевое представление, если все функции fj допускают такое представление.

В настоящей работе описывается новый метод решения задач дискретной оптимизации, использующий сетевое представление функции /(т). Его естественно на-

(f\ (xu x2)J (Мх2, X3)J ( ■*■! ) ( ;*2 ) (*3 )

Рис. 1. Дихотомическое представление функции дискретных переменных

Рис. 2. Представление функций /1 и /2 в матричном виде

©■

Рис. 3. Сетевое представление непрерывных функций трех переменных

звать методом сетевого программирования (в частном случае дихотомического представления получаем метод дихотомического программирования [3]).

1. СЕТЕВОЕ ПРЕДСТАВЛЕНИЕ ТИПА ДЕРЕВА

Рассмотрим случай, когда функция /(т) допускает сетевое представление в виде дерева. Дадим описание метода сетевого программирования для задачи (1), (2). На рис. 4 приведен пример функции трех переменных, имеющей вид

Дтр т2, т3) = ФоЩХр т2), т3] = ф0(у, т3).

Значения функций ф.(тЕ) даны в нижних половинах квадратов, соответствующих переменным т1, т2 и т3.

Идея метода состоит в следующем. Сначала решается задача минимизации функции двух переменных

Ф1(т1) + Ф2(т2)

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

/1(т1, т2) О у,

соответствующая начальной вершине сетевого представления. Обозначим через г(у) решение этой задачи в

зависимости от у. Далее решаем задачу минимизации функции тоже двух переменных

z(у) + ф3(т3)

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

ф0(у, т3) О >,

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

Проиллюстрируем метод на примере рис. 4.

7 шаг. Рассматриваем нижнюю матрицу и для каждого элемента этой матрицы записываем в нижней половине соответствующей клетки сумму функций ф1(т1) и Ф2(т2) для соответствующих значений т1 и т2. Так, например, клетке (т1, т2) = (3, 2) соответствует сумма

Ф1(3) + Ф2(2) = 20 + 10 = 30.

Далее будем называть эту сумму затратами на достижение соответствующего состояния.

2 шаг. Из всех элементов матрицы, имеющих одно и то же значение у = /1(т1, т2), выбираем элемент с минимальной суммой ф1(т1) + ф2(т2). Минимальную сумму записываем в нижнюю половину клетки, соответствующей этому значению у в верхней матрице. Так, например, значению у = 3 соответствуют 5 элементов нижней матрицы: (3; 2), (4; 2), (3; 3), (4; 3) и (2; 4). Из них элемент (3; 2) имеет минимальную сумму 30 (это число записано в нижней половине соответствующей клетки).

А*) 1 2 3 4

ф(х) 6 25 67 120

\

А / /о 2 у/ / 11 3/ /78 4 / /20) ° /

3 / /зо 2 / / 31 2 /ъ% з / / /80 3 / /зо

2/ /17 1 / / 18 2 / /ё> /4) 3 / /п

1 / / 5 1 / у® 1/ /з 2 / /55 / 3 / /105

У % 1 / / 1 2 / / 8 з / /50 4 х /100

4/ /50 2/ /52 з ./ /ы 4 /ю 4/ /10

3 / /35 1 / /37 2 /^ //42 3 / /55 3 / /95

2/ /10 1/ / 12 2/ / 17 3 / /30 3 / /70

;< / ^ 1 / / 5 1 / /10 2 /^ /гъ 2 / /вз

*2/ / Хх 1 / / 2 2 / /7 з / /20 4/ /60

Рис. 4. Иллюстрация метода сетевого программирования

Рис. 5. Иллюстрация методов программирования:

а — динамического (ветвь дерева); • — дихотомического (произвольное дерево)

Поэтому в верхней матрице значению у = 3 соответствует число 30, записанное в нижней половине соответствующей клетки.

Далее шаги 1 и 2 повторяются для верхней матрицы. В результате для каждого значения fix) мы получаем минимальное значение ф(х). На рис. 4 кружками выделены минимальные затраты.

Несложно обобщить описанный метод на случай произвольного сетевого представления функции f(x) в виде дерева. Главное, чтобы задачи, соответствующие каждой вершине сетевого представления, имели эффективные методы решения. В случае дихотомического представления это всегда имеет место.

Заметим, что дихотомическое представление (см. рис. 4) имеет структуру в виде ветви дерева. В этом случае метод дихотомического программирования переходит в метод динамического программирования. Таким образом, метод дихотомического программирования в случае дихотомического представления в виде дерева является обобщением метода динамического программирования, расширяя круг задач, решаемых на основе данного подхода (рис. 5).

Если в методе динамического программирования решением задачи является путь в некоторой специальным образом построенной сети, то в методе дихотомического программирования решением задачи является частичное дерево в некотором специально построенном дереве. Соответственно, принцип оптимальности в методе дихотомического программирования можно сформулировать следующим образом: любое поддерево оптимального дерева должно быть оптимальным. Формально этот принцип оптимальности можно записать следующим образом: фк(у) = min [ф(.(у,) + ф;.(у.)], гдер(у) — мно-

(i, у)е р (у)

жество пар (i, j) таких, что fk(у,, у-) = у.

2. ОБЩИЙ СЛУЧАЙ

Рассмотрим произвольное сетевое представление функции f(x), задаваемое сетью, выходом которой является вершина, соответствующая функции /(x), а входами — вершины, соответствующие переменным x,, i = 1, J .

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

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

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

Пример. Рассмотрим сеть, представленную на рис. 1 и 2. На рис. 6 приведено решение соответствующей задачи. Затраты ф2(х2) разделены на две части, поскольку переменная х2 используется при вычислении функций и /р и /2. В данном случае общие затраты, равные 8, 12 и 20 при значениях переменной х2, равных 1, 2 и 3, соответственно, поделены пополам.

В каждой матрице кружками выделены клетки, соответствующие минимальным затратам на получение того или иного значения функций /1, /2 и В результате по-

Рис. 6. Решение оценочной задачи методом сетевого программирования

лучены минимальные затраты ф(/0), требуемые для получения значений функции/0. Если /0 = 1, то ф(1) = 16, если /0 = 2, то ф(2) = 20, если /0 = 3, то ф(3) = 28.

Рассмотрим случай /0 = 2. Ему соответствует оптимальное решение модифицированной задачи: х1 = 1,

Х21 2, Х22 2, Х3 1.

Здесь х21 соответствует значению х2 в левой нижней матрице, а х22 — в правой нижней матрице. Поскольку оба значения х21 = 2, х22 = 2 вошли в оптимальное решение модифицированной задачи, то полученное решение является допустимым для исходной задачи, а значит, мы получили оптимальное решение исходной задачи.

Другая ситуация возникает в случае /0 = 3. Оптимальное решение модифицированной задачи имеет вид: х1= 1, х21 = 2, х22 = 3, х3 = 2 со значением затрат ф0 = 28. Это решение не является допустимым для исходной задачи, поэтому значение ф0 = 28 является нижней оценкой минимальных затрат для исходной задачи. Здесь возможны два варианта действий. Первый заключается в попытке улучшить нижнюю оценку, изменяя разбиение затрат с2 = ф2(х2) на две части — с21 и с22. Очевидно, что для улучшения оценки следует часть с21 увеличить, а часть с22 уменьшить. Возьмем, например, с21 = 10, а с22 = 2. В этом случае оптимальное решение модифицированной задачи будет иметь вид: х1 = 1, х21 = 2, х22 = 2, х3 = 3 с затратами ф0 = 31. Это решение является допустимым для исходной задачи, а значит, оптимальным. Однако изменение разбиения затрат на части может и не привести к получению допустимого решения для исходной задачи.

Второй вариант состоит в применении метода ветвей и границ. Разобьем множество всех решений исходной задачи на два подмножества: в первом из них х2 Р 2, а во втором х2 = 3, и применим описанный выше алгоритм. Получим оценку снизу для первого подмножества. Получаем следующее решение: х1 = 1, х21 = 2, х22 = 2, х3 = 3 с затратами ф0 = 31.

Получим оценку снизу для второго подмножества. Оптимальное решение модифицированной задачи имеет вид: х1 = 1, х2 = 3, х3 = 2 со значением затрат ф0 = 32.

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

Рассмотрим на ряде задач построение оценочной задачи и метод ветвей и границ на основе полученной оценки.

3. ЗАДАЧА ЦЕЛОЧИСЛЕННОГО ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ

Рассмотрим следующую постановку задачи целочисленного линейного программирования. Определить целочисленный неотрицательный вектор х = {х1, х2, ..., х4}, максимизирующий функцию

П

ф(х) = Е с1х1 (4)

I = 1

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

J^aijxi P b, j = 1, т . (5)

Для построения оценочной задачи разделим на т частей Sij так, что

Xs.. = с, i = 1, п , (6)

У

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

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

Oj(x) = ZOyX; (7)

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

Xaijxi P b,. (8)

i

Обозначим через ф-Ц) оптимальное решение j-й задачи (s. = {s-}). Согласно теореме, величина

т

Ф(s) = X gj(sj) ()

j = 1

является оценкой сверху оптимального решения исходной задачи. Окончательно получаем следующую формулировку оценочной задачи: определить значения {s^.},

i = 1, п , j = 1, т , максимизирующие величину Ф(о) при ограничениях (6). Оценочную задачу назовем двойственной к исходной задаче целочисленного линейного программирования. Обоснованием этого названия служит следующая интересная связь. Рассмотрим обычную задачу линейного программирования (4), (5) (без требования целочисленности). Для упрощения выводов примем, что все параметры системы ограничений — положительные числа. Заметим, что если не требовать целочисленности решений, то задача (7), (8) легко решается. Ее оптимальное решение:

bj/akj, если skj/ akj = max (0^/=^),

0, если i z к.

Оптимальное значение величины Ф,(о.) = b.max(s./a.).

J J Ч Ч) Ч)

Обозначим у. = maxs /a , j = 1, т. Заметим, что

■'] 4 4J 4J ’

Уj O sMj/a4j для всех 4. Увеличим s^ так, чтобы s^ = У ¡a^. Тогда оценочная задача (6), (9) запишется в следующем виде: определить значения у, O 0, j = 1, т , минимизирующие функцию

W = X >л

J

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

X a.y j O ?, i = 1, п .

j

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

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

Пример. Определить значения х1 = {0; 1}, Е = 1, п , максимизирующие функцию

Ф (х) = 10х1 + 8х2 + 6х3 + 7х4 при ограничениях

6х1 + 3х2 + 2х3 + 5х4 Р 11,

3х^ + 5х2 + 6х3 + 3х4 Р 11.

Для построения оценочных задач возьмем оЕ1 = аа,

О2 = с1 ~ац, Е = 1, 4 . Получаем две задачи о ранце.

Задача 1.

ф1 = шах(6х1 + 3х2 + 2х3 + 5х4),

6х1 + 3х2 + 2х3 + 5х4 Р 11.

Она имеет два решения: х1 = х4 = 1, х2 = х3 = 0 и х1 = х2 = х3 = 1, х4 = 0. В обоих случаях ф1 = 11.

Задача 2.

ф2 = шах(4х1 + 5х2 + 4х3 + 2х4),

3х1 + 5х2 + 6х3 + 3х4 Р 11.

Ее решение: х1 = х2 = х4 = 1, х3 = 0, ф2 = 11. Оценка сверху исходной задачи ф0 = ф1 + ф2 = 22.

Для улучшения оценки увеличим о21 и о41 на единицу, уменьшив на единицу о22 и о42. Получаем две новые оценочные задачи.

Задача 1.

ф1 = шах(6х1 + 4х2 + 2х3 + 6х4),

6х1 + 3х2 + 2х3 + 5х4 Р 11. (10)

Ее решения: х1 = х4 = 1, х2 = х3 = 0; х1 = х2 = х3 = 1, х4 = 0; х2 = х3 = х4 = 1, х1 = 0; ф1 = 12.

Задача 2.

ф2 = шах(4х1 + 4х2 + 4х3 + 1х4),

3х1 + 5х2 + 6х3 + 3х4 Р 11. (11)

Ее решение: х1 = х2 = х4 = 1, х3 = 0; ф2 = 9.

Оценка сверху исходной задачи уменьшилась на единицу: ф0 = ф1 + ф2 = 21.

Применим метод ветвей и границ. Разобьем множество всех решений на два подмножества. В первом подмножестве х1 = 1, а во втором х1 = 0.

Оценим первое подмножество. Положив в ограничениях (10) и (11) х1 = 1, получим следующие две задачи:

Задача 1.

ф1 = шах(4х2 + 2х3 + 6х4),

3х2 + 2х3 + 5х4 Р 5.

Ее решения: х4 = 1, х2 = х3 = 0; х2 = х3 = 1, х4 = 0; ф1 = 6.

Задача 2.

ф2 = шах(4х2 + 4х3 + 1х4),

5х2 + 6х3 + 3х4 Р 8.

Ее решение: х2 = х4 = 1, х3 = 0; ф2 = 5.

Оценка сверху первого подмножества: ф0 = ф1 + ф2 + + с*1 = 21.

Оценим второе подмножество (х1 = 0). Заметим, что при х1 = 0 любое решение является допустимым для первой оценочной задачи. Поэтому достаточно решить вторую задачу, положив о,2 = с,, Е = 2, 3, 4. Ее решение

Рис. 7. Дерево ветвлений в задаче целочисленного программирования

х2 = х3 = 1, х4 = 0 является оптимальным во втором подмножестве со значением целевой функции ф0 = 14. Выбираем первое подмножество, имеющее большую оценку. Разбиваем первое подмножество на два. В одном из них х2 = 1, а в другом х2 = 0.

Оценим первое подмножество (х2 = 1). Рассматривая два ограничения

2х3 + 5х4 Р 2,

6х3 + 3х4 Р 3,

видим, что единственное решение х3 = х4 = 0, следовательно, оно оптимально в данном подмножестве со значением целевой функции ф0 = 18.

Оценим второе подмножество (х2 = 0). В данном случае достаточно сравнить два варианта: х3 = 1, х4 = 0; ф1 =6 и х3 = 0, х4 = 1; ф1 = 7.

Оценка второго подмножества: ф0 = 10 + 7 = 17. Ей соответствует оптимальное решение в этом подмножестве х1 = х4 = 1, х2 = х3 = 0 со значением целевой функции ф0 = 17.

Выбираем первое подмножество, а следовательно, и оптимальное решение х1 = х2 = 1, х3 = х4 = 0; ф0 = 18. Дерево ветвлений приведено на рис. 7.

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

Задача 1.

шах(10х1 + 8х2 + 6х3 + 7х4),

6х1 + 3х2 = 2х3 + 5х4 Р 11.

Ее решение х1 = х2 = х3 = 1, х4 = 0; ф1 = 24.

Задача 2.

шах(10х1 + 8х2 + 6х3 + 7х4),

3х1 + 5х2 = 6х3 + х4 Р 11.

Ее решение х1 = х2 = х4 = 1, х3 = 0; ф1 = 25.

Таким образом, оценка сверху оптимального решения исходной задачи в данном случае равна 24, что больше чем оценка 21, полученная методом сетевого программирования. Более того, поскольку обе рассмотренные задачи о ранце получаются в методе сетевого программирования (первая — при 1 = с,, 2 = 0, а вто-

рая, наоборот, при 2 = с,, 1 = 0), то можно утверждать, что применение метода сетевого программирования дает лучшие (или такие же) оценки. Согласно второму способу решается задача линейного программирования без требования целочисленности.

Рассмотрим простой

Пример. Определить значения х1 = {0; 1}, Е = 1, 2, максимизирующие функцию

ф(х) = 42х1 + 14х2

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

3х1 + 4х2 Р 6,

5х1 + 2х2 Р 6.

Получим оценку методом сетевого программирования. Для этого достаточно положить о11 = 42, о21 = 14, о12 = о22 = 0. Решение первой оценочной задачи х1 = 1, х2 = 0, ф1 = 42 является допустимым для второй задачи

и, следовательно, оптимально.

Получим оценку, решая нецелочисленную задачу линейного программирования. Ее решение х1 = 6/7; т2 = 6/7; ф0 = 48 ! 42. Как видим, оценка существенно хуже.

4. РЕШЕНИЕ ЗАДАЧИ 0 КАМНЯХ МЕТОДОМ СЕТЕВОГО ПРОГРАММИРОВАНИЯ

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

Задача 1. Обозначим через =. вес i-го камня, х~ = 1,

если камень i попал в j-ю кучку, х{. = 0 — в противном

случае. Суммарный вес камней в j-й группе Т = XaiXir

i

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

Т = max YJaixij. o min. (12)

J i

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

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

Zxij = 1, i= ~п . (13)

j

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

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

Ф = X aixij o max (14)

i,j

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

ХаХ] P Т, j = 1т. (15)

i

Связь между задачами (12), (13) и (14), (15) очевидна. Минимальное значение Т, при котором в оптимальном

Рис. 8. Сетевое представление ограничений задачи о камнях

Рис. 9. Сетевое представление оценочной задачи

решении задачи 2 размещены все камни, определяет оптимальное решение задачи 1.

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

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

Е ч ч

вершины нижнего уровня так, что

и. + V. = аі для всех /, / (16)

Рассмотрим следующие две задачи.

Задача 1. Определить значения х~, максимизирующие функцию X иі.хі- при ограничениях (1З).

і, І

Задача 2. Максимизировать функцию X Vіх. при ог-

и

раничениях (15).

Обозначим через /т(и) и Ьт(у) оптимальные решения первой и второй задач при заданных величинах иі и V. Оценочная задача заключается в определении значений {и- .} и {V- .}, минимизирующих функцию и ч

"(и, V) = /т(и) + Ьт(у) (17)

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

Заметим, во-первых, что в оптимальных решениях первой и второй задач можно принять и. = у,, V. = аі — у,,

у = 1, т. Во-вторых, решение задачи 1 очевидно: /т(у) =

= Ху. В третьих, решение т задач 2 при заданных вели-

і

чинах {у) сводится к решению одной задачи о ранце: определить значения х. = 0, 1, максимизирующие функцию Тх^ - у) (18)

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

Р т. (19)

Решим задачу (18), (19) при у. = 0, Е = 1, п . Обозначим через О = {—} множество векторов х, удовлетворяющих ограничению (19) и упорядоченных по убыванию величин М. = Т =, 5 = Т У, а

I Е I Е О/

6 = тах(М - 5).

j J J

Заметим, что при заданных {у;} величина 6 определяет оптимальное решение каждой из т задач 2. Оценка (17) при этом имеет вид

"(У) = т6 + Т У,-, (20)

где уЕ. О 0 удовлетворяют неравенствам

Т у. + 6 О М-, . = ^, (2!)

г е О.

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

значений 0 Р у. Р а, Е = 1, п и 0 Р 6 Р М., максимизирующих функцию (20) при ограничениях (21). Это обычная задача линейного программирования.

Фиксируем величину 6 и определяем максимальный номер к такой, что 6 < Мк. Рассматриваем следующую задачу линейного программирования: определить значения 0 Р уЕ Р а, Е = 1, п, минимизирующие функцию

5(6) = ТУ,

I

при ограничениях (21), где . = 1, к. Двойственная задача имеет вид: определить значения и. О 0, . = 1, к, максимизирующие функцию

Пример. Пусть т = 3 и имеется 7 камней весов а.:

X () - Z)u

У= 1

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

X и . P 1, i = 1, п,

Xi

где Rj — множество групп j, содержащих камень i.

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

Берем Т0 = А/т, где А = X =,-, и решаем задачу 2. Если

i

Фтах( Т0) < А, то увеличиваем Т0 до Tj так, чтобы появился хотя бы один новый вектор Q.. Если Фтах(Т|) < А, то продолжаем увеличивать Т до тех пор, пока не получим величину Тк такую, что Фтах(Тк) O А. Величина Тк является нижней оценкой для задачи 1. Далее можно применить метод ветвей и границ на основе полученной оценки.

i 1 2 3 4 5 6 7

ai 10 12 13 14 18 19 22

1 шаг. Имеем А = 108, Т0 = 36. Имеется только одно решение: О = (4, 7) со значением М = 36.

2 шаг. Увеличиваем Т0 до Т1 = 37. Имеются следующие решения: 01 = (5, 6), 02 = (4, 7), 03 = (1, 2, 3), 04 = (3, 7). Соответственно, М1 = 37, М2 = 36, М3 = 35, М4 = 35. Выпишем систему неравенств:

У5 + У6 +

У4 +

У

+

У ■

Имеем:

f у +

у f Z0 = 37, Z1 = 36,

U7+

U7+

г >37 г > 36 г > 35 г > 35

у = 0, Y0(37) = 111, у = 1, Y0(36) = 109,

62 = 35, у = 2, У4 = 1, 5,(35) = 108.

Нетрудно показать, что дальнейшее уменьшение величины 6 не приводит к уменьшению оценки. Поэтому оптимальное значение 60 = 62 = 35.

Берем х51 = Х61 =1, т. е. помещаем камни 5 и 6 в первую группу. Исключая эти камни, рассматриваем задачу меньшей размерности. Имеем для нее также 50(35) = = 71 = А — 37. Получаем оптимальное решение: х12 = = х22 = х32 =1, х43 = х73 = 1 со значением 0т1п = 37.

ЗАКЛЮЧЕНИЕ

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

ЛИТЕРАТУРА

1. Арнольд В. И. О функциях трех переменных // Доклады АН СССР. — 1957. — № 2.

2. Колмогоров А. Н. О представлении непрерывных функций нескольких переменных суперпозициями непрерывных функций меньшего числа переменных // Доклады АН СССР. — 1956. — № 2.

3. Бурков В. Н., Буркова И. В. Задачи дихотомической оптимизации // Материалы междунар. науч.-техн. конф. «Системные проблемы качества, математического моделирования, информационных и электронных технологий». — М., 2003. — С. 23—28.

в (0742) 334-90-51 E-mail: irbur27@mail.ru

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