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

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

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

Двойственная задача:

 

 

 

2x1 + 3x2 min

 

x2

-80

 

x1

+ 2x2 -180

 

3x1 + 2x2 -300

 

x1

 

-80

 

-x1

0

 

x1,x2

-x2 0

 

не ограничены в знаке.

 

Оптимальное решение этой задачи:

 

X опт ( 3) cб а з B 1 ( 60, 60); Zопт

300.

1.4.3. Мультипликативное представление обратной матрицы

Существующие в настоящее время программные пакеты позволяют решать задачи ЛП очень большой размерности.

Так, если имеется оперативная память достаточного объема, эти пакеты позволяют решать задачи, содержащие от 8000 до 16000 строк в матрице ограничений. Если же учесть, что обычно в моделях ЛП столбцов больше, чем строк, число элементов матрицы ограничений в таких задачах колеблется от 106 млн до 108 млн.

Решение подобных задач оказывается возможным благодаря тому, что большинство элементов матрицы нулевые. Количество же ненулевых элементов обычно не превышает 0.5% от общего количества.

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

Как уже говорилось, современные пакеты программ в основном используют модифицированный симплекс-метод.

При этом данные программы ориентированы на мультипли-

кативную форму представления обратной матрицы.

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

Пусть B-1= ( ij) обратная матрица, соответствующая некото-

рому базису B = (A1,A2,...,Ar,...,Am).

Пусть далее вектор Ar выводится из базиса и вместо него в базис вводится вектор As . То есть новая базисная матрица имеет вид:

Bнов = (A1,A2,...,Ar-1,As ,Ar+1 ,...,Am). 131

 

 

 

Примем обозначение:

 

 

 

x1s

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 s

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s

 

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xrs

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xms

 

 

 

 

 

где xij - i-я координата в разложении вектора

AS по старому бази-

 

су B.

Соответственно, xrs ведущий элемент.

 

 

 

 

 

 

 

Рассмотрим произведение двух матриц:

 

 

 

1

1

0

...

0 ...

 

 

x1s

 

 

 

...

0

 

 

11

12 ...

1j ...

1s ...

1m

 

 

xrs

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

0

1

...

0 ...

 

 

x2s

 

 

...

0

 

 

22

22 ...

2j ...

2s ...

2m

 

 

xrs

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

...

... ... ... ... ... ...

 

xis

 

 

 

... ...

 

 

... ... ... ... ... ... ... ...

 

i

0

0

...

1 ...

 

 

 

 

...

0

 

 

i1

i2

...

ij ...

is ...

im

=

 

xrs

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

...

... ... ... ... ... ...

 

 

 

 

 

 

... ...

 

 

... ... ... ... ... ... ... ...

 

r

0

0

...

0 ...

1

 

 

...

0

 

 

r1

r2 ...

rj ...

rs ...

rm

 

 

 

 

xrs

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

...

... ... ... ... ... ...

 

xms

 

... ...

 

 

... ... ... ... ... ... ... ...

 

m

0

0

...

0 ...

 

 

...

1

 

 

m1

m2 ...

mj ...

ms ...

mm

 

xrs

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

2

...

i ...

 

 

 

r

...

m

 

 

 

 

 

 

 

 

 

132

 

...

...

 

 

...

 

i

...

ij

rj

 

xis

...

 

xrs

 

 

 

 

 

 

 

 

= ...

...

...

 

 

...

= ( ij ) Bнов1.

 

 

Новая обратная матрица

 

 

 

 

 

 

 

 

r

...

 

rj

 

 

...

 

 

xrs

 

 

 

 

 

 

 

 

...

...

...

 

 

 

...

 

 

 

 

 

j

 

 

 

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

мулы.

 

 

 

 

 

 

 

 

Для левой ("почти единичной") матрицы примем

обозначение E это элементарная матрица.

Имеем соотношение:

 

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Bнов EBстар.

Рассмотрим основные моменты работы с использованием мультипликативной формы представления обратной матрицы.

По сути это тот же модифицированный симплекс-метод с отдельными особенностями.

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

B=B-1=E.

Цикл 1.

По обычному для МСМ правилу вычисляем вектор симплексных множителей:

=( 1, 2, ... , m)=сбазB-1= сбазE= сбаз ,

а далее оценки:

j= Aj - cj ( j=1,2,...,n).

Выбираем s1 0 и ищем разложение вектора As1 :

