【问题标题】:How to implement box constraints in QuadProg如何在 QuadProg 中实现框约束
【发布时间】:2015-09-21 16:08:37
【问题描述】:
我想知道 R 'Quadprog' 包是否能够合并以下形式的框约束:-L*1
其中 1 是 1 的向量,L 是常数。要优化的变量是 v。基本上 v 的所有单个元素都必须在 –lambda 和 lambda 之间。
如果没有,是否有其他软件包可以解决这个问题?
非常感谢您的帮助
【问题讨论】:
标签:
r
optimization
constraints
quadprog
【解决方案1】:
是的,你可以。
给定函数:
solve.QP(Dmat=Dmat,dvec=dvec,Amat=Amat,bvec=bvec,meq=0)
Amat 和bvec 表示Amat * v >= bvec。
所以这样设置:
Amat <- cbind(diag(length(v)), -diag(length(v)))
bvec <- c(rep(-L, length(v)), rep(-L, length(v)))
表示v > -L 和-v > -L(与v < L 相同),用于v 的每个单独元素。
注意meq 的意思是“相等的数量”,因为在你的情况下都是不等式,所以它必须放在0。
如果您需要放置等式约束,请将其放在Amat 和bvec 的“左侧”以及meq 中的等式数量。