Ограниченные алгоритмы нелинейной оптимизации

Определение ограниченной оптимизации

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

minxf(x)

таким образом, что один или несколько из следующего держится: c (<reservedrangesplaceholder9>)      ≤ 0 , ceq (<reservedrangesplaceholder7>)    = 0, <reservedrangesplaceholder6> ≤ <reservedrangesplaceholder5>, Aeq·x = beq, <reservedrangesplaceholder2> ≤ <reservedrangesplaceholder1> ≤ <reservedrangesplaceholder0>. Существует ещё больше ограничений, используемых в полубесконечном программировании; см. Fseminf Формулировка задачи и алгоритм.

fmincon Trust Region Светоотражающий алгоритм

Методы доверительной области для нелинейной минимизации

Многие методы, используемые в решателях Optimization Toolbox™, основаны на доверительных областях, простой, но мощной концепции в оптимизации.

Чтобы понять подход доверительной области к оптимизации, рассмотрим задачу минимизации без ограничений, минимизируйте f (x), где функция принимает векторные аргументы и возвращает скаляры. Предположим, что вы находитесь в точке, x в n -пространство, и вы хотите улучшить, т.е. переместиться в точку с более низким значением функции. Основная идея состоит в том, чтобы аппроксимировать f с более простой функциональной q, которая разумно отражает поведение функциональной f в окрестности N вокруг точечной x. Этот район - доверительная область. Пробный шаг s вычисляется путем минимизации (или приблизительно минимизации) по N. Это подпрограмма доверительной области,

mins{q(s), sN}.(1)

Текущая точка обновляется следующим образом x + s, если f ( x + s ) < f (x); в противном случае текущая точка остается неизменной и N, область доверия, сокращается, и расчет пробного шага повторяется.

Ключевыми вопросами в определении конкретного подхода доверительной области к минимизации f (x) являются то, как выбрать и вычислить q приближения (заданную в текущей точке x), как выбрать и изменить N доверительной области и как точно решить подблем доверительной области. Этот раздел посвящен проблеме без ограничений. Более поздние разделы обсуждают дополнительные осложнения из-за наличия ограничений на переменные.

В стандартном методе доверительной области ([48]) квадратичное q приближения определяется первыми двумя слагаемыми приближения Тейлора к F при x; окрестность N обычно сферическая или эллипсоидальная по форме. Математически подпрограмма доверительной области обычно указывается

min{12sTHs+sTg  таким , что  DsΔ},(2)

где g - градиент f в текущей точке x, H - матрица Мешковины (симметричная матрица вторых производных), D - диагональная матрица масштабирования, Δ - положительная скалярная величина и ∥. ∥ - 2-норма. Хорошие алгоритмы существуют для решения уравнения 2 (см. [48]); такие алгоритмы обычно включают в себя расчет всех собственных значений H и процесс Ньютона, примененный к светскому уравнению

1Δ1s=0.

Такие алгоритмы обеспечивают точное решение уравнения 2. Однако они требуют времени, пропорционального нескольким факторизациям H. Поэтому для масштабных проблем нужен другой подход.  В литературе было предложено несколько аппроксимационных и эвристических стратегий, основанных на уравнении 2 ([42] и [50]). Подход приближения, используемый в решателях Optimization Toolbox, состоит в том, чтобы ограничить подблиму доверительной области двумерной подпространственной S ([39] и [42]). После вычисления S подпространства работа по решению Уравнения 2 тривиальна, даже если необходима полная собственная/собственная информация (поскольку в подпространстве задача является только двумерной). Доминирующая работа теперь сместилась на определение подпространства.

Двумерный подпространственный S определяется с помощью предварительно обусловленного сопряженного градиентного процесса, описанного ниже. Решатель определяет S как линейное пространство, охватываемое s 1 и s 2, где s 1 находится в направлении градиента g, и s 2 является либо приблизительным направлением Ньютона, т.е. решением

Hs2=g,(3)

или направление отрицательной кривизны,

s2THs2<0.(4)

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

Эскиз без ограничений минимизации с использованием идей доверительной области теперь легко дать:

  1. Сформулируйте двумерную подпрограмму доверительной области.

  2. Решите уравнение 2, чтобы определить пробный шаг s.

  3. Если f (x + s) <f (<reservedrangesplaceholder3>), то x = x + s.

  4. Отрегулируйте

Эти четыре шага повторяются до сходимости. Размерность Β доверительной области регулируется согласно стандартным правилам. В частности, это уменьшено, если шаг испытания не принят, т.е. f (x + s) ≥ <reservedrangesplaceholder1> (<reservedrangesplaceholder0>). Для обсуждения этого аспекта см. [46] и [49].

Решатели Optimization Toolbox обрабатывают несколько важных особых случаев f со специализированными функциями: нелинейные методы наименьших квадратов, квадратичные функции и линейные методы наименьших квадратов. Однако базовые алгоритмические идеи те же, что и в общем случае. Эти особые случаи рассматриваются в последующих разделах.

Предварительно обусловленный сопряженный градиентный метод

Популярным способом решения больших, симметричных, положительно определенных систем линейных уравнений Hp = - g является метод Предварительно обусловленных сопряженных градиентов (PCG). Этот итеративный подход требует способности вычислять матрично-векторные продукты вида H·v где v является произвольным вектором. Симметричная положительная определенная матричная M является предварительным условием для H. То есть  M = C2, где C–1HC–1 является хорошо обусловленной матрицей или матрицей с кластеризованными собственными значениями.

