R受约束条件下多变量二次方程的优化

时间:2013-06-21 04:39:00

标签: r optimization linear-programming

我在R 3.0上运行。我有一个二次函数,如:

2*x[1]*x[1] -5 * x[1] + 8 * x[2] * x[2] - 7*x[3]*x[2] -5 * x[3] * x[3]..

该函数具有各种二次项,并具有一些线性约束,例如:

1 <= x[1] <= 7
-2 <= x[2] <= 9
0 <= x[3] <= 32

此外,

 x[1]+ x[2]+ x[3] = 100

我应该看一下R中的哪个包来解决这种优化问题?这是一个有许多不等式的大方程式,我正在运行R 3.0。可以这样:

   x[1]+ x[2]+ x[3] = 100

用优化完成吗?

我无法弄清楚如何在quadprog中将参数传递给constrOptim或solve.QP。

2 个答案:

答案 0 :(得分:2)

quadprod::solve.QPlimSolve::lsei都会使用线性约束解决QP个问题。他们在制定目标的方式上有所不同:

    {li> min(-d ^ T b + 1/2 b ^ T D b)solve.QP {li> min(|| Ax-b || ^ 2)lsei

    看看你编写目标函数的方式,solve.QP听起来是最好的选择,但请注意,你必须以矩阵形式重写你的问题。

    编辑:我没有意识到你的目标函数不是凸的(换句话说,上面的矩阵D不是正定的),这是这些求解器的要求。所以,是的,您应该依赖于optim这样的非线性求解器,但是更通用的求解器允许添加线性约束:constrOptim似乎是其中之一。

答案 1 :(得分:-1)

最小化[{2 * x1 ^ 2 - 5 * x1 + 8 * x2 ^ 2 - 7 * x3 * x2 - 5 * x3 ^ 2,   1&lt; = x1&lt; = 7&amp;&amp; -2&lt; = x2&lt; = 9&amp;&amp; 0&lt; = x3&lt; = 32},{x1,x2,x3}] 最佳值:-51929/8 最佳矢量:(x1 - > 5/4,x2 - > 9,x3 - > 32) 然后,通过改进的Simplex方法解决了凸二次规划问题。