matlab quadprog约束问题

时间:2014-02-11 19:06:15

标签: matlab optimization quadprog

我有一个权重组合我在matlab中使用quadprog。 我有quadprog优化器的所有输入。我在制定方面遇到了一些麻烦 约束

我希望我的约束条件具有0或1%的下限,有没有办法在维持我的目标函数的同时做到这一点

谢谢!

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解你的问题。

如果您的权重已经按百分比定义,则直接定义为quadprog

x = quadprog(H, f, [], [], [], [], lb, [])

所以Hef应该由matlab描述提供:

  

quadprog(H,f) - 返回最小化x的向量1/2 * x' * H * x + f' * xH必须是肯定的,才能使问题具有有限的最小值。“

lb是约束的向量。例如,如果x是向量3 x 1,那么在所需百分比的情况下,lb = [0.01; 0.01; 0.01]0.011%

另一方面,我们假设sum_{i=1}^{n} w_i不等于1。因此,w_i未按百分比定义。

因此,您需要的约束是p_i (percentage)= w_i / (sum w_i) >= 0.01(在下限为1%的情况下)。

请注意,这种情况下的约束是

w_i >= 0.01 * (sum w_i)

或者

-0.01 * (sum_{j=1}^{i-1} w_j) + 0.99 * w_i - 0.01 * (sum_{j=i+1}^{n} w_j) >= 0

或者

0.01 * (sum_{j=1}^{i-1} w_j) - 0.99 w_i + 0.01 * (sum_{j=i+1}^{n} w_j) <= 0

因此,这是Ax <= b类型的约束。

所以

A_ij = 0.01i

不同时,

j A_ij = -0.99i = j

时的

b = zeros(n, 1)

在这种情况下,您正在使用

x = quadprog(H, f, A, b)

我希望我能帮到你!

丹尼尔