Здавалка
Главная | Обратная связь

Метод ветвей и границ



Метод ветвей и границ — общий алгоритмический метод для нахождения оптимальных решений различных задач оптимизации, особенно дискретной и комбинаторной оптимизации. По существу, метод является вариацией полного перебора с отсевом подмножеств допустимых решений, заведомо не содержащих оптимальных решений.

 

Метод ветвей и границ впервые предложили в 1960 году Ленд и Дойг для решения задач целочисленного программирования.

 

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

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

Если удается отбросить все элементы разбиения, то рекорд — оптимальное решение задачи. В противном случае, из неотброшенных подмножеств выбирается наиболее перспективное (например, с наименьшим значением нижней оценки), и оно подвергается разбиению. Новые подмножества вновь подвергаются проверке и т.д.

Вычисление нижней границы является важнейшим элементом данной схемы. Для простейшей задачи размещения один из способов ее построения состоит в следующем.

Запишем исходную задачу в терминах целочисленного линейного программирования [4].

Введем следующие переменные:

 

 

 

 


 

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

yi³ xij, iÎ I, jÎ J,

xij,yi,yiÎ{0, 1}, iÎI, jÎJ.

Двойственная задача линейного программирования имеет вид:

vj£gij+ wij, iÎ I,jÎ J,

wij³0, iÎ I, jÎ J.

Приближенное решение двойственной задачи используется в качестве нижней оценки.

Для сокращения размерности задачи применяется так называемый блок предварительной отбраковки. Он основан на применении условий дополняющей нежесткости для задач линейного программирования

 

Если для оптимального решения двойственной задачи выражение в скобках положительно для некоторого iÎ I , то “скорее всего” в исходной целочисленной задаче yi = 0, и размерность можно уменьшить. Понятно, что данный эвристический прием не всегда приводит к правильному решению. Поэтому в качестве порога лучше брать не 0, а некоторую величину d ³ 0, выбор которой зависит от исходных данных. Эту величину называют порогом отбраковки.

Очевидно, что при d ³max ci, размерность задачи не сокращается.

Другой способ уменьшения трудоемкости алгоритма состоит в искусственном завышении нижней оценки. Предположим, что нас интересует не только оптимальное решение, но и приближенные решения с относительной погрешностью не более e . Тогда завышение нижней оценки в (1 + e ) раз приводит к желаемому результату.







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.