В контексте минимизации можно предположить, что H матрицы Гессия симметрична. Однако H гарантированно будет положительно определено только в окрестности сильного минимизатора. Алгоритм PCG выходит, когда он сталкивается с направлением отрицательной (или нулевой) кривизны, то есть dTHd ≤ 0. Выходное направление PCG p является либо направлением отрицательной кривизны, либо приблизительным решением системы Ньютона Hp = - g. В любом случае p помогает задать двумерный подпространство, используемый в подходе доверительной области, обсуждаемом в Методах доверительной области для нелинейной минимизации.

Линейные ограничения равенства

Линейные ограничения усложняют ситуацию, описанную для минимизации без ограничений. Однако основные идеи, описанные выше, могут осуществляться чистым и эффективным способом. Методы доверительной области в решателях Optimization Toolbox генерируют строго допустимые итерации.

Общая задача минимизации с ограничениями линейного равенства может быть записана

min{f(x)  such that  Ax=b},(5)

где A m n матрицей (m  ≤ <reservedrangesplaceholder1>). Некоторые решатели Optimization Toolbox предварительно обрабатывают A, чтобы удалить строгие линейные зависимости, используя метод, основанный на LU-факторизации AT [46]. Здесь A принято рангом m.

Метод, используемый для решения уравнения 5, отличается от неограниченного подхода двумя значительными способами. Во-первых, начальная допустимая точка x 0 вычисляется, используя разреженный шаг наименьших квадратов, так что Ax  0 = b. Во-вторых, Алгоритм PCG заменяется на Сокращенные Предварительно Обусловленные Сопряженные Градиенты (RPCG), см. [46], в порядок чтобы вычислить приблизительный уменьшенный шаг Ньютона (или направление отрицательной кривизны в нулевом пространстве A). Ключевой шаг линейной алгебры включает в себя решение систем вида

[CA˜TA˜0][st]=[r0],(6)

где A˜ аппроксимирует A (маленькие ненулевые A устанавливаются в нули при условии, что ранг не потерян) и C является разреженным симметричным положительно-определенным приближением к H, т.е., C = H. Для получения дополнительной информации см. раздел [46].

Прямоугольные ограничения

Задача с ограничениями в прямоугольнике имеет вид

min{f(x)  such that  lxu},(7)

где l - вектор нижних границ, а u - вектор верхних границ. Некоторые (или все) компоненты l могут быть равны - ∞ и некоторые (или все) компоненты u могут быть равны ∞. Метод генерирует последовательность строго допустимых точек. Два метода используются для поддержания выполнимости при достижении устойчивого поведения сходимости. Во-первых, масштабированный измененный шаг Ньютона заменяет необязательный шаг Ньютона (для определения двумерного подпространства S). Во-вторых, отражения используются для увеличения размера шага.

Масштабированный модифицированный шаг Ньютона возникает из-за исследования необходимых условий Куна-Такера для уравнения 7,

(D(x))2g=0,(8)

где

D(x)=diag(|vk|1/2),

и вектор v (<reservedrangesplaceholder2>)   определен  ниже для каждого 1 ≤ <reservedrangesplaceholder1> ≤ <reservedrangesplaceholder0>:

  • Если gi < 0 и ui < ∞ то vi = xi - ui

  • Если gi ≥ 0 и li > - ∞ то vi  = xi  - li

  • Если gi < 0 и ui = ∞ то vi = -1

  • Если gi ≥ 0 и li = - ∞ то vi  = 1

Нелинейная система Уравнение 8 не везде дифференцируема. Недифференцируемость возникает, когда vi = 0. Можно избегать таких точек, сохраняя строгую допустимость, т.е. ограничивая l < x < u.

Масштабированный измененный шаг Ньютона sk для нелинейной системы уравнений, заданных уравнением 8, задан как решение линейной системы

M^DsN=g^(9)

на k-й итерации, где

g^=D1g=diag(|v|1/2)g,(10)

и

M^=D1HD1+diag(g)Jv.(11)

Здесь Jv играет роль якобиана |<reservedrangesplaceholder0>|. Каждая диагональ компонент матрицы диагонали Jv равен 0, -1 или 1. Если все компоненты l и u конечны, Jv = diag (знак (g)). В точке, где  gi = 0, vi может не быть дифференцируемым.Jiiv=0 определяется в такой точке. Недифференцируемость этого типа не является причиной для беспокойства, потому что для такого компонента не важно, какое значение принимает vi. Кроме того, |<reservedrangesplaceholder2>| все еще будет прерывистым в этой точке, но |<reservedrangesplaceholder1>|·<reservedrangesplaceholder0> функции непрерывна.

Во-вторых, отражения используются для увеличения размера шага. Шаг (одинарный) отражения определяется следующим образом. Учитывая p шага, которая пересекает ограничение привязки, рассмотрим первое ограничение привязки, пересекаемое p; предположим, что это i-е ограничение (i-е верхнее или i-е нижнее ограничение). Затем шаг отражения pR = p кроме i-го компонента, где pRi = - pi.

fmincon Алгоритм активного набора

Введение

При ограниченной оптимизации общая цель состоит в том, чтобы преобразовать задачу в более легкую подпрограмму, которая затем может быть решена и использована как базис итерационного процесса. Характеристикой большого класса ранних методов является преобразование ограниченной задачи в базовую без ограничений задачу с помощью функции штрафа для ограничений, которые находятся вблизи или за пределами границы ограничений. Таким образом, ограниченная задача решается с помощью последовательности параметризованных без ограничений оптимизаций, которые в пределе (последовательности) сходятся к ограниченной задаче. Эти методы в настоящее время считаются относительно неэффективными и были заменены методами, которые были сосредоточены на решении уравнений Каруша-Куна-Такера (KKT). Уравнения KKT являются необходимыми условиями для оптимальности ограниченной задачи оптимизации. Если задачей является так называемая выпуклая задача программирования, то есть f (x) и Gi (x), i = 1,..., m, являются выпуклыми функциями, то уравнения KKT необходимы и достаточны для глобальной точки решения.

