exponenta event banner

SecondOrderConeConstraint

Объект зависимости конуса второго порядка

Описание

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

‖A⋅x−b  dTx−γ

  • Матрица A представляет линейный коэффициент конуса.

  • Вектор b представляет центр конуса.

  • Вектор d представляет линейную границу.

  • Скаляр γ представляет собой границу.

Решите проблемы с ограничениями конуса второго порядка с помощью coneprog функция.

Создание

Создать SecondOrderConeConstraint с помощью secondordercone функция.

Свойства

развернуть все

Линейный коэффициент конуса, заданный как вещественная матрица.

Типы данных: double

Центр конуса, заданный как действительный вектор.

Типы данных: double

Линейная граница, заданная как действительный вектор.

Типы данных: double

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

Типы данных: double

Функции объекта

Примеры

свернуть все

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

A = diag([1,1/2,0]);
b = zeros(3,1);
d = [0;0;1];
gamma = 0;
socConstraints = secondordercone(A,b,d,gamma);

Создайте вектор целевой функции.

f = [-1,-2,0];

Проблема не имеет линейных ограничений. Создайте пустые матрицы для этих ограничений.

Aineq = [];
bineq = [];
Aeq = [];
beq = [];

Установить верхние и нижние границы на x(3).

lb = [-Inf,-Inf,0];
ub = [Inf,Inf,2];

Решить проблему с помощью coneprog функция.

[x,fval] = coneprog(f,socConstraints,Aineq,bineq,Aeq,beq,lb,ub)
Optimal solution found.
x = 3×1

    0.4851
    3.8806
    2.0000

fval = -8.2462

Компонент решения x(3) находится на верхней границе. Зависимость конуса активна в решении:

norm(A*x-b) - d'*x % Near 0 when the constraint is active
ans = -2.5677e-08

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

A = diag([1,2,0]);
b = zeros(3,1);
d = [0;0;1];
gamma = -1;
socConstraints(3) = secondordercone(A,b,d,gamma);

A = diag([3,0,1]);
d = [0;1;0];
socConstraints(2) = secondordercone(A,b,d,gamma);

A = diag([0;1/2;1/2]);
d = [1;0;0];
socConstraints(1) = secondordercone(A,b,d,gamma);

Создайте вектор линейной целевой функции.

f = [-1;-2;-4];

Решить проблему с помощью coneprog функция.

[x,fval] = coneprog(f,socConstraints)
Optimal solution found.
x = 3×1

    0.4238
    1.6477
    2.3225

fval = -13.0089
Представлен в R2020b