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

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

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

13.2. ПРИМЕРЫ

293

Оптимальное решение задачи линейного программирования: х0 =

= 194/10,

хх =

18/10, я2 =

23/10,

х3

=

7/10.

 

1

— X i

si

X i

 

 

 

Х 0

19

1/7

4/7

 

1

Группа неравенств F

X i

2

3/7

—2/7

 

0

 

 

 

х 2

2

- 1 / 7

3/7

 

0

- 1 (0 ,1 ,4 ,0 ) (0, 5, 6,0)

х 3

1

— 6/7

— 3/7

 

1

 

(0, 2, 1, 0) (0, 6, 3, 0)

x k

0

1

0

 

0

 

 

 

(0,

3, 5, 0) (0, 0, 0, 0

х ъ

1

1/7

— 10/7

 

0

 

 

 

(О, 4, 2, 0)

X i

0

0

0

— 1

 

 

 

 

*1

0

0

— 1

 

0

 

 

 

Оптимальное целочисленное решение:

 

 

 

х0 =

19, xt

=

2, х2 =

2,

х3 - 1.

Заметим, что, выразив ж4, хь и х6 через исходные небазисные пере­ менные Xi, х2 и х3, получим неравенство s. ^ 0 с целыми коэф­

фициентами:

1 0 1 Тб — ^Xl х 1 Тб ^ Xi

^

или Xi -f- Зх2 ^ 8 . Этот вопрос обсуждается в § 13.4. Чтобы полу­

чить матрицу, полностью целочисленную, просто продолжим введение отсечений:

 

1

X i

— s i

— * 6

 

 

l

S2

— * i

— * e

X q

19

1/7

4/7

1

 

# 0

19

l

0

1

X i

2

3/7

— 2/7

0

 

X i

2

3

— 2

0

x 2

2

-1 / 7

3/7

0

 

x 2

2

— i

1

0

x 3

1

— 6/7

-3 / 7

1

Производящая x 3

1

— 6

3

1

X i

0

- 1

0

0

<---------------------------- X i

 

0

— 7

4

0

X i

1

1/7

— 10/7

0

строка

Хъ

1

1

— 2

0

X i

0

0

0

— 1

 

X i

0

0

0

— 1

*1

0

0

— 1

0

 

4

0

0

— 1

0

S2

0

- 1 / 7 *

-4 / 7

0

 

s2

0

- 1

0

0

Пример 2. Рассмотрим задачу:

максимизировать х0 =

3xi

х2,

при условиях

 

 

 

3 # !

2хг <

3 ,

5xt — 4а:2- < — Ю,

1 —{-

х2

5 ,

хи х2 > 0 (целые).

294 ГЛ. 13. ЦИКЛИЧЕСКИЙ АЛГОРИТМ

Вводя

слабые переменные,

получим

исходную

таблицу:

 

1 — Xi —ж2

 

 

 

 

 

1 - я 3

 

— х2

 

 

Я = 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

Группа не­

 

0 - 3

1

D = 1

 

 

 

Яо

3

 

- 1

 

 

равенств:

 

0 —1

0

 

 

 

ж2

1

1/3

 

- 2 /3

 

 

х С 0’ 1- 1)

 

0 0 - 1

 

 

 

 

0

0

 

—1

 

 

 

3

3 *

—2

 

 

 

 

^3

0

—1

 

0

 

 

(О,2,2)

 

—10 —5

—4

 

 

 

 

xi

- 5

5/3

—22/3

 

 

(О, 0, 0)

 

5

2

1

 

 

 

 

х5

3

- 2 /3

 

7/3*

 

 

 

 

1

 

- * з

 

— хъ

Производящая

D = 3 х 7/3 = 7

 

яо

30/7

 

5/7

 

3/7

 

 

 

 

 

<£----------------

Группа неравенств

 

^1

13/7

 

1/7

 

2/7

 

строка

 

4 * (6.1.2) (2, 5, 3)

 

*2

9/7

 

- 2 /7

 

3/7

 

 

 

 

 

*3

0

 

- 1

 

0

 

 

 

 

 

(5, 2, 4) (1,6, 5)

 

xk

31/7

 

- 3 /7

22/7

 

 

 

 

 

(4, 3, 6) (0, 0, 0)

 

ХЪ

0

 

0

—1

 

 

 

 

 

(3, 4,1)

 

 

 

«1

- 6 /7

 

- 1 /7

—2/7*

 

 

 

 

 

 

 

 

 

Оптимальное

решение

задачи

линейного

программирования:

х 0

= 30/7, xi =

13/7,

ж2

=

9/7.

 

 

 

 

 

 

 

 

 

 

1

- * з

-«1

 

 

 

 

 

 

 

 

 

 

 

^0

3

1/2

3/2

 

Ведущая

D — 7 х 2/7 =

2

 

 

 

 

*1

1

0

1

 

Группа неравенств:

 

 

 

0

- 1 /2

3/2

 

<------------

(°> !> !)

 

 

 

 

 

*3

0

- 1

0

 

строка

 

 

 

 

 

х4 —5 _ 2 * И

 

 

 

(0 , 0 , 0 )

 

 

 

 

 

 

3

1/2

—7/2

 

 

 

 

 

 

 

 

 

 

 

Sl

0

0

- 1

 

 

 

 

 

 

 

 

 

 

 

 

 

1

~*4

 

- s i

Производящая

D = 2 х 2 = 4

 

 

 

7/4

1/4

 

17/4

 

 

 

 

<--------------

Группа неравенств

 

 

 

1

0

 

1

строка

 

 

 

 

 

 

 

 

 

5/4

—1/4

 

- 5 /4

 

 

 

 

 

 

 

 

 

 

 

5/2

- 1 /2

—11/2

 

 

 

 

(2,

2,

2)

 

 

 

0

—1

 

0

 

 

 

 

 

( 1 ,

3 ,

3

)

 

 

 

7/4

1/4

 

- 3 /4

 

 

 

 

 

 

 

 

 

 

 

0

0

 

—1

 

 

 

 

 

 

 

 

 

 

- 3 /4

—1/4*

—1/4

 

 

 

 

 

 

 

 

 

 

 

 

 

1

— S2

-S l

 

 

 

 

 

 

 

 

 

 

 

Zo

1

 

l

4

D = 4 х 1/4 =

1

 

 

 

 

 

 

 

 

1

 

0

Г

 

 

 

 

 

 

 

 

 

 

 

я 2

2

—1

—1

 

 

 

 

 

 

 

 

 

 

 

*3

4

—2

—5

 

 

 

 

 

 

 

 

 

 

 

*4

3

—4

1

 

 

 

 

 

 

 

 

 

 

 

*5

1

 

1

- 1

 

 

 

 

 

 

 

 

 

 

 

Sl

0

 

0

—1

 

 

 

 

 

 

 

 

 

 

 

s2

0

—1

0

 

 

ж

 

 

 

 

 

Оптимальное целочисленное решение:

1,

x t

= 1, х 2 = 2,

 

 

 

 

 

 

 

 

 

 

 

0

aj

= 0

(/ Ф 1 .

2 ).

 

 

 

 

 

 

 

 

 

 

 

13.3. ГЕОМЕТРИЧЕСКАЯ ИНТЕРПРЕТАЦИЯ

295

13.3.

Геометрическая интерпретация

 

Рассмотрим производящую строку 2-й таблицы

 

 

■Г* = ~г 2

a J ( *;)>

(1)

где

х) — текущие небазисные