Ссылаясь на GP (уравнение 1), уравнения Куна-Такера могут быть заявлены как

f(x*)+i=1mλiGi(x*)=0λiGi(x*)=0,  i=1,...,meλi0,  i=me+1,...,m,(12)

в дополнение к исходным ограничениям в Уравнении 1.

Первое уравнение описывает отмену градиентов между целевой функцией и активными ограничениями в точке решения. Для отмены градиентов необходимы множители Лагранжа (λi, i = 1,..., m), чтобы сбалансировать отклонения в величине целевой функции и градиентов ограничений. Поскольку только активные ограничения включены в эту операцию отмены, ограничения, которые не активны, не должны быть включены в эту операцию и так даны множители Лагранжа, равные 0. Это неявно заявлено в последних двух уравнениях Куна-Такера.

Решение уравнений KKT формирует базис для многих нелинейных алгоритмов программирования. Эти алгоритмы пытаются вычислить множители Лагранжа непосредственно. Ограниченные методы квази-Ньютона гарантируют сверхлинейное сходимость путем накопления информации второго порядка относительно уравнений KKT с помощью процедуры квазиньютоновского обновления. Эти методы обычно называются методами последовательного квадратичного программирования (SQP), поскольку подпрограмма QP решается при каждой основной итерации (также известной как итерационное квадратичное программирование, рекурсивное квадратичное программирование и ограниченные методы переменной метрики).

The 'active-set' алгоритм не является крупномасштабным алгоритмом; см. «Алгоритмы большого и среднего масштаба».

Последовательное квадратичное программирование (SQP)

Методы SQP представляют состояние техники в нелинейных методах программирования. Schittkowski [36], для примера, реализовал и протестировал версию, которая превосходит каждый другой протестированный метод с точки зрения эффективности, точности и процента успешных решений, над большим количеством тестовых задач.

Основываясь на работе Биггса [1], Хана [22] и Пауэлла ([32] и [33]), метод позволяет вам тесно имитировать метод Ньютона для ограниченной оптимизации так же, как это делается для оптимизации без ограничений. На каждой основной итерации делается приближение Гессиана функции Лагранжа с помощью квази-Ньютонского метода обновления. Затем он используется для генерации подпрограммы QP, решение которой используется для формирования направления поиска для процедуры поиска по линии. Обзор SQP представлен во Fletcher [13], Gill et al. [19], Powell [35] и Schittkowski [23]. Общий способ, однако, изложен здесь.

Учитывая описание задачи в GP (уравнение 1), основной идеей является формулировка подпрограммы QP, основанная на квадратичном приближении функции Лагранжа.

L(x,λ)=f(x)+i=1mλigi(x).(13)

Здесь вы упрощаете Уравнение 1, принимая, что ограниченные ограничения были выражены как ограничения неравенства. Вы получаете подпроблем QP путем линеаризации нелинейных ограничений.

Подпрограмма квадратичного программирования (QP)

mindn12dTHkd+f(xk)Tdgi(xk)Td+gi(xk)=0,  i=1,...,megi(xk)Td+gi(xk)0,  i=me+1,...,m.(14)

Эта подпрограмма может быть решена с помощью любого алгоритма QP (см., например, Решение Квадратичного Программирования). Решение используется для формирования новой итерации

<reservedrangesplaceholder7> <reservedrangesplaceholder6> + 1 = <reservedrangesplaceholder5> <reservedrangesplaceholder4> + <reservedrangesplaceholder3> <reservedrangesplaceholder2> <reservedrangesplaceholder1> <reservedrangesplaceholder0>.

Параметр α k длины шага определяется соответствующей линией процедурой поиска, так что достигается достаточное уменьшение функции заслуг (см. Обновление Матрицы Гессиана). Матрица H k является положительным определенным приближением Гессианской матрицы функции Лагранжа ( Equation 13). H k могут быть обновлены любым из методов квази-Ньютона, хотя метод BFGS (см. Обновление Гессианской матрицы), по-видимому, является наиболее популярным.

Нелинейно ограниченная задача часто может быть решена в меньшем количестве итераций, чем без ограничений задача с использованием SQP. Одна из причин этого заключается в том, что из-за пределов на допустимую площадь оптимизатор может принимать обоснованные решения относительно направлений поиска и длины шага.

Рассмотрим функцию Розенбрка с дополнительным нелинейным ограничением неравенства, g (x),

x12+x221.50.(15)

Это было решено реализацией SQP в 96 итерациях по сравнению со 140 для случая без ограничений. Рисунок 5-3, Метод SQP на нелинейно ограниченной функции Розенбрка показывает путь к точке решения x = [0,9072,0,8228], начиная с x = [-1,9,2,0].

Рисунок 5-3, Метод SQP о нелинейно ограниченной функции Розенбрка

Реализация SQP

Реализация SQP состоит из трех основных этапов, которые кратко обсуждаются в следующих подразделах:

Обновление Гессианской матрицы.  При каждой большой итерации положительно определённое квази-ньютоновское приближение Гессиана функции Лагранжа, H, вычисляется с помощью метода BFGS, где λi, i = 1,..., m, является оценкой множителей Лагранжа .

Hk+1=Hk+qkqkTqkTskHkskskTHkTskTHksk,(16)

где

sk=xk+1xkqk=(f(xk+1)+i=1mλigi(xk+1))(f(xk)+i=1mλigi(xk)).

