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