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

Metody_optimizatsii_Shatina_A_V

.pdf
Скачиваний:
33
Добавлен:
10.05.2015
Размер:
1.01 Mб
Скачать

61

координат, изменения матрицы A, изменения знака целевой функции f ( x) . Например, задача (зн) сводится к задаче (зк) путем

введения дополнительных координат x = ( xn+1,..., xn+m ) :

(c, x) ® max; Ax + Ix = b, x ³ 0, x ³ 0 ,

где I – единичная матрица размера m × m.

Более подробно рассмотрим задачу линейного программирования в канонической форме. Множество допустимых точек

задачи (зк) имеет вид:

= {x Î Rn

 

Ax = b, x ³ 0}

D

зк

 

 

 

 

 

 

и представляет собой выпуклый многогранник в пространстве

Rn .

Определение. Точка d выпуклого множества D называется

крайней (угловой), если не существует точек

d1,d2 Î D и числа

t Î (0;1) таких, что d = t d1 + (1- t) d2 .

У многогранников крайними точками являются вершины. Поэтому, если существует экстремум линейной функции, то он достигается в крайней точке выпуклого многогранника. Число крайних точек множества D , задаваемого в виде конечного числа линейных равенств и неравенств, конечно. Таким образом, для решения задачи линейного программирования (если оно существует) достаточно перебрать значение целевой функции

f ( x) = (c, x) во всех крайних точках множества D . Но нахождение всех этих крайних точек и перебор значений целевой функции в них – операция довольно трудоемкая.

Симплекс-метод решения задачи линейного программирования позволяет, начиная с некоторой исходной точки, переходить к другой по направлению наибольшего возрастания функ- ции f ( x) = (c, x) .

Определение. Задача (зк) называется невырожденной, если

любая крайняя точка множества Dзк

содержит ровно m положи-

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

Пусть x = ( x1, ... , xm ,0, ... ,0), xi > 0, i = 1, ... ,m – крайняя точ-

λ = (λ1, ... ,λm ,0, ... ,0) Rn . Поэтому точ-

62

ка в невырожденной задаче (з ). Вектор x

можно представить в

 

 

 

к

 

виде x = ( xb , xn ) ,

где xb = ( x1, ... , xm )

– базисный вектор,

x

n

= (0, ... ,0) Rnm

– небазисный вектор. Аналогично, матрицу

 

 

A можно представить в виде A = ( Ab , An ) , где Ab – матрица, состоящая из первых m столбцов матрицы A.

Столбцы матрицы Ab линейно независимы, т.е. матрица Ab является невырожденной. Действительно, допустим противное,

что столбцы a1, ... ,am линейно зависимы. Тогда существует не-

m

 

åλiai = 0

. Зна-

нулевой набор множителей λ1, ... ,λm такой, что i=1

чит Aλ = 0 для вектора

ка xt = x + tλ Dзк при малых t как больших нуля, так и меньших нуля. Это означает, что точка x не является крайней. Получили противоречие.

 

Правило решения задач по симплекс-методу.

1)

Привести задачу к канонической форме.

2)

Найти крайнюю точку x = ( x1, ... , xm ,0, ... ,0), xi > 0,

i= 1, ... , m , x Dзк .

3)Построить симплексную таблицу для начальной крайней точки. В таблице m + 4 строки и n + 4 столбца. В первом столбце,

начиная с 3-его по (m + 2) -ое место находятся базисные векторы

a1, ... , am , соответствующие положительным координатам начальной крайней точки x = ( x1, ... , xm ,0, ... ,0) . Во втором столбце на аналогичных местах стоят соответствующие координаты вектора c . Последний столбец заполняется при исследовании симплексной таблицы.

В первой строке, начиная с 4-го столбца, располагаются элементы c1, ... ,cn .

63

Во второй строке, начиная с 3-его столбца – векторы b, a1, ... , an . Под ними – разложения этих векторов по базису

a1, ... , am .

 

 

 

x = ( xb , xn ) = ( x1, ... , xm ,0, ... ,0) Dзк ,

 

а)

 

Так

как

 

то

Ax = b Û x a1

+ ××× + x

m

am = b

