EssayAI
Блог
Блог
Математика и алгоритмы

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

11 июня 2026Время чтения: 8 минут
#метод внутренней точки#логарифмический барьер#центральный путь#линейное программирование#зазор двойственности
Метод внутренней точки: барьер и центральный путь

Метод внутренней точки решает задачи оптимизации, двигаясь не по границе допустимой области, как симплекс-метод, а сквозь её внутренность. Идея простая: к целевой функции добавляют барьер, который уходит в бесконечность у каждого ограничения и тем самым удерживает решение строго внутри. Постепенно ослабляя этот барьер, мы спускаемся по плавной кривой - центральному пути - прямо к оптимуму. Ниже разберём, как строится логарифмический барьер, что такое центральный путь и параметр μ\mu, как μ\mu связан с зазором двойственности и за сколько шагов метод сходится. Чтобы сразу увидеть связь барьера, пути и зазора, покрути калькулятор: он показывает барьерную функцию, центральный путь и геометрическое убывание зазора одновременно, а дальше мы выведем каждую формулу строго.

Зачем нужна внутренняя точка

Классический симплекс-метод идёт по вершинам многогранника допустимых решений: он перебирает угловые точки, пока не упрётся в оптимум. На практике это работает быстро, но в худшем случае число вершин растёт экспоненциально, и алгоритм может застрять. Метод внутренней точки устроен иначе: он стартует из точки строго внутри допустимой области и движется к оптимуму по гладкой траектории, ни разу не касаясь границы до самого конца. Для задач линейного программирования это даёт полиномиальную оценку сложности, а для выпуклых нелинейных задач - единый и устойчивый аппарат.

Точка стартует внутри отрезка допустимых решений и по мере уменьшения mu плавно сползает к оптимуму на границе, не пересекая её. Рядом видно, как барьерная воронка прижимается к стенке, удерживая решение строго внутри

Ключевое слово здесь - внутренняя. Решение всё время остаётся допустимым с запасом, а не балансирует на ребре. Это и делает метод численно устойчивым: нет резких переключений между активными ограничениями, как у симплекса.

Логарифмический барьер

Рассмотрим простейшую модель, на которой видна вся механика: минимизировать c xc\,x при ограничениях a≤x≤ba \le x \le b. Чтобы запретить выход за границы, заменим жёсткие ограничения штрафом, который растёт без предела при приближении к стенке. Самый удобный такой штраф - логарифмический барьер:

B(x,μ)=c x−μln⁡(x−a)−μln⁡(b−x).B(x, \mu) = c\,x - \mu\ln(x - a) - \mu\ln(b - x).

Когда xx приближается к aa или к bb, соответствующий логарифм уходит в −∞-\infty, а из-за знака минус сам барьер - в +∞+\infty. Поэтому минимум B(x,μ)B(x, \mu) всегда лежит строго внутри интервала (a,b)(a, b): барьер физически не пускает решение на границу. Параметр μ>0\mu > 0 задаёт силу барьера: при большом μ\mu штраф мощный и тянет точку к центру, при малом - почти не мешает, и решение прижимается к настоящему оптимуму.

Барьерная функция при трёх значениях mu: с уменьшением mu воронка сужается, и её минимум сползает к границе, к оптимуму линейной задачи
Барьерная функция при трёх значениях mu: с уменьшением mu воронка сужается, и её минимум сползает к границе, к оптимуму линейной задачи

Минимум барьерной функции найти легко: приравняем производную к нулю.

B′(x)=c−μx−a+μb−x=0.B'(x) = c - \frac{\mu}{x - a} + \frac{\mu}{b - x} = 0.

Это уравнение сводится к квадратному относительно xx, и его корень, лежащий внутри (a,b)(a, b), и есть искомая внутренняя точка x∗(μ)x^*(\mu). Поскольку оба логарифма выпуклы, B(x,μ)B(x, \mu) строго выпукла, значит минимум единственный - ровно та точка, которую отмечает калькулятор выше.

Центральный путь

Если решать задачу минимизации B(x,μ)B(x, \mu) для каждого значения μ\mu, точки x∗(μ)x^*(\mu) выстраиваются в гладкую кривую. Эта кривая называется центральным путём:

x∗(μ)=arg⁡min⁡x  B(x,μ).x^*(\mu) = \arg\min_x \; B(x, \mu).

При больших μ\mu путь стартует около аналитического центра области (точки, равноудалённой от ограничений в смысле барьера), а при μ→0\mu \to 0 он сходится к оптимуму исходной задачи. Идея алгоритма в том, чтобы не решать задачу сразу при μ=0\mu = 0 - там барьер вырождается, - а идти вдоль пути: взять умеренное μ\mu, найти x∗(μ)x^*(\mu) методом Ньютона, уменьшить μ\mu и повторить, стартуя из предыдущей точки. Каждый шаг короткий, потому что соседние точки пути близки.

Центральный путь: при уменьшении mu внутренняя точка по гладкой кривой стремится к вершине-оптимуму линейной задачи
Центральный путь: при уменьшении mu внутренняя точка по гладкой кривой стремится к вершине-оптимуму линейной задачи

Именно из-за этого метод и называют методом следования за центральным путём. На графике пути в калькуляторе хорошо видно: кривая ровная, без изломов, и при μ→0\mu \to 0 упирается в горизонталь оптимума. Чем меньше μ\mu, тем ближе текущая точка к ответу.

Параметр mu и зазор двойственности

Параметр μ\mu - это не просто настройка силы барьера, он имеет точный смысл. Для задачи с mm ограничениями-неравенствами выполняется фундаментальное соотношение: на центральном пути зазор двойственности (разность между значениями прямой и двойственной задач) равен

gap=m μ.\text{gap} = m\,\mu.

В нашей модели два ограничения (x≥ax \ge a и x≤bx \le b), поэтому зазор равен 2μ2\mu. Это даёт честный критерий остановки: мы не гадаем, близко ли решение, а точно знаем - текущая точка отличается от оптимума по значению не более чем на mμm\mu. Хотим точность ε\varepsilon - доводим μ\mu до ε/m\varepsilon / m. Поэтому метод внутренней точки самосертифицирующийся: вместе с приближённым решением он выдаёт гарантию его качества.

На каждой итерации mu умножается на коэффициент меньше единицы, и столбик зазора 2mu укорачивается в геометрической прогрессии; на логарифмической шкале это прямая линия вниз - отсюда быстрая сходимость

Шаг метода и сходимость

Алгоритм в чистом виде укладывается в короткий цикл. Выбираем стартовое μ0\mu_0 и коэффициент уменьшения σ∈(0,1)\sigma \in (0, 1), например σ=0,5\sigma = 0{,}5. На каждой итерации:

  1. при текущем μ\mu делаем один-два шага Ньютона по xx, приближая x∗(μ)x^*(\mu);
  2. уменьшаем барьер: μk+1=σ μk\mu_{k+1} = \sigma\,\mu_k;
  3. проверяем зазор mμk+1m\mu_{k+1}: если он меньше требуемой точности - стоп.

Поскольку μ\mu убывает геометрически, зазор тоже падает геометрически: gapk=m μ0 σk\text{gap}_k = m\,\mu_0\,\sigma^k. Чтобы довести зазор от стартового до ε\varepsilon, нужно порядка log⁡(ε/gap0)/log⁡σ\log(\varepsilon / \text{gap}_0) / \log\sigma итераций - это десятки шагов даже для очень высокой точности. Калькулятор сверху сразу показывает это число для текущих настроек: сдвиньте μ\mu и посмотрите, как меняется счётчик шагов до 10−410^{-4}.

Шаг Ньютона для одномерного барьера выглядит так: xk+1=xk−B′(xk)/B′′(xk)x_{k+1} = x_k - B'(x_k) / B''(x_k), где вторая производная B′′(x)=μ/(x−a)2+μ/(b−x)2B''(x) = \mu/(x-a)^2 + \mu/(b-x)^2 всегда положительна, что и гарантирует движение к минимуму. В многомерном случае вместо деления на B′′B'' решают линейную систему с гессианом, но логика та же.