Powell [33] рекомендует сохранить положительный Гессиан определенным, хотя он может быть положительным неопределенным в точке решения. Поддерживается положительно определенный Гессиан qkTsk положительно при каждом обновлении, и этот H инициализируется положительно определенной матрицей. Когда qkTsk не является положительным, qk изменяется на элементарном базисе так, что qkTsk>0. Общая цель этой модификации состоит в том, чтобы как можно меньше искажать элементы qk, которые способствуют положительному определенному обновлению. Поэтому в начальной фазе модификации самый отрицательный элемент qk * sk неоднократно уменьшается вдвое. Эта процедура продолжается доqkTsk больше или равно небольшому отрицательному допуску. Если, после этой процедуры, qkTsk все еще не положительно, измените qk путем добавления вектора v умноженной на постоянный скаляр w, то есть,

qk=qk+wv,(17)

где

vi=gi(xk+1)gi(xk+1)gi(xk)gi(xk)           если (qk)iw<0 и (qk)i(sk)i<0, i=1,...,mvi=0  в противном случае,

и систематически увеличивайте w до тех пор, пока qkTsk становится положительным.

Функции fmincon, fminimax, fgoalattain, и fseminf все используют SQP. Если Display установлено в 'iter' в options, затем задается различная информация, такая как значения функций и максимальное нарушение ограничений. Когда Гессиан должен быть изменен с помощью первой фазы предыдущей процедуры, чтобы сохранить его положительно определенным, то Hessian modified отображается. Если Гессиан должен быть изменен снова с помощью второй фазы подхода, описанного выше, то Hessian modified twice отображается. Когда подпрограмма QP недопустима, то infeasible отображается. Такие отображения обычно не являются причиной для беспокойства, но указывают на то, что задача является сильно нелинейной и что сходимость может занять больше времени, чем обычно. Иногда сообщение no update отображается, указывая, что qkTsk почти нуль. Это может быть показанием того, что настройка проблемы неправильна, или вы пытаетесь минимизировать непоследовательную функцию.

Решение квадратичного программирования.  На каждой основной итерации метода SQP решается задача QP следующей формы, где Ai относится к iвторая строка m -by n матрицы A.

mindnq(d)=12dTHd+cTd,Aid=bi,  i=1,...,meAidbi,  i=me+1,...,m.(18)

Метод, используемый в функциях Optimization Toolbox, является стратегией активного набора (также известной как метод проекции), подобной стратегии Gill et al., описанной в [18] и [17]. Он был изменен для задач линейного программирования (LP) и квадратичного программирования (QP).

Процедура решения включает две фазы. Первая фаза включает вычисление допустимой точки (если она существует). Вторая фаза включает в себя генерацию итерационной последовательности допустимых точек, которые сходятся к решению. В этом методе активный набор, A¯k, поддерживается, что является оценкой активных ограничений (то есть тех, которые находятся на границах ограничений) в точке решения. Фактически все алгоритмы QP являются активными методами набора. Эта точка подчёркивается, потому что существует много различных методов, которые очень похожи по структуре, но которые описаны в различных терминах.

A¯k обновляется в каждом k итерации, и это используется, чтобы сформировать базис для направления поиска d^k. Ограничения равенства всегда остаются в активном наборе A¯k. Значение обозначения для переменной d^k используется здесь, чтобы отличить его от dk в основных итерациях метода SQP. Направление поиска d^k вычисляется и минимизирует целевую функцию, оставаясь на любых активных границах ограничений. Допустимое подпространство для d^k формируется из базиса Zk, столбцы которого ортогональны оценке активного набора A¯k (т.е. A¯kZk=0). Таким образом, направление поиска, которое формируется из линейного суммирования любой комбинации столбцов Zk, гарантированно остается на контурах активных ограничений.

Матричная Zk формируется из последних m - l столбцов QR-разложения матрицы A¯kT, где l количество активных ограничений и l < m. То есть Zk задается как

Zk=Q[:,l+1:m],(19)

где

QTA¯kT=[R0].

Когда Zk найдено, новое направление поиска d^k искомый, который минимизирует q (d) гдеd^k находится в пустом пространстве активных ограничений. То есть, d^k является линейной комбинацией столбцов Zk: d^k=Zkp для некоторых векторных p.

Затем, если вы рассматриваете квадратичный как функцию p, заменяя на d^k, у вас есть

q(p)=12pTZkTHZkp+cTZkp.(20)

Дифференцирование этого по отношению к p выражениям

q(p)=ZkTHZkp+ZkTc.(21)

q (p) упоминается как проективный градиент квадратичной функции, потому что это градиент, проецируемый в подпространстве, заданном Zk. ТерминZkTHZk называется спроецированным Гессианом. Предположим, что H матрицы Гессия положительно определена (что и имеет место в этой реализации SQP), то минимум q функции (p) в заданном Zk подпространстве происходит когда q (p ) = 0, что является решением системы линейных уравнений

ZkTHZkp=ZkTc.(22)

Затем делается шаг формы

xk+1=xk+αd^k,  где d^k=Zkp.(23)

На каждой итерации из-за квадратичного характера целевой функции существует только два выбора α длины шага. Шаг единства вдоль d^k является точным шагом к минимуму функции, ограниченной ядром пространства A¯k. Если такой шаг может быть сделан, без нарушения ограничений, то это решение QP (уравнение 18). В противном случае шаг вдоль d^k до ближайшего ограничения меньше единицы, и новое ограничение включается в активный набор при следующей итерации. Расстояние до границ ограничений в любом направлении d^k дается

α=mini{1,...,m}{(Aixkbi)Aid^k},(24)

который определен для ограничений, не входящих в активный набор, и где направление d^k находится к границе ограничений, т.е., Aid^k>0, i=1,...,m.

