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

книги из ГПНТБ / Ху, Т. Целочисленное программирование и потоки в сетях

.pdf
Скачиваний:
84
Добавлен:
22.10.2023
Размер:
16.99 Mб
Скачать

6.2. ПРЯМО-ДВОЙСТВЕННЫЙ МЕТОД

121

при условиях

 

 

 

 

 

 

 

2xi х2+ Зх3 2х4= 3,

 

Зх2

 

 

= 1 ,

(6)

x j > 0

(j = l,

2,

3, 4).

 

Двойственная задача к (6 ) имеет вид

 

 

найти максимум

w =

Зя4 +

я 2

 

 

 

при условиях

2 я1

 

я 2

 

1 ,

 

 

 

 

 

 

—Я1 -f- Зя2 ^ 1 ,

(7)

 

3я1 —

4 я 2

2,

 

 

 

— 2 я !

+

4я 2

^

8.

 

Вектор (яь я 2) = (0,

0) — допустимое

решение задачи (7).

При

таких значениях вектора я все ограничения задачи (7) выполняют­

ся как строгие неравенства,

поэтому множество индексов / пусто.

Выпишем условия вспомогательной задачи:

минимизировать

 

 

 

Е=

а .

а

X i +

X 2

при ограничениях

 

 

 

4

=

3,

 

4

=

1,

(8)

4 > 0

(г = 1 , 2) .

Выпишем оптимальное решение задачи, двойственной к задаче (8 ):

(nt, я2) = (1, 1),

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

£ =

4.

 

 

 

 

с2 —(0, 0) а2

 

J_

(для яа;- > 0 ).

 

(1, 1) а2

 

~

2

 

 

 

 

 

Таким образом,

новое допустимое

решение

задачи

(7) имеет вид

я' = я + 01Я = (О, 0) + 4 -(1,

1 ) = (

2

2

)■

 

 

 

 

 

L

_ 1

 

Подставляя значения я' в условия (7), видим, что второе ограни­ чение превращается в равенство. Поэтому вспомогательная задача принимает следующий вид:

найти минимум

£ =

122 ГЛ. 6. МЕТОД ОДНОВРЕМЕННОГО РЕШЕНИЯ

при условиях

— Ж2 + Ж1 = 3,

3;г2 - \- х 2 = \ ,

(9)

X 2, х \ , я2> 0 .

О пти м а л ьн ы м

реш ением

задачи,

двойственной к вспом огатель­

н о й (9 ), будет

я = (1, Vs)

с

яЬ =

1 = 10/з-

 

 

0

— С1/2i ‘•/г) al

_ 1 — 4/2_

^

 

01

(1 , i/s) а!

*/з

Ю •

Вновь полученное допустимое

решение —

 

 

Л ' =

(112> V 2) +

VlO (1> Vs) = (4/ 5’ 3/б)’

Подставляя полученный результат в условия задачи (7), видим что первое и второе ограничения выполняются как равенства. Остальные ограничения превращаются в строгие неравенства. Следовательно, новая вспомогательная задача имеет вид:

минимизировать

 

 

 

 

 

е.

 

а

|

а

 

 

 

 

 

 

 

 

l ^

X

i +

X z

 

 

 

при условиях

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2xi

a;2 + ^i =

3,

 

 

 

 

X i

- j - 3

x

2 +

 

X 2 =

l

,

(10)

 

 

 

 

 

 

 

а

 

л __а

 

 

 

 

 

 

X i ,

х 2 ,

X I ,

 

х 2 > и .

 

=

2 , х2 = 1

при

| =

0

— оптимальное

решение задачи (1 0 ).

Это

означает,

что

(xi,

х2, х 3, xt)

(2 ,

1 ,

0 , 0 ) — оптимальное

решение задачи (6 ). Заметим, что выполнены условия дополняю­

щей нежесткости:

(ct — я а 1) х 1 =

(1 — (4/ 5,

3/ б) [

2 ,

— 1

] ) - 2

=

0,

(с2 — я а 2) г 2 =

(1 — (4/ в,

3/s) [ — 1,

3

] ) - 1

=

0,

(с3я а 3) х 3 =

(2 — (4/ 5,

3/&) [

3,

— 4 ]) 0

= 0,

(с4— я а 4) г 4 =

(8 — (4/ 6,

Vs) [ — 2,

4 ] ) - 0

=

0.

Зная идею рассмотренного метода, опишем процесс решения при­ мера еще раз с помощью таблиц, подобных симплексным. Табли­ ца 6.17 включает в себя исходную целевую функцию задачи (6 ),

