Main Content

SecondOrderConeConstraint

Second-order cone constraint object

Description

SecondOrderConeConstraint represents the second-order cone constraint

AxbdTxγ

  • The A matrix represents the linear factor of the cone.

  • The b vector represents the center of the cone.

  • The d vector represents a linear bound.

  • The γ scalar represents a bound.

Solve problems with second-order cone constraints by using the coneprog function.

Creation

Create a SecondOrderConeConstraint object by using the secondordercone function.

Properties

expand all

Linear factor of the cone, specified as a real matrix.

Data Types: double

Center of the cone, specified as a real vector.

Data Types: double

Linear bound, specified as a real vector.

Data Types: double

Bound, specified as a real scalar. Smaller values of gamma correspond to looser constraints.

Data Types: double

Object Functions

Examples

collapse all

To set up a problem with a second-order cone constraint, create a second-order cone constraint object.

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

Create an objective function vector.

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

The problem has no linear constraints. Create empty matrices for these constraints.

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

Set upper and lower bounds on x(3).

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

Solve the problem by using the coneprog function.

[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

The solution component x(3) is at its upper bound. The cone constraint is active at the solution:

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

To set up a problem with several second-order cone constraints, create an array of constraint objects. To save time and memory, create the highest-index constraint first.

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);

Create the linear objective function vector.

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

Solve the problem by using the coneprog function.

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

    0.4238
    1.6477
    2.3225

fval = -13.0089
Introduced in R2020b