. Это означает, что разложением

 

 

1

 

 

вектора b по базису a1, ... , am является вектор xb .

 

 

б) Предположим, что векторы

a j (

j = 1, ... , n)

имеют следую-

 

 

 

щее разложение по базису a1, ... , am :

 

 

 

 

 

 

 

æ a1 j

ö

æ a11

ö

 

æ a1m

ö

 

 

 

 

 

ç

÷

ç

÷

 

ç

÷

 

 

a j = åai xij Û ça2 j

÷

= ç a21

÷x1 j + ××× + ç a2m

÷xmj Û a j = Ab x j

 

 

m

 

 

 

 

 

 

 

 

 

 

 

=

 

ç ...

÷

ç ...

÷

 

ç ...

÷

 

 

 

i 1

 

ç

÷

ç

÷

 

ç

÷

 

 

 

 

 

ç

÷

ç

÷

 

ç

÷

 

,

 

æ

ö

èamj

ø

èam1

ø

 

èamm ø

 

x j

ç x1 j ÷

 

 

 

 

 

 

 

 

 

= ç

... ÷

 

 

 

 

 

 

 

 

 

 

ç

÷

– столбец коэффициентов разложения вектора a j

где

è xmj ø

по базису a1, ... , am . Тогда x j

= Ab1a j ,

j = 1,...,m,m +1,...,n.

 

Для i = 1, ... , m разложения векторов ai

тривиальны: ai = ai ,

следовательно, вектор-столбец xi представляет собой единичный

вектор. При i = m +1, ... , n неизвестные вектор-столбцы xi

отыс-

киваются с помощью обратной матрицы.

 

 

 

в) В предпоследней строке z

под вектором b( xb )

выписыва-

ется

z0 = (cb , xb ) – значение целевой функции в крайней точке.

Под векторами

a j (

j =1, ... , n)

в предпоследнюю строку записыва-

 

 

 

 

 

ются

значения

z

j

= (c

b

, x j )

.

Очевидно,

что

при

 

 

 

j = 1, ... , m z j = c j .

64

г) В последнюю строку, начиная с 4-го столбца, заносится разность между элементами предпоследней строки и элементами первой строки:

= z c i = zi ci , i = 1, ... , n.

 

 

c

 

 

 

c1

cm

cm+1

c j0

 

cn

t

 

базис

 

 

b( xb )

a1

am

am+1

a j0

 

an

 

 

 

 

1

c

x

 

1

0

x

 

+

x

 

 

x

t

 

a

 

1

 

1

 

 

 

 

1,m

 

1

 

 

1, j0

 

 

1,n

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ai0

ci

xi

0

0

0

xi

,m+1

xi

, j

0

xi ,n

ti

0

 

 

 

0

 

 

 

 

 

 

0

 

 

 

 

 

0

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

m

c

m

x

m

0

1

x

 

 

+

x

m, j0

x

m,n

t

m

 

 

 

 

 

 

 

m,m

1

 

 

 

 

 

z

 

 

(cb , xb )

c1

cm

(cb , xm+1 )

(cb , x j0 )

(cb , xn )

 

 

 

D

 

 

 

 

 

0

0

 

 

+

1

 

 

j0

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

4) Исследовать симплексную таблицу.

а) Если D ³ 0 , то крайняя точка x является решением задачи, Smax = (cb , xb ) .

б) Если для некоторого

j

имеют место неравенства

j < 0

 

 

и x j £ 0 , то Smax = +∞ .

в) Пусть в строке D имеются отрицательные числа, а соот-

ветствующие

столбцы содержат

положительные числа и

min j

= j

< 0

 

 

 

j0 является разрешаю-

j

0

. Тогда столбец индексом

 

 

 

 

ì

xi

 

 

ü

 

 

 

 

ï

 

 

ï

 

 

 

 

ti = í

 

, xij

> 0

ý

> 0

 

 

 

 

 

 

 

ïxij

0

 

ï

 

щим. Введем обозначение:

î

0

 

þ

. Эти значения

 

 

ti ставим соответственно в последнем столбце таблицы. Пусть ti0 = mini ti > 0. Тогда строка с номером i0 является разрешающей,