а также функцию |, представляющую собой сумму невязок. Заме­ тим, что в 1 -строке звездочкой помечены две позиции, расположен­

ные над единичной матрицей. Числа, появляющиеся в этих пози­ циях в следующих таблицах, равны значениям 1 — ^ и 1 — я 2

соответственно.

 

6.2.

ПРЯМО-ДВОЙСТВЕННЫЙ МЕТОД

123

Вычитая из ^-строки третью

и четвертую строки,

получим

табл.

6.18, которая

является стандартной для минимизации £

с х\ и ж® в качестве

исходных базисных переменных. Поскольку

все

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

в z-строке

неотрицательные, л =

(0 , 0 ) —

допустимое решение задачи (7). Умножая соответствующим обра­ зом третью и четвертую строку на (0 , 0 ) и вычитая их из z-строки,

получаем ту же самую z-строку. (В вычитании не участвуют эле­ менты, соответствующие искусственным переменным.) Результат вычитания не изменит табл. 6.18. Поскольку все коэффициенты z-строки неотрицательны, ни один из столбцов под xi, х2, х3 и ж4

не может быть использован во вспомогательной задаче. Вспомога­ тельная задача «заключена» в первых трех столбцах и последних

трех строках табл. 6.18. Из

этой подтаблицы видно, что £ = 4

и 1 — iti = 0, 1 — я 2 = 0

или Я1 = 1, я 2 = 1. Заметим, что

значения (—яа7-) записаны в позициях ^-строки, а значения (Cj

ли,-)— в позициях z-строки. Таким образом, значение 0j опре­ деляется, как

0 i = mm

- з а ;

mm

 

з а ,-

Умножая g-строку на 1/2 и прибавляя z-строку, получим табл. 6.19 {в сложении не участвуют элементы, соответствующие переменным

х1 и х%). Эта процедура равносильна Cj ла}- + 0i (—яа;), или

Cj — (я + 0 4л) aj, или Cj — я'а;.

Теперь, поскольку коэффициент в z-строке под х2 равен нулю, этот столбец может быть использован во вспомогательной задаче. Преобразовав последние три строки табл. 6.19 при помощи итера­ ции симплекс-метода, получим табл. 6 .2 0 .

Вследствие того что все коэффициенты в g-строке под ж“, х%

их2 неотрицательны, g = 10/3— решение вспомогательной задачи

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

задается

1 — я4 = 0 и

1 — я 2

= 2/3. Иначе говоря, п± = 1 и

.Я'2 = 1/3.

Значение 04 определится следующим

образом:

 

0 ! = min

Уг

3/2

3_

 

-5/з

-6/з

10

 

 

Итак, (я;, я;) = (1/2, 1/2) +

3/io(l,

Уз) = (*/5 , 3/s).

 

Прибавляя g-строку, умноженную на 3/10, к z-строке (исключая элементы, соответствующие искусственным переменным), получим табл. 6.21. Теперь, поскольку коэффициенты в z-уравнении под Xi и х2 равны нулю, соответствующие им столбцы могут быть использованы во вспомогательной задаче. В табл. 6.21 эти столб­ цы помечены стрелками. Применяя итерацию симплекс-метода к последним трем строкам табл. 6.21, получим табл. 6.22. Посколь­

ку g

=

0 , эта таблица оптимальна при z = 3, xt = 2 , х2 = 1 ,

х 3 =

0 ,

т4 = 0 .

 

 

 

 

Таблица 6.17

 

 

 

 

 

1

х°

 

 

х2

х2

Ж4

 

 

— Z

0

 

 

1

1

2

8

 

 

- 1

0

 

' l *

0

0

0

0

J t Я

<

3

1

0

2

- 1

3

- 2

0

 

2

1

0

1

- 1

3

- 4

4

0

 

 

 

 

Таблица 6.18

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

Xt

х2

х3

 

 

 

Z

0

 

 

1

1

2

8

 

 

- £

- 4

0

0

- 1

- 2

1

- 2

Я Я

*?

3

1

0

2

- 1

3

— 2

0 1

<

1

0

1

- 1

3*

- 4

4

0 1

 

 

 

 

 

 

 

 

 

 

 

 

„а

Таблица 6.19

 

 

 

 

 

1

яа

Xi

#2

*3

4

 

 

 

Х2,

 

 

Я

 

 

 

 

1

 

 

5/2

7

 

 

Z

- 2

 

 

1 / 2

0

 

 

- 1

- 4

0

0

- 1

- 2

1

- 2