переменные, а0 =

[а0] + / 0 ^ О

([а0] обозначает наибольшее целое, не превосходящее а0). Из урав­ нения (1) получим отсечение Гомори

s = —f0+ ^ f j X j > 0 .

(2)

В исходной таблице все коэффициенты ац — целые, а любая переменная х (базисная или нет) представлена в виде целочислен­ ной комбинации исходных небазисных переменных. Это означает, что правая часть уравнения (1 ) также должна быть представима

в виде целочисленной комбинации исходных небазисных пере­ менных Xj.

Пусть

о-о

хз) — по■+" 2 njxh

(3)

где п0 = ?ij = 0 (mod 1 ), т. е. правая часть равенства (3) есть

целочисленная форма относительно исходных небазисных пере­ менных.

В 2-й таблице х = [а„] + /о- Из уравнений (1) и (3) получаем

х = Но+ 2 njxi — \ао] /о-

(4)

Уравнение (4) определяет гиперплоскость, проходящую через оптимальную вершину выпуклого множества в пространстве Xj. Мы утверждаем, что между гиперплоскостью (4) и гиперплоско­ стью

n 0 + ' Z n j X J = [ a 0 ]

(5 )

нет целочисленных точек. Действительно, если бы такая точка

существовала,

скажем х* = 0 (mod 1 ), то

