Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Жолобов Ввведение в Математическое 2008

.pdf
Скачиваний:
294
Добавлен:
16.08.2013
Размер:
2.42 Mб
Скачать

Что собой представляет выпуклая линейная оболочка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