Я Я

ха

3

1

0

2

- 1

3

- 2

1 / 2 1

1

„а

1

0

1

- 1

3* - 4

4

1 / 2

1

X2

 

 

 

 

 

 

Таблица 6.20

 

хк

 

 

 

1

<

ха

Xi

Х 2

*3

 

 

 

 

хг

 

 

 

 

 

 

Z

- 2

 

 

1 / 2

0

5/2

7

 

 

- 1

-1 0 /3

0

2/3

-5 /3

0

- 5 /3

2/3

Я

я

ха

10/3

1

1/3

5/3

0

5/3

- 2 /3

1 / 2

1

х2

1/3

0

1/3

- 1 /3

1

- 4 /3

4/3

1/2

1/3

 

 

 

 

Таблица 6.21

 

 

 

 

 

1

 

 

1

1

 

^4

 

 

 

*?

*2

* 1

х2

*3

 

 

Z

- 3

 

36/5

 

 

 

 

0

0

2

 

 

- 1

-1 0 /3

0

2/3

- 5 /3

0

-5 /3

2/3

Л

я

ха

10/3

1

1/3

5/3*

0

5/3

- 2 /3

4/5

1

х2

1/3

0

1/3

- 1 /3

1

- 4 /3

4/3

3/5

1/3

 

 

 

 

Таблица 6.22

 

 

 

 

 

1

*?

*2

Х 1

д:2

х3

*4

 

 

Z

—3

 

 

 

36/5

 

 

 

 

0

0

2

 

 

- 6

0

1

1

0

0

0

0

Я

Я

XI

2

3/5

1/5

1

0

1

- 2 /5

4/5

0

х%

1

1/5

2/5

0

1

- 1

18/15

3/5

0

ГЛАВА 7

ПРИНЦИП ДЕКОМПОЗИЦИИ

7.1. Принцип декомпозиции (Данциг и Вулф [46], [47])

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

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

Z =

с х

(1 )

при условиях

х ^

0.

Ах = Ь,

Во многих случаях матрица А имеет структуру, показанную на рис. 7.1, где коэффициенты, стоящие вне указанных блоков, равны нулю.

Такую структуру может иметь линейная программа, составлен­ ная для большой фирмы с несколькими филиалами. Для каждого филиала составлена своя линейная программа, т. е. Агхг = bj, а для управления всей фирмой выписана матрица ограничений, включающая все ограничения, относящиеся к филиалам. Некото­ рые из матриц A i могут быть пустыми, например, в том случае, когда в фирме имеются отделы, не участвующие непосредственно в сфере производства, скажем отдел управления кадрами (отсюда Ai — пусто), но в матрице ограничений, относящейся ко всей фирме, эти отделы присутствуют. Заметим, что вектор Ь задачи

(1)

также разбивается на р

+ 1 векторов Ь0, . . ., Ьр.

Подобным

же

образом вектор с разбивается на р вектор-строк

щ, с2, . . .

.. .

., ср. Поэтому задачу (1)

можно переписать в следующем виде:

минимизировать

V

Z = 2 c i x i

5 = 1

126

ГЛ.

7. ПРИНЦИП ДЕКОМПОЗИЦИИ

 

при условиях

 

 

 

 

 

V

=Ь0,

 

 

 

2

 

 

 

3=1

Арс^Ь ,-

(/ = 1

(2 )

 

 

xj > 0 .

Каждое из подмножеств ограничений AjXj = b; определяет выпук­ лое многогранное множество Sj. Предположим, что Sj — ограни-

п\

п г

п з

п р

Ьо

Ь,

Ъ ъ

ьз

ЬР

Р и с . 7.1.

чено, и через xi} (i = 1 , . . sj) обозначим крайние точки много­

гранника Sj. Тогда любое решение Xj можно представить в виде

X j —2 ^ i j X i j ,

i = i

 

(3)

 

 

2

hij^^O.

 

i=1

 

 

Допустим, что известны все Xij.

Положим

 

l j j = lujXij,

Cij = Cj'X;'j .

(*>

Тогда задачу (2) можно переписать в виде

 

минимизировать

 

 

v

sj

 

Z=2 2 Cij^ij

 

i= 1 i= l

 

7.1. ПРИНЦИП

ДЕКОМПОЗИЦИИ

 

127

при условиях

 

 

 

 

 

 

 

V

sj

 

 

 

 

 

 

2 2 ^ i A i j — Ьо,

 

 

 

 

(5)

3 = 1i=l

 

 

 

 

 

 

 

si

Ч- = 1

 

(7 = 1, • • •, Р) ,

 

 

2

 

 

 

71

 

 

 

 

 

 

 

 

 

 

(i = 1 ,

• .. , sj).

 

Если в задаче (5) найдены все

,

то из условия (3) можно полу-

чить х;- в предположении, что

!

x i} известны.

