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

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

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

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

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

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

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

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

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

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

B(x,μ)=cxμln(xa)μln(bx).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μxa+μbx=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(μ)=argminx  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.

В нашей модели два ограничения (xax \ge a и xbx \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 и посмотрите, как меняется счётчик шагов до 10410^{-4}.

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

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

  • Сразу брать μ=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,μ)=cxμln(xa)μln(bx)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

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