Когда n независимые ограничения включены в активное множество, без расположения минимума, вычисляются множители Лагранжа, λk, которые удовлетворяют несингулярному набору линейных уравнений

A¯kTλk=c+Hxk.(25)

Если все элементы λk положительны, xk является оптимальным решением QP (уравнение 18). Однако, если любой компонент λk отрицателен, а компонент не соответствует ограничению равенства, то соответствующий элемент удаляется из активного набора и запрашивается новая итерация.

Инициализация.  Для запуска алгоритма требуется допустимая точка. Если текущая точка из метода SQP не допустима, то можно найти точку, решив задачу линейного программирования

minγ, xnγ  таким , чтоAix=bi,      i=1,...,meAixγbi,  i=me+1,...,m.(26)

Ai записи указывает i-ю строку матричного A. Можно найти допустимую точку (если она существует) к  Уравнению 26, установив x на значение, которое удовлетворяет ограничениям равенствам. Можно определить это значение, решив недостаточно - или переопределенный набор линейных уравнений, сформированных из набора ограничений равенства. Если существует решение этой задачи, то γ переменной slack устанавливается на ограничение максимального неравенства в этой точке.

Можно изменить предыдущий алгоритм QP для задач LP, задав направление поиска к направлению наискорейшего спуска при каждой итерации, где gk является градиентом целевой функции (равным коэффициентам линейной целевой функции).

d^k=ZkZkTgk.(27)

Если допустимая точка найдена с помощью предыдущего метода НД, вводится основная фаза QP. Направление поиска d^k инициализируется с помощью направления поиска d^1 найдено из решения набора линейных уравнений

Hd^1=gk,(28)

где gk - градиент целевой функции в текущей итерационной xk (т.е. Hxk + c).

Если возможное решение для задачи QP не найдено, направление поиска основной стандартной программы SQP d^k принято за единицу, которая минимизирует γ.

Линия поиска и оценки строк.  Решение подпрограммы QP создает вектор dk, которая используется для формирования новой итерации

xk+1=xk+αdk.(29)

Параметр αk длины шага определяется в порядок, чтобы получить достаточное уменьшение функции оценки. Функция заслуг, используемая Han [22] и Powell [33] следующей формы, используется в этой реализации.

Ψ(x)=f(x)+i=1merigi(x)+i=me+1mrimax[0,gi(x)].(30)

Пауэлл рекомендует задать параметр штрафа

ri=(rk+1)i=maxi{λi,(rk)i+λi2},  i=1,...,m.(31)

Это позволяет внести положительный вклад от ограничений, которые неактивны в решении QP, но недавно были активны. В этой реализации ri параметра штрафа первоначально устанавливается на

ri=f(x)gi(x),(32)

где   представляет евклидову норму.

Это обеспечивает большие вклады в параметр штрафа от ограничений с меньшими градиентами, что было бы применимо к активным ограничениям в точке решения.

Алгоритм fmincon SQP

The sqp алгоритм (и почти одинаковый sqp-legacy алгоритм) аналогичен active-set алгоритм (описание см. в fmincon Active Set Algorithm). Основные sqp алгоритм описан в главе 18 Nocedal и Wright [31].

The sqp алгоритм по существу аналогичен sqp-legacy алгоритм, но имеет другую реализацию. Обычно sqp имеет более быстрое время выполнения и меньше использования памяти, чем sqp-legacy.

Самые важные различия между sqp и active-set алгоритмы:

Строгая осуществимость с учетом границ

The sqp алгоритм делает каждый итерационный шаг в области, ограниченной границами. Кроме того, конечные шаги различия также соответствуют границам. Границы не являются строгими; шаг может быть точно на контуре. Эта строгая осуществимость может быть полезной, когда ваша целевая функция или нелинейные функции ограничения не определены или являются комплексными за пределами области, ограниченной границами.

Робастность к недвойственным результатам

Во время итераций sqp алгоритм может попытаться сделать шаг, который не удаётся. Это означает, что целевая функция или нелинейная ограничительная функция, которую вы задаете, возвращает значение Inf, NaNили комплексное число. В этом случае алгоритм пытается сделать меньший шаг.

Refactored Linear Algebra Стандартных программ

The sqp алгоритм использует другой набор линейных алгебр- стандартных программ, чтобы решить квадратичную подпрограмму программирования, Уравнение 14. Эти стандартные программы более эффективны как в использовании памяти, так и в скорости, чем active-set стандартные программы.

Переформулированные стандартные программы технико-экономического обоснования

The sqp алгоритм имеет два новых подхода к решению Уравнения 14, когда ограничения не удовлетворены.

  • The sqp алгоритм объединяет целевую и ограничительную функции в функцию заслуг. Алгоритм пытается минимизировать функцию заслуг, удовлетворяющую ослабленным ограничениям. Эта измененная задача может привести к возможному решению. Однако этот подход имеет больше переменных, чем исходная задача, поэтому размер задачи в Уравнении 14 увеличивается. Увеличенный размер может замедлить решение подпрограммы. Эти стандартные программы основаны на статьях Spellucci [60] и Tone [61]. The sqp алгоритм устанавливает параметр штрафа для функции вознаграждения Уравнение 30 согласно предложению в [41].

  • Предположим, что нелинейные ограничения не выполняются, и попытка шага заставляет нарушение ограничений расти. The sqp алгоритм пытается получить выполнимость с помощью приближения второго порядка к ограничениям. Метод второго порядка может привести к возможному решению. Однако этот метод может замедлить решение, требуя дополнительных вычислений нелинейных ограничительных функций.

fmincon Алгоритм внутренней точки

