在约束下最小化功能

时间:2015-12-11 10:26:25

标签: r optimization constraints solver minimize

我正在寻找一个R求解器来最小化约束Ax< = B和x> = 0

下的函数f(x)

其中A是矩阵,x和B是向量。

你知道吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

由于你的程序是二次目标函数,而是线性约束,它是凸的。因此,您不需要求助于高级非线性库。

查看quadprog包。从其文档中,第一个示例应该作为

的良好模板
INSERT INTO TABLENAME (Id) VALUES ('41,32,31,293,877');

在这种情况下,注释描述了## First example from documentation of `quadprog`: ## ## Assume we want to minimize: -(0 5 0) %*% b + 1/2 b^T b ## under the constraints: A^T b >= b0 ## with b0 = (-8,2,0)^T ## and ## ## ## we can use solve.QP as follows: ## Dmat <- matrix(0,3,3) diag(Dmat) <- 1 dvec <- c(0,5,0) Amat <- matrix(c(-4,-3,0,2,1,0,0,-2,1),3,3) bvec <- c(-8,2,0) solve.QP(Dmat,dvec,Amat,bvec=bvec) 向量包含决策变量的程序。约束的形式为b(A ^ Tb> = b0),而您有Ax >= b形式的约束;后者很容易转化为前者,E = -A和f = -b,产生Ax <= b。请注意,在此示例中,二次项的系数矩阵Ex >= f是单位矩阵,而在您的情况下,您必须根据您的目标设置Dmat(和Dmat)功能

dvec程序的文档中澄清(甚至进一步):

  

这个例程实现了Goldfarb和Idnani的双重方法(1982,   1983)用于求解min形式的二次规划问题(-dT b   + 1 / 2bT Db)具有约束AT b> = b0。

因此,表达你的目标函数(这里使用x而不是b作为决策变量向量)

quadprog

在上面的例子中,d和D分别表示为dvec和Dmat。

相关问题