主要内容

二次约束转化为二阶锥约束

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

x T x + 2 T x + c 0

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

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

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

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

数值例子

指定一个五元素向量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\q;D = 0(大小(b));Gamma = -√(b'*b-c);sc = secondordercone(S,b,d,gamma);

调用coneprog解决问题。

[x,fval] = coneprog(f,sc)
找到最优解。
x =5×1-0.7194 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)deal(nlc(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

这两个解几乎完全金宝搏官方网站相同。

另请参阅

||

相关的话题