Задачу (5) можно

наглядно представить, как на

ге. 7.2.

 

 

 

^111* • *

^12i••

ч cs%Z

^13i * • ' 1 Cs33

^Ipl* *' 1 Cgpp

^11■>^21’ *‘ • ’ ^5,1

^ гЛ п т- - ,h ii

^13ч - ч ^ з 3

‘ * *1^SpP

1 , 1 , . . . , 1

 

 

 

 

 

 

 

 

 

 

 

 

I

I

 

 

1 , 1 , . . . , 1

 

 

I

I

 

 

 

 

 

 

1

1

 

 

 

 

 

 

 

I

 

 

 

 

1 , . . . , 1

 

I

 

 

 

 

 

 

 

I

 

 

 

 

 

 

 

1...... 1

 

 

Р и с . 7.2.

 

 

 

Преобразование задачи из формы (2)

в форму (5)

уменьшило

 

р

 

 

 

 

 

 

число строк с т 0 +

2 mi Д° то +

Р- С другой стороны, количество

 

з= 1

 

 

 

 

 

 

 

 

 

 

р

 

р

 

переменных значительно

возросло

с 2

пз Д°

2 sj •

К счастью,

 

 

 

 

3= 1

3 = 1

 

нет нужды использовать сразу все переменные Хц и знать все х;;. Поскольку матрица на рис. 7.2 содержит т0 + р строк, для формирования допустимого базисного решения необходимы т0 -f- + р векторов. Пусть исходное допустимое базисное решение полу­ чено. Воспользуемся модифицированным симплекс-методом. Допу­

стим, что известен вектор цен (л, л), где л — вектор с та

компонентами и л — вектор с р компонентами. Заметим, что лю­ бой столбец на рис. 7.2 имеет вид [1;;, е^]. В соответствии с симп­

лекс-методом небазисный вектор подлежи^ вводу в базис, если его

ч

V - . 4

128 ГЛ. 7. ПРИНЦИП ДЕКОМПОЗИЦИИ

относительная оценка отрицательна, т. е. если

