主要内容

将二次约束转换为二次锥约束

这个例子演示了如何将二次约束转换为二次锥约束形式。二次约束有这样的形式

x T x + 2 T x + c 0

二阶锥规划具有这种形式的约束

一个 年代 c x - b 年代 c d 年代 c x - γ

矩阵 必须是对称的和正半定的,这样你才能转换二次约束。让 年代 的平方根 ,这意味着 年代 年代 年代 T 年代 .你可以计算 年代 使用sqrtm.假设有一个解 b 这个方程 年代 T b - - - - - - ,这总是正确的 是正定的。计算 b 使用b = s \问

x T x + 2 T x + c x T 年代 T 年代 x - 2 年代 T b T x + c 年代 x - b T 年代 x - b - b T b + c 年代 x - b 2 + c - b T b

因此,如果 b T b > c ,则二次约束等价于二阶锥约束

  • 一个 年代 c 年代

  • b 年代 c b

  • d 年代 c 0

  • γ - b T b - c

数值例子

指定5个元素的向量f表示目标函数 f T x

f = [1, 2, 3, 4, 5];

设置二次约束矩阵作为一个5乘5的随机正定矩阵。集为随机5元向量,并取加性常数 c - 1

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

这两个解几乎是相万博 尤文图斯同的。

另请参阅

||

相关的话题