X s1 = B 1 As1 E As1 = As1 .

133

Если все xis1 0 , ЦФ не ограничена сверху на допустимом мно-

жестве (i=1,2,...,m). В противном случае из базиса выводим вектор Ar1 такой, что:

 

 

xr 0

 

 

 

 

 

 

 

 

 

min

x

k 0

 

 

 

 

1

 

 

.

 

 

 

xr s

 

 

 

 

 

 

xks1

0

xks

 

 

 

 

1 1

 

 

 

 

1

 

 

Новая базисная матрица имеет вид

 

 

 

B 1

E

B 1

E

E E

,

1

 

 

1

 

 

1

 

1

 

где E1 первая элементарная матрица.

1

0 ...

 

x1s1

...

0

1

xr s

 

 

 

 

 

 

 

 

 

 

 

 

1 1

 

 

 

 

 

0

1 ...

 

x2s1

 

...

0

2

 

 

 

 

 

 

 

 

xr s

 

 

 

 

 

 

1

1

 

 

 

 

 

E1 ... ... ...

...

 

 

 

... ...

 

0

0 ...

1

 

 

 

...

0

r1-я строка

 

xr s

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 1

 

 

 

 

 

 

 

... ... ...

...

 

 

 

... ...

 

0

0 ...

 

xms1

 

...

1

m

 

 

 

 

 

 

 

 

xr s1

 

 

 

 

 

 

1

 

 

 

 

 

 

 

r1 - й

столбец

Для хранения этой матрицы в памяти ЭВМ нужно:

1 знать единственный неединичный вектор этой матрицы и номер позиции, которую этот вектор занимает в матри-

це (в данном случае это r1, 1 r1 m);

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

134

Цикл 2.

Вычисляется вектор симплексных множителей:

= cбазB1 1 cбазE1 ,

а далее оценки j ( j=1,2,...,n). Если обнаруживается s2 0 , ищется разложение вектора As2 :

X s2 = B1 1 As2 = E1As2 ,

Если не обнаруживается факт неограниченности ЦФ, определяется вектор Ar2 , который нужно выводить из базиса.

Новая базисная матрица имеет вид:

B2 1 E2 B1 1 = E2 E1 ,

где E2 вторая элементарная матрица.

 

 

1

0 ...

 

x1s2

 

 

...

0

1

 

 

 

 

 

 

 

 

xr s

2

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

0

1 ...

 

x2s 2

...

0

2

 

 

xr s

2

 

 

 

 

 

 

 

 

2

 

 

 

 

 

E2

 

... ... ...

 

 

...

 

 

 

... ...

 

 

 

0

0 ...

 

1

 

 

 

...

0

r2-я строка

 

xr s

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

... ... ...

 

 

...

 

 

 

... ...

 

 

 

0

0 ...

 

xms 2

...

1

m

 

 

 

 

 

 

 

 

xr s 2

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

r2 - й

 

 

 

 

 

 

 

столбец

 

 

 

Теперь нужно знать неединичный вектор этой матрицы и номер позиции, которую он занимает.

Непосредственно в памяти ЭВМ матрица B2 1 не хранится. Хранятся две элементарные матрицы, точнее, информация о не-

единичных столбцах этих матриц E1 и

E2 .

135

 

Цикл k. (Основные моменты)

Вычисление симплексных множителей:

= cбазBk 11 (...((cбазEk 1 )Ek 2 )...)E1.

Генерация столбца:

X

s

= B 1 A

X

s

E

k 1

(...E

2

(E

A )...).

 

k 1 s

k

k

 

1

s

k

 

k

 

 

 

 

 

 

 

Преобразование обратной матрицы:

Bk 1 Ek Bk 11 Bk 1 Ek Ek 1 ... E1.

1.4.4. Блочное программирование

Итак, мы достаточно подробно изучили симплекс-метод, двойственный симплекс-метод, а также модифицированный сим- плекс-метод.

Что можно сказать об этих методах? Прежде всего, это уни-

версальные, конечные методы.

Конечность это гарантия решения задачи ЛП за конечное количество шагов (пусть и очень большое).

Универсальность означает, что данные методы практически не учитывают особенности строения матрицы коэффициентов ограничений. Главное, что задача относится к классу задач ЛП:

<c,x> max

AX=A0

x 0.

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

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

6 В этой связи следует отметить, что важнейшая составляющая процесса решения произвольной задачи нелинейного программирования – это анализ задачи на предмет определения возможности использования той или иной группы методов (например, выпуклый анализ)