Cij—Cij (it,

я) [1 г/, еД < 0 .

Пусть

 

я = (я^, Яг, . . . , Яр).

Тогда

 

Ci j = Cf j

Я1г_у Яj .

Среди небазисных векторов могут быть векторы из множеств

S 2 и т. д. Если минимальная относительная оценка для каждого Sj

неотрицательна, т. е. Су ^ 0 , то текущее решение оптимально.

Поэтому станем искать в каждом Sj вектор с минимальной отно­

сительной оценкой.

Поскольку в данном Sj компоненты

одни

и те же для всех векторов, то решим следующую задачу:

 

найти

 

 

min {сц —я1*Д = min (с^-—яЬД xij

 

i

i

 

при условии x t j 6 S j . (Другими словами, мы хотим найти вершину

многогранника Sj, в которой сj — яL;- достигает минимума.) Полученная задача является задачей линейного программирова­ ния:

минимизировать

(Cj — nLj ) xj

при условиях

AjXj = bj, ху> 0.

(6)

Поскольку целевая функция задачи (6 ) линейна, минимум ее

всегда достигается в вершине, т. е. в некоторой хг;-. Если

(Cj яЬ j ) X i j Яу<С 01),

то вектор [1^, еД должен быть введен в базис, для чего выполняет­ ся обычная итерация симплекс-метода. Следует отметить одну особенность. Если вектор [1;7-, еД должен быть введен в базис, то, прежде чем выполнять итерацию симплекс-метода, этот вектор необходимо умножить на обращение текущего базиса В-1. Необ­

ходимость умножения на В-1 вытекает из того, что вектор (я, я) был получен умножением матрицы условий задачи (5) на В-1. Поскольку вектор [1*7-, еД входит в условия задачи (5), он должен быть умножен слева на матрицу В"1, такж, как все остальные вектор-столбцы условий (5). Операция умножения вектор-столбца

1) Ху — оптимальное решение задачи (6).

7.2. ПРИМЕР

129

исходной таблицы на обращение текущего базиса называется

коррекцией.

 

Если после решения р линейных программ

 

 

 

 

min(c; — nLj)xij — n j > 0

(для / = 1 ,

 

р),

 

 

 

г

 

 

 

 

 

 

 

 

 

 

 

 

то текущее решение является оптимальным.

 

 

 

7.2.

Пример

 

 

 

 

 

 

 

 

 

 

 

 

Рассмотрим линейную программу:

 

 

 

 

 

 

 

 

минимизировать

Х \ 8ж2 “ИЪ х 1

6ж2 -f- х 3

 

 

 

при условиях

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Xi -|- 4х2

 

xt -j- 2.x2

 

х3 — 7,

 

 

 

 

 

2хх-\-Ъхъ

 

 

 

 

 

 

= 5 ,

 

 

 

 

 

5^1+

 

 

 

 

 

 

=

6 ,

 

 

(1 )

 

 

 

 

 

Зх( + 4х'-|-

Зж' = 12,

 

 

 

Заметим, что в задаче (1)

X i ,

х 2 ,

х [ , ж', ж '> 0 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Li = (1,

4),

L2=

( 4 - ,

2,

А )

,

 

 

 

 

bo = 7 ,

 

b±=

[5,

6 ],

 

b2 =

12,

 

 

 

 

 

A i=

[ 5

1 ] ’

A2 =

[3 ,4 ,3 ],

 

 

 

 

 

 

ci — (1,

8 ),

 

c 2 =

(5,

6 ,

1).

 

 

 

=

Выпуклое множество £4 состоит лишь из одной точки хи =

[1, 1].

Выпуклое

множество

S 2 — треугольник

с

вершинами

 

х12

= [4, 0,

0],

х 22 =

[0,

3,

0], х32 =

[0,

0,

4].

Для того чтобы получить исходное базисное решение, необходимо

та +

р = 1 + 2 векторов. Поэтому предположим, что в качестве

начальных выбираются векторы х11?

х12,

х 22

(заметим,

что х32

знать не обязательно):

 

 

 

 

 

 

hi =

LlXll =

(1, 4) [1, 1] = 5,

 

с„ =

(1,

8 ) [1, 11 =

9,

 

la =

L2x12 =

(V4, 2, 5/4) [4, 0, 0] =

1,

с12 =

(5,

6 , 1) [4, 0, 0] =

20,

hz ^2х 22 =

(1/4) 2, 5/4) [0, 3, 0] =

6 ,

с22 =

(5,

6 , 1) [0, 3, 0] =

18.

Следовательно, задача приобретает вид: минимизировать

9Яц-(- 2ОЯ12 18Я224~ ...

9 т. ху

130

при условиях

ГЛ. 7. ПРИНЦИП ДЕКОМПОЗИЦИИ

5 А .ц 4 - Я 12 “Ь 6А-22 + ■ • • = 7 ,

Я,14

=1,

(2)

^12 “Г

^-22 + • • • ;= 1

 

Задача (2) является канонической задачей линейного программи­ рования с неизвестными Яг;-. Если воспользоваться методом штра­ фа (см. § 2.3), то с каждой искусственной переменной должна быть связана достаточно большая положительная оценка. В нашем случае поступим иначе. В табл. 7.1 искусственным переменным отвечают нулевые оценки, и какие бы на их месте ни появлялись в дальнейшем значения относительных оценок, положительные

 

 

 

 

 

Таблица 7.1

 

 

 

1

„а

а

„а

Хц

Х\2

Я22

 

константы

 

x t

*2

хз

 

Z

1 0

0

0

9

20

18

.

0

 

 

1

 

 

5

1

6

.

7

 

 

 

1

 

1

0

0

.

1

ха

 

 

 

1

0

1

1

.

1

3

 

 

 

 

 

 

 

 

 

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

 

 

 

 

Таблица 7.2

 

 

 

 

1

Х а

х а

Х а

Ян

Я12

Я22

константы

 

 

1

2

3

 

Z

1

2/5

— и

- 2 0 ,4

0

0

0

—28,6

Ян

0

0

1

0

1

0

0

1

Я12

0

- 1 /5

1

6/5

0

1

0

4/5

Я22

0

1/5

— 1

- 1 /5

0

0

1

1/5

После введения Яи , Я12, Х22 в базис получается табл. 7.2. Из нее видно, что (л:, щ, п 2) = (—2/5, И , 20,4),

7 48

(cj j t L j ) х 4 = {(1 , 8) — ( — 2/5) (1, 4 )} [X i , x 2] = - ^ x i + ~ x ^

Следовательно, для Si имеем: минимизировать

7

, 48

"g- x l + -g" х 2

Соседние файлы в папке книги из ГПНТБ