半定规划中绝对值约束的总和

时间:2015-04-22 11:08:33

标签: python optimization mathematical-optimization cvxopt

我希望通过对绝对值之和的约束来推进我的真实世界半定规划优化问题。例如:

abs(x1) + abs(x2) + abs(x3) <= 10.

我搜索了互联网和文档,但找不到表示这种方式的方法。我正在使用python和cvxopt模块。

3 个答案:

答案 0 :(得分:6)

作为沃伦解决方案的替代方案,涉及n个绝对值项之和的2 ^ n个约束,可以引入n个额外变量y1,y2,...,yn并写入以下n对不等式

-y1 <= x1 <= y1
-y2 <= x2 <= y2
...
-yn <= xn <= yn

,结合单一的平等

y1+y2+...+yn = 10

等同于原始约束

abs(x1) + abs(x2) + ... + abs(xn) <= 10

总成本:n个新变量和2n + 1个线性约束。

答案 1 :(得分:2)

您的约束等同于以下八个约束:

 x1 + x2 + x3 <= 10
 x1 + x2 - x3 <= 10
 x1 - x2 + x3 <= 10
 x1 - x2 - x3 <= 10
-x1 + x2 + x3 <= 10
-x1 + x2 - x3 <= 10
-x1 - x2 + x3 <= 10
-x1 - x2 - x3 <= 10

我还没有使用cvxopt,因此我不知道是否有更简单的方法来处理您对该包的约束。例如,您的约束等同于|x|_1 <= 10,其中|x|_1x的1范数。

答案 2 :(得分:0)

我也看到了变化:

  

x_1 = x1_plus-x1_minus

     

x2 = x2_plus-x2_minus   xN = xN_plus-xN_minus   和   x1_plus,x1_minus> = 0   x2_plus,x2_minus> = 0

     

xN_plus,xN_minus> = 0

  

x1_plus + x1_minus + x2_plus + x2_minus + ... + xN_plus + xN_minus <= 10

成本:额外的2N个变量,N个等式约束+ 2N + 1个不等式约束。比@fanfan的要多得多,但还有其他好处。

xk_plus和x_k_minus可用于目标函数,以惩罚xk的绝对值或对xk的正负部分给出不同的惩罚。这些松弛变量有时用于表示交易费用, 例如

  

max theta'mu-lambda / 2 theta'Sigma theta -TC(buy + sell)

     

theta = theta0 +买卖

     

购买,出售> = 0

,并在需要时允许TC不对称。