Барьерная функция

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

minxf(x), при условии , что h(x)=0 и g(x)0.(33)
Для каждого μ > 0 приблизительная задача является
minx,sfμ(x,s)=minx,sf(x)μiln(si), при условии , что s0,h(x)=0, и g(x)+s=0.(34)
Есть столько же слабых переменных si, сколько есть ограничения неравенства g. Эти si ограничены положительными, чтобы сохранить итераты во внутренней части допустимой области. Когда μ уменьшается до нуля, минимум должен приблизиться к минимуму f. Добавленный логарифмический термин называется barrier function. Этот метод описан в [40], [41] и [51].

Приблизительная задача Уравнение 34 является последовательностью задач с ограничениями по равенству. Они легче решить, чем исходная задача Уравнения 33, ограниченная неравенством.

Чтобы решить приблизительную задачу, алгоритм использует один из двух основных типов шагов при каждой итерации:

  • А direct шаг в (x, s). Этот шаг пытается решить уравнения KKT, Уравнение 2 и Уравнение 3, для приблизительной задачи через линейное приближение. Это также называется Newton step.

  • Шаг CG (сопряженный градиент), с использованием доверительной области.

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

При каждой итерации алгоритм уменьшает merit function, такое как

fμ(x,s)+ν(h(x),g(x)+s).(35)
Параметр ν может увеличиться с количеством итераций в порядок, чтобы принудить решение к выполнимости. Если предпринятый шаг не уменьшает функцию заслуг, алгоритм отклоняет предпринятый шаг и пытается сделать новый шаг.

Если либо целевая функция, либо нелинейная функция ограничения возвращает комплексное число, NaN, Inf или ошибку в итерационной xj, алгоритм xj отклоняет. Отклонение имеет тот же эффект, что и если бы функция заслуг не уменьшилась в достаточной степени: алгоритм затем пытается сделать другой, более короткий шаг. Перенос любого кода, который может ошибиться в try-catch:

function val = userFcn(x)
try
    val = ... % code that can error
catch
    val = NaN;
end

Цель и ограничения должны дать должный (double) значения в начальной точке.

Прямой шаг

При определении прямого шага используются следующие переменные:

  • H обозначает Гессиана Лагранжа :

    H=2f(x)+iλi2gi(x)+jyj2hj(x).(36)

  • Jg обозначает якобиан ограничительной функции g.

  • Jh обозначает якобиан ограничительной функции h.

  • S = diag (s).

  • λ обозначает вектор множителей Лагранжа, сопоставленный с ограничениями g

  • Λ = diag (λ).

  • y обозначает вектор множителей Лагранжа, сопоставленный с h.

  • e обозначают вектор из них того же размера, что и g.

Уравнение 38 задает непосредственный шаг x, и s):

[H0JhTJgT0Λ0SJh000JgI00][ΔxΔsΔyΔλ]=[f+JhTy+JgTλSλμehg+s].(37)

Это уравнение происходит непосредственно от попытки решить Уравнение 2 и Уравнение 3 с помощью линеаризованного Лагранжа.

Можно симметризовать уравнение путем умножения второй переменной Δs методом S–1:

[H0JhTJgT0SΛ0SJh000JgS00][ΔxS1ΔsΔyΔλ]=[f+JhTy+JgTλSλμehg+s].(38)

Чтобы решить это уравнение для x, и s), алгоритм делает LDL-факторизацию матрицы. (См. пример 3 - Структура D в MATLAB® ldl страница с описанием функции.) Это самый дорогой в вычислительном отношении шаг. Одним из результатов этого факторизации является определение того, является ли проецируемый Гессиан положительно определенным или нет; если нет, алгоритм использует сопряженный шаг градиента, описанный на Сопряженном шаге градиента.

Обновление параметра барьера

Чтобы приблизительная задача Уравнение 34 приблизилась к исходной задаче, μ параметра барьера должен уменьшиться до 0, когда итерации продолжаются. Алгоритм имеет две опции обновления барьерного параметра, которые вы выбираете со BarrierParamUpdate опция: 'monotone' (по умолчанию) и 'predictor-corrector'.

The 'monotone' опция уменьшает μ параметра в 1/100 или 1/5 раз, когда приблизительная задача решается достаточно точно в предыдущей итерации. Он выбирает 1/100, когда алгоритм принимает только одну или две итерации, чтобы достичь достаточной точности, и 1/5 в противном случае. Мерой точности является следующий тест, который заключается в том, что размеры всех членов правой стороны уравнения 38 меньше μ:

max(f(x)JhTyJGTλ,Sλμe,h,c(x)+s)<μ.

Примечание

fmincon переопределяет вашу BarrierParamUpdate выбор в 'monotone' при удержании одного из следующих условий:

  • Задача не имеет ограничений неравенства, включая связанные ограничения.

  • The SubproblemAlgorithm опция 'cg'.

В оставшейся части этого раздела рассматриваются 'predictor-corrector' алгоритм обновления параметра барьера μ. Механизм аналогичен алгоритму линейного программирования Predictor-Corrector.

Шаги Предиктора-Корректора могут ускорить существующий подход Фиакко-Маккормака (Монотон), скорректировав ошибку линеаризации в шагах Ньютона. Эффекты режима Predictor-Corrector двояки: он (часто) улучшает направления шага и одновременно адаптивно обновляет параметр барьера с помощью параметра centering, чтобы побудить итератов следовать «центральному пути». Смотрите обсуждение Nocedal и Wright шагов предиктора-корректора для линейных программ, чтобы понять, почему центральный путь позволяет большие размеры шага и, следовательно, более быстрое сходимость.

