Метод внутренней точки: барьер и центральный путь

Метод внутренней точки решает задачи оптимизации, двигаясь не по границе допустимой области, как симплекс-метод, а сквозь её внутренность. Идея простая: к целевой функции добавляют барьер, который уходит в бесконечность у каждого ограничения и тем самым удерживает решение строго внутри. Постепенно ослабляя этот барьер, мы спускаемся по плавной кривой - центральному пути - прямо к оптимуму. Ниже разберём, как строится логарифмический барьер, что такое центральный путь и параметр , как связан с зазором двойственности и за сколько шагов метод сходится. Чтобы сразу увидеть связь барьера, пути и зазора, покрути калькулятор: он показывает барьерную функцию, центральный путь и геометрическое убывание зазора одновременно, а дальше мы выведем каждую формулу строго.
Зачем нужна внутренняя точка
Классический симплекс-метод идёт по вершинам многогранника допустимых решений: он перебирает угловые точки, пока не упрётся в оптимум. На практике это работает быстро, но в худшем случае число вершин растёт экспоненциально, и алгоритм может застрять. Метод внутренней точки устроен иначе: он стартует из точки строго внутри допустимой области и движется к оптимуму по гладкой траектории, ни разу не касаясь границы до самого конца. Для задач линейного программирования это даёт полиномиальную оценку сложности, а для выпуклых нелинейных задач - единый и устойчивый аппарат.
Ключевое слово здесь - внутренняя. Решение всё время остаётся допустимым с запасом, а не балансирует на ребре. Это и делает метод численно устойчивым: нет резких переключений между активными ограничениями, как у симплекса.
Логарифмический барьер
Рассмотрим простейшую модель, на которой видна вся механика: минимизировать при ограничениях . Чтобы запретить выход за границы, заменим жёсткие ограничения штрафом, который растёт без предела при приближении к стенке. Самый удобный такой штраф - логарифмический барьер:
Когда приближается к или к , соответствующий логарифм уходит в , а из-за знака минус сам барьер - в . Поэтому минимум всегда лежит строго внутри интервала : барьер физически не пускает решение на границу. Параметр задаёт силу барьера: при большом штраф мощный и тянет точку к центру, при малом - почти не мешает, и решение прижимается к настоящему оптимуму.

Минимум барьерной функции найти легко: приравняем производную к нулю.
Это уравнение сводится к квадратному относительно , и его корень, лежащий внутри , и есть искомая внутренняя точка . Поскольку оба логарифма выпуклы, строго выпукла, значит минимум единственный - ровно та точка, которую отмечает калькулятор выше.
Центральный путь
Если решать задачу минимизации для каждого значения , точки выстраиваются в гладкую кривую. Эта кривая называется центральным путём:
При больших путь стартует около аналитического центра области (точки, равноудалённой от ограничений в смысле барьера), а при он сходится к оптимуму исходной задачи. Идея алгоритма в том, чтобы не решать задачу сразу при - там барьер вырождается, - а идти вдоль пути: взять умеренное , найти методом Ньютона, уменьшить и повторить, стартуя из предыдущей точки. Каждый шаг короткий, потому что соседние точки пути близки.

