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.

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

Генерация кода графического процессора
Сгенерируйте код CUDA® для NVIDIA® графические процессоры с помощью GPU Coder™.

Введенный в R2020a