Шаг предиктора использует линеаризированный шаг с μ = 0, что означает без барьерной функции:

[H0JhTJgT0Λ0SJh000JgI00][ΔxΔsΔyΔλ]=[f+JhTy+JgTλSλhg+s].

Задайте ɑs и ɑλ, чтобы быть самыми большими размерами шага, которые не нарушают ограничения неотрицательности.

αs=max(α(0,1]:s+αΔs0)αλ=max(α(0,1]:λ+αΔλ0).

Теперь вычислите комплементарность из шага предиктора.

μP=(s+αsΔs)(λ+αλΔλ)m,(39)

где m - количество ограничений.

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

(s+Δs)(λ+Δλ)=sλ+sΔλ+λΔsЛинейный термин , установленный на 0+ΔsΔλКвадратный.

Чтобы исправить квадратичную ошибку, решите линейную систему для направления шага корректора.

[H0JhTJgT0Λ0SJh000JgI00][ΔxcorΔscorΔycorΔλcor]=[0ΔsΔλ00].

Второй шаг корректора является шагом центрирования. Коррекция центрирования основана на переменной, σ с правой стороны уравнения

[H0JhTJgT0Λ0SJh000JgI00][ΔxcenΔscenΔycenΔλcen]=[f+JhTy+JgTλSλμeσhg+s].

Здесь σ определяется как

σ=(μPμ)3,

где μP задано в уравнении 39 , и μ=sTλ/m.

Чтобы предотвратить слишком быстрое уменьшение параметра барьера, потенциально дестабилизируя алгоритм, алгоритм сохраняет σ параметра центрирования выше 1/100. Это заставляет μ параметра барьера уменьшаться не более чем на множитель 1/100.

Алгоритмически первые шаги коррекции и центрирования независимы друг от друга, поэтому они вычисляются вместе. Кроме того, матрица слева для предиктора и обоих шагов корректора одинаковая. Итак, алгоритмически матрица факторизируется один раз, и эта факторизация используется для всех этих шагов.

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

Сопряженный градиентный шаг

Сопряженный градиентный подход к решению приблизительной задачи Уравнение 34 аналогичен другим сопряженным градиентным вычислениям. В этом случае алгоритм настраивает и x, и s, сохраняя слабости s положительными. Подход состоит в том, чтобы минимизировать квадратичное приближение к приблизительной задаче в доверительной области, удовлетворяющей линеаризированным ограничениям.

В частности, позвольте R обозначить радиус доверительной области и пусть другие переменные будут заданы как в Direct Step. Алгоритм получает множители Лагранжа, приблизительно решая уравнения KKT

xL=xf(x)+iλigi(x)+jyjhj(x)=0,

в смысле наименьших квадратов, при условии, что λ положительны. Затем требуется шаг x, и s), чтобы приблизительно решить

minΔx,ΔsfTΔx+12ΔxTxx2LΔx+μeTS1Δs+12ΔsTS1ΛΔs,(40)
удовлетворяющее линеаризированным ограничениям
g(x)+JgΔx+Δs=0,  h(x)+JhΔx=0.(41)
Чтобы решить Уравнение 41, алгоритм пытается минимизировать норму линеаризированных ограничений внутри области с радиусом, масштабированным по R. Затем уравнение 40 решается с ограничениями, состоящими в том, чтобы соответствовать невязке от решения уравнения 41, оставаться в доверительной области радиуса R и сохранять s строго положительным. Для получения дополнительной информации об алгоритме и выведении смотрите [40], [41] и [51]. Для другого описания сопряженных градиентов смотрите Предварительно обусловленный сопряженный градиентный метод.

Опции алгоритма внутренней точки

Вот значения и эффекты нескольких опций в алгоритме внутренней точки.

  • HonorBounds - Когда установлено значение trueКаждый итерат удовлетворяет установленным ограничениям. Когда установлено значение falseалгоритм может нарушить границы во время промежуточных итераций.

  • HessianApproximation - При установке на:

    • 'bfgs', fmincon вычисляет Гессиан по плотному квазиньютоновскому приближению.

    • 'lbfgs', fmincon вычисляет Гессиан по крупномасштабному квазиньютоновскому приближению с ограниченной памятью.

    • 'fin-diff-grads', fmincon вычисляет Гессианский векторный продукт по конечным различиям градиента (ов); другие опции должны быть установлены надлежащим образом.

  • HessianFcnfmincon использует указатель на функцию, указанный в HessianFcn вычислить Гессиана. Смотрите включая Гессиан.

  • HessianMultiplyFcn - Дайте отдельную функцию для оценки вектора Гессиана-времени. Для получения дополнительной информации смотрите Включение Гессиана и Функцию умножения Гессиана.

  • SubproblemAlgorithm - Определяет, следует ли пытаться выполнить прямой шаг Ньютона. Настройка по умолчанию 'factorization' позволяет использовать этот тип шага. Настройка 'cg' позволяет только сопряженные градиентные шаги.

Полный список опций см. в Алгоритме внутренней точки в fmincon options.

Алгоритм fminbnd

fminbnd является решателем, доступным в любой установке MATLAB. Он решает локальный минимум в одной размерности в ограниченном интервале. Он не основан на производных. Вместо этого он использует поиск золотого сечения и параболическую интерполяцию.

fseminf Формулировка задачи и алгоритм

fseminf Формулировка задачи

fseminf решает задачи оптимизации с дополнительными типами ограничений по сравнению с теми, которые решаются fmincon. Формулировка fmincon является

minxf(x)

