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

Lektsii_po_teorii_lineynogo_programmirovania

.pdf
Скачиваний:
28
Добавлен:
18.03.2015
Размер:
515.7 Кб
Скачать

7. Алгоритм симплекс-метода решения задачи линейного программирования

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

x1+ x2+2x3+3x4

+6x6 =9

x2+ x3+ x4

+ x6 =3

x3+ x4 - x5 +2x6 =1

x4

+ x6 =1

j =1,6 xj 0

x1 + x2 +... + x6 max ?

В нашем примере

Зк: argmax <c,x>=?, Ax=b, x 0, x Rn, b Rm . n=6, m=4, c=(1,1,…,1) Т R6, b=(9,3,1,1)T R4 ,

1

1

2

3

0

6

 

0

1

1

1

0

1

 

 

 

A =

0

0

1

1

1

2

 

 

 

 

0

0

0

1

0

1

 

 

 

Дано: точка xкр =(1,2,0,0,1,1)Т является крайней

для этой задачи.

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

31

Берем из матрицы А столбцы, соответствующие ненулевым координатам заданной крайней точки:

а1 = (1,0,0,0)Т , а2 = (1,1,0,0)Т , а5 = (0,0,1,0)Т , а6 = (6,1,2,1)Т

Они линейно независимы и образуют базис в R 4 (если Зк невырожденная, то это является необходимым следствием невырожденности). Составим квадратную матрицу из этих столбцов - базисную матрицу.

 

1

1

0

6

 

 

 

0

1

0

1

 

 

 

 

и вычислим

Abasic Ab =

0

0

1

2

 

 

 

 

 

0

0

0

1

 

 

 

 

 

 

 

1

1

0

5

 

 

 

0

1

0

1

 

-1

 

 

Ab

=

0

0

1

2

.

 

 

 

 

 

0

0

0

1

 

 

 

 

После этого вычисляем матрицу A b1 (b,A). Заметим, что A b1 b= xкр,b ( xкр,b обозначает вектор

xkp, из которого убраны нулевые координаты):

1

1

0

5

 

9

 

1

 

0

1

0

1

 

 

3

 

 

2

 

 

 

 

 

 

 

 

0

0

1 2

 

×

1

 

=

1

 

 

 

 

 

 

 

 

0

0

0

1

 

 

1

 

 

1

 

 

 

 

 

 

 

Задача. Почему так получается? (Решение смотрите в доказательстве теоремы 12, вариант (с)).

Обозначим A b1 A=Q =( x1 , x2 , x3 , x4 , x5 , x6 )Т. Очевидно, ( x1 , x2 , x5 , x6 )=I 4 .

32

Для большей наглядности объяснений удобно расположить вычисления в виде следующей таблицы.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 1.

 

 

 

Первоначальная запись условий задачи

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сТ

 

 

1

 

1

1

1

 

1

1

 

 

 

 

 

c b

 

b

a1

 

a 2

a 3

a 4

 

a 5

а6

 

t

 

a1

 

1

 

1

1

 

0

1

-3

 

0

0

 

 

 

a 2

 

1

 

2

0

 

1

1

0

 

0

0

 

 

 

a 5

 

1

 

1

0

 

0

-1

1

 

1

0

 

1

I 0 = 5

a 6

 

1

 

1

0

 

0

0

1

 

0

1

 

1

 

z

 

 

 

5

1

 

1

1

-1

 

1

1

 

 

 

 

 

 

 

0

 

0

0

-2

 

0

0

 

 

 

 

 

 

 

 

 

 

 

 

j 0 = 4

 

 

 

 

 

сb

получилось

из вектора

с

удалением

координат с

номерами, которым соответствуют нулевые координаты

в векторе xкр .

Под вектором b в четырех клетках стоит

вектор xкр,b . Мы выделили рамкой матрицуxкр,b .

 

 

 

z j ≡< cb , x j >, j=

 

, x 0 xкр,b .

 

 

 

0,6

В столбцах

под векторами b, а j , j =

 

 

стоят вектора

1,6

x j (j=

 

),

