Файл: Ху, Т. Целочисленное программирование и потоки в сетях.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± |
в 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*