таким образом, что c (<reservedrangesplaceholder9>)      ≤ 0 , ceq (<reservedrangesplaceholder7>)    = 0, <reservedrangesplaceholder6> ≤ <reservedrangesplaceholder5>, Aeq·x = beq, и <reservedrangesplaceholder2> ≤ <reservedrangesplaceholder1> ≤ <reservedrangesplaceholder0>.

fseminf добавляет следующий набор полу-бесконечных ограничений к уже заданным. Для wj в одно- или двумерном ограниченном интервале или прямоугольнике Ij, для вектора непрерывных функций K (x, w), ограничения

Kj (x, wj ) ≤ 0 для всего <reservedrangesplaceholder1>  <reservedrangesplaceholder0>.

Термин « размерность» fseminf задача означает максимальную размерность ограничительного множества I: 1, если все Ij являются интервалами, и 2, если хотя бы один Ij является прямоугольником. Размер вектора K не входит в эту концепцию размерности.

Причина, по которой это называется полубесконечным программированием, заключается в том, что существует конечное число переменных (x и wj), но бесконечное число ограничений. Это потому, что ограничения на x - это набор непрерывных интервалов или прямоугольников Ij, который содержит бесконечное количество точек, поэтому существует бесконечное число ограничений: Kj (x, wj ) ≤ 0 для бесконечного числа точек wj .

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

maxwjIjKj(x,wj)0 для всех j=1,...,|K|,(42)

где |<reservedrangesplaceholder2>| - количество компонентов векторной K; т.е. количество полунепрерывных функций. Для фиксированных x это обычная максимизация через ограниченные интервалы или прямоугольники.

fseminf дополнительно упрощает задачу путем создания кусочно-квадратичных или кубических приближений κj (x, wj) к функциям Kj ( x, wj) для каждой x, которую посещает решатель.fseminf рассматривает только максимумы функции интерполяции κj (x, wj), вместо Kj ( x, wj), в Уравнении 42. Это сводит исходную задачу, минимизируя полунепрерывно ограниченную функцию, к задаче с конечным числом ограничений.

Точки дискретизации.  Ваша полубесконечная ограничительная функция должна обеспечить ряд точек выборки, точки, используемые в создании квадратных или кубических приближений. Для этого он должен содержать:

  • Начальный интервал s между точками дискретизации w

  • Способ генерации множества точек дискретизации, w из s

Начальный интервал s является матрицей |<reservedrangesplaceholder2>|-by-2. j строка s представляет интервал для соседних точек выборки для Kj функции ограничения. Если Kj зависит от одномерного wj, задайте   s(j,2) = 0. fseminf обновляет матрицу s в последующих итерациях.

fseminf использует матрицу s чтобы сгенерировать w точек дискретизации, который он затем использует, чтобы создать κj приближения (x, wj). Ваша процедура генерации w из s следует сохранять те же интервалы или прямоугольники, Ij и во время оптимизации.

Пример создания точек расчета.  Рассмотрим задачу с двумя полу-бесконечными ограничениями, K 1 и K 2. K 1 имеет одномерные w 1, а K 2 - двумерные w 2. Следующий код генерирует набор дискретизации от  w 1 = 2 до 12:

% Initial sampling interval
if isnan(s(1,1))
    s(1,1) = .2;
    s(1,2) = 0;
end

% Sampling set
w1 = 2:s(1,1):12;

fseminf задает s как NaN когда он впервые вызывает вашу функцию ограничения. Проверка на это позволяет вам задать начальный интервал дискретизации.

Следующий код генерирует набор дискретизации из w 2 в квадрате, при этом каждый компонент переходит от 1 до 100, первоначально дискретизируемый чаще в первом компоненте, чем второй :

% Initial sampling interval
if isnan(s(1,1))
   s(2,1) = 0.2;
   s(2,2) = 0.5;
end
 
% Sampling set
w2x = 1:s(2,1):100;
w2y = 1:s(2,2):100;
[wx,wy] = meshgrid(w2x,w2y);

Предыдущие фрагменты кода могут быть упрощены следующим образом:

% Initial sampling interval
if isnan(s(1,1))
    s = [0.2 0;0.2 0.5];
end

% Sampling set
w1 = 2:s(1,1):12;
w2x = 1:s(2,1):100;
w2y = 1:s(2,2):100;
[wx,wy] = meshgrid(w2x,w2y);

Алгоритм fseminf

fseminf по существу сводит проблему полубесконечного программирования к проблеме, решаемой fmincon. fseminf выполняет следующие шаги для решения полунепрерывных задач программирования:

  1. При текущем значении x, fseminf определяет все wj,i так, что κj интерполяции (x, wj,i) является локальным максимумом. (Максимальное значение относится к различным w для фиксированных x.)

  2. fseminf делает один шаг итерации в решении fmincon задача:

    minxf(x)

    таким образом, что c (<reservedrangesplaceholder21>)       0, ceq (<reservedrangesplaceholder19>)    = 0, <reservedrangesplaceholder18> ≤ <reservedrangesplaceholder17> , Aeq·x = beq, и <reservedrangesplaceholder14> ≤ <reservedrangesplaceholder13> ≤ <reservedrangesplaceholder12> , где c (<reservedrangesplaceholder10>) увеличен со всеми максимумами κj (x, wj) принятый весь <reservedrangesplaceholder6>  <reservedrangesplaceholder5>, который равен максимумам по j и i κj (x, wj,i).

  3. fseminf проверяет, удовлетворен ли какой-либо критерий остановки в новой точке x (чтобы остановить итерации); если нет, он переходит к шагу 4.

  4. fseminf проверяет, требуется ли обновление дискретизации полунепрерывных ограничений, и соответствующим образом обновляет точки дискретизации. Это обеспечивает обновлённое приближение κj (x, wj). Затем он продолжается на шаге 1.