65

а разрешающим элементом симплексной таблицы является эле-

мент xi0 , j0 .

Далее необходимо из числа базисных векторов исключить вектор ai0 , и вместо него взять вектор a j0 . Значение целевой функции при этом возрастает на величину (ti0 j0 ).

5) Построить новую

симплексную таблицу для базиса

a1, ... ,ai0 1, a j0 , ai0 +1, ... ,am

, т.е. векторы b, a1, ... ,an разложить

по новому базису.

Элементы таблицы x, не лежащие в разрешающем столбце

ij

и разрешающей строке, вычисляются по правилу прямоугольника:

¢

= xi -

xi0 xij0

,

¢

 

xi0 j xij0

, i ¹ i0 , j ¹ j0

 

 

 

 

 

 

 

xi

 

xi0 j0

xij = xij -

xi0 j0

 

 

 

 

 

 

 

 

.

Элементы разрешающей строки делятся на разрешающий

элемент:

 

 

 

xi0

 

 

xi0 j

 

 

 

 

xi¢0

=

 

, xi¢0 j =

,

j =1,..., n

 

xi0 j0

 

 

 

 

 

 

xi0 j0

 

.

Далее перейти к исследованию новой симплексной таблице, т.е. к пункту 4).

Симплекс-метод позволяет решать точно также и вырожденные задачи линейного программирования. Число положительных координат крайней точки в таких задачах меньше m, но число базисных векторов всегда равняется рангу матрицы A. Перейти от вырожденной задачи к невырожденной можно путем сколь угодно малого изменения начальных данных задачи. В вырожденных задачах возможны холостые шаги симплекс-метода, т.е. шаги, в результате которых значение целевой функции не изменяется. При этом теоретически возможно и зацикливание, т.е. бесконечное повторение холостых шагов. Для того чтобы избежать зацикливания, разработаны специальные алгоритмы – антициклины (см., например, Ф.П. Васильев «Методы оптимизации». М.: Факториал Пресс, 2002). На практике зацикливание происходит крайне редко, поэтому в данном курсе антициклины не рассмат-

66

риваются.

Пример 1. Решить задачу линейного программирования в канонической форме с заданной начальной крайней точкой x0 = (0;0;2;4) , используя симплекс-метод:

f ( x) = -x1 + 2x2 - x3 - x4 ® max;

- x1 + x2 + x3 = 2, x1 + x2 + x4 = 4, xi ³ 0, i = 1, ... ,4.

Решение: Данная задача задана в канонической форме, также задана начальная крайняя точка. Построим симплексную таблицу. Матрица системы ограничений имеет вид:

æ1

1

1

0

ö

A = ç

 

 

 

 

÷

ç

1

1

0

1

÷

è

ø .

Базисная матрица задачи состоит из третьего и четвертого столбцов матрицы A, соответствующих положительным координатам начальной крайней точки:

A

æ

1

0

ö

= ç

 

 

÷

b

ç

0

1

÷

 

è

ø .

Так как базисная матрица в данной задаче является единич-

x1

= a1

æ

 

 

æ1ö

 

 

 

 

= ç ÷ x2 = a2

= ç ÷

 

 

 

 

ной, то

 

ç

÷

 

 

 

ç

÷

 

 

 

 

 

è

1 ø,

 

 

è1ø .

 

 

 

 

Построим и заполним симплексную таблицу:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c

 

 

 

-1

2

-1

-1

 

t

 

базис

 

 

 

b( xb )

 

a1

a2

a3

a4

 

 

 

a3

 

 

-1

 

2

 

-1

1

1

0

 

2

 

a4

 

 

-1

 

4

 

1

1

0

1

 

4

 

z

 

 

 

 

-6

 

0

-2

-1

-1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

-4

0

0

 

 

В последней строке таблицы содержится только один отрицательный элемент, соответствующий столбцу a2 . Поэтому этот

67

столбец будет разрешающим. Заполним соответствующие позиции последнего столбца и выберем минимальный положительный элемент. В данном случае этот минимальный элемент равен

2, он соответствует базисному вектору a3 . Строка, соответствующая a3 , является разрешающей, а вектор a3 в базисе следует за-

