5

I want to further my real world semi definite programming optimization problem with a constraint on sum of absolute values. For example:

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

I have searched internet and documentation but could not find a way to represent this. I am using python and cvxopt module.

4

3 回答 3

7

作为 Warren 解决方案的替代方案,该解决方案涉及 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 个线性约束。

于 2015-04-22T19:16:42.363 回答
3

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

 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|_1是 的 1-范数x

于 2015-04-22T12:42:37.003 回答
0

我也看到了变化:

x₁ = x₁⁺ - x₁⁻
x₂ = x₂⁺ - x₂⁻
…
xₙ = xₙ⁺ - xₙ⁻

x₁⁺, x₁⁻ ≥ 0
x₂⁺, x₂⁻ ≥ 0
…
xₙ⁺, xₙ⁻ ≥ 0

(x₁⁺ + x₁⁻) + (x₂⁺ + x₂⁻) + … + (xₙ⁺ + xₙ⁻) ≤ 10

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

xₖ⁺ 和 xₖ⁻ 可用于目标函数,以惩罚 xₖ 的绝对值或对 xₖ 的正负部分给予不同的惩罚。这些松弛变量有时用于表示交易成本,例如,

max theta'mu - lambda/2 theta'Sigma theta -TC(买+卖)

theta = theta0+买卖

买,卖>=0

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

于 2019-03-11T15:36:01.387 回答