Жолобов Ввведение в Математическое 2008
.pdfЧто собой представляет выпуклая линейная оболочкаDц* ?
Ее свойства можно определить из геометрической интерпретации (рис. 2.14).
x2 |
D |
|
Dц*
x1
Рис.2.14. Геометрическая интерпретация выпуклой линейной оболочки
Рассмотрим эти свойства подробно.
1. Множество целых точек выпуклой линейной оболочки Dц* сов-
падает с множеством Dц.
2. Dц* – выпуклый многогранник, имеющий целочисленные коор-
динаты всех вершин (целочисленный многогранник). 3. Любой оптимальный опорный план задачи:
n
cj xj max
j 1
x Dц*
x (x1 , x2 ,...xn )
является оптимальным решением ЛЦП-задачи (2.23)-(2.26). Таким образом, если удается построить выпуклую линейную
оболочку множества Dц , соответствующую задачу можно решить
обычным симплекс-методом и автоматически получить решение исходной ЛЦП-задачи (2.23)-(2.26). Однако даже для задач не-
271
большой размерности построение выпуклой линейной оболочки – чрезвычайно трудоемкий, сложный вычислительный процесс.
2.3.2. Идея методов отсечения
Предположим, что мы владеем эффективной процедурой построения последовательности задач линейного программирования: ЛП(0), ЛП(1),…, ЛП(k),… каждая из которых определяется своим множеством допустимых решений D(0), D(1),…, D(k),… и одной и той же целевой функцией.
То есть
|
n |
|
|
|
|
cj xj max |
|
||
ЛП(k) |
j 1 |
|
|
|
x D(k ) , x (x |
, x |
,..., x |
) |
|
|
1 |
2 |
n |
|
При этом |
последовательность задач ЛП(0), ЛП(1), …, |
ЛП(k),… обладает следующими свойствами:
1.D(0) D, т.е. в качестве D(0) принимается многогранное множество, определенное ограничениями (2.24) и (2.25) исходной ЛЦПзадачи;
2.Dц(k ) = Dц, (k=0,1,2,…), где Dц(k ) – множество целых точек из D(k),
Dц – допустимое множество исходной ЛЦП-задачи;
3. Если оптимальное решение x k задачи ЛП(k), полученное на ка-
ком-то шаге k , имеет целочисленные координаты, то x k – оптимальное решение исходной ЛЦП-задачи;
4. Если оптимальное решение x k задачи ЛП(k), полученное на каком-то шаге k , имеет не целые координаты, то x k – не является
допустимым решением задачи ЛП(k+1), т.е. x k D(k 1) . Интуитивно ясно, что последовательное построение задач
ЛП(0), ЛП(1), …, ЛП(k) – это, в некотором смысле, аппроксимация выпуклой линейной оболочки Dц* множествами D(k) (k=1,2,..).
Способы построения последовательности задач {ЛП(k)}, обеспечивающие конечность процесса решения исходной ЛЦПзадачи, были предложены американским математиком Р. Гомори.
272
Р. Гомори разработал три алгоритма:
для полностью целочисленных задач;
для частично-целочисленных задач;
для полностью целочисленных задач с использованием только операций сложения и умножения.
2.3.3. Правильное отсечение в алгоритме Гомори
Итак, в основу метода отсечения положено последовательное усечение исходного множества D с целью построения части выпуклой линейной оболочки в области максимума ЦФ.
В этой связи становится ясно, что любая задача ЛП(k+1) в последовательности задач {ЛП(k)} отличается от задачи ЛП(k) некоторым ограничением, которое должно обладать соответствующими свойствами.
Рассмотрим две эти задачи (рис. 2.15).
|
n |
|
n |
|
|
|
|||
|
cj xj max |
|
cj xj max |
|
|
|
|||
|
j 1 |
|
j 1 |
|
|
|
|||
|
|
|
|
|
|||||
|
x Dц* |
|
|
|
x D* |
|
Dk+1 |
|
|
|
|
|
|
|
|
ц |
|
|
|
|
|
|
|
j xj |
|
|
|
||
|
|
|
|
|
|||||
|
ЛП(k) |
|
j |
1,n |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ЛП(k+1) |
|
|
|
|
Рис. 2.15 Две задачи |
|
|
||||||
Ограничение |
|
|
|
|
|
|
|
||
|
|
j xj |
(2.27) |
||||||
|
j 1,n |
|
|
|
|
|
|
|
называется правильным отсечением, если это ограничение удовлетворяет следующим требованиям:
1. Пусть x* (x* , x* ,..., x* ) – оптимальное решение |
задачи ЛП(k), |
||
1 2 |
n |
|
|
имеющее не целые координаты. Тогда j x*j |
, |
т.е., ограниче- |
j 1,n
ние (2.27) не выполняется (условие отсечения); 273
2. |
Пусть x0 (x0 |
, x0 |
,..., x0 ) – любое целочисленное решение задачи |
|
|
1 |
2 |
|
n |
ЛП(k). Тогда: j x0j |
, т.е., ограничение (2.27) выполняется |
j 1,n
(условие правильности).
Линейный вид ограничения (2.27) позволяет использовать методы ЛП.
Как по решению задачи ЛП(k) построить ограничение – правильное отсечение для того, чтобы сформировать новую задачу последовательности ЛП(k+1)?
Предварительно нужно строго определить целую и дробную часть числа.
Целую часть произвольного вещественного числа обозначим [ ]:
[ ] – наибольшее целое число, не превосходящее . Дробной частью произвольного вещественного числа на-
зывается число { }: { }= - [ ].
Пример 2.14
{7/3}=1/3, {-7/3}=2/3.
Решим задачу ЛП(0) – исходную задачу (2.23)-(2.25), игнорируя требование целочисленности (2.26).
Пусть x (x1, x2 ,..., xn ) – оптимальное решение этой задачи.
Пусть далее для определенности:
{1,2,..., m} – номера базисных переменных;
{m 1, m 2,..., n} – номера свободных переменных. Если все координаты решения x (x1, x2 ,..., xn ) – целые, то по-
лучено оптимальное решение исходной ЛЦП-задачи. В противном случае решение нужно продолжить.
Рассмотрим оптимальную симплекс-таблицу решенной зада-
чи (рис. 2.16).
274
|
x10 |
1* x1 |
... 0 * xm x1,m 1 |
* xm 1 |
... x1,n * xn |
||||
|
x20 |
0 * x1 |
... 0 * xm x2,m 1 |
* xm 1 |
... x2,n * xn |
||||
|
xm0 |
0 * x1 |
... 1* xm xm,m 1 |
* xm 1 |
... xm,n * xn |
||||
………………………………………………………………. |
|||||||||
|
|
|
|
|
|||||
|
Разложение базисных |
|
|
Разложение свободных |
|
||||
|
|
переменных |
|
|
переменных |
|
|||
|
|
симплекс |
|
|
|||||
|
Рис.2.16. Оптимальная |
-таблица как задача ЛП |
|||||||
Пусть l – индекс некоторой нецелой координаты: |
|||||||||
|
|
|
l {1,2,...,m}. |
|
|
||||
Выпишем |
l-е уравнение (l-я строка симплекс-таблицы): |
||||||||
|
|
xl 0 xl xlj x j , |
(l ) . |
(2.28) |
|||||
|
|
|
j |
|
|
|
А теперь рассмотрим следующее выражение:
{xl 0 } yl ( {xlj }x j ) , где yl – некоторая переменная:
j
yl {xl 0 } {xlj }x j . |
(2.29) |
j |
|
Относительно этого выражения справедлива следующая тео-
рема.
ТЕОРЕМА 2.2 (о правильном отсечении)
Если x (x1, x2 , ... , xn ) – любое целочисленное решение (не
обязательно опорное) задачи (2.23)-(2.26), т.е. допустимое решение ЛЦП-задачи, то:
yl 0, yl |
– целое число. |
|
Доказательство. Перепишем (2.28): |
|
|
xl xl 0 xlj x j . |
||
|
j |
{xlj }x j , |
xl [ xl 0 ] {xl 0 } [ xlj ]x j |
||
|
j |
j |
xl [xl 0 ] [ xlj ]x j |
{xl 0 } {xlj }x j yl . |
|
j |
j |
Но xl и xj – целые, т.е. правая часть – целое число. Следовательно, и левая часть – также целое число.
275
Пусть теперь yl < 0 (от противного). То есть
{xl 0 } {xlj }x j 0 .
|
|
|
j |
|
Но {xl 0} 1 , |
а |
{xlj } 0 |
и |
xj 0 . Значит, имеет место |
1 {xl 0 } {xlj }x j |
0 , |
чего |
не |
может быть, так как |
j |
|
|
|
|
{xl 0 } {xlj }x j – целое число. |
Полученное противоречие гово- |
|||
j |
|
|
|
|
рит о неправомерности предположения о том, что yl < 0. Теорема доказана.
Следствие
Любое оптимальное опорное решение x (x1, x2 ,..., xn ) ЛПзадачи (2.23)-(2.25), имеющее нецелую координату xl , не удовлетворяет условию:
|
|
|
yl {xl 0} {xlj }xj |
(2.30) |
|
j |
|
|
yl 0 |
|
|
|
|
Доказательство. Действительно, если xl – не целое, то по определению {xl 0} 0 . Но все свободные переменные в опорном решении имеют нулевое значение. То есть yl {xl0} 0 . Следователь-
но, ограничение (2.30) не выполняется, что и требовалось доказать. Итак, по решению некоторой задачи можно построить пра-
вильное отсечение.
2.3.4.Первый алгоритм Гомори
Всоответствии с общей схемой метода отсечения будем строить последовательность ЛП-задач:
ЛП(0), ЛП(1),…, ЛП(k),…
Переменную yl, которая определяется дополнительным ограничением (2.30) и строится по некоторой нецелой координате оп-
тимального опорного решения задачи ЛП(k), обозначим xn k 1
(считаем, что ЛП(0) – исходная задача без требования целочисленности переменных).
Через k обозначим множество номеров свободных переменных в оптимальном опорном решении задачи ЛП(k).
276
Шаг 0. Положим k=0 и решим задачу ЛП(k).
Шаг 1. Если все базисные переменные оптимального решения – целые, то исходная ЛЦП-задача решена. Конец.
Если задача не имеет решения, то и исходная ЛЦП-задача также не имеет решения. Конец.
Шаг 2. Среди нецелых координат xi0 выбирается любая координата (обычно – с максимальной дробной частью) . Пусть это будет xl0 .
Шаг 3. По координате xl 0 строится дополнительное ограничение:
|
xn k 1 {xl 0 } {xlj }x j , |
(2.31) |
|
j k |
|
где xn k 1 |
– дополнительная переменная, k – множество номеров |
свободных переменных в оптимальном опорном решения задачи ЛП(k). Ограничение (2.31) вносится в состав ограничений задачи ЛП(k): таким образом, формируется задача ЛП(k+1).
Формально, введение дополнительного ограничения – это дополнение симплекс-таблицы новой строкой
{xl 0} xn k 1 ( {xlj })x j
j k
и одним столбцом – единичным вектором An k 1 с единицей в позиции, соответствующей новой строке (рис. 2.17).
Баз |
Сбаз |
|
с1 |
с2 |
…… |
cl |
…… |
|
0 |
А0 |
А1 |
А2 |
|
Аl |
|
|
Аn+k+1 |
||
|
|
……………………………………………………………….. |
|
||||||
Аl |
cl |
xl0 |
xl1 |
xl2 |
…… |
1 |
…… |
|
0 |
|
|
……………………………………………………………….. |
|
||||||
Аn+k+1 |
0 |
-{xl0} |
-{xl1} |
-{xl2} |
… |
|
… |
|
1 |
|
|
|
0 |
0 |
|
0 |
|
|
0 |
|
|
|
Рис.2.17. |
Новая |
симплекс- |
таблица |
|
|
|
277
В новой задаче переменными являются (рис. 2.18): x1, x2, …,xn, xn+1, x2, …,xn+k, xn+k+1
ЛП(0)
ЛП(k)
ЛП(k+1)
Рис.2.18. Переменные полученной задачи
Что теперь записано в симплекс-таблице?
Оценки не изменились – все они неотрицательные (имеем оптимальное решение ЛП(k) и одну нулевую оценку введенного вектора
An+k+1 ).
Но в разложении вектора A0 появилась отрицательная координата.
Следовательно, в симплекс-таблице записан псевдоплан задачи ЛП(k+1)
Шаг 4. Применяем двойственный симплекс-метод для решения
задачи ЛП(k+1). Очевидно, что на первой итерации вектор An+k+1 выйдет из состава базисных векторов, так как ему соответствует
единственная отрицательная координата ПДО-решения. Решаем задачу до конца. Принимаем k=k+1 и переходим к шагу 1.
Хотя это интуитивно ясно, существует доказательство конечности рассмотренного метода: за конечное число шагов будет найдено целочисленное решение задачи ЛЦП, либо будет установлена неразрешимость этой задачи.
278
Пример 2.15
Исходная задача |
|
|
|
|
|
|
Задача ЛП(0) |
||||
x1+2x2 max |
|
|
|
|
|
x1+2x2 max |
|||||
2x1+ x2 8 |
|
Приведение к |
|
2x1+ x2 + x3 = 8 |
|||||||
x2 , |
|
|
|
x2 |
+ x4 = 3 |
||||||
|
|
|
|
|
|
||||||
x1,2 0 |
|
|
|
|
|
|
x1,2,3,4 0 |
||||
x1,2 – целые |
|
|
|
|
|
|
x1,2,3,4 |
– целые |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
Баз |
Cбаз |
|
|
1 |
2 |
|
0 |
|
0 |
|
|
|
A0 |
A1 |
A2 |
|
A3 |
|
A4 |
|||
|
|
|
|
|
|
||||||
|
A3 |
0 |
|
8 |
2 |
1 |
|
1 |
|
0 |
|
|
A4 |
0 |
|
3 |
0 |
1 |
|
0 |
|
1 |
|
|
Tабл. 1 |
|
|
0 |
-1 |
-2 |
|
0 |
|
0 |
|
|
A3 |
0 |
|
5 |
2 |
0 |
|
1 |
|
-1 |
|
|
A2 |
2 |
|
3 |
0 |
1 |
|
0 |
|
1 |
|
|
Табл.2 |
|
|
6 |
-1 |
0 |
|
0 |
|
2 |
|
|
A1 |
1 |
|
5/2 |
1 |
0 |
|
1/2 |
|
-1/2 |
|
|
A2 |
2 |
3 |
0 |
1 |
0 |
|
1 |
|
||
|
Табл.3 |
|
17/2 |
0 |
0 |
1/2 |
|
3/2 |
|
По первой координате (не целой) строим дополнительное ограничение, вводим в состав базисных векторов вектор A5 и заполняем сим- плекс-таблицу для задачи ЛП(1):
|
|
Баз |
|
Cбаз |
|
|
|
1 |
2 |
0 |
|
0 |
|
|
0 |
||||
|
|
|
|
|
A0 |
|
A1 |
|
A2 |
|
A3 |
A4 |
|
A5 |
|||||
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
A1 |
|
1 |
|
5/2 |
1 |
0 |
1/2 |
|
-1/2 |
|
0 |
||||||
|
|
A2 |
|
2 |
|
3 |
0 |
1 |
0 |
|
1 |
|
|
0 |
|||||
|
|
A5 |
|
0 |
|
-1/2 |
0 |
0 |
-1/2 |
|
-1/2 |
|
1 |
||||||
|
Tабл. 1 |
|
|
|
17/2 |
0 |
0 |
1/2 |
|
3/2 |
|
0 |
|||||||
Применяем двойственный симплекс-метод: |
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Баз |
Cбаз |
|
|
|
1 |
|
2 |
|
0 |
|
0 |
|
0 |
|
|||
|
|
|
A0 |
|
A1 |
|
A2 |
|
A3 |
|
A4 |
|
A5 |
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
A1 |
1 |
|
|
2 |
|
1 |
|
0 |
|
0 |
|
-1 |
|
1 |
|
||
|
|
A2 |
2 |
|
|
3 |
|
0 |
|
1 |
|
0 |
|
1 |
|
0 |
|
||
|
|
A3 |
0 |
|
|
1 |
|
0 |
|
0 |
|
1 |
|
1 |
|
-2 |
|
||
|
|
Табл.2 |
|
|
|
8 |
|
0 |
|
0 |
|
0 |
|
1 |
|
1 |
|
Имеем целочисленное решение:
279
Геометрическая интерпретация
|
|
|
|
x1+2x2 max |
|
|
|
||||
|
|
|
|
2x1+ x2 |
+ x3 |
= 8 |
|
|
|
||
|
|
|
|
x2 |
+ x4 = 3 |
|
|
|
|||
|
|
|
|
x1,2,3,4 0 |
|
|
|
|
|||
|
|
|
|
x1,2,3,4 |
– целые. |
|
|
|
|||
|
Выразим переменные x3 |
и |
x4 |
через x1 |
и x1: |
|
|
||||
x3 |
= 8 - 2x1 - x2 |
Т.к. x3 , x4 0 |
|
2x1+ x2 8 |
|
||||||
x4 |
= 3 - x2 |
|
|
x2 3. |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
2 |
0 |
0 |
0 |
Баз |
Cбаз |
A0 |
|
A1 |
|
A2 |
A3 |
A4 |
A5 |
||
A1 |
1 |
5/2 |
|
1 |
|
|
0 |
1/2 |
-1/2 |
0 |
|
A2 |
2 |
3 |
|
0 |
|
|
1 |
0 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
A5 |
0 |
-1/2 |
|
0 |
|
|
0 |
-1/2 |
-1/2 |
1 |
|
Tабл. 1 |
|
17/2 |
|
0 |
|
|
0 |
1/2 |
3/2 |
0 |
При введении дополнительного ограничения мы пользовались выражением:
yi {xi 0 } ( {xij })xj
j
В нашем случае это
x5 = -1/2 –(-1/2 x3) –(-1/2 x4) = -1/2+1/2 x3 +1/2 x4.
Ввиду того, что на переменную x5 наложено требованиенеотрицательности (x5 0), дополнительное ограничение можно переписать так:
1/2 x3 +1/2 x4 1/2 или x3 + x4 1.
Но x3 = 8 - 2x1 - x2 и x4 = 3 - x2. Следовательно
8 - 2x1 - x2 + 3 - x2 1 2x1 + 2x2 10 x1 + x2 5
Итак, задача ЛП(1) имеет вид (рис. 2.19):
280