mpcInteriorPointSolver

Решите задачу квадратичного программирования с помощью алгоритма внутренней точки

Описание

Используя mpcInteriorPointSolver, можно решить задачу квадратичного программирования (QP) с помощью основного двойного алгоритма внутренней точки с корректором предиктора Mehrotra. Эта функция обеспечивает доступ к встроенной внутренней точке Model Predictive Control Toolbox™ решатель QP.

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

Этот решатель полезен для:

  • Усовершенствованные приложения MPC, которые выходят за рамки программного обеспечения Model Predictive Control Toolbox.

  • Пользовательские приложения QP, включая приложения, которые требуют генерации кода.

В качестве альтернативы можно также получить доступ к встроенному активному набору решатель QP с помощью mpcActiveSetSolver.

пример

[x,exitflag] = mpcInteriorPointSolver(H,f,A,b,Aeq,beq,x0,options) находит оптимальное решение, x, к проблеме квадратичного программирования путем минимизации целевой функции:

J=12xHx+fx

подвергните ограничениям неравенства Axb, и ограничения равенства Aeqx=beqexitflag указывает на валидность x.

[x,exitflag,feasible,lambda] = mpcInteriorPointSolver(H,f,A,b,Aeq,beq,x0,options) также возвращает логический флаг, feasible, который указывает на выполнимость решения, и множители Лагранжа, lambda, для решения.

Примеры

свернуть все

Найдите значения x, которые минимизируют

f(x)=0.5x12+x22-x1x2-2x1-6x2,

удовлетворяющее ограничениям

x10x20x1+x22-x1+2x222x1+x23.

Задайте Гессиан и линейный вектор множителя для целевой функции.

H = [1 -1; -1 2];
f = [-2; -6];

Задайте параметры ограничения неравенства.

A = [-1 0; 0 -1; 1 1; -1 2; 2 1];
b = [0; 0; 2; 2; 3];

Задайте Aeq и beq указать, что нет никаких ограничений равенства.

n = length(f);
Aeq = zeros(0,n);
beq = zeros(0,1);

Это - хорошая практика, чтобы проверить тот H положительное определенное использование chol функция.

[~,p] = chol(H);

Если p = 0, затем H положителен определенный.

p
p = 0

Создайте набор опции по умолчанию для mpcInteriorPointSolver.

opt = mpcInteriorPointOptions;

К холодному запуску решатель задайте исходное предположение нулей для элементов x.

x0 = zeros(n,1);

Решите задачу QP.

[x,exitflag] = mpcInteriorPointSolver(H,f,A,b,Aeq,beq,x0,opt);

Исследуйте решение, x.

x
x = 2×1

    0.6667
    1.3333

Входные параметры

свернуть все

Матрица гессиана в виде n-by-n матрица, где n> 0 является количеством переменных оптимизации.

Алгоритм QP внутренней точки требует, чтобы матрица Гессиана была положительна определенный. Определить ли H положителен определенный, используйте chol функция.

[~,p] = chol(H);

Если p = 0, затем H положителен определенный. В противном случае, p положительное целое число.

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

Линейные коэффициенты ограничения неравенства в виде m-by-n матрица, где n является количеством переменных оптимизации и m, являются количеством ограничений неравенства.

Если ваша проблема не имеет никаких ограничений неравенства, используйте zeros(0,n).

Правая сторона ограничений неравенства в виде вектор-столбца длины m, где m является количеством ограничений неравенства.

Если ваша проблема не имеет никаких ограничений неравенства, используйте zeros(0,1).

Линейные коэффициенты ограничения равенства в виде q-by-n матрица, где n является количеством переменных оптимизации и q <= n, являются количеством ограничений равенства. Ограничения равенства должны быть линейно независимыми с rank(Aeq) = q.

Если ваша проблема не имеет никаких ограничений равенства, используйте zeros(0,n).

Правая сторона ограничений равенства в виде вектор-столбца длины q, где q является количеством ограничений равенства.

Если ваша проблема не имеет никаких ограничений равенства, используйте zeros(0,1).

Исходное предположение для решения, где равный фрагмент неравенства верен в виде вектор-столбца длины n, где n является количеством переменных оптимизации. Для холодного запуска задайте исходное предположение как zeros(n,1).

Опция установлена для mpcInteriorPointSolverВ виде структуры, созданной с помощью mpcInteriorPointOptions.

Выходные аргументы

свернуть все

Оптимальное решение проблемы QP, возвращенной как вектор-столбец длины n, где n является количеством переменных оптимизации. mpcInteriorPointSolver всегда возвращает значение для x. Чтобы определить, оптимально ли решение или выполнимо, проверяйте exitflag и feasible.

Индикатор валидности решения, возвращенный как целое число согласно следующему:

ЗначениеОписание
> 0x оптимально. exitflag представляет количество итераций, выполняемых во время оптимизации.
0Максимальное количество итераций было достигнуто, прежде чем решатель мог найти оптимальное решение. Решение x выполнимо только если feasible true.
-1Проблема, кажется, неосуществима; то есть, ограничение Axb не может быть удовлетворен.

Выполнимость решения, возвращенная как логический скаляр. Когда exitflag 0, решатель достиг максимального количества итераций, не находя оптимальное решение. Это субоптимальное решение, возвращенное в x, выполнимо только если feasible верно.

Множители Лагранжа, возвращенные как структура со следующими полями:

Поле Описание
ineqlinМножители ограничений неравенства, возвращенных как вектор длины n. Когда решение оптимально, элементы ineqlin являются неотрицательными.
eqlinМножители ограничений равенства, возвращенных как вектор длины q. В оптимальном решении нет никаких ограничений знака.

Советы

  • Чтобы определить, является ли H положительным определенный, используйте chol функция.

    [~,p] = chol(H);

    Если p = 0, затем H положителен определенный. В противном случае, p положительное целое число.

  • mpcInteriorPointSolver обеспечивает доступ к внутренней точке решатель QP, используемый программным обеспечением Model Predictive Control Toolbox. Используйте эту команду, чтобы решить задачи QP в ваших собственных приложениях MPC. Для примера пользовательского приложения MPC смотрите Решают Пользовательскую задачу Квадратичного программирования MPC и Генерируют Код. Этот пример использует mpcActiveSetSolver, однако рабочий процесс применяется к mpcInteriorPointSolver также.

Алгоритмы

mpcInteriorPointSolver решает задачу QP с помощью метода внутренней точки. Для получения дополнительной информации см. Решатели QP.

Расширенные возможности

Введенный в R2020a