如何在QuadProg中实现框约束

时间:2015-09-21 16:08:38

标签: r optimization constraints quadprog

我想知道R'Quadprog'软件包是否能够合并以下形式的框约束:-L * 1< = v< = L * 1

其中1是1的向量,L是常数。要优化的变量是v。基本上,v的所有单个元素必须在-lambda和lambda之间限制。

如果没有,是否有其他软件包可以解决这个问题?

非常感谢你的帮助

1 个答案:

答案 0 :(得分:1)

是的,你可以。

鉴于功能:

solve.QP(Dmat=Dmat,dvec=dvec,Amat=Amat,bvec=bvec,meq=0)

Amatbvec表示Amat * v >= bvec

所以以这种方式设置:

Amat <- cbind(diag(length(v)), -diag(length(v))) 
bvec <- c(rep(-L, length(v)), rep(-L, length(v)))
对于v > -L的每个元素,

表示-v > -Lv < L(与v相同)。

注意meq表示&#34;等号的数量&#34;,因为在您的情况下,所有都是不等式,必须将它放到0

如果您需要设置等值约束,请将其放入&#34; left&#34; Amatbvec的一面以及meq中的平等数量。