Файл: Ху, Т. Целочисленное программирование и потоки в сетях.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 15.10.2024
Просмотров: 223
Скачиваний: 0
15.2. МЕТОД РАЗБИЕНИЯ |
317 |
Если выпуклое множество, определяемое условиями uAi ^ |
сА, |
« ^ О, ограничено или сделано ограниченным добавлением нера
венства 2 иг < М, то задачи (3) и (3') эквивалентны, что является интересующим нас случаем. Конечно, мы не можем узнать, являет ся ли множество {и | иА4 ^ с4, и ^ 0} ограниченным, прежде чем решим'задачу (3). Подставив условия задачи (3') в (1), получим
•следующую задачу:
минимизировать |
z |
|
при условиях |
|
|
Z > С2у + max up (b —А2у), |
|
|
|
"Р |
(1 ') |
up> 0 |
( p = l , |
|
У > 0 . |
|
|
Каждое значение вектора up дает одно ограничение для |
задачи |
<(1 '), а сама задача является «чистой» задачей целочисленного
программирования, т. е. все ее переменные y t должны принимать целые значения.
Если известна оптимальная вершина и*, задачу (1') можно решить как «чистую» целочисленную задачу любым из существую щих способов и получить оптимальные значения z* и у*. Подста вив у* в условия (2), найдем минимум щх при условиях А4х ^3=
^ b — А2у*, х ^ |
0, и получим оптимальное значение х*. Под |
|||
ставив х* и .у* в |
условия |
(1), получим z |
= с4х* + с2у*. |
Это |
значение должно, |
конечно, |
совпадать с z * , |
полученным из |
(1 '). |
Если оптимальная вершина и* не известна, то можно, перебрав все вершины ир, найти решение задачи (1'). Трудность такого подхода состоит в том, что обычно существует слишком много вершин ир, поэтому для получения оптимальной вершины и* ■будем использовать следующую итеративную процедуру. Возьмем
любое допустимое значение и (не обязательно вершину), которое удовлетворяет условиям uAj ^ с4, и ^ 0 , подставим его в (1 '). Пусть для этого значения и решением задачи (1 ') будут z и у.
Используя у для решения задачи (3), найдем значение и, макси
мизирующее и (Ь — АгУ)- Пусть решением будет и. Подставим и в условия (1 '), т. е. добавим еще одно неравенство, после чего
опять |
найдем у. Итеративная процедура |
продолжается, пока |
не будет получено оптимальное значение и*. |
||
Для |
оптимальных значений и*, у* и z* |
из (1') имеем |
z* = с2у* + и* (Ь—А2у*),
а для произвольного и из (1 ') получим
z = c2y + u(b —А2у),
318 |
ГЛ. 15. СМЕШАННЫЙ АЛГОРИТМ |
откуда z^ z* , |
поскольку z ^ c 2y + u(b — А2у) является лишь под |
множеством всех ограничений в (1'). Оптимальное значение z* в (1 ) будет получено, если используются все значения ир или
оптимальное и*. Для того чтобы проверить, является ли и опти
мальной |
вершиной, решим |
сначала задачу (1 '), |
используя |
и, |
|
и получим у |
и z, а затем, используя у в задаче (3), |
найдем макси |
|||
мум и (Ь — А2у). Если z —с2у = max и (Ь—А2у), то |
и — оптималь- |
||||
ная вершине. |
U |
|
|
||
|
|
|
|||
Теперь выпишем алгоритм разбиения формально. |
|
||||
Ш а г |
0. |
Начать с и ^ 0 , |
удовлетворяющего условию иА4 |
|
|
^ ct; и не |
обязательно должно быть вершиной. Если такого |
и |
не существует, то задача (1) не имеет допустимых решений. Перей ти к шагу 1 .
Ш а г 1. Решить «чистую» целочисленную задачу:
минимизировать |
z |
при условиях |
|
|
z > c 2y + u(b — А2у), |
|
у^ О , y = 0 (modl). |
Если z не ограничено снизу, то в качестве z взять любое неболь шое значение.
Ш аг 2. Используя у, полученное на шаге 1, решить линей ную программу
максимизировать
u(b — А2у)
при условиях
u A ^ C j, u^O .
Если и не ограничено, a u(b —А2у) ограничено, то добавить
ограничение ^ и ^ М , |
где М — большая положительная константа, |
и решить задачу. |
_ |
Пусть решением этой программы будет и. Проверим выполне ние неравенства
z —C2y < u (b —А2у).
Если оно выполняется как равенство, то перейти к шагу 3. Если не выполняется, перейти к шагу 1 и добавить ограничение z
^ с2у + и (Ь — А2у) к существующему множеству ограничений
15.2. МЕТОД РАЗБИЕНИЯ |
319 |
в задаче (Г). Неравенство в задаче (1') может быть опущено, если соответствующая ему слабая переменная принимает положитель ное значение.
Ш а г 3. Используя у, полученное на шаге 1, решить задачу линейного программирования:
наити минимум
С4Х
при условиях
AtX^b —А2у, х^&0 .
Пусть решением этой задачи будет х. Тогда х и у — оптимальные
решения и z*=CiX |
с2у. |
Теперь докажем, что, во-первых, алгоритм конечен, во-вторых, он дает оптимальное решение и, в-третьих, в любое время можно получить верхнюю и нижнюю границы оптимального решения z*.
Для того чтобы доказать конечность алгоритма, заметим, что существует лишь конечное число вершин множества, задаваемого
Р и с . 1 5 . 2 .
условиями uAi ^ Ci, и ^ 0, если оно ограничено. Если оно не ограничено, то после добавления условия 2 ^ М множество
{и | иА! ^ сь и ^ 0, 2 ui ^ 5 М } становится ограниченным. Для
Доказательства конечности алгоритма следует выяснить только один вопрос: будет ли в итерационном процессе, состоящем из ша гов 1 и 2 , при решении задачи (3) получаться каждый раз новая
вершина ир? Выглядит вполне правдоподобным, что два неопти мальных значения у' и у" могут давать одну и ту же вершину и. Такой случай показан на рис. 15.2. К счастью, такая ситуация
320 |
ГЛ. 15. СМЕШАННЫЙ АЛГОРИТМ |
никогда не возникает.
Пусть z и у — решение, полученное на шаге 1, т. е.
|
z = с2у + и (Ь — А2у) или z —с2у = и (Ь—А2у). |
|
|
(4) |
|||||
Поскольку z |
получается |
из подмножества ограничений в (1'), |
то |
||||||
|
|
|
|
z < z * , |
|
|
|
|
(5) |
где z* — оптимальное значение z. |
|
|
|
где и |
|||||
Из теории двойственности max u (Ь — А 2у) = min ctx, |
|||||||||
принадлежит |
множеству, |
определяемому условиями |
uAj ^ |
Cj, |
|||||
и > 0, |
и на |
х |
наложены ограничения Atx ^ |
Ь — А2у, |
х ^ |
0. |
|||
Пусть |
и — решение, полученное на |
шаге 2. |
Тогда |
|
|
|
|||
|
|
|
u (b —А2у) = ctx. |
|
|
|
(6) |
||
Заметим, что |
х и у дают допустимое |
решение, |
поскольку |
|
|
||||
|
|
|
.А 1х + А2у > Ь , |
|
|
|
|
||
откуда |
следует, |
что с4х + |
с2у > г * , т. |
е. |
|
|
|
|
|
|
|
|
|
С)Х> z* —с2у. |
|
|
|
(7) |
|
Из условий (4), |
(5), (6 ) и (7) получим |
|
|
|
|
||||
|
u (b —А2у) = с4х > z* —с2у > z —с2у = и (Ь—А2у), |
|
|
||||||
где равенство возможно, лишь если |
z —оптимальное |
значение. |
|||||||
Если |
|
|
|
|
|
|
|
|
|
u (Ь—А2у) > и (Ь—А2у),
то и Ф и, а это означает, что либо мы всегда получаем новую вершину при каждом повторении шага 2 , либо получена опти
мальная вершина.
Для доказательства того, что алгоритм приводит к оптималь ному решению, необходимо заметить, что если все ир выписаны в задаче (1 '), то оптимальное решение будет получено.
Чтобы убедиться, что можно получать верхнюю и нижнюю границы, рассмотрим в задаче (1 ') z, которое является нижней
границей оптимального значения z*. Поскольку в задаче (1') выписаны не все ограничения, для получения верхней границы z* дополним результат шага 2 решением задачи
минимизировать
CiX
15.2.” МЕТОД РАЗБИЕНИЯ |
321 |
|
при условиях |
|
|
Ajx > b — А 2у, |
х > |
О, |
где у — значение у, используемое на шаге 2. Тогда допустимым
решением задачи (1 ) является (х, |
у), a |
щх + с2у — требуемым |
||
значением верхней границы на каждом шаге. |
||||
Решим следующий пример, используя |
алгоритм разбиения: |
|||
минимизировать |
|
|
|
|
Ъх + 2yi |
+ |
2уг |
|
|
при условиях |
|
|
|
|
+ Зу1+ 2г/2 |
5, |
|
||
4 # — У\ + |
Z/2^-7, |
(8) |
||
2я + г/1 — г/г>4. . |
|
|||
х > 0 , уи г/2 > 0 , ^ = 2/2 = |
0 |
(modi). |
Перепишем (8 ), считая у произвольно заданным (как указывалось
в начале параграфа.)
минимизировать
Ъх
при условиях |
|
|
|
|
|
" 1 “ |
~ 5 —Зу1 — 2у2~ |
|
|||
4 |
7 + г/i— Уг |
х ^ О . |
(9) |
||
_ 2 _ |
_ 4 — |
i/i+ |
г/2_ |
|
|
Двойственная задача для задачи (9 ) имеет вид |
|
||||
максимизировать |
|
|
|
|
|
|
"5 — 3у1 — 2уг |
|
|||
(щ, и2, и3) |
7- |
У1 — У2 |
|
||
при условиях |
|
4- |
JO + |
*/2 _ |
|
|
|
|
|
|
|
|
ui + 4и2 + 2и3^ |
5, |
( 10) |
||
|
ии щ, |
и3 > |
0 . |
||
|
|
||||
Одним из допустимых |
решений |
задачи (1 0 ) является |
|
||
ltl = 0, |
— |
U3 — O. |
|
||
Из задачи (8 ) получим следующую задачу: |
|
минимизировать
Z
21 т. ху
322 |
ГЛ. 15. СМЕШАННЫЙ АЛГОРИТМ |
|
|
|||||
при условиях |
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
— Зг/i — 2г/2 |
|
|
z > 2yi + 2 г/2 + max up |
7 + |
г/i — |
Уг |
(8') |
||||
|
|
|
|
_ 4 — |
г/1 + |
г/2_ |
|
|
|
|
W21 w3 > -0 . |
|
|
|
|||
Подставляя решение (0, 5/4, 0) задачи (10) в (8 '), получаем |
||||||||
минимизировать |
|
|
Z |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
при условиях |
|
|
|
|
|
|
|
|
|
Зг/i -)- 2г/г+ |
■£• (7 + |
J/i— Уг)> |
|
( 8") |
|||
|
|
|
|
|
|
|
|
|
|
|
Уи У2>0. |
__ |
- |
|
|
||
Решением задачи (8 ") является |
z = |
35 |
0. |
|
||||
, |
г/i = Уг = |
|
||||||
Подставляя Pi = |
j/2 = 0 |
в (10), получаем |
|
|
||||
максимизировать |
|
|
|
|
|
|
|
|
|
|
5п.4-|—7П2 ~Н 4и3 |
|
|
|
|||
при условиях |
|
|
|
|
|
|
|
|
|
|
Ч- 2w3^^5, |
|
|
( 10' ) |
|||
|
щ, |
иг, и3 > |
0 . |
|
|
|
||
|
|
|
|
|
||||
Решением этой задачи является вектор (5, 0, 0), при котором |
||||||||
|
OHi —р 7и 2"J- 4п3 |
25. |
|
|
||||
Поскольку -£ —(2, |
2) [0,0] < 2 5 , |
добавим'в (8 ') новое |
условие и |
|||||
получим: |
|
|
|
|
|
|
|
|
минимизировать |
|
Z |
|
|
|
|
|
|
при условиях |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2^2г/Н-2г/2 + -^-(7 Ч-г/i — у%), |
|
|
||||||
z^2pi |
2г/2 + 3 (5 — 2>у^— 2г/2)> |
|
||||||
|
|
Уь г/г>0 . |
|
|
|
|
||
Решением является ^ = 1, |
г/2 = 0, |
z = 12. |
|
|
|
|||
Подставляя гл = |
1, г/2 = |
0 в (Ю), получаем задачу: |
|
|||||
.максимизировать |
|
|
|
|
|
|
|
2щ -|- 8 w2 -)- Зи3,