менить на a2 . Строим новую симплексную таблицу для нового базиса a2 , a4 .

 

c

 

-1

2

-1

-1

t

базис

 

b( xb )

a1

a2

a3

a4

 

a2

2

2

-1

1

1

0

 

a4

-1

2

2

0

-1

1

 

z

 

2

-4

2

3

-1

 

 

 

 

D

 

 

-3

0

4

0

 

Из таблицы видно, что разрешающим столбцом является столбец a1, содержащий только один положительный элемент, соответствующий a4 . Поэтому разрешающей строкой является строка, соответствующая a4 . Столбец a4 в базисе заменяем на столбец a1 и для нового базиса строим симплексную таблицу.

 

 

c

 

 

-1

 

 

2

-1

-1

t

 

 

базис

 

b( xb )

a1

 

a2

a3

a4

 

 

 

a2

2

3

 

0

 

 

1

1 2

1 2

 

 

 

a1

-1

1

 

1

 

 

0

1 2

1 2

 

 

 

z

 

5

 

-1

 

 

2

3 2

1 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D

 

 

 

0

 

 

0

5 2

3 2

 

 

 

 

 

ˆ

= (

1;3;0;0

)

является решением задачи и

Так как D ³ 0 , то точка x

 

 

Smax = 5.

 

 

 

 

 

 

 

 

 

 

Пример 2. Решить задачу линейного программирования в канонической форме с заданной начальной крайней точкой

68

x0 = (0;1;2;0;1) , используя симплекс-метод:

f ( x) = 2x1 + x2 + x3 + x4 + 3x5 ® max ; x1 + x2 + 6x3 +10x5 = 23,

x1 + 5x2 + 2x4 + 8x5 = 13, x1 + 5x2 - x3 + 2x4 + 7x5 = 10,

xi ³ 0, i = 1, ... ,5.

Матрица системы ограничений и базисная матрица имеют

вид:

 

 

 

 

 

 

 

 

 

æ1 1 6

0

10

ö

æ1 6

10

ö

ç

 

2

8

÷

ç

5

0

8

÷

A = ç1 5 0

÷

Ab = ç

÷

ç

-1 2

7

÷

ç

5

-1 7

÷

è1 5

ø ,

è

ø.

Найдем матрицу, обратную к Ab , например, методом присо-

единенной матрицы. Для этого найдем определитель матрицы Ab и алгебраические дополнения элементов этой матрицы:

det Ab = −12,

A(1,1) =

 

 

0

8

 

 

 

 

= 8,

A(1,2) = −

 

 

5

8

 

 

= 5,

A(1,3) =

 

 

5

0

 

 

= −5,

 

 

 

 

 

 

 

 

 

 

 

 

b

 

 

 

1

7

 

 

 

 

 

b

 

 

5

7

 

 

 

 

 

b

 

 

5

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A( 2,1) = −

 

6

10

 

 

= −52,

A( 2,2) =

 

1

10

 

 

= −43,

A( 2,3) = −

 

1

6

 

 

= 31,

 

 

 

 

 

 

 

b

 

 

 

1

7

 

 

 

 

 

b

 

 

5

7

 

 

 

 

 

b

 

 

 

5

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A(3,1) =

 

6

10

 

 

= 48,

A(3,2) = −

 

1

10

 

= 42,

A(3,3) =

 

 

1

6

 

 

= −30.

 

 

 

 

 

 

 

 

b

 

 

0

8

 

 

 

 

 

b

 

 

5

8

 

 

 

 

 

b

 

 

 

 

 

5

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Присоединенная матрица AbV определяется как транспонированная к матрице, составленной из алгебраических дополнений

соответствующих элементов матрицы Ab :

 

æ

A(1,1)

A( 2,1)

AV

ç

b

b

= ç A(1,2)

A( 2,2)

b

çç

b

b

 

A(1,3)

A( 2,3)

 

è

b

b

Тогда обратная матрица к Ab

Ab(3,1) ö

 

æ

8

- 52

48

ö

 

 

÷

=

ç

5

- 43

42

÷

 

A(3,2) ÷

