Файл: Ху, Т. Целочисленное программирование и потоки в сетях.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 15.10.2024
Просмотров: 207
Скачиваний: 0
354 |
ГЛ. 17. ПРЯМОЙ АЛГОРИТМ |
задачи, которая была использована в наших рассуждениях. Пусть условия исходной задачи даны в виде уравнений следующим образом:
найти максимум
П
|
|
Х 0 = |
«00 — |
/li |
O-OjXj |
|
|
при условиях |
|
|
j=m+1 |
|
|
||
|
|
|
|
|
|
||
|
п |
|
|
|
|
|
|
Xi + |
2 « ; Л = |
аго |
(г= |
1, .. |
т), |
|
|
|
о= т + 1 |
|
|
|
|
|
|
|
X) — Xj = |
0 |
(i= |
m + l , |
..., п), |
(И) |
|
|
Xk^tO |
(целые) |
(к — 1, 2, |
|
Эти условия отличаются от (1) только наличием тождественных
соотношений |
X j — Xj = 0 (j = |
т + |
1, . . п ) . В дальнейшем |
|
м ы |
будем пользоваться и матричной записью уравнений 1п+1х + |
|||
+ |
A x n = а0, |
где |
|
|
|
х = [Хо, хи •••, хп], |
XN = |
[xm+i, ..., хп], |
и последние п — т строк матрицы А представляют собой тожде
ственные соотношения. Для удобства обозначения будем употреб лять J как символ множества небазисных переменных в любой
таблице. Форма и структура (И) будет использоваться как для описания исходноц задачи, так и для текущих таблиц.
Теперь дадим формальное описание прямого алгоритма.
Ш а г 0. Присоединить к исходной таблице строку (с индек сом L), в ы р а ж а ю щ у ю верхнюю границу суммы небазисных пере менных:
X £, -f~ |
X j |
« L 0 j |
Ш
где положительное целое число A lo выбирается так, чтобы выпол нялось х ь ^ О для любого целочисленного решения, удовлетво
ряющего остальным ограничениям. Перейти к шагу 1.
Ш а г |
1. Проверить условие оптимальности: |
|
|
|||||
• Если |
aoj ^ 0 |
для |
всех |
j 6 /, |
то |
текущее базисное решение |
||
оптимально и вычисления окончены. |
Иначе перейти к шагу |
2. |
||||||
Ш а г |
2. Выбрать |
ведущий |
столбец as, удовлетворяющий |
|||||
условиям |
afLs > |
0 и rs |
т} для |
всех |
j (=/=s) 6 / |
при a L] > |
0. |
|
Перейти |
к шагу |
3. |
|
|
|
|
|
|
Ш а г |
3. Выбрать |
производящую |
строку v из |
множества |
|
356 ГЛ. 17. ПРЯМОЙ АЛГОРИТМ
5) Поскольку ведущая строка добавляется перед преобразова нием, и сразу после преобразования вычеркивается, можно прямо представить переход от таблицы к таблице, как элементарное пре образование по столбцам, в котором ведущий столбец, умножае м ы й на целые числа, складывается с каждым столбцом, при этом целые множители получаются из текущей целочисленной ведущей строки. Элементарное преобразование по столбцам не может изме нить ранга-таблицы. Из (11) ясно, что столбцы в первой таблице линейно независимы и поэтому столбцы всех последующих таблиц должны быть также линейно независимыми. Соответственно гд ф гjдля любой пары столбцов ад и ау в любой таблице, посколь
ку равенство означало бы пропорциональность, а значит, линей ную зависимость столбцов ад и а Отсюда можно сделать вывод о том, что правило выбора ведущего столбца дает всегда однознач ный результат.
6) Для работы прямого алгоритма требуется, чтобы исходная таблица содержала допустимое базисное целочисленное решение; чтобы алгоритм работал эффективно, вероятно необходимо начи нать с «хорошего» (т. е. почти оптимального) базисного целочислен ного решения. Во многих прикладных задачах «хорошие» решения часто известны или их легко получить. Однако может оказаться трудным выразить целочисленное решение как базисное решение, например, когда это решение является внутренней точкой множе ства решений задачи (11). Отметим один полезный прием, который можно использовать при решении целочисленных задач.
Пусть |
требуется |
|
|
|
|
|
найти |
максимум |
|
|
|
|
|
|
|
|
Хо — |
2 dojX) |
|
|
при |
условиях |
|
|
|
|
|
|
|
|
IxB + |
D x w = |
d0, |
(14) |
|
|
хв , x N ^ 0 (целые), |
|
|||
где D |
и d0 состоят из целых элементов |
и d0 0. Пусть хв = £в |
||||
и x N |
= Ijy является целочисленным решением. Для |
того чтобы |
||||
превратить хв = |в, x N |
= |
в базисное допустимое целочислен |
||||
ное решение, поступим следующим образом. |
|
|||||
Вычислим другой |
целочисленный |
вектор-столбец |
dg: |
|||
|
|
|
d| = |
= 2 |
|
|
|
|
|
|
3 |
|
|
где d^ — вектор-столбец из D. Поскольку \ = (|в,|^) — допусти
мое целочисленное решение, получаем
0 <1 \в = d0— Blv = d0— dg,
откуда dg < d0.
|
17.2.ПРИМЕР |
|
357 |
|
Добавим к (14) dg и новую небазисную переменную |
х%. Расши |
|||
ренная задача |
выразится как |
|
|
|
|
хв + 2 СЬ'Х7 |
dg£g = |
d0, |
(15) |
|
i |
|
|
|
где j пробегает все значения N. |
|
|
|
|
Поскольку |
dg ^ d0, то при |
выборе |
dg в качестве ведущего |
столбца, преобразование будет переходным циклом х). Проведем один (переходный) цикл с dg в качестве ведущего
столбца.
Используем получившуюся таблицу как начальную в прямом
алгоритме. |
|
|
|
Если получено оптимальное решение хв, xiV, xg |
задачи (15), |
||
то его можно преобразовать в оптимальное |
решение |
хв , х% зада |
|
чи (14) подстановкой в (15): |
|
|
|
хв + 2 djXj+ dg£g = |
do, |
|
|
хв + 2 djXj-f-(2 dj^;)x% = |
d0, |
|
|
i |
3 |
|
|
xB + 2 |
dj(xj+ ifxg)= |
d0. |
|
i |
|
|
|
Итак, имеем |
|
|
|
x | = x B , |
xfr = xN + lNxi. |
|
Такой способ является прямым приложением идей, предложенных Бен-Израелем и Чарнесом [17].
17.2. Пример
Проиллюстрируем этот алгоритм при помощи примера. Произ водящая строка здесь будет выбираться при помощи правила 2, изложенного в § 17.1.
Рассмотрим задачу целочисленного программирования: максимизировать
х0 = Xi + х2 + хъ
при условиях
— Ах\ -j- 5^2 Ч- |
4 , |
— 2х^ —[—5х2 |
^5 , |
— 3 x j — 2 а :2 + 2 х 3 ^ 6 , |
|
2xt — 5 х 2 |
^ 1 , |
Xj^sO, целые.)* |
|
*) Имеется в виду, что полагая в (15) |
х в = d0, а остальные переменные |
равными нулю , мы получаем возможность сделать эффективный шаг прямого
алгоритма и получить лучш ее целочисленное базисное решение.— Прим,
ред.