136

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

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

Ситуации, приводящие к постановке подобных задач, встречаются довольно часто.

Например, это задачи планирования производственной деятельности предприятий, входящих в объединение. Хотя каждое из таких предприятий может иметь свои независимые ограничения, производственные программы отдельных предприятий обычно согласовывают на верхнем уровне управления из-за объективно существующих ограничений (связанных, например, с общим объемом финансовых ресурсов, которыми располагает объединение).

При этом возникает задача ЛП, обладающая структурой, которую в схематичной форме можно представить следующим обра-

зом (рис.1.17).

137

Zоптi

 

 

Целевая функция

 

extr

 

 

 

 

 

 

 

 

 

 

 

Общие ограничения

 

 

 

 

 

Независимые ограничения

 

 

 

 

 

п/п

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

п/п

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

п/п

 

 

 

 

Рис.1.17. Задача с блочно-диагональной

L

 

 

 

 

структурой и блоком-связкой

Независимые ограничения имеют блочно-диагональную структуру. При отсутствии общих ограничений различные виды производств могут рассматриваться, как совершенно независимые.

Поэтому, если общие ограничения, образующие блок-связку, отсутствуют, то проблем с декомпозицией не возникает (рис.1.18):

 

Целевая функция

 

extr

 

Независимые ограничения

 

 

 

п/п

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

п/п

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

п/п

 

 

 

 

 

L

 

 

Рис.1.18 Задача только с блочно-диагональной структурой

Решить подобную задачу можно, разделив ее на L независимых задач, решить каждую из этих задач и объединить полученные оптимальные решения.

При этомZопт

i 1,L

138

Наличие же блока-связки, в общем случае, приводит к тому, что Zопт Z оптi . Дело в том, что, как правило, оптимизация ка-

i 1, L

кой-либо одной частной задачи ущемляет возможность оптимизации другой задачи.

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

Класс задач с подобной структурой достаточно широк. В частности, к этому классу очень просто сводятся задачи, имеющие матрицу ограничений вида (рис.1.19):

Рис.1.19. Использование двойственности для сведения задачи к блочнодиагональному виду с блоком-связкой

Ясно, что двойственная задача имеет блочно-диагональную структуру с блоком-связкой.

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

1.4.5. Метод декомпозиции Данцига-Вулфа: построение координирующей задачи

Рассмотрим некоторую задачу ЛП, имеющую блочнодиагональную структуру.

Пусть задача имеет n переменных, пронумерованных числами натурального ряда: {1,2,...,n}.

Множество индексов (номеров) переменных разобьем на L подмножеств по принципу принадлежности соответствующих переменных к 1-му, 2-му, ... , L-му диагональному блоку.

139

1={1, 2, ... ,q1},

2={ q1+1, q1+2, ... ,q2},

................................

={ q - 1+1, q - 1+2, ... ,q },

................................

L={ qL - 1+1, qL - 1+2, ... ,qL}. Здесь qL=n , q0=0.

Такое разбиение позволяет записать задачу с блочнодиагональной структурой в следующем виде.

c j x j

c j x j

...

c j x j ...

c j x j max

 

j

j

2

 

j

j

L1

 

1

 

 

 

 

 

 

Aj x j Aj x j

... Aj x j ... Aj x j B0

 

j

j

2

 

j

j

L

 

1

 

 

 

 

 

 

Dj xj

 

 

 

 

 

 

 

 

 

 

= B1

j 1

 

 

Dj xj

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= B2

 

 

 

j 2

 

 

 

 

 

 

 

 

............................................................................................

 

 

 

 

 

Dj x j

 

 

 

 

= B

 

 

 

 

 

j

 

 

 

 

 

 

............................................................................................

 

 

 

 

 

 

 

 

 

 

Dj x j

= BL

 

 

 

 

 

 

 

 

 

 

j L

 

 

 

 

 

 

x j 0, ( j

 

)

 

 

 

 

 

 

1, n

 

Здесь

r0 -мерный вектор-столбец коэффициентов при пере-

Aj

менной xj

из блока-связки;

 

 

 

 

 

 

Dj

вектор-столбец коэффициентов при переменной xj ,

принадлежащий диагональному блоку (если j ). Его размерность r ;

B r -мерный вектор-столбец свободных членов в -м диагональном блоке ( =1 L).

140