这个例子演示了如何将二次约束转换为二次锥约束形式。二次约束有这样的形式
二阶锥规划具有这种形式的约束
.
矩阵
必须是对称的和正半定的,这样你才能转换二次约束。让
的平方根
,这意味着
.你可以计算
使用sqrtm
.假设有一个解
这个方程
,这总是正确的
是正定的。计算
使用b = s \问
.
因此,如果 ,则二次约束等价于二阶锥约束
指定5个元素的向量f
表示目标函数
.
f = [1, 2, 3, 4, 5];
设置二次约束矩阵问
作为一个5乘5的随机正定矩阵。集问
为随机5元向量,并取加性常数
.
rng默认的%的再现性Q = randn(5) + 3*eye(5);Q = (Q + Q')/2;%使Q对称q = randn(5、1);c = 1;
来创建输入coneprog
,创建矩阵年代
的平方根问
.
S = sqrtm (Q);
按照本示例第一部分中指定的,为二阶锥约束创建其余的输入。
b = s \问;d = 0(大小(b));γ= -√(b * c);sc = secondordercone(年代,b, d,γ);
调用coneprog
来解决这个问题。
[x, fval] = coneprog (f, sc)
找到最优解。
x =5×1- 0.2669 -0.6309 0.2543 -0.0904
fval = -4.6148
将这个结果与使用fmincon
.将二次约束写成匿名非线性约束函数.
x0 = randn(5、1);% fmincon的初始点nlc = @(x)x'*Q*x + 2* Q '*x + c;nlcon = @ (x)协议(缴送工作(x) []);[xfmc, fvalfmc] = fmincon (@ * x, x0 f (x) ,[],[],[],[],[],[], nlcon)
找到满足约束条件的局部最小值。优化完成是因为目标函数在可行方向上不减小到最优性公差的值内,约束条件满足到约束公差的值内。
xfmc =5×1-0.7196 0.2672 0.6312 0.2541 -0.0902
fvalfmc = -4.6148
这两个解几乎是相万博 尤文图斯同的。
coneprog
|quadprog
|secondordercone