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