主要内容

secondordercone

创建二阶锥约束

描述

secondordercone函数创建一个表示不等式的二阶锥约束

一个 x b d T x γ

从输入矩阵一个bd,γ

例子

socConstraint= secondordercone (一个bdγ创建一个二阶锥约束对象socConstraint

求解二阶锥约束问题,用coneprog函数。要表示多个锥约束,请将这些约束的数组传递给coneprog如示例所示几个锥约束

例子

全部折叠

要建立一个带有二阶锥约束的问题,创建一个二阶锥约束对象。

一个=诊断接头([1,1/2,0]);b = 0 (3,1);d = [0, 0, 1];γ= 0;socConstraints = secondordercone (A, b, d,γ);

创建一个目标函数向量。

f = (1 2 0);

这个问题没有线性约束。为这些约束创建空矩阵。

Aineq = [];bineq = [];Aeq = [];说真的= [];

设置上下限x (3)

磅=(负负0);乌兰巴托=(正,正无穷,2);

用……来解决问题coneprog函数。

[x, fval] = coneprog (f socConstraints Aineq、bineq Aeq,说真的,磅,乌兰巴托)
找到最优解。
x =3×10.4851 3.8806 2.0000
fval = -8.2462

解决方案组件x (3)在它的上界。在求解处锥约束是主动的:

规范(*取向)- d ' * x%在约束激活时接近0
ans = -2.5677 e-08

要建立一个有几个二阶锥约束的问题,创建一个约束对象数组。为了节省时间和内存,首先创建最高索引约束。

一个=诊断接头([1 2 0]);b = 0 (3,1);d = [0, 0, 1];γ= 1;socConstraints (3) = secondordercone (A, b, d,γ);一个=诊断接头([0,1]);d = (0, 1, 0);socConstraints (2) = secondordercone (A, b, d,γ);一个=诊断接头([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)
找到最优解。
x =3×10.4238 1.6477 2.3225
fval = -13.0089

输入参数

全部折叠

圆锥的线性因子,指定为实矩阵。列数一个必须等于元素的个数d的行数一个必须等于元素的个数b

例子:诊断接头([1 1/2 0])

数据类型:

圆锥的中心,指定为实向量。元素的数量b必须等于行数一个

例子:0 (1)

数据类型:

线性界,指定为实向量。元素的数量d必须等于一个

例子:[0, 0, 1]

数据类型:

界,指定为实标量。较小的值γ对应于更宽松的约束。

例子:-1

数据类型:

输出参数

全部折叠

二阶锥约束,返回为SecondOrderConeConstraint对象。使用此对象作为coneprog解算器。如果你有多个圆锥约束,传递一个约束向量给coneprog;看到几个锥约束

介绍了R2020b