Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Системный анализ / 20. Лэнд и Дойг (штрафы).DOC
Скачиваний:
38
Добавлен:
10.05.2014
Размер:
221.18 Кб
Скачать

Использование штрафов для отсеивания бесперспективных ветвей

Итак, в предыдущем разделе фактически сформулированы правила, по которым можно отбрасывать ветви, соответствующие задачам, не имеющим решения. Причем, использование механизма штрафов позволяет вообще отказаться от решения соответствующих задач.

Следующий вопрос - это использование механизма штрафов для отсеивания бесперспективных ветвей.

Допустим, в результате решения серии задач ЛП в списке задач имеется некоторая задача, оптимальное решение которой удовлетворяет требованию целочисленности, и на этом решении целевая функция имеет значение R.

Пусть из списка выбирается некоторая задача, имеющая максимальную оценку Z* (естественно, большую, чем R).

Пусть, далее выбирается нецелая координата  x , и по этой координате вычисляются штрафы. Если какой-либо штраф не удается вычислить, соответствующая ветвь отбрасывается, так как новая задача не имеет решения.

Пусть вычислены штрафы (сверху) и (снизу).

Тогда открывается возможность установить "бес­пер­спектив­ность" соответствующих новых задач:

1. Z* -   R  -  решать задачу, которая порождается введением ограничения xp   [xp] + 1 не имеет смысла: оценка будет заведомо плохой;

2. Z* -   R  -  решать задачу, которая порождается введением ограничения xp  [xp]  не имеет смысла: оценка будет заведомо плохой;

Отсюда естественным образом вытекает следующее правило:

Если max{ Z* -  , Z* -  } R  , следует вообще отказаться от ветвления по переменной xp (соответствующая ветвь просто отбрасывается).

Рассмотрим вопрос выбора переменной для ветвления.

Ветвление имеет смысл осуществлять по той переменной, которая имеет максимальный штраф.

Штраф переменной xp (p=1,2,...,m) определяется следующим образом:

= max{ , }*)

*) - этим подчеркивается то обстоятельство, что какого-либо штрафа может и не быть.

Таким образом, для ветвления выбирается переменная с максимальным штрафом - ускоряется процесс уточнения оценки.

После того, как выбрана переменная, формируются две задачи.

В первую очередь решается та задача, которая обладает минимальным штрафом (сверху или снизу).

Эта задача, если, конечно, она перспективна, решается и помещается в список.

Затем исследуется вторая задача (если она есть). Если она перспективна (первая решенная задача может сделать вторую бесперспективной), то решается и помещается в список задач.

В общем случае перспективность той или иной задачи проверяется два раза: до и после решения.

Поиск приближенного решения в методе Лэнд и Дойг

В заключение этого раздела рассмотрим вопрос поиска приближенного решения задач ЛЦП методом Лэнд и Дойг.

Предположим, что Vк - это максимальная верхняя граница, известная к шагу "к" работы алгоритма.

Допустим, на этом шаге решается некоторая задача ЛП , и эта задача имеет оптимальное целочисленное решение Xk, доставляющее целевой функции значение Zk . Тогда Xk считается "хорошим", почти оптимальным решением, если имеет место:

  , где - заданная точность решения, например,  =  0.01

Пример ( метод Лэнд и Дойг)

Дана оптимальная симплекс-таблица некоторой задачи, которая решается методом ветвей и границ:

Баз.

Сбаз

А0

1

3

0

0

А1

А2

А3

А4

А1

1

5/2

1

0

1/2

-1/2

А2

3

3

0

1

0

1

23/2

0

0

1/2

5/2

Очевидно, что ветвление следует провести по переменной x1.

Исходная задача ЛП

З2

З1

Исходная задача ЛП

Исходная задача ЛП

x12

x13

Для того, чтобы определить, по какой ветви следует идти (какая из двух задач З1 и З2 должна решаться в первую очередь), найдем штрафы сверху и снизу.

З1: = - штраф сверху

З2: = - штраф снизу

Ввиду того, что штраф снизу меньше, чем сверху, в первую очередь следует решать задачу З2, которая получается из исходной задачи добавлением ограничения:

x1  [x10] = [5/2] = 2

Как технически осуществить решение задачи З2 ? Ведь исходной задачи нет. Есть только оптимальная симплекс-таблица, в которой записано решение исходной задачи.

Здесь используется следующий прием.

В первой строке симплекс-таблицы записано уравнение:

x1x10 - или x1 = 5/2 - (1/2)x3+(1/2)x4 .

Учитывая, что дополнительное ограничение имеет вид x1 2, его можно записать следующим образом:

x1 = 5/2 - (1/2)x3+(1/2)x4 2 . Отсюда:

 - (1/2)x3+(1/2)x4 -1/2 .

Придадим этому ограничению - нестрогому неравенству форму ограничения - уравнения, путем введения в правую часть дополнительной (неотрицательной) переменной x5 :

(1/2)x3+(1/2)x4 + x5 = -1/2 .

Теперь можно воспользоваться оптимальной симплекс-таблицей исходной задачи. Добавив в эту таблицу новую строку, соответствующую этому ограничению, и один столбец, можно получить исходную симплекс-таблицу для решения задачи З2 :

Баз.

Сбаз

А0

1

3

0

0

0

А1

А2

А3

А4

А5

А1

1

5/2

1

0

1/2

-1/2

0

А2

3

3

0

1

0

1

0

А5

0

-1/2

1

0

0

0

0

-1/2

1

1/2

-1

1

-2

23/2

0

0

1/2

5/2

0

А1

1

2

А2

3

3

Эту часть можно не считать

А3

0

1

11

 Получен рекорд

Получено оптимальное решение задачи З2 . Заносим эту задачу в список.

Начинается решение задачи З1, которая получается из исходной задачи путем введения дополнительного ограничения x3  3.

Штраф сверху известен:

=.

То есть, самое большое значение ЦФ, которое может быть получено, это 23/2 - 5/2 =9.

Но в списке уже есть задача с целочисленным решением и лучшим (большим) оптимальным значением ЦФ (задача З2). Следовательно, задача З1 бесперспективна: ее не следует решать и заносить в список задач.

Теперь в списке есть единственная задача с целочисленным решением (задача З2). Следовательно, получено оптимальное решение исходной задачи:

Zопт= 11, Xопт=(2,3).