координаты которых есть

коэффициенты

0,6

разложений b, а j по выбранному базису а1 , а2 , а5 , а6 .

j z j c j ,

j =

 

.

 

1,6

 

Алгоритм решения задачи следующий.

Для заполнения клеток последнего столбца таблицы (под t) мы принимаем следующее альтернативное решение:

(а) Если j =1,6 j 0, то считаем вычисления

оконченными, задачу решенной с ответом

33

xкр = arg max < c, x >,

Ax = b,

x 0.

(b) Если j0 с j0 < 0

и x j0

0, то считаем

вычисления оконченными, а задачу не имеющей решения, S(b) = +∞

(с)

Если есть j

,..., j

s

< 0 ,

для

которых у

 

 

 

1

 

 

 

 

 

 

 

 

 

 

каждого

вектора

x j1 ,..., x js есть

положительные

координаты,

то

среди

этих

 

j

,..., j

s

 

 

берем

 

 

j0

 

 

 

 

1

 

 

 

 

 

 

минимальное

(если

минимальных несколько, то

любое из них). В векторе

x j0

для

всех

 

его

положительных координат

x j0 >0 составляем

t

j

=

xi

,

 

 

 

 

 

j

 

 

 

 

 

 

 

x j0

где xi - это i тая координата вектора xкр,b .

 

 

 

 

 

i

 

 

 

 

 

 

 

Записываем ti в соответствующие клетки крайнего

правого столбца. Выбираем i0 с наименьшим ti0

 

(если

минимальных несколько, то любое их них).

Внаборе базисных векторов (a1,a2 ,a5 ,a6 )

заменяем вектор ai0 (у нас - a5 ) на вектор a j0 (у нас -

a4 ) и составляем заново таблицу.

Так поступаем до тех пор, пока новая таблица не приведет к вариантам (a) или (b) и процесс решения закончится.

В нашем примере новая таблица имеет вид:

34

Таблица 2.

Результат пересчета по варианту (с)

 

c Т

 

1

1

1

1

1

1

 

 

 

t

 

cв

b

a1

a2

a3

a4

a5

a6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a1

1

10

1

0

0

0

3

0

 

 

 

 

a2

1

2

0

1

1

0

0

0

 

 

 

 

a4

1

1

0

0

-1

1

1

0

 

 

 

 

a6

1

0

0

0

1

0

-1

1

 

 

 

 

z

 

13

1

1

1

1

3

1

 

 

 

 

 

 

0

0

0

0

2

0

 

 

 

 

 

Получили вариант (a): все j 0,

j =

 

.

 

 

1,6

 

Ответ: arg max Зk=(10,2,0,1,0,1); S(b)=13.

35

8. Обоснование алгоритма симплекс-метода

Мы дадим обоснование симплекс-метода для невырожденных задач.

