exponenta event banner

mpcInteriorPointSolver

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

Описание

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

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

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

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

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

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

пример

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

J=12x⊺Hx+f⊺x

с учетом ограничений неравенства Ax≤b и ограничений равенства 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,

с учетом ограничений

x1≥0x2≥0x1+x2≤2-x1+2x2≤22x1+x2≤3.

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

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-на-n, где n - число переменных оптимизации, а m - число ограничений неравенства.

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

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

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

Коэффициенты ограничения линейного равенства, заданные как матрица q-на-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Проблема представляется неосуществимой; то есть Ax≤b ограничения не может быть удовлетворен.

Выполнимость решения, возвращенная как логический скаляр. Когда 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