Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы 1-12 Математические основы программной инженерии.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
3.58 Mб
Скачать
  1. Методы и задачи дискретного и целочисленного программирования. Метод ветвей и границ

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

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

Общая идея метода может быть описана на примере поиска минимума функции на множестве допустимых значений переменной . Функция и переменная могут быть произвольной природы. Для метода ветвей и границ необходимы две процедуры: ветвление и нахождение оценок (границ).

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

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

В основе метода ветвей и границ лежит следующая идея: если нижняя граница значений функции на подобласти дерева поиска больше, чем верхняя граница на какой-либо ранее просмотренной подобласти , то может быть исключена из дальнейшего рассмотрения (правило отсева). Обычно минимальную из полученных верхних оценок записывают в глобальную переменную , любой узел дерева поиска, нижняя граница которого больше значения , может быть исключён из дальнейшего рассмотрения.

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

Метод используется для решения некоторых NP-полных задач, в том числе задачи коммивояжёра и задачи о ранце.

  1. Решение задачи линейного программирования симплекс-методом

Рассмотрим ОЗЛП, где базисные переменные разрешены отно­сительно свободных . Например,

– вершина, при этом базисные переменные , , .

В ОЗЛП все переменные должны быть , следовательно, эта вершина недопустима. Признаком недопустимости вершины является наличие отри­цательных свободных членов в ограничениях равенствах. Если отрицатель­ный свободный член есть, то надо перейти в другую вершину, для чего одну базисную переменную сделать свободной и приравнять к нулю, а какую-то свободную превратить в базисную. Следовательно, переход из одной верши­ны в другую осуществляется путем замены базисной переменной на свобод­ную. Это называется симплекс-преобразованием. Если мы будем переходить из вершины в вершину «в сторону ОДР», то за конечное число таких перехо­дов попадем в допустимую вершину. Назовем ее опорной вершиной, а соот­ветствующее решение опорным решением. Пусть получено опорное решение, например, для следующей задачи. Проверим, оптимально оно или нет.

,

,

,

; ; ; .

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

Таким образом, симплекс-метод – это метод решения задач ЛП, который ос­новывается на процедуре перехода от одной вершины к другой до тех пор, пока не придем в оптимальную вершину. Он состоит из трех алгоритмов:

  1. Алгоритм перехода из одной вершины в другую, когда известна пара пре­ образования. Он пересчитывает коэффициенты системы уравнений для нового базиса. Назовем его алгоритмом симплекс-преобразования.

  2. Алгоритм нахождения такой пары преобразования, чтобы при переходе в новую вершину мы приближались к ОДР. Это алгоритм отыскания опорного решения.

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

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

Найдя опорное решение, мы движемся по вершинам ОДР так, чтобы целевая функция улучшалась, и при этом эти вершины были опорными (5 и 6 – оптимальная). Эти три алгоритма гарантируют либо отыскание оптимального решения, либо доказательство отсутствия допустимого решения, либо доказательство отсутствия оптимального решения.