Симплекс-метод может приводить к решению и вырожденные задачи, но не всегда. Применение алгоритма к вырожденной задаче может зациклиться. На каком-то шаге при пересчете таблицы, дающем новую крайнюю точку (xкр' вместе xкр), получится <c, xкр> = <c, xкр'>. То есть алгоритм симплекс-метода перескакивает с одной вершины многогранника области определения на другую, оставаясь на той же самой поверхности уровня функции <c,x>.

Но, во-первых, в практических задачах это встречается очень редко. А, во-вторых, трудность может быть преодолена специальным приемом расцикливания

– ухода с поверхности {x |< c, x >= const}.

Теорема 13. Дана невырожденная каноническая задача и

одна из ее крайних точек x

кр

= (x ,..., x

m

,0,...0) Rn

 

 

 

1

 

 

j =

 

xj > 0 (переименованием

координат, мы

1, m

ставим ненулевые координаты на первые места). Тогда применение алгоритма симплекс-метода решает задачу за конечное число шагов.

Доказательство:

Пусть мы пришли к варианту (а).

По теореме 6

det A 0,

A1. Рассмотрим yT = cT A1 ,

 

 

 

b

b

 

b b

то

 

есть

cT

= yT AT .

Имеем,

 

 

 

 

b

b

 

zT

= cT Q = cT

A1 A = yT A = (AT y)T .

Значит,

 

b

b

b

 

 

 

0 ≤ ∆ = z c = AT y c .

Это означает, что

AT y c , то

 

 

 

 

36

 

 

есть y

- допустимый элемент двойственной задачи.

Кроме

того,

Ab xкр,b = A xкр = b

и

поэтому

< y,b >= cbT Ab1 b =< cb , Ab1 b >=< cb , xкр,b >=< c, xкр >

.

По критерию существования решения – теореме

10, xкр является решением задачи Зк,

а

 

y = Ab1T cb

-

решением сопряженной задачи (Зк)*.

 

 

 

 

 

Пусть мы пришли к варианту (b).

 

 

 

 

 

 

Положим

x(t) = xкр t(x j0 ,0)+ t e j0 .

Здесь(x j0 ,0)

-

это x j0

Rm ; дополненное нулями,

поставленными на те

места,

координаты которых равны нулю в xкр, e j0

- орт

j0 - оси.

 

x(t) 0

для

всех

t 0.

Кроме

того,

Ax(t) = A x

kp,b

tA x j0

+tAe j0

=b ta j0

+ta j0 =b . То есть x(t)

 

b

b

 

 

 

 

 

 

 

 

 

 

– допустимый элемент для всех t 0 . При этом

 

 

 

 

j0

,0)

j0

>=<c,xкр

>−t <cв,x

j0

>+tcj

=

 

