Main Content

secondordercone

Crear una restricción de cono de segundo orden

Desde R2020b

Descripción

La función secondordercone crea una restricción de cono de segundo orden que representa la desigualdad

AxbdTxγ

a partir de las matrices de entrada A, b, d y gamma.

ejemplo

socConstraint = secondordercone(A,b,d,gamma) crea un objeto de restricción de cono de segundo orden socConstraint.

Resuelva problemas con restricciones de cono de segundo orden utilizando la función coneprog. Para representar restricciones de cono múltiples, pase un arreglo de estas restricciones a coneprog como se muestra en el ejemplo Restricciones de varios conos.

Ejemplos

contraer todo

Para configurar un problema con una restricción de cono de segundo orden, cree un objeto de restricción de cono de segundo orden.

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

Cree un vector de función objetivo.

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

El problema no tiene restricciones lineales. Cree matrices vacías para estas restricciones.

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

Establezca los límites superiores e inferiores en x(3).

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

Resuelva el problema utilizando la función 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

El componente de la solución x(3) está en su límite superior. La restricción de cono se encuentra activa en la solución:

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

Para configurar un problema con varias restricciones de cono de segundo orden, cree un arreglo de objetos de restricción. Para ahorrar tiempo y memoria, cree primero la restricción con el mayor índice.

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

Cree el vector de la función objetivo lineal.

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

Resuelva el problema utilizando la función coneprog.

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

    0.4238
    1.6477
    2.3225

fval = -13.0089

Argumentos de entrada

contraer todo

Factor lineal del cono, especificado como matriz real. El número de columnas en A debe ser igual al número de elementos en d y el número de filas en A debe ser igual al número de elementos en b.

Ejemplo: diag([1,1/2,0])

Tipos de datos: double

Centro del cono, especificado como vector real. El número de elementos en b debe ser igual al número de filas en A.

Ejemplo: zeros(3,1)

Tipos de datos: double

Límite lineal, especificado como vector real. El número de elementos en d debe ser igual al número de columnas en A.

Ejemplo: [0;0;1]

Tipos de datos: double

Límite, especificado como escalar real. Los valores más pequeños de gamma corresponden a restricciones más flexibles.

Ejemplo: -1

Tipos de datos: double

Argumentos de salida

contraer todo

Restricción de cono de segundo orden, devuelta como un objeto SecondOrderConeConstraint. Utilice este objeto como una restricción para el solver coneprog. Si tiene múltiples restricciones de cono, pase un vector de restricciones a coneprog; consulte Restricciones de varios conos.

Historial de versiones

Introducido en R2020b