Файл: Ху, Т. Целочисленное программирование и потоки в сетях.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 15.10.2024

Просмотров: 227

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

240

ГЛ . И . МНОГОПРОДУКТОВЫЕ п о т о к и

базиса

и найти вектор цен л: = (я^

я 2, . . ята), где каждый

элемент

соответствует своей строке.

Заметим, что относительная

оценка Cj каждого небазисного столбца а7определяется выраже­ нием Cj = Cj — яа;. Если все Cj ^ 0, то текущий базис является оптимальным. Если некоторый cj > 0, то соответствующий этому cj столбец aj должен быть введен в базис. Оказывается, что задача нахождения Cj несложна. Будем интерпретировать я г как длину дуги г. Тогда величина яа7будет равна длине той цепи, которой соответствует столбец aj. Заметим, что Cj — + 1 для всех столбцов. При вычислениях с помощью симплекс-метода вектор я появляет­ ся в нулевой строке под слабыми переменными х). Оказывается, что нам не нужно запоминать все столбцы матрицы А, соответ­ ствующие всевозможным цепям каждого продукта. На каждой стадии вычислений можно просто использовать модифицированный

симплекс-метод и запоминать матрицу размера + 1 )

X + 1 ).

Если какая-то из

цен л г

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

то столбец,

стоящий под этой

ценой

я г в симплексной таблице,

выбирается

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

ше, то это значит, что текущий базис является оптимальным 2)* . Заметим, что перед введением в таблицу каждый столбец должен быть скорректирован, как это делается в § 7.2.

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

на пропускные

способности дуг,

представленная на рис. 1 1 .8 .

Требования

к

четырехпродуктовому потоку представлены на

рис. 11.9 (т.

е.

нужно пропустить

2 единицы 1-го продукта из

в N 2, три единицы 2-го продукта — из N 2 в А 4 и т. д.). Требуется

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

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

цепи приписывают пропускную способность,

равную заданному

:) В

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

появляется вектор я,

а не —я

из-за того, что мы используем —св и —

в исходной таблице.

2) Если длина некоторой кратчайшей цепи окажется меньше 1, то стол­ бец, соответствующий этой цепи, должен быть введен в базис.— Прим,

перев.


11.2. МНОГОПРОДУКТОВЫЕ потоки

241

требованию к потоку этого продукта. Сеть, получаемую в резуль­ тате «наложения» друг на друга цепей, соответствующих всем заданным требованиям к потоку, назовем допустимой. Можно считать, что все допустимые сети имеют те же дуги и узлы, что и исходная сеть, но разные дуговые пропускные способности. (Некоторые из пропускных способностей дуг могут быть равны О,

Р и с .

11.8. Дуговые

Р и с . 11.9.

Требова­

пропускные способности.

ния к

сети.

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

Произвольную допустимую сеть можно представить то-мерным вектором &j = [а,!], а2ц • • ■> «м;!, где а17- — пропускная спо­ собность 1 -й дуги, а2;- — пропускная способность 2 -й дуги и т. д.

Тогда все допустимые сети могут быть представлены в виде матри­

цы

содержащей т строк. (Например, для сети на рис. 11.8

матрица [atj] будет иметь 5

строк.)

 

Будем называть линейной

выпуклой комбинацией допустимых

сетей линейную выпуклую комбинацию векторов aj. Любая линейная выпуклая комбинация допустимых сетей также удовле­ творяет заданным требованиям к потоку. Предлагаемый ниже подход позволяет определить, содержится ли в исходной сети такая сеть, которая является линейной выпуклой комбинацией

допустимых

сетей.

 

 

 

 

 

Если исходная сеть, представимая в виде [bj, b2, . . ., Ьт],

содержит сеть вида [Ъ[,

Ь',

. . .,

Ъ'т], где

Ъ\ ^ bt

(i = 1, 2, . . .

. . ., то), а столбец [Ъ[,

.

. ., Ът’ ] является линейной выпуклой

комбинацией столбцов матрицы

то эта исходная сеть удовле­

творяет заданным требованиям к потоку.

 

 

Обозначим через xj

коэффициент при

столбце

в линейной

комбинации

столбцов

матрицы

[ац\.

Тогда

многопродукто­

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

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

16 т. Ху


242

Г Л . 11.

М Н О ГО П РО ДУ К ТО В Ы Е

п о т о к и

при условиях

 

 

 

 

yj atjXj

L Si = bi (i = 1 , 2 ,

. . m),

(1 )

si^ z 0.

Если оптимальное значение 0 ^ 1 , это значит, что в исходной сети все требования к многопродуктовому потоку выполняются.

Если оптимальное значение 0 = 1, то исходная сеть является допустимой. При такой формулировке матрица [а,ц] может содер­ жать миллионы столбцов, но, к счастью, нет необходимости все их выписывать.

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

цен я. С помощью этого вектора я можно, как это делалось в моди­ фицированном симплекс-методе, найти столбец, который увели­ чивает значение целевой функции. Так как относительная оценка cj столбца aj определяется выражением Cj = Cj — яа;-, а с} = 1

для всех столбцов, то нам надо искать минимальную из величин

яаj. Если при

минимальном значении яа;- получится, что Cj

=

= Cj — яа7- ^

0 , то текущее решение будет оптимальным.

 

При вычислениях мы запоминаем матрицу размера + 1)

X

X + 1 ) и интерпретируем величину я г как стоимость дуги i

единичной пропускной способности. Когда в симплексной таблице получаются все я г ^ 0 , мы пытаемся ввести в базис столбец,

который представляет самую дешевую допустимую сеть 1). Если получается 0 ^ 1 , значит, все требования к многопродуктовому

потоку выполняются. Если получается, что 0 < 1, а яа7- ^ 1 для всех у, то исходная сеть не содержит линейной выпуклой ком­ бинации допустимых сетей 2*).

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

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