<c,x(t )>=<c,xкр t(x

+te

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

=<c,xкр >−tzj +tcj =<c,xкр >−tj →+∞ при

t →+∞.

 

 

 

 

0

0

 

 

0

 

 

 

 

 

 

 

Рассмотрим вариант (c).

Покажем, что после перестройки таблицы в столбце «b» появляются ненулевые координаты новой крайней точки xкр,b , с которой функция <c, x >

принимает большее чем прежде значение,

< c, xkp >< < c, xkp' >.

Так как множество всех крайних точек конечно, то

неравенство

c, xкр <

означает, что за конечное

c, xкр

число шагов мы дойдем до последней – решения задачи.

37

Ax =b для любого допустимого вектора x D Зл , а если x имеет (n m) нулевых координат; x = (xb ,0) -

возможно, с переменной индексов координат, то b = Ax = Ab xb .

Для заданной с самого начала крайней точки xкр,b > 0 (невырожденность задачи) по теореме 6

det Ab 0 . Уравнение Ab1a j = x j означает, разложение

векторов a j в выбранном базисе (a j )m

A

= A1x

кр,b

 

j =1

b

b

однозначно выражает

xкр,b через b

 

формулой

xкр,b = Ab1b . (Это ответ на вопрос задачи, поставленный

выше – на стр. 32).

Проведем вычисление координат нового вектора xчерез координаты прежнего вектора x (для краткости опускаем индекс кр.)

Основой перестраивания таблицы является замена

в первоначально выбранном базисе {a j }mj =1 вектора ai0 на вектор a j0 . Чтобы показать, что система векторов

{a j }mj =1 a j0

снова образует базис в пространстве Rm

j i0

 

 

 

 

используем

известный

из

алгебры

результат:

необходимое и достаточное условие линейной

независимости

k

векторов

{y1,..., yk }

есть

невырожденность их матрицы Грамма

 

 

 

Γ ≡ Γ(y1,..., yk )= (< ys , yt >)

 

,

det Γ ≠ 0.

 

 

 

 

 

s,t =1,k

 

 

 

 

 

 

 

 

m

 

Мы знаем, что det Γ(a1,...,am ) 0,

a j0

= x jj0 a j .

 

j=1

Рассмотрим Γ′ ≡ Γ(a1,..ai0 1,ai0 +1,..,am ,a j0 ).

38

 

 

 

 

 

 

 

(as ,at )s,t=

 

 

 

 

 

 

 

 

 

 

 

(as ,a j0

 

)s=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1,m

 

 

 

 

 

 

 

1,m

 

 

 

 

 

 

 

 

 

 

det Γ′ = det

 

 

 

 

 

 

s,ti0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=

 

 

 

 

 

 

 

 

 

 

 

 

 

(a j0 ,at

 

)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a j0 ,a j0

 

si0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t=1,m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

1,m

 

 

 

 

 

 

 

 

 

 

 

 

s,t=

1,m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x j0

 

as ,a j

 

 

 

 

 

 

 

 

 

 

 

(as ,at )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s,ti

 

 

 

 

 

 

 

 

 

 

 

 

j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j=1

 

 

 

 

 

 

 

 

si0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= det

 

m

x j0 ai ,at

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

x j0

 

m

x j0 ai

 

 

 

 

 

 

 

 

=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,a j

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i=1

 

 

 

 

 

 

 

t=1,m

 

 

j=1

 

 

 

i=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(as , at )s,t=

 

 

 

 

 

 

 

 

 

 

 

 

 

(xij0 (as , ai0 ))s=

 

 

 

 

 

 

 

 

1,m

 

 

 

 

 

 

 

 

 

 

 

 

1,m

 

 

= det

 

 

 

 

 

s,ti0

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

si0

=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xi

j0

i

, a

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j0

 

 

 

j0

a

i

, a

j0

 

 

 

 

 

 

 

a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xi

 

xi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t=

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1,m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(as , at )s,t=

 

 

 

 

 

 

 

 

(as , ai0 )s=

 

 

 

 

 

 

 

 

j

 

 

 

1,m

 

 

 

 

 

1,m

 

 

 

 

= xi0

 

det

 

 

 

 

 

 

 

 

s,t0

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

=

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

si

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(xij0 ai0 , at

)

 

 

 

 

 

 

 

 

 

 

x j0 ai0 , ai0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

t=1,m

 

 

 

 

i0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= (x j0 )2 det(as ,at )

 

 

 

 

 

 

 

 

 

 

 

 

 

=

(x j0

)2 det Γ ≠ 0.

 

 

 

 

i0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s,t =1,m

 

 

i0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Итак, {a

j

}

 

 

 

 

a

j

0

- новый базис

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j =1,m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j i0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

b = Ab x = x j a j - переразложим в новом базисе

j =1

39

j

j0

j

j0

j

j0

j0

i0

b= xja

+xj

a

=xja

+xj

xj

a

= (xj

+xj

xj

)aj +xj

xi

a .

ji

 

0

 

ji

 

01jm

 

ji

0

 

0

0

 

0

 

 

 

0

 

 

 

 

0

 

 

 

 

 

1jm

 

 

 

1jm

 

 

 

 

1jm

 

 

 

b

 

Теперь

получили

два

разложения

вектора

по

одному и тому же базису {ai }mj =1 . Значит, координаты

должны совпадать.

 

 

 

(j = i0 )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xi0

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= xj0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x j =

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

(j i0 )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j0

 

 

 

 

 

 

 

 

 

 

 

 

= xj + xj0

xi0

 

 

 

 

 

 

 

 

 

 

Выражая xчерез x , имеем

 

 

 

 

 

 

 

 

 

 

xj0 =

xi0

 

> 0,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x j0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xi0

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

x j0

 

 

 

 

j

 

 

i0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xj

 

= x j x j 0

 

 

 

 

= x j 1

 

 

 

 

 

 

> 0 ,

 

 

 

j0

 

 

x j

 

 

 

 

 

j j0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xi0

 

 

 

 

 

 

 

 

 

 

 

j0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x j

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

xi

0

 

 

 

потому что есть условие t

i0

= min

 

1

 

 

 

 

> 0.

x j0

 

 

x j0

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

i0

 

 

 

Напомним, что дополняя вектор xдо n мерного, остальные его координаты полагаем равными нулю. Ax′ = Ax = b. Итак, x′ −допустимый вектор.

Матрица A- невырожденная, вектор xимеет точно m ненулевых координат. Поэтому x- крайняя точка.

Сравним c, xс c, x .

40

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]