п0 + 2 nixi должно

быть целым. В то же время между [а01 и [а0] +

/ 0 нет целых зна­

чений. Таким

образом, гиперплоскость

(4)

можно перенести

в положение (5), при этом все допустимые целочисленные точки

удовлетворяют

неравенству п0 + 2 njx] ^ taol-

В йримере

1

xt = 1 0 — 3£t — 2 х 2 > 0 и хъ = И — хх 4 ^ 2 ^ 0 .

Тогда х4 + 1х5 = 87 — Юа^ — 30^2 ^ 0 или Xi + Ъх2 ^ 8,7.

Откуда получаем отсечение Гомори

Xi + Зх2 ^ 8 .

296 ГЛ. 13. ЦИКЛИЧЕСКИЙ АЛГОРИТМ

В уравнении (1) х может быть и слабой переменной s, но, как будет показано в следующем параграфе, любая переменная s представима в виде целочисленной комбинации исходных неба­ зисных переменных. Таким образом, геометрическая интер­ претация остается справедли­

вой и в этом случае.

На рис. 13.2 показано, что отсечение 23= 0 , использован­ ное в примере 1 , является не­

равенством с целыми коэффи­ циентами при исходных неба­ зисных переменных.

Заметим, что для получения новой производящей строки могут быть использованы цело­ численные комбинации уравне­ ний вида (1 ); скажем, сумма

одного уравнения, умноженного на 5, и другого, умнояаднного на (—7). В таком случае левая часть производящей строки может и не быть неотрицательной. Однако если внимательно проследить, как было получено отсечение (9) в § 13.1 из уравнения (4), то выяснится, что для левой части урав­ нения (4) требовалась только целочисленность. Процесс алге­ браического сложения соотношения 0 = Xj (mod 1 ) соответствует

алгебраическому сложению строк таблицы с единичной строкой

13.4. Свойства дополнительных неравенств (Гомори и Баумоль [87])

В этом параграфе будут приведены некоторые свойства допол­ нительных неравенств. Во-первых, будет показано, что дополни­ тельное неравенство вида

* = - / S + 2 / i * S > o ,

(1 )

где х\ — текущие небазисные переменные, становится неравен­ ством с целочисленными коэффициентами, если его выразить через исходные небазисные переменные. Чтобы понять это утвер­ ждение, предположим, что рассматриваемое неравенство (1 )

является первым дополнительным неравенством, а производящая строка имеет вид

s* = aj + 2 ai( —X}),

(2 )

з

 

где х1. —либо исходные переменные, либо слабые

переменные

задачи (1) в § 13.1. Каждую переменную х1. можно выразить через

13.4. СВОЙСТВА ДОПОЛНИТЕЛЬНЫ Х НЕРАВЕНСТВ

297'

исходные небазисные переменные, т. е. xl. = X j или х1.= я

0

~'E.an+j. ;£;• Таким образом, х1 в уравнении (2) будут выражены.

г

через исходные небазисные переменные.

Поскольку любая переменная выражается через исходные небазисные единственным образом, уравнение (2 ) должно приво­

диться к виду уравнений (1) в § 13.1, т. е. либо

