mpcInteriorPointSolver

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

Описание

Используя mpcInteriorPointSolverможно решить квадратичную задачу программирования (QP), используя основной-двойственный алгоритм внутренней точки с предиктором-корректором Мехротры. Эта функция обеспечивает доступ к встроенному решателю Model Predictive Control Toolbox™ interior-point 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=beq. exitflag указывает на валидность 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 является true.

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

ОбластьОписание
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 с помощью метода interior-point. Для получения дополнительной информации см. Раздел «Решатели QP».

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

.
Введенный в R2020a