Частые ошибки

  • Сразу брать μ=0\mu = 0. При нулевом барьере функция вырождается, а метод Ньютона расходится. Барьер уменьшают постепенно, идя вдоль центрального пути, а не отключают разом.
  • Стартовать с границы. Начальная точка обязана быть строго внутренней: при x=ax = a или x=bx = b логарифм не определён. Нужна допустимая точка с запасом по всем ограничениям.
  • Путать барьер и штраф. Штрафная функция допускает выход за границу и наказывает за это; барьер не пускает наружу в принципе. Это разные методы, и барьерный требует строго внутренней точки.
  • Игнорировать смысл μ\mu. μ\mu - это не абстрактный темп, а зазор двойственности, делённый на число ограничений. Критерий остановки задают через зазор mμm\mu, а не на глаз.
  • Слишком резко снижать μ\mu. Если умножать μ\mu на очень малый коэффициент, новая точка оказывается далеко от пути и Ньютон может не сойтись за пару шагов. Баланс между числом внешних итераций и сложностью внутренних задаёт σ\sigma.

FAQ

Чем метод внутренней точки отличается от симплекс-метода? Симплекс идёт по вершинам границы допустимой области, метод внутренней точки - сквозь её внутренность по центральному пути. Симплекс в худшем случае экспоненциальный, метод внутренней точки для линейного программирования полиномиальный и лучше масштабируется на большие выпуклые задачи.

Что такое центральный путь простыми словами? Это кривая, которую заметают минимумы барьерной функции при разных μ\mu. Каждая её точка - компромисс между минимизацией цели и удержанием решения подальше от границ. При μ→0\mu \to 0 компромисс смещается в сторону цели, и путь приходит точно в оптимум.

Почему параметр μ\mu равен зазору двойственности? На центральном пути условия дополняющей нежёсткости выполняются не точно, а с зазором μ\mu на каждое ограничение. Сумма этих зазоров и есть разность прямой и двойственной целевых функций, то есть зазор двойственности mμm\mu. Это даёт встроенную гарантию точности решения.

Коротко

Метод внутренней точки заменяет жёсткие ограничения логарифмическим барьером B(x,μ)=c x−μln⁡(x−a)−μln⁡(b−x)B(x,\mu) = c\,x - \mu\ln(x-a) - \mu\ln(b-x) и движется к оптимуму по центральному пути - кривой минимумов x∗(μ)x^*(\mu). Параметр μ\mu задаёт силу барьера и одновременно равен зазору двойственности, делённому на число ограничений, поэтому при μ→0\mu \to 0 внутренняя точка сходится к оптимуму, а зазор mμm\mu служит точным критерием остановки. Геометрическое уменьшение μ\mu даёт сходимость за десятки шагов и встроенную гарантию качества решения.

Доверьте текст нейросети EssayAI

Открыть EssayAI

Бесплатно, на русском языке и без VPN

Читайте также

Метод минимального элемента: транспортная задача

Метод минимального элемента: транспортная задача

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

17 июня 20266 минут
Метод северо-западного угла: транспортная задача

Метод северо-западного угла: транспортная задача

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

11 июня 20268 минут
Теорема двойственности линейного программирования

Теорема двойственности линейного программирования

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

4 апреля 20268 минут
Агрегатные функции SQL: COUNT, SUM, AVG и GROUP BY

Агрегатные функции SQL: COUNT, SUM, AVG и GROUP BY

Как работают агрегатные функции SQL: COUNT, SUM, AVG, MIN и MAX, группировка GROUP BY, порядок выполнения запроса, разница HAVING и WHERE и поведение NULL внутри агрегата.

24 сентября 20269 минут
Интегральный синус Si(x): ряд Тейлора и максимум

Интегральный синус Si(x): ряд Тейлора и максимум

Интегральный синус Si(x): почему интеграл sin t / t не берётся в элементарных функциях, разложение в ряд, предел π/2, максимум Si(π) и выброс Гиббса. С калькулятором.

24 сентября 202610 минут
Куча как структура данных: массив и просеивание

Куча как структура данных: массив и просеивание

Куча как структура данных: свойство кучи, хранение в обычном массиве и индексы 2i+1 и 2i+2, просеивание sift-up и sift-down, построение за O(n) и приоритетная очередь.

24 сентября 202610 минут