способности

исходной

сети (как

значения слабых

переменных);

0 в этой таблице равно 0. Здесь вектор b =

[bit b2,

Ь3, Ь4, 65] =

= [9/ 2, 5/2,*

3, 4, 5/2].

Заметим,

что в табл.

11.1

имеется одно

х)

См. упр. 2 к гл.

9 и работу

[90].— Прим,

перев.

 

2)

Следовательно, в исходной сети не могут быть реализованы одновре­

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



 

 

11.2. МНОГОПРОДУКТОВЫЕ потоки

 

 

243

 

 

Таблица 11.1 *)

 

 

 

 

Таблица 11.2

 

 

1

Sj S2 s 3 s4 s 5

x l

 

1

S1

s2

s3

s4 s5

x2

0

0

 

—1 .

0

1/2

 

 

1/6

 

- 1

S1

9/2

1

2

Sj

7/2

1

 

- 1 /3

 

5

S2

5/2

1

3

S2

1

 

1

- 1 /2

 

0

«з

3

1

6*

X1

1/2

 

 

1/6

 

0

s4

4

1

0

4

4

 

 

0

1

6

»5

5/2

1

2

«5

3/2

 

 

- 1 /3

1

5*

l)

Всепустые места в таблицах означают

 

 

 

 

 

 

 

нули.

 

 

 

 

 

 

 

 

 

небольшое отличие от записи, используемой в гл. 5: ранее стоящий справа столбец b теперь является нулевым столбцом. В верхнем

левом углу

таблицы

записывается значение целевой функции.

В табл.

11.1 я =

[0, 0, 0, 0, 0], поэтому любая сеть, удовле­

творяющая требованиям к потоку, будет самой дешевой. В частно­ сти, можно взять такую сеть: [2, 3, б, 0, 2]. Здесь, чтобы про­

пустить 2 единицы 1 -го продукта

из TVj

в iV2, взята дуга

i = 1

с пропускной способностью 2 ;

второй продукт величины 3

из N 2

в TV4 пропускается по дугам

i — 2

и i =

3, каждая пропускной

способности 3; чтобы пропустить 3-й продукт из N 3 в N t величи­

ны 3 используется снова дуга i = 3, для чего ее пропускная способ­ ность увеличивается еще на 3 единицы (в результате становится

равной 6 );

наконец, 4-й продукт величины 2 из N\

в N 3 пропу­

скается

по

дуге

i =

5

пропускной

способности

2.

Эта

сеть

[2 , 3, 6 , 0 ,

2 ] представлена самым правым столбцом в табл.

1 1 .1 .

Применив

итерацию

симплекс-метода

к

табл.

11.1,

получим

табл. 1 1 . 2

(кроме самого правого ее столбца).

 

 

 

 

 

В табл. 11.2 я

= [0,

0,

1/6, 0,

0]. При таком я самой дешевой

допустимой

сетью

будет

такая:

[5, 0, 0,

6 , 5].

Она

записана

в

самом

правом

столбце

табл. 11.2. (Заметим, что

столбец

[5,

0, 0,

6 ,

5] нужно

скорректировать

перед

введением

его

в табл. 11.2. В данном случае скорректированный столбец снова имеет вид [5, 0, 0, 6 , 5].)

После очередной итерации симплекс-метода получится таб­ лица 11.3 (кроме самого правого ее столбца). Здесь я = [О, О, 1/10, 0, 1/5], а самая дешевая сеть такая: [10, 5, 0, 6 , 0]. Применив

итерацию симплекс-метода к табл. 11.3, получим табл. 11,4.

16*