- •6.1. Продолжительность симплекс-алгоритма
- •6.2. Размер экземпляра задачи лп
- •6.3. Задача эквивалентной допустимости
- •6.4. Начальные сведения о методе эллипсоида
- •6.5. Описание метода эллипсоида на интуитивном уровне
- •7.1. Алгоритм Хачияна
- •7.2. Обоснование метода эллипсоида
- •8.1. Терминология теории графов
- •8.2. Задача потока минимальной стоимости
- •8.3. Метод остовного дерева
- •8.4. Условия оптимальности
- •8.5. Стержневое правило для изменения базиса
- •8.6. Поиск начального допустимого решения
- •8.7. Целочисленность оптимальных решений
- •9.1. Транспортная задача
- •9.2. Табличная форма
- •9.3. Задача назначений
- •9.4. Лп-ослабления
- •9.5. Задача о максимальном потоке
- •10.1. Теорема максимального потока – минимального разреза
- •10.2. Управление проектом
- •10.3. Задача кратчайшего пути
- •10.4. Уравнение Беллмана
- •11.1. Алгоритм Беллмана-Форда
- •11.2. Алгоритм Дейкстры
- •11.3. Преформулировка с неотрицательным
- •11.4. Задача минимального остовного дерева (мод)
- •11.5. Жадный алгоритм Прима для задачи мод
- •12.1. Задача максимального разреза
- •12.2. Задача полуопределенного программирования
- •12.3. Игра «Симметричное рандеву»
- •12.4. Методы внутренней точки для лп и поп
- •13.1. Основы метода
- •13.2. Задача о ранце
- •13.3. Метод Дакина
- •14.1. Виды алгоритмов
- •14.2. Точные методы
- •14.3. Полиномиальная формулировка зк
- •14.4. Решение с помощью метода ветвей и границ
- •14.5. Приближенный алгоритм для задачи коммивояжера
- •15.1. Эвристики задачи коммивояжера
- •15.2. Метод ближайшего соседа
- •15.3. Метод ближайшего соседа для зк
- •15.4. Имитация отжига
- •15.5. Генетические алгоритмы
12.4. Методы внутренней точки для лп и поп
ПОП решается численно с использованием методов внутренней точки. Алгоритм эллипсоида относится к числу таких методов. Однако, это не самый эффективный метод. Рассмотрим прямую и двойственные задачи линейного программирования:
минимизировать
при условиях
.
максимизировать
при условиях
.
Ограничения
формы
и
являются проблематичными. Поэтому мы
отбросим их и модифицируем прямую и
двойственную целевые функции следующим
образом (для
):
и
.
Член
представляет собой так называемую
барьерную
функцию,
которая предотвращает приближение
к нулю. Однако ее влияние уменьшается
по мере приближенияµ
к нулю. Аналогично для ПОП, ограничение
заменяется барьером:
.
Рассмотрим функцию Лагранжа
.
Мы можем доказать, что векторы x, y, s являются оптимальными для модифицированных прямой и двойственной задач, если
, (12.1)
, (12.2)
, (12.3)
, (12.4)
для
всех i
. (12.5)
Предположим. что у нас есть допустимые решения, которые удовлетворяют формулам (12.1)-(12.4). Однако они не являются оптимальными, если (12.5) не выполняется.
Ключевая
идея алгоритма состоит в использовании
следующей стратегии: необходимо
одновременно уменьшать µ
до нуля и при этом пытаться обеспечить
условие (12.5). На каждой итерации алгоритма
мы используем метод Ньютона, делая шаг
,
который обеспечивает решение уравнений
(12.1), (12.3), (12.5), и который достаточно мал,
чтобы сохранились условия (12.2) и (12.3). Наk-ой
итерации мы имеем
,
где
.
Можно
доказать, что такой алгоритм уменьшает
величину
с
до
за время
.
Лекция 13. МЕТОД ВЕТВЕЙ И ГРАНИЦ
13.1. Основы метода
Метод ветвей и границ (англ. branch and bound) – общий алгоритмический метод для нахождения оптимальных решений различных задач оптимизации, особенно дискретной и комбинаторной оптимизации. По существу, метод является вариацией полного перебора с отсевом подмножеств допустимых решений, заведомо не содержащих оптимальных решений. Метод ветвей и границ был впервые предложен в 1960 году американскими учеными А.Х. Лендом и А.Г. Дойгом для решения задач целочисленного программирования. Он используется для решения некоторых NP-полных задач, таких как задача коммивояжера и задача о ранце.
Предположим, мы хотим решить задачу:
минимизировать
при условии
,
где
Х
является конечным множеством допустимых
решений. Метод ветвей и границ использует
подход «разделяй и властвуй», при котором
задачи разбиваются на подзадачи. Исходная
задача разбивается на одну или несколько
подзадач, i-ая
из которых минимизирует
в области
.
Мы можем последовательно разбивать
область
на подобласти, продолжая процесс до тех
пор, пока не удастся решить подзадачу.
Полученные подобласти образуют дерево,
называемоедеревом
поиска
или деревом
ветвей и границ.
Предположим, что для некоторой подзадачи,
в которой функция f
минимизируется в области
,
гдеX′
является подмножеством X,
мы можем вычислить нижнюю границу такую,
что
.
Алгоритм метода ветвей и границ
Алгоритм хранит список L нерешенных (активных) подзадач. Величину стоимости наилучшего допустимого решения, которое найдено на данный момент, будем обозначать буквой U.
Шаг
0. Инициализация.
Принимаем
.
Исключаем очевидно неправдоподобные
решения. Относим остальные решения к
одному новому подмножеству. Переходим
к шагу 2.
Шаг 1. Ветвление. Используем некоторое правило ветвления для выбора одного из оставшихся подмножеств, разбивая его на два или более подмножеств. Существует два общих правила:
Лучшее граничное правило. Делим подмножество с наименьшей границей, надеясь, что это даст лучший шанс на оптимальное решение и позволит отказаться от других подмножеств путем тестирования.
Новое граничное правило. Делим недавно созданные подмножества, отказываясь от лучшего граничного правила. Этот бухгалтерский учет имеет преимущества в том, что нам не нужно постоянно находится возле дерева. Это может оградить нас от некоторых вычислительных сложностей при расчете границ.
Шаг
2. Вычисление нижней границы.
Для каждого нового подмножества Y
вычисляем
.
Шаг 3. Правила отсева. Исключаем из дальнейшего рассмотрения любое новое подмножество Y такое, что
(a)
.
(б) Y не содержит допустимых решений.
(в) Мы можем найти оптимальное решение задачи минимизации f в области Y, скажем x′, такое что ℓ(Y) = f (x′). Если ℓ(Y) ≥ U, мы устраняем Y посредством теста (а). Если ℓ(Y) < U, мы принимаем U = ℓ(Y), сохраняем x′ как лучшее решение на данный момент, и повторно применяем тест (а) для всех остальных активных подмножеств.
Шаг 4. Правило остановки. Если не осталось активных подмножеств, останавливаемся. Полученное на данный момент лучшее решение является оптимальным. В противном случае, переходим к шагу 1.