Именно из-за этого метод и называют методом следования за центральным путём. На графике пути в калькуляторе хорошо видно: кривая ровная, без изломов, и при упирается в горизонталь оптимума. Чем меньше , тем ближе текущая точка к ответу.
Параметр mu и зазор двойственности
Параметр - это не просто настройка силы барьера, он имеет точный смысл. Для задачи с ограничениями-неравенствами выполняется фундаментальное соотношение: на центральном пути зазор двойственности (разность между значениями прямой и двойственной задач) равен
В нашей модели два ограничения ( и ), поэтому зазор равен . Это даёт честный критерий остановки: мы не гадаем, близко ли решение, а точно знаем - текущая точка отличается от оптимума по значению не более чем на . Хотим точность - доводим до . Поэтому метод внутренней точки самосертифицирующийся: вместе с приближённым решением он выдаёт гарантию его качества.
Шаг метода и сходимость
Алгоритм в чистом виде укладывается в короткий цикл. Выбираем стартовое и коэффициент уменьшения , например . На каждой итерации:
- при текущем делаем один-два шага Ньютона по , приближая ;
- уменьшаем барьер: ;
- проверяем зазор : если он меньше требуемой точности - стоп.
Поскольку убывает геометрически, зазор тоже падает геометрически: . Чтобы довести зазор от стартового до , нужно порядка итераций - это десятки шагов даже для очень высокой точности. Калькулятор сверху сразу показывает это число для текущих настроек: сдвиньте и посмотрите, как меняется счётчик шагов до .
Шаг Ньютона для одномерного барьера выглядит так: , где вторая производная всегда положительна, что и гарантирует движение к минимуму. В многомерном случае вместо деления на решают линейную систему с гессианом, но логика та же.
Частые ошибки
- Сразу брать . При нулевом барьере функция вырождается, а метод Ньютона расходится. Барьер уменьшают постепенно, идя вдоль центрального пути, а не отключают разом.
- Стартовать с границы. Начальная точка обязана быть строго внутренней: при или логарифм не определён. Нужна допустимая точка с запасом по всем ограничениям.
- Путать барьер и штраф. Штрафная функция допускает выход за границу и наказывает за это; барьер не пускает наружу в принципе. Это разные методы, и барьерный требует строго внутренней точки.
- Игнорировать смысл . - это не абстрактный темп, а зазор двойственности, делённый на число ограничений. Критерий остановки задают через зазор , а не на глаз.
- Слишком резко снижать . Если умножать на очень малый коэффициент, новая точка оказывается далеко от пути и Ньютон может не сойтись за пару шагов. Баланс между числом внешних итераций и сложностью внутренних задаёт .
FAQ
Чем метод внутренней точки отличается от симплекс-метода? Симплекс идёт по вершинам границы допустимой области, метод внутренней точки - сквозь её внутренность по центральному пути. Симплекс в худшем случае экспоненциальный, метод внутренней точки для линейного программирования полиномиальный и лучше масштабируется на большие выпуклые задачи.
Что такое центральный путь простыми словами? Это кривая, которую заметают минимумы барьерной функции при разных . Каждая её точка - компромисс между минимизацией цели и удержанием решения подальше от границ. При компромисс смещается в сторону цели, и путь приходит точно в оптимум.
Почему параметр равен зазору двойственности? На центральном пути условия дополняющей нежёсткости выполняются не точно, а с зазором на каждое ограничение. Сумма этих зазоров и есть разность прямой и двойственной целевых функций, то есть зазор двойственности . Это даёт встроенную гарантию точности решения.
Коротко
Метод внутренней точки заменяет жёсткие ограничения логарифмическим барьером и движется к оптимуму по центральному пути - кривой минимумов . Параметр задаёт силу барьера и одновременно равен зазору двойственности, делённому на число ограничений, поэтому при внутренняя точка сходится к оптимуму, а зазор служит точным критерием остановки. Геометрическое уменьшение даёт сходимость за десятки шагов и встроенную гарантию качества решения.
Читайте также

Метод минимального элемента: транспортная задача
Метод минимального элемента в транспортной задаче: пошаговый алгоритм начального плана, таблица тарифов, критерий оптимальности. Примеры и частые ошибки.

Метод северо-западного угла: транспортная задача
Метод северо-западного угла для транспортной задачи: как пошагово построить опорный план, проверить его на вырожденность по правилу m+n-1 и посчитать стоимость перевозок с разбором типовой задачи.

Теорема двойственности линейного программирования
Теорема двойственности линейного программирования: прямая и двойственная задачи, правила построения, слабая и сильная двойственность, дополняющая нежёсткость и теневые цены.