П

х*. ■ х и либо xi = arHi, о— 2 an+i,jXj. i=i

В обоих случаях правая часть содержит только целочисленные

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

полученном отсечении

Гомори

si =

2 fj (

хз) =

 

 

 

= { [ ^ 1 + 2 [«)]( — х з ) } ~

{«o + 2 ai( —x j ) \ - (3)

Первая скобка содержит только целые коэффициенты, поскольку [а*], [а]\ — целые части от а\ и а] соответственно. Вторая скобка, как только что было показано, также должна быть целочисленной комбинацией исходных переменных. Поэтому новое неравенство st ^ 0 содержит лишь целочисленные коэффициенты, если его выразить через исходные переменные. Показав справедливость утверждения для первого дополнительного неравенства, мы можем повторить доказательство и для второго, считая первое частью исходной задачи и т. д.

Таким образом, доказано, что дополнительные ограничения Гомори представляют собой целочисленные комбинации исходных небазисных переменных. Исследуя выражение (1) более подробно^ можно сделать еще ряд заключений. Рассмотрим первое дополни­ тельное ограничение Гомори в виде (1). Разобьем множество

переменных х\ на два подмножества J и / . К J отнесем те х), которые являются исходными небазисными переменными, а к / — х], являющиеся исходными базисными переменными. Выразив;

все х\ в уравнении (1 ) через исходные переменные,

получим

 

 

 

 

П

 

 

Si =

— / г о + 2 fux J + 2 f a ( aJo2 aJk* k) > 0 ,

( 4 ) .

 

;£■/

jgj

h=l

 

 

или, по-другому,

 

n

 

 

 

/ г о " Ь 2 fijaJ

 

 

 

o 2 /гЛ'+ 2 (2fiiajh)

xh-

( 3 ) '

 

j£J

 

ft=1 }£j

 

 

Все члены в левой части неравенства (5) положительны, кроме —/ го, где 0 < /;о < 1. Следовательно, левая часть неравенства (5)- строго больше, чем (—1). Кроме того, выше было доказано, чтонеравенство (4) содержит только целочисленные коэффициенты,.

298

ГЛ. 13. ЦИКЛИЧЕСКИЙ АЛГОРИТМ

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

Рассмотрев правую часть неравенства (5), можно увидеть, что коэффициенты при переменных представляют собой либо

Y}Jiiaik, либо

j£ J

JEJ

Рассмотрим особый случай, когда все коэффициенты исходной таблицы неотрицательны. В этом случае 2 fi)aik — неотрицатель-

3EJ

ное число, и, более того, (поскольку было доказано, что все коэф­

фициенты

должны быть целыми)

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

'О, 1, 2, . . . . Коэффициенты

2

fnajk —fij

могут содержать отри-

цательную

часть ( —f i})

( — 1

iej

 

следовательно,

<

f a < . 0 ),

 

2

f ijajk

/ и

1

 

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

целым числом. Поэтому выражение 2 fuajk fa есть неотрица­ тельное целое, т. е. 0, 1, 2 . . . . Проведенные рассуждения отно­ сились к первому дополнительному неравенству, однако это неравенство можно рассматривать как часть исходной задачи и тогда применить доказательство ко второму дополнительному неравенству и т. д.

13.4. СВОЙСТВА ДОПОЛНИТЕЛЬНЫХ НЕРАВЕНСТВ

299

На основании приведенных рассуждений можно сделать сле­ дующий вывод: если все коэффициенты в исходной таблице неотри­ цательные целые, то коэффициенты отсечений Гомори, выражен­ ных через исходные небазисные переменные, есть также неотри­ цательные целые числа.

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

х 0 = «00 “Г 2 « о j ( t j )

коэффициенты a0j ^ 0. Кроме того, tj ^ 0. Если рассмотреть -пространство, как показано на рис. 13.3, то целевая функция является опорной гиперплоскостью положительного ортанта, достигающей максимума в начале координат (tj = 0). Любая точка внутри положительного ортанта соответствует положи­