ç

÷

 

b

 

 

 

 

 

 

(3,3) ÷

 

ç

- 5

31

- 30

÷

 

Ab

÷

 

è

ø

.

 

ø

 

 

 

 

 

 

имеет вид:

 

 

 

 

69

 

 

 

 

 

 

æ - 2 3

13 3

- 4

ö

Ab1 =

1

AbV

ç

 

 

 

÷

= ç

- 5 12 43 12

- 7 2

÷

det Ab

 

 

ç

5 12

- 31 12

5 2

÷

 

 

 

è

ø .

Далее находим разложения векторов a1,a4 по базису a2 , a3, a5 :

 

 

æ

-1 3ö

 

 

 

æ

2 3

ö

1

1 1

ç

-1 3

÷

x

4

1 4

ç

1 6

÷

x

= Ab a

= ç

÷,

 

= Ab a

= ç

÷

 

 

ç

1 3

÷

 

 

 

ç

-1 6

÷

 

 

è

ø

 

 

 

è

ø .

Разложением вектора b является вектор (1;2;1) ненулевых координат крайней точки. Составим симплексную таблицу:

 

c

 

2

1

1

1

3

t

базис

 

b( xb )

a1

a2

a3

a4

a5

 

a2

1

1

1 3

1

0

2 3

0

 

a3

1

2

1 3

0

1

1 6

0

 

a5

3

1

1 3

0

0

1 6

1

9

z

 

6

1 3

1

1

1 3

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5 3

0

0

2 3

0

 

В последней строке имеются два отрицательных числа. Меньшее из них соответствует столбцу a1. Этот столбец будет разрешающим. В столбце a1 имеется один положительный элемент, соответствующий a5 , поэтому строка a5 будет разрешающей. Из числа базисных векторов исключаем вектор a5 и вместо

него вводим вектор a1. Строим симплексную таблицу для нового базиса:

 

c

 

2

1

1

1

3

t

базис

 

b( xb )

a1

a2

a3

a4

a5

 

a2

1

2

0

1

0

1 2

1

 

a3

1

3

0

0

1

0

1

 

 

 

 

 

70

 

 

 

 

 

 

 

 

 

 

 

 

 

a1

2

3

1

0

0

1 2

3

 

z

 

11

2

1

1

1 2

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D

 

 

0

0

0

3 2

5

 

Последняя строка новой таблицы содержит один отрица-

тельный элемент, соответствующий вектору a4 . В соответствующем столбце только одно число является положительным. Это

число соответствует вектору a2 . На следующем этапе из числа базисных векторов исключаем вектор a2 и вводим вместо него вектор a4 . Строим новую симплексную таблицу:

 

 

 

c

 

 

2

 

 

1

 

1

 

1

 

3

t

 

 

базис

 

 

 

b( xb )

a1

 

a2

 

a3

a4

a5

 

 

 

a4

 

1

 

4

0

 

 

2

 

0

 

1

 

2

 

 

 

a3

 

1

 

3

0

 

 

0

 

1

 

0

 

1

 

 

 

a1

 

2

 

5

1

 

 

1

 

0

 

0

 

4

 

 

 

z

 

 

 

17

2

 

 

4

 

1

 

1

 

11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D

 

 

 

 

0

 

 

3

 

0

 

0

 

8

 

 

 

Так как

 

D ³ 0 , то точка

ˆ

= (

5;0;3;4;0

)

является решением

 

 

x

 

 

задачи и Smax = 17 .

 

 

 

 

 

 

 

 

 

 

 

Метод искусственного базиса нахождения начальной крайней точки

Рассмотрим задачу линейного программирования в канонической форме:

 

 

 

 

(c, x) ® max;

Ax = b, x ³ 0,

(з )

 

x = ( x , ... , x

 

) Rn

 

 

 

 

к

где

n

 

неизвестная

переменная,

 

 

1

 

 

 

c = (c , ... , c

n

) Rn

и

b = (b , ... , b

) Rm

– заданные векторы,

 

1

 

 

1

m

 

A = (aij )i=1, ... ,m

j=1, ... ,n – заданная матрица размера m × n. Будем считать,

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