Файл: Ху, Т. Целочисленное программирование и потоки в сетях.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 15.10.2024
Просмотров: 230
Скачиваний: 0
13.4. СВОЙСТВА ДОПОЛНИТЕЛЬНЫХ НЕРАВЕНСТВ |
299 |
На основании приведенных рассуждений можно сделать сле дующий вывод: если все коэффициенты в исходной таблице неотри цательные целые, то коэффициенты отсечений Гомори, выражен ных через исходные небазисные переменные, есть также неотри цательные целые числа.
Пусть получено оптимальное решение линейной программы и tj — небазисные переменные для текущего базиса. Из условия двойственной допустимости следует, что в уравнении
х 0 = «00 “Г 2 « о j ( t j )
коэффициенты a0j ^ 0. Кроме того, tj ^ 0. Если рассмотреть -пространство, как показано на рис. 13.3, то целевая функция является опорной гиперплоскостью положительного ортанта, достигающей максимума в начале координат (tj = 0). Любая точка внутри положительного ортанта соответствует положи
тельным значениям tj, а значит, уменьшает значение х0. Гиперплоскость
« = — /о + 2 М - = ° .
при tj ^ 0 является гиперплоскостью, рассекающей положи
тельный ортант на две части, одной из которых принадлежит начало координат. Эта гиперплоскость параллельна гиперплоско
сти s' = 2 f}tu которая является опорной к положительному
ортанту в начале координат. Было показано, что s представляет
собой целочисленную |
комбинацию исходных переменных: |
|
|||||||
|
|
s — п' + 2 |
nixi — —/о+ 2 |
/А'- |
|
|
(^а) |
||
Текущее |
решение |
tj = |
0 дает целочисленной форме п + |
2 nixi |
|||||
нецелое |
значение |
—/„. Поэтому опорная |
гиперплоскость |
s' = |
|||||
= 2 fflj |
= 0 может |
быть |
перемещена внутрь положительного |
||||||
ортанта. |
|
|
|
|
|
|
|
|
|
Можно взглянуть на отсекающую гиперплоскость и по-друго |
|||||||||
му, |
рассмотрев пространство tj (/ = 1 , . |
. ., га) |
и s в качестве |
||||||
(п + |
1)-й координаты, |
как показано на рис. 13.4. |
Тогда уравне |
||||||
ние (6 а) описывает гиперплоскость Hi в |
пространстве |
tj |
ф s. |
||||||
Уравнение |
|
|
|
|
|
|
|
||
|
|
|
|
о = - / о + 2 / л |
|
|
|
(6б) |
задает пересечение гиперплоскости Hi с s == 0. Гиперплоскость Н г, являющаяся этим пересечением, отсекает начало координат в ^-пространстве.
После того как отсечено начало координат, представляющее собой оптимальную вершину, вводится другая координатная система. Эта система использует новые небазисные переменные в качестве координатных осей, а оптимальное решение задачи линейного программирования лежит в начале новых координат.
ГЛАВА 14
ПОЛНОСТЬЮ ЦЕЛОЧИСЛЕННЫЙ АЛГОРИТМ
14.1.Полностью целочисленный алгоритм (Гомори [80])
Внастоящем параграфе будет описан другой алгоритм для решения задач целочисленного программирования. Этот алгоритм назван полностью целочисленным, потому что если исходная таблица состоит из целочисленных элементов, то все таблицы, получающиеся в процессе работы алгоритма, содержат только целочисленные элементы. Подобно двойственному симплекс-мето ду, алгоритм начинает работать с двойственно допустимой таблицы.
Если ai0 (i |
= 1, . . ., п + т) — неотрицательные целые, то зада |
ча решена. |
Если для какой-нибудь строки ai0 <; 0, то составляется |
новое уравнение и записывается внизу таблицы. Эта строка затем служит ведущей. После этого используется двойственный сим плекс-метод. Все элементы дополнительной строки должны быть целыми числами, а ведущий элемент равен —1. Введенная таким образом ведущая строка сохранит таблицу целочисленной. Заме тим, что в предыдущем алгоритме в качестве производящей строки выбиралась строка с нецелым ai0. В данном случае производящей строкой становится строка с отрицательным ai0.
Пусть дана задача целочисленного линейного программи рования:
максимизировать
|
|
|
71 |
|
|
Xq— а0о + |
2 аоз ( —xj) |
||
при условиях |
|
3 = 1 |
|
|
|
|
|
|
|
Bi = — 1 ( —я * )> 0 , |
|
|||
Хп — |
1 ( |
Я-п) |
0* |
|
|
|
п |
|
( 1 ) |
|
#71+1, о + |
2 |
|
|
% T l+ i = |
а П + 1 , } ( ---^ ) > 0 , |
|||
|
|
3= 1 |
|
|
. |
|
п |
|
|
Я-п+т ~ |
О'п+т, 0 4 ~ 2 |
® n+m , j ( — |
3Cj)^-0. |
|
|
|
5 = 1 |
|
|
Условия (1) могут быть записаны как |
|
|||
|
х' = |
А‘ ( —х^). |
(2) |
302 |
14. ПОЛНОСТЬЮ ЦЕЛОЧИСЛЕННЫЙ АЛГОРИТМ |
Целочисленная слабая переменная s является неотрицатель ной. Действительно, если бы s было отрицательным, т. е. прини мало значения —1 , —2 , . . ., то умножение на X (X > г0) сделало
бы всю правую часть уравнения (7) отрицательной, в то время как левая часть неотрицательна.
Рассмотрим два случая Х— 1 и |
1. Для Х = 1 |
= [аД |
=Подставляя в уравнение (8 ) выражение для х из (4),
получим
s = [ « о ! + 2 [ « Л ( — х\ ) — ( « о + 2 a-i ( — ^ ) } = — / о — 2 — |
( 9 ) |
||
Полученное уравнение есть не что иное, как отсечение |
Гомори, |
||
полученное в § 13.1. Для ?1 > 1 |
имеем |
и УРавнение (8 ) |
|
приобретает вид |
|
|
|
- [ * ] + 2 |
[*]<-*}>■ |
|
( 10) |
Уравнение |
(10) должно выполняться для любого допустимого |
|||
целочисленного |
решения задачи |
(1). Заметим, что если |
а0 < 0Г |
|
то [aJX\ < |
0 в |
уравнении (10). |
Поэтому уравнение (10) |
может |
использоваться в качестве ведущей строки в двойственном сим плекс-методе. В частности, всегда можно выбрать X достаточно большим, так чтобы ведущий элемент [a,jlX\ в строке (10) стал равным —1 , что позволит сохранить целочисленность таблицы.
Выбор соответствующего X будет влиять на скорость сходимости алгоритма. Прежде всего опишем сам алгоритм. В качестве началь ного необходимо взять двойственно допустимое решение, которое можно получить добавлением ограничения xn+m+i = М — xt — . . .
. . . — хп ^ 0, где М — достаточно большая константа, и про ведением одной итерации с добавленной строкой и с лексикогра фически минимальным столбцом, взятыми в качестве ведущих. Алгоритм состоит из следующих шагов.
Ш а г 0. Начать с двойственно допустимой матрицы А 0 в урав нении (2 ), элементы которой — целые числа (как будет видно'
из дальнейшего, матрица А° может содержать и нецелые элементы).
Ш а г 1. Среди строк с ai0 < 0 (г = 1, . . ., п + т) выбрать строку с наименьшим значением i; эта строка станет производя щей. (Если ai0 ^ 0 (i = 1, . . ., п + т), то задача решена.)
г) Если X > 1, то для получения отсечения (10) из (4) требуется только неотрицательность левой части уравнения (4). Следовательно, любая поло жительная линейная комбинация строк таблицы может служить произво дящей строкой.