тельным значениям tj, а значит, уменьшает значение х0. Гиперплоскость

« = — /о + 2 М - = ° .

при tj ^ 0 является гиперплоскостью, рассекающей положи­

тельный ортант на две части, одной из которых принадлежит начало координат. Эта гиперплоскость параллельна гиперплоско­

сти s' = 2 f}tu которая является опорной к положительному

ортанту в начале координат. Было показано, что s представляет

собой целочисленную

комбинацию исходных переменных:

 

 

 

s — п' + 2

nixi — —/о+ 2

/А'-

 

 

(^а)

Текущее

решение

tj =

0 дает целочисленной форме п +

2 nixi

нецелое

значение

—/„. Поэтому опорная

гиперплоскость

s' =

= 2 fflj

= 0 может

быть

перемещена внутрь положительного

ортанта.

 

 

 

 

 

 

 

 

Можно взглянуть на отсекающую гиперплоскость и по-друго­

му,

рассмотрев пространство tj (/ = 1 , .

. ., га)

и s в качестве

(п +

1)-й координаты,

как показано на рис. 13.4.

Тогда уравне­

ние (6 а) описывает гиперплоскость Hi в

пространстве

tj

ф s.

Уравнение

 

 

 

 

 

 

 

 

 

 

 

о = - / о + 2 / л

 

 

 

(6б)

задает пересечение гиперплоскости Hi с s == 0. Гиперплоскость Н г, являющаяся этим пересечением, отсекает начало координат в ^-пространстве.

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

ГЛАВА 14

ПОЛНОСТЬЮ ЦЕЛОЧИСЛЕННЫЙ АЛГОРИТМ

14.1.Полностью целочисленный алгоритм (Гомори [80])

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

Если ai0 (i

= 1, . . ., п + т) — неотрицательные целые, то зада­

ча решена.

Если для какой-нибудь строки ai0 <; 0, то составляется

новое уравнение и записывается внизу таблицы. Эта строка затем служит ведущей. После этого используется двойственный сим­ плекс-метод. Все элементы дополнительной строки должны быть целыми числами, а ведущий элемент равен —1. Введенная таким образом ведущая строка сохранит таблицу целочисленной. Заме­ тим, что в предыдущем алгоритме в качестве производящей строки выбиралась строка с нецелым ai0. В данном случае производящей строкой становится строка с отрицательным ai0.

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

максимизировать

 

 

 

71

 

 

Xqа0о +

2 аоз ( xj)

при условиях

 

3 = 1

 

 

 

 

 

Bi = 1 ( —я * )> 0 ,

 

Хп

1 (

Я-п)

0*

 

 

 

п

 

( 1 )

 

#71+1, о +

2

 

% T l+ i =

а П + 1 , } ( ---^ ) > 0 ,

 

 

3= 1

 

 

.

 

п

 

Я-п+т ~

О'п+т, 0 4 ~ 2

® n+m , j (

3Cj)^-0.

 

 

5 = 1

 

Условия (1) могут быть записаны как

 

 

х' =

А‘ ( —х^).

(2)

14.1. ПОЛНОСТЬЮ

ЦЕЛОЧИСЛЕННЫЙ

АЛГОРИТМ

301

Предположим, что для

t =

0

(т. е.

для

исходной

таблицы)

все ац — целые и столбцы

а;- (/

=

1 , . .

п)

— лексикографиче­

ски положительны. Тогда все столбцы на протяжении вычислений остаются лексикографически положительными.

Прежде чем изложить способ получения дополнительного ограничения из производящей строки, введем новое представление чисел. Пусть [х] обозначает наибольшее целое число, не превосхо­ дящее х. Для любого числа у (положительного или отрицатель­

ного)

и положительного X можно записать

 

 

 

 

 

 

 

 

+

 

( 3 )

где 0

^

rv <

X (гу — неотрицательный остаток от деления нацело

у на

X).

В

частности, 1 =

[1/А,] X + г.

Поэтому

если А, > 1, то

НА,]

=

0

