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

Задачи ЛП и методы их решения

.pdf
Скачиваний:
155
Добавлен:
29.03.2016
Размер:
7.64 Mб
Скачать

109

Пусть матрица A = A[1: m,1: m] имеет обратную A1 , а матрица S отличается от А только l-м столбцом ( Sl ). Тогда и матрица S имеет обратную, если только отлична от нуля l-я компонента вектора Z = A1 Sl . При этом S 1 = D A1 , где матрица D отличается от единичной только l-м столбцом ( D - называется левым мультипликатором)

 

 

 

 

z[1]

 

z[l 1]

 

1

 

 

z[l +1]

 

z[m] T

D

l

=

 

 

, ,

 

 

,

 

 

,

 

 

, ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z[l]

 

z[l]

 

z[l]

 

 

 

 

 

z[l]

 

 

 

 

z[l]

Доказательство Покажем, что (D A1 ) S = E

(Столбец результата получается, как произведение первой матрицы на столбец второй).

Пусть j ≠ l. Тогда (см. схему)

(D A1 ) S j = (D A1 ) Aj = D ej = Dj = ej

При j = l имеем

 

 

 

 

 

 

 

 

(D A1 ) S

j

= D (A1

S

) = D Z = e

,

 

 

 

 

 

l

l

 

 

 

 

так как (см. схему) (DZ)[l] = 1 и при i ≠ l

(DZ)[i] = z[i]

z[i]

 

× z[l] = 0

z[l]

 

 

 

 

 

 

 

