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

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

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

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

Добавлен: 15.10.2024

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

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

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

462

 

ПРИЛОЖЕНИЕ G

 

 

2.

Если

два допустимых целочисленных решения,

первое

с Vi =

[2/;] +

а второе с у г = [yt\ + 2,

имеют одно предшест­

вующее, то оптимальное значение целевой

функции для

первого

решения меньше, чем оптимальное значение второго (если сг > 0). Иными словами, чем дальше у г от решения задачи линейного программирования, тем хуже значение целевой функции.

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

Рассмотрим аддитивный алгоритм решения задачи булевого

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

 

 

 

 

 

 

 

Минимизировать

 

 

П

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z =

^

 

 

 

(2 )

при ограничениях

 

 

 

j=i

 

 

 

 

 

 

 

 

 

 

 

 

 

п

 

 

 

 

 

 

 

 

2

auXj>bi,

i =

\ , . . . , m ,

 

(3)

 

;=1

 

 

 

 

 

 

 

 

 

(целые),

j = 1,

.. ., п.

 

(4)

Множество

X]

с

xj =

1,

; 6 Ni,

и

Xj = 0,

j С

6 N N t ( Nj s

N

= {1,

2, . .

., n}) назовем решением. Решение

называется допустимым, если оно удовлетворяет также ограни­

чениям (3). Не

теряя общности,

можно предположить, что 0 ^

^ щ ^

с2 ^

^ сп. (Если некоторое Cj <; 0, мы можем про­

извести

замену

переменных x'j =

1 — X j . ) Подход, использован­

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

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

Для задачи булевого программирования с п переменными имеется 2п решений. Мы разобьем 2" решений на п 4- 1 подмно­



 

 

АЛГОРИТМЫ ТИПА ДЕРЕ А ПОИСКА

 

 

46$

жеств; к-е подмножество

(к = 0, 1,

. .

п) содержит все реше­

ния, в каждом из которых к переменных равны 1,

а остальные

п к

равны 0.

Таким

образом,

нулевое подмножество содер­

жит одно нулевое решение: xj = 0

(/

=

1,

. . .,

п).

Первое

под­

множество содержит

решений:

Xi

=

1,

xj =

0 (/

ф 1);

х2 —

= 1, Xj

=

0 (/ ф

2); . . .

.В общем случае к-е подмножество содер-

(к\

решений. Упорядочим все 2”

решений при помощи диа­

жит I

I

граммы, как это показано на рис. С-1(а) для п = 4.

Каждая вершина на рис. С-1(а) представляет решение. Внутри

каждой

вершины указываются индексы /, для которых xj = 1

(xj = 0

для остальных). Например, вершина с индексами 1,В

внутри

представляет собой решение х^ = х^ — 1, х2 — xk = 0.

С каждой дугой также сопоставляется свой индекс г. Этот индекс означает, что xt = 1 в вершине, где дуга кончается, и xt = О в вершине, где дуга начинается. Значения всех других перемен­ ных в двух вершинах, связанных дугой, одинаковы. Каждую вершину можно достичь из самой верхней вершины посредством многих различных цепей, соответствующих различным способам, которыми можно придавать значения Xj = 1. Если существует цепь из вершины N t в вершину Nj, то N t называется предшест­ вующей вершине Nj, a Nj называется следующей за вершиной N t. Все вершины являются следующими за самой верхней вершиной и предшествующими самой нижней. Все вершины частично упо­


,4 6 4 ПРИЛОЖЕНИЕ С

рядочены отношением «предшествует — следует». Проверяя реше­ ния на допустимость, мы не используем никакой техники линейного программирования. Решения непосредственно подставляем в огра­

ничение (3). Начинаем с самой верхней

вершины (Xj = О,

j =

1,

. . ., п), а затем ищем ближайшую вершину, следующую

за

ней.

Вершина называется висячей, если

мы не проверяем

ни одну из следующих за ней вершин.

Ниже приводятся 4 правила, которые могут быть использованы при проверке.

П р а в и л о 1. Поскольку 0 ^ щ ^ с 2 ^ . . . ^ сп, значе­

ние целевой функции сх для произвольного решения всегда боль­ ше значения целевой функции для решения, ему предшествую­ щего. Таким образом, если вершина допустима, нет необходимости проверять все вершины, следующие за ней. На рис. С-1(б) пред­ полагается, что xi = х2 = х3 == 0, ж4 = 1 — допустимое решение. Этот факт непосредственно исключает из рассмотрения 7 решений.

П р а в и л о 2. Пусть z* — минимальное среди значений целевой функции для рассмотренных пока допустимых значений.

Пусть Zq — значение целевой

функции вершины

N q с xj = 1,

j £ Q и Xj =

0, ; 6 N

Q. Если zQ +

ck >

z*, то мы можем рас­

сматривать

только

те

следующие

за

N Q вершины,

у

которых

x h = xk+l = . . .

=

хп — 0,

так

как

ch < ch+i <

. . . < сп.

Любые другие решения,

следующие за N q, будут доминироваться

допустимым решением с z*.

 

 

 

 

 

 

 

 

П р а в и л о

3.

Рассмотрим

вершину N q

с

xj

=

1, j 6 Q

и Xj = 0, / 6 N Q. Все

вершины, следующие

за N q,

должны

иметь xj = 1, /

6 Q-

Эти

переменные

Xj,

j £ Q,

будем

называть

фиксированными

для вершин,

следующих

за N q,

все остальные

переменные будем называть свободными, так как они могут при­ нимать значение 0 либо 1. Если N q недопустимо,’ то можно счи­ тать, что нет достаточного числа свободных переменных, которые бы удовлетворяли данному ограничению. Пусть, например, таким

ограничением

является —xt х2 + х3 + х^ ^ 1 и N q имеет

Х\ = х2 =

1. Даже если х3 = хк = 1, неравенство не выполняется.

Когда это

происходит, проверять следующие за N q вершины нет

надобности.

 

П р а в и л о

4. Когда подмножество переменных фиксирова­

но, то данное ограничение может заставить некоторые другие переменные также стать фиксированными. Пусть, например, огра­ ничением является 3xi х2 2х3 = 0, а соответствующая вер­

шина имеет Xi = 1, х2 = . . .

 

х п =

0. Все вершины, следую­

щие за ней, должны иметь х 2

=

х3 =

1.

Таким образом нет необ­

ходимости проверять вершину Xi х

2 =

1, х 3 = 0, аг4 = ? , . . . .


ПРИЛОЖЕНИЕ D

ГРАНИ, ВЕРШИНЫ И МАТРИЦЫ ИНЦИДЕНЦИЙ МНОГО­ ГРАННИКОВ

р (Ga, (0))

Грани

7i 7о

^ С т р о к а ^

1

1

2

Вершины

1. (Ы = (2)

Матрица инциденций

Г ран ь 1

Вершина

1 1

Р (G3, (0))

Грани

Вершины

1. (*,)

=(3)

2. (tu <2) = (1,1)

3- (<г) , = (3)

Матрица инциденций

 

Г рань

1

2

3

4

Вершина

 

 

 

 

 

 

1

 

0

1

0

1

2

 

1

1

0

0

3

 

1

0

1

0

30 т. Х у

Р (g 2, (О)

Грани

7i 7о

Строка

1

1

1

Вершины

1. (*!) = (!)

Матрица инциденций

Г рань 1

Вершина

11

Р(Gs, (2))

Грани

Вершины

1. (ii) = (2)

2. (*а)= (1)

Матрица инциденций

Г ра«ь

1

2

3

Верш ина

 

 

 

1

1

0

1

2

1

1

0