и г =

1.

Если X =

1, то [ИХ]

= 1 и г

= 0.

Так

же

как

и

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

должно выполняться при любом целом решении задачи (1). Рас­ смотрим некоторое уравнение в f-таблице (опуская индекс строки)

с а0 0 :

1

 

ж = Я о+ 2

«Н —

(4)

где х — соответствующая компонента вектора х, a Xjt — текущие небазисные переменные. Можно выразить х, а0 и aj, используя введенное выше представление (3):

х = х X 1 = х |

А,+ г } .

(5 )

а' = [ т " ] Я + °

(/ = 0 , 1 , .. ., п).

(6 )

Подставив выражения (5) и (6 ) в (4) и переставив члены, получим

2 г ^ + " = г 0 + ^ { [ х ] +

2 [ - г ] ( - * Р + [ т ] < _ : г ) } •

3= 1

3= 1

Поскольку Г; ^ 0, г ^ 0 и на переменные х и х) наложено требование неотрицательности, левая часть уравнения (7) всегда неотрицательна. Рассмотрим выражение в правой части, заклю­ ченное в фигурные скобки. Коэффициенты в этом выражении представляют собой целые числа, а переменные подчинены требо­ ванию целочисленности. Поэтому все выражение в скобках должно быть целым. Обозначим его через s, т. е.

5 = [ х ] + 2 [ х ] ( -

+ [ г ] ( - х ) -

(8)

3—1

302

14. ПОЛНОСТЬЮ ЦЕЛОЧИСЛЕННЫЙ АЛГОРИТМ

Целочисленная слабая переменная s является неотрицатель­ ной. Действительно, если бы s было отрицательным, т. е. прини­ мало значения —1 , —2 , . . ., то умножение на X (X > г0) сделало

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

Рассмотрим два случая Х— 1 и

1. Для Х = 1

= [аД

=Подставляя в уравнение (8 ) выражение для х из (4),

получим

s = [ « о ! + 2 [ « Л ( — х\ ) — ( « о + 2 a-i ( — ^ ) } = — / о — 2

( 9 )

Полученное уравнение есть не что иное, как отсечение

Гомори,

полученное в § 13.1. Для ?1 > 1

имеем

и УРавнение (8 )

приобретает вид

 

 

 

- [ * ] + 2

[*]<-*}>■

 

( 10)

Уравнение

(10) должно выполняться для любого допустимого

целочисленного

решения задачи

(1). Заметим, что если

а0 < 0Г

то [aJX\ <

0 в

уравнении (10).

Поэтому уравнение (10)

может

использоваться в качестве ведущей строки в двойственном сим­ плекс-методе. В частности, всегда можно выбрать X достаточно большим, так чтобы ведущий элемент [a,jlX\ в строке (10) стал равным —1 , что позволит сохранить целочисленность таблицы.

Выбор соответствующего X будет влиять на скорость сходимости алгоритма. Прежде всего опишем сам алгоритм. В качестве началь­ ного необходимо взять двойственно допустимое решение, которое можно получить добавлением ограничения xn+m+i = М xt — . . .

. . . — хп ^ 0, где М — достаточно большая константа, и про­ ведением одной итерации с добавленной строкой и с лексикогра­ фически минимальным столбцом, взятыми в качестве ведущих. Алгоритм состоит из следующих шагов.

Ш а г 0. Начать с двойственно допустимой матрицы А 0 в урав­ нении (2 ), элементы которой — целые числа (как будет видно'

из дальнейшего, матрица А° может содержать и нецелые элементы).

Ш а г 1. Среди строк с ai0 < 0 (г = 1, . . ., п + т) выбрать строку с наименьшим значением i; эта строка станет производя­ щей. (Если ai0 ^ 0 (i = 1, . . ., п + т), то задача решена.)

г) Если X > 1, то для получения отсечения (10) из (4) требуется только неотрицательность левой части уравнения (4). Следовательно, любая поло­ жительная линейная комбинация строк таблицы может служить произво­ дящей строкой.

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