Таким образом новая матрица A[M , N1' ], столбцы которой соответствуют положительным компонентам решения Xθ [N] имеет обратную, т.е. является базисной, и, следовательно,

базисным является и новое решение ЗЛП Xθ [N]

Согласно лемме для матрицы B[N1' , M ] обратной к новой базисной A[M , N1' ] имеет место соотношение

B[N1' , M ] = D[N1' , N ' ] B[N ' , M ] где B[N ' , M ] - “старая” обратная матрица к базисной.

Рассмотрим основную часть “старой” симплекс-таблицы прямого симплекс-алгоритма (см. в п. 3.3. выделенную часть С-Т на шаге 3 перехода к новому решению) и убедимся, что соответствующая “новая” основная часть С-Т получается из нее преобразованием Гаусса-Жордана с ведущим элементом z[i0 , j0 ] ( i0 - строка С-Т, на которой

определялась θ , j0 - столбец, оценка которого нарушает критерий оптимальности ε[ j0 ] < 0)

Чтобы убедиться в идентичности перехода к новому решению с помощью левого мультипликатора и преобразований Гаусса-Жордана, проведем соответствующие выкладки параллельно (см. схемы на следующей странице).

Для полного обновления С-Т остается в столбце базисных индексов записать N1' вместо N ' (т.е. заменить номер i0 на номер j0) и в столбце коэффициентов целевой функции при

базисных неизвестных заменить C[N ' ] на C[N1' ] (записать c[ j0 ] вместо c[i0 ] ).

 

 

 

 

 

 

 

 

 

 

 

 

 

110

 

 

 

 

 

 

 

 

 

 

 

 

1

z[N

' , N] = D[N '

, N ' ] z[N ' , N]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

1

 

 

 

 

 

 

 

 

 

 

 

j0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i0

 

 

 

z[i0,j0]

 

 

 

x[N '

] = D[N ' , N ' ] x [N ' ]

 

 

 

 

 

 

 

 

 

 

 

1

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

"Новая" С-Т

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

"Старая" С-Т

 

 

 

 

 

f (xθ ) = f (x0 ) θ ε[ j0 ]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ε[j0]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

' ] D[N ' , N ' ] z[N ' , N] c[N]

 

 

 

 

 

 

ε[N] = c[N

 

 

 

 

 

 

 

 

 

 

 

 

1

1

 

 

 

 

 

 

 

Левый мультипликатор (см. схему)

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z*[N

' , j] = D[N

' , N ' ] z[N ' , j]

 

 

 

 

 

 

 

 

 

 

1

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z*[i, j] = z[i, j]z[i

 

 

,

j]

 

z[i, j0 ]

,i j

 

 

 

 

0

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z[i0 , j

0 ]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z*[ j0 , j] = z[i0 ,

j]

 

 

 

 

1

 

 

 

 

,i =

j0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z[i0

, j0 ]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

[N' ]

=

D[N', N'] x [N' ]

 

 

 

 

 

 

 

 

 

 

 

θ

1

 

1

 

 

θ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x [i] = x

[i] x [i ]

z[i, j0 ]

 

,i j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

θ

 

0

0 0

 

z[i

 

, j ]

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

(= θ ),i = j0

 

 

 

 

 

 

 

xθ [ j0 ] = x0[i0 ]

 

 

 

 

 

 

 

 

 

z[i ,

j ]

 

 

 

 

 

 

 

 

 

 

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Добавим и вычтем

 

 

 

 

 

 

 

 

f (x

) = c[N

' ] x[N ' ] = c[N

 

'

]

D[N ' , N ' ] x[N ' ] =

θ

 

 

1

1

 

 

 

 

1

 

 

 

 

 

 

1

 

 

 

 

 

= {c[i1 ](x0[im ]z[i1, j0 ]θ )+ c[ j0 ]θ + +

+ c[im ](x0[im ] z[i1, j0 ]θ ))}+ c[i0 ] x0[i0 ] c[i0 ] x0[i0 ] =

= c[N ' ] x

0

[N '

]θ (c[i ] z[i , j

0

]+ + c[i

0

] z[i

0

, j

0

] +

 

 

 

 

 

 

1

 

 

1

 

 

 

 

 

 

+ + c[im ] z[im , j0 ] c[ j0 ]) = f (x0 ) ε[ j0 ] θ

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Добавим и вычтем

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ε[ j] = c[N1' ] z[N1' , j] c[ j] = c[N1' ] D[N1' , N' ] z[N' , j] c[ j] =

 

 

=[c[i1] (z[i1, j] z[i0

, j]

z[im , j0 ]

)+ + c[ j0 ] z[i0 , j]

1

 

 

 

+

 

 

 

z[i , j

 

]

 

 

 

 

 

z[i

, j

0

]

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

+ + c[im ] (z[im , j] z[i0 , j]

z[im , j0 ]

)]c[ j] +

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z[i , j

0

]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+ c[i0 ] z[i0 , j] c[i0 ] z[i0 , j] =[(c[i1] z[i1, j] + + c[i0 ] z[i0 , j] + +

c[im

] z[im

, j])c[ j]]

z[i0 , j]

[(c[i1] z[i1, j0 ] + + c[i0 ] z[i0 , j0 ] +

 

 

 

 

z[i , j

0

]

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

+ + c[im ] z[im , j0 ])c[ j0 ]]= ε[ j]

z[i0 , j]

 

ε[ j0 ]

z[i , j

0

]

 

 

 

 

 

 

0

 

 

 

Преобразования Гаусса-Жордана

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z[i, j]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z[i, j0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z[i0 , j]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z[i0 , j0 ]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z*[i, j] = z[i, j]

 

z[i0 , j] z[i, j0 ]

,i

j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z[i0 ,

 

 

j0 ]

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z

*[ j

 

, j] =

z[i0 , j]

,i = j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z[i0 ,

j0 ]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

]

 

 

 

 

 

 

x0[i]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z[i, j0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x0[i0 ]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z[i0 , j0 ]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x*[i] = x0 [i]

x0 [i0 ] z[i, j0 ]

,i

j0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z[i0 , j0 ]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x*[ j

 

] =

x0[i0 ]

,i =

 

j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z[i0 , j0 ]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

]

 

 

 

 

 

 

z[i, j]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z[i, j0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z[i0 , j]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z[i0 , j0 ]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f

* (x )

= f (x

 

) ε[ j ]

x0[i0 ]

 

 

= f (x ) ε[ j ] θ

 

 

 

z[i , j ]

 

 

 

 

 

θ

 

 

 

 

 

0

0

 

 

 

 

 

 

 

0

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

]

 

 

 

 

 

z[i, j]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z[i, j0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z[i0 , j]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z[i0 , j0 ]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ε*[ j] = ε[ j] ε[ j ]

z[i0 , j]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z[i , j ]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

111

7.10. Пары двойственных задач. Теоремы двойственности

Рассмотрим ЗЛП в общей форме записи ( M1 , M 2 M , M1 M 2 = M , N1 , N2 N ,

N1 N2 = N )

f (X ) = C[N] X[N] max

A[M1 , N] X[N] ≤ b[M1 ] A[M 2 , N] X[N] = b[M 2 ]

X[N1 ] ≥ 0[N1 ]

X[N2 ] >< 0[N2 ]

С ней тесно связана некоторая другая ЗЛП, которая носит название ЗЛП двойственной к данной.

g(Y) = Y[M ] b[M ] min

Y[M ] A[M, N1 ] ≥ C[N1 ]

Y[M ] A[M , N2 ] = C[N2 ]

Y[M1 ] ≥ 0[M1 ]

Y[M 2 ] >< 0[M 2 ]

Построение двойственной задачи сводится к следующей схеме:

1-2Число переменных в двойственной задаче равно числу ограничений в исходной, а число ограничений в двойственной равно числу переменных в исходной.

3 В двойственной задаче меняется вид экстремума (max на min и наоборот).

4 Векторы правой части ( в[M] ) и коэффициентов целевой функции (C[N]) в двойственной задаче меняются местами: первый становится вектором коэффициентов целевой функции, а второй - вектором правой части в системе ограничений.

5Левая часть системы ограничений строится по транспонированной матрице AT [N, M ] (строки в A[M , N] становятся столбцами и наоборот), которая умножается на вектор переменных двойственной задачи Y[M ]

6Знаки в системе ограничений двойственной задачи определяются знаками ограничений неотрицательности в исходной задаче:

- ограничения неотрицательности на переменные X[N1 ] дают нежесткие ограничения с номерами из N1 (типа ≥ для задачи на min и ≤для задачи на max); - отсутствие ограничений неотрицательности на переменные X[N2 ] определяет

жесткие ограничения (равенства) с номерами из N2 . И, наоборот,

- нежесткие ограничения с номерами из M1 дают ограничения неотрицательности на

переменные Y[M1 ];

- жесткие ограничения с номерами из M 2 не накладывают условий неотрицательности на переменные Y[M 2 ](в дальнейшем запись Y >< 0 будем опускать).

hДвусторонние стрелки на схеме показывают, что ее можно применять в обе стороныh

 

 

 

 

 

 

 

 

 

 

 

 

112

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Исходная задача (I)

 

 

 

 

 

Двойственная задача (II)

 

 

 

 

f (x) = c[N] x[N] max

 

 

 

g(y) = y[M ] b[M ] → min

 

 

 

A[M

1 , N] x[N] ≤ b[M1 ]

 

 

 

 

T

[N1 , M ]

y[M ] ≥ c[N1 ]

 

 

 

 

 

A

 

 

 

 

A[M

 

, N

] x[N] = b[M

 

]

 

 

 

 

 

[N

 

, M ] y[M ] = c[N

 

]

 

 

 

2

2

 

 

 

AT

2

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x[N1 ] ≥ 0[N1 ]

 

 

 

 

 

y[M1 ] ≥ 0[M1 ]

 

 

 

 

 

x[N2 ] ≥≤ 0[N2 ]

 

 

 

 

 

y[M 2 ] ≥≤ 0[M 2 ]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Переменные

 

 

 

 

y[M ]]

 

 

 

 

 

 

 

1

 

 

x[N]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Число ограничений

 

 

 

 

N

 

 

 

 

 

 

 

2

 

 

M

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

c

 

 

 

 

 

 

 

 

 

 

max

b

 

 

 

 

 

 

min

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

A:

 

A[M

, N] x[N]

 

 

b[M1 ]

A:

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

AT [N

, M ] y[M ]

c[N ]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

1

 

 

 

5

A[M 2 , N] x[N]

 

 

 

 

b

 

 

 

 

 

 

 

 

 

 

 

 

=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b[M2 ]

5

 

 

 

 

 

 

 

c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

AT [N

, M ] y[M ]

= c[N2 ]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

x[N1]

 

 

0 [N1 ]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y[M1 ]

 

 

0 [M1 ]

 

 

 

 

 

 

x[N2 ]

 

 

 

0 [N2 ]

 

 

 

 

 

 

 

0 [M 2 ]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y[M 2 ]

 

 

 

 

 

113

Выпишем пары двойственных задач для некоторых частных случаев форм записи ЗЛП:

 

 

 

 

 

 

 

 

 

 

 

 

 

ИСХОДНАЯ ЗАДАЧА

 

 

 

 

ДВОЙСТВЕННАЯ ЗАДАЧА

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

а) стандартная форма

 

 

 

 

 

 

 

f (X ) = C[N] X[N] max

 

 

g(Y) = Y[M ] b[M ] min

 

 

 

A[M, N] X[N] = b[M ]

 

 

Y[M ] A[M, N] C[N]

 

 

 

X[N] 0[N]

 

 

(или AT [N, M ] Y[M ] C[N])

б) симметричная форма

 

 

 

 

 

 

 

f (X ) = C[N] X[N] max

 

 

g(Y) = Y[M ] b[M ] min

 

 

 

A[M, N] X[N] b[M ]

 

 

Y[M ] A[M, N] C[N]

 

 

 

X[N] 0[N]

 

 

Y[M ] 0[M ])

в) стандартная форма без ограничений неотрицательности

 

 

 

f (X ) = C[N] X[N] max

 

 

g(Y) = Y[M ] b[M ] min

 

 

 

A[M, N] X[N] = b[M ]

 

 

Y[M ] A[M, N] = C[N]

Примеры

 

 

 

 

1

f = 7x1 + 3x2 x3 + 2x4 max

 

 

 

2x1 + x2 + 4x3 x4 9

 

 

 

 

x1 + x2 x3 + x4 = 7

 

 

 

 

 

x2 0 ,

x 4 0

ЗЛП записана в общей форме. Двойственная задача будет содержать 4 ограничения (по числу переменных в исходной задаче) и вектор двойственных переменных Y будет содержать две

компоненты y1, y2 (по числу ограничений в исходной задаче). Запишем целевую функцию двойственной задачи

g = 9y1 + 7y2 min

 

 

 

 

 

 

 

2

2

1

4

1

Транспонируем исходную матрицу

 

1

A[M, N] =

 

 

 

 

AT [N,M ] =

 

 

1

1

1

1

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

1

1

1

Запишем левую и правую части системы ограничений и расставим знаки ограничений

114

Это вектор правой части двойственной задачи

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2y + y

2

=7

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

y + y 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ограничения неотрицательности

 

 

 

 

 

 

 

 

 

 

Ограничений неотрицательности

 

 

 

 

 

1

2

 

 

 

 

 

на х2 и х4 дают нежесткие 2-е и

на х1 и х3 нет. Значит 1-е и

 

 

 

 

 

 

 

 

 

 

 

 

 

4-е ограничения (вида ≥ , т.к.

 

 

 

 

 

4y y

 

 

= −1

 

 

 

задача на min).

3-е ограничения - жесткие.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y + y 2

 

 

 

 

 

 

 

 

 

1

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Первое ограничение в исходной задаче имеет вид неравенства (нежесткое), поэтому y1 0

Жесткое ограничение (2-ое) не дает ограничения неотрицательности на y2 . Окончательно запишем двойственную задачу

g = 9y1 + 7y2

min

2y1

+ y2

= 7

y1

+ y2

3

4y1

y2

= −1

y1

+ y2 2

 

 

 

 

y1

0

 

 

 

 

 

2

f = 5x1

+ 4x2

+ 2x3 max

 

 

 

 

 

x1 + 2x2 + x3 6

 

1

2

1

 

2x1 + x2 + 4x3 ≤ 7

A =

2

1

4

 

2x + 3x

 

+ 5x

 

12

 

 

 

 

 

2

3

 

 

3

 

 

1

 

 

 

 

 

2

5

 

xi

0 ,

i 1:3

 

 

 

 

ЗЛП в симметричной форме имеет три переменные и три ограничения. Двойственная задача будет такой же размерности.

g = 6y1 + 8y2

+ 12y3 min

 

 

 

 

 

 

y1 + 2y2

+ 2y3 5

 

 

 

1

2

2

2y1 + y2 + 4y3 ≥ 4

 

T

=

 

 

 

A

 

2 1

3

2y1 + y2

+ 3y3 2

 

 

 

 

4

 

 

 

 

1

5

yi 0, i 1:3

115

3 f = x1 x2 + x3 + 2x4 x5 max

2x1 + 12x2 x3 + 10x4 + 7x5 = 49 x1 + x2 + 6x3 + 2x4 + x5 = 14 xi 0 , i 1:5

ЗЛП в стандартной форме. В двойственной задаче на min (2 переменные без ограничений неотрицательности) все ограничения (их пять) имеют вид неравенств ≥

g = 49y1 + 14y2

min

2y1 + y2

1

12y1 + y2 ≥ −1

y1

+ 6y2

1

10y1

+ 2y2

2

 

7y1 + y2 ≥ −1

4

f = 2x1 + 7x2

3x3 + x4 2x5 min

 

x1 + 2x2 + x3 + 2x4 + x5 10

 

3x1 x2 + 2x3 x4 + 4x5 24

 

x1 + 2x2 + 3x3 + 4x4 + 5x5 48

 

x1 + x2 + x3 + x4 + x5 = 12

 

x1 0

x3 0 ,

Прежде чем строить двойственную задачу необходимо в нежестких ограничениях сделать знаки неравенства одного типа. Умножим для этого 1-ое ограничение на (-1)и заменим min на max, поменяв знаки в целевой функции

f

' = −2x

7x

2

+ 3x

3

x

4

+ 2x

5

max

 

1

 

 

 

 

 

 

x1 2x2 x3 2x4

x5 ≤ −10

 

3x1 x2 + 2x3 x4 + 4x5 24

 

x1 + 2x2 + 3x3 + 4x4 + 5x5 48

 

x1 + x2 + x3 + x4 + x5 = 12

 

 

x1 0

 

 

x3 0 ,

 

 

Ограничение x1 0 можно преобразовать либо в ограничение неотрицательности путем замены x1' = −x1 0, либо включив данное неравенство в систему ограничений. Выберем, например, первый способ. Тогда получим

116

f ' = 2x1' 7x2 + 3x3 x4 + 2x5 max x1' 2x2 x3 2x4 x5 ≤ −10

3x1' x2 + 2x3 x4 + 4x5 24

x1' + 2x2 + 3x3 + 4x4 + 5x5 48

x1' + x2 + x3 + x4 + x5 =12

x'

0

x

3

0 ,

1

 

 

 

К полученной ЗЛП запишем двойственную.

g = 10y1 + 24y2 + 48y3 +12y4 min

y1 3y2 y3 y4 2

 

2y1 y2 + 2y3 + y4 = −7

 

3y1 + 2y2 + 3y3 + y4 3

 

2y1 y2

+ 4y3 + y4 = −1

 

y1 + 4y2

+ 5y3 + y4 = 2

 

yi 0, i 1:3

5

f = x1 + 3x2 + 5x3 min

 

2x1 + x2 4x3 ≤ −2

 

x1 + 4x2 + 5x3 12

x1 + x2 + x3 = 10 x2 0

Сменим знак на обратный в 1-ом неравенстве (умножив его на (-1)) и, применив схему в обратную сторону, построим двойственную задачу.

f = x +

3x

2

+ 5x

3

min

g = 2y1 +12y2 +10y3 max

 

 

1

 

 

 

 

 

 

 

 

 

 

2x

1

x

2

 

+ 4x

3

2

2y1 + y2 + y3 = 1

 

 

 

 

 

 

 

 

 

 

 

 

x + 4x

2

 

+ 5x

3

12

y1 + 4y2 + y3 3

1

 

 

 

 

 

 

 

 

 

 

 

 

x + x

2

+ x

3

= 10

4y1 + 5y2 + y3 = 5

 

 

1

 

 

 

 

 

 

 

 

 

y1 0 , y2 0

 

 

x

2

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

С помощью двойственной ЗЛП можно решить вопрос о разрешимости или неразрешимости исходной задачи, оценить значение ее целевой функции и, наконец, найти решение исходной задачи, зная решение двойственной, которую, зачастую, легче решить, чем исходную.

117

hТак, в примере 1 двойственная задача содержит всего две переменные и ее можно решить, например, графическим способом, тогда как исходная имеет четыре переменные. Более того, если внимательно посмотреть на систему ограничений двойственной задачи в

примере 1, то можно убедиться, что она имеет всего одно допустимое решение, которое и будет оптимальным. Это следует из того, что система

2y1 + y2 = 7

4y1 y2 = −1

имеет единственное решение ( y1 = 1, y2 = 5 ) которое удовлетворяет остальным ограничениям. Итак, оптимальным решением двойственной задачи будет вектор Y = (1 , 5) . При этом gmin = 44. Применение теорем двойственности и соотношений дополняющей нежесткости (о них см. ниже) позволяет сразу выписать решение исходной задачи:

x

 

= 0, x

 

= 0,

2x + 4x

 

 

= 9

x

 

=

5

 

f

 

= 7

37

+

5

= 44

h

 

 

 

 

 

6

 

 

6

6

 

2

 

4

 

1

3

 

 

3

 

 

 

max

 

 

 

 

 

 

 

 

 

x x

 

= 7

x

=

37

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

1

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рассмотрим теперь более подробно свойства пары двойственных задач. Ниже исходную и двойственную задачи будем называть задачами (I) и (II) соответственно.

Лемма 1.

Если X[N] и Y[M ] - произвольные допустимые решения задач (I) и (II) соответственно, то f (X ) g(Y)

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

 

f (X ) = C[N] X[N] = C[N1 ] X[N1 ]+ C[N2 ] X[N2 ]

( * )

Из системы ограничений задачи (II)

 

C[N1 ] Y[M ] A[M, N1 ]

 

C[N2 ] Y[M ] A[M, N2 ]

 

Подставляя последние выражения в (*) имеем

 

f(X ) Y[M ] A[M , N1 ] X[N1 ]+ Y[M ] A[M, N2 ] X[N2 ] =

=Y[M ] A[M, N] X[N] Y[M ] b[M ] = g(Y)

Лемма 2

Пусть X*[N] - допустимое решение ЗЛП (I): ε[N] 0[N]

Y *[M ] - допустимое решение ЗЛП (II): g(Y * ) = f (X * )

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

Запишем (I) в стандартной форме

f (X

*

'

]

'

]

=

'

'

~

'

'

~

 

) = C[N

X[N

( т.к. ε[N

] = 0[N

] ) = Y[M ] A[M , N

] X[N

] = Y[M ] b[M ]

Возьмем в качестве

Y

*

[M ] =ˆ

~

 

 

 

 

 

 

 

Y[M ]. Тогда

 

 

 

 

g(Y * ) = f (X * )

118

При этом согласно лемме 1, Y *[M ]- оптимальное решение ЗЛП (II), т.к. для любого допустимого решения Y [M] ЗЛП (II)

 

g(Y) f (X * ) = g(Y * )

X *[N]- оптимальное решение ЗЛП (I) в силу того, что по лемме 1

f (X * ) = g(Y * ) f (X ) для любого X[N] - допустимого решения ЗЛП (II)

Теорема 1.

 

ЗЛП (I) разрешима

ЗЛП (II) разрешима

При этом g(Y * ) = f (X * ) для X *[N] и Y *[M ] - оптимальных решений ЗЛП (I) и (II) соответственно.

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

Доказательство второй части теоремы проведено в лемме 2. Докажем необходимость и достаточность в первой части условия теоремы

Для разрешимости ЗЛП необходимо и достаточно: 1) -ия хотя бы одного допустимого решения: б) ограниченности целевой функции на множестве решений.

Если ЗЛП (I) разрешима X *[N]- ее оптимальное решение. Тогда (а) по лемме 2

Y *[M ]- допустимое решение ЗЛП (II), а по лемме 1 (б) g(Y * ) = f (X ) X[N]- допустимого решения ЗЛП (I) ЗЛП (II) разрешима.

Доказывается аналогично, считая исходной задачей ЗЛП (II).

hПервая теорема двойственности устанавливает тот факт, что обе задачи (I) и (II) разрешимы или неразрешимы одновременно и значения целевых функций обеих задач на оптимальных решениях совпадают. Таким образом, чтобы установить разрешимость задачи и найти оптимальное значение целевой функции достаточно решить ту ЗЛП из пары

двойственных задач, которая решается легче. Так, в примере на основании решения

двойственной задачи (см. предыдущее замечание) из 1-ой теоремы двойственности следует, что исходная задача (I) разрешима и максимальное значение ее целевой функции

 

 

 

 

 

 

fmax = gmin = 44

 

h

Рассмотрим еще один пример

 

 

 

g = 12y1 min

 

 

 

 

 

 

 

 

 

( I )

f = x1 + x2 + 3x3 + 2x4

max

 

 

( II )

2y 1

 

 

 

 

 

 

 

 

 

1

 

 

2x1 + 3x2 + 4x3 + x4 =12

 

 

 

3y1 1

 

x

i

0 , i 1: 4

 

 

 

 

4y1 3

 

 

 

 

 

 

 

 

y1 2

 

 

 

 

 

 

 

 

 

Множеством допустимых решений задачи (II) является

D = {y1 : y1 2}

 

 

 

 

 

1

 

2

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1/3

3

1

 

2