我有希望在R.- [R二次规划
解决我看到,我可以使用函数lsei
在封装limSolve
,以尽量减少写入Ax = b的线性方程系统的一个问题矩阵形式,服从等式约束Ex = f和不等式约束Gx> = h。
然而,我不是一个线性方程组,而是一个二次方程组,它可以写成t(x)Ax = b。
我看到有包quadprog
为二次方案,但它似乎不允许一组二次方程,只是一个方程。
有谁知道我可以用什么来使等式和不等式约束下的二次方程组最小化?
这是我的例子。我试图结合3个概率P(A),P(B),P(C) - 这创建了7个分段v1到v7,其中v1是P(A solus)等... v4是P((A B)NOT C)等。并且v7是P(A和B和C)。
我试图最小化的功能是:
obj.fc<-function(x){
f<-rep(NA,4)
v1<-x[1]
v2<-x[2]
v3<-x[3]
v4<-x[4]
v5<-x[5]
v6<-x[6]
v7<-x[7]
f[1]<-(v4+v7)*(1-(v1+v2+v4+v5+v6+v7))-2*(v1+v6)*(v2+v5)
f[2]<-(v5+v7)*(1-(v2+v3+v4+v5+v6+v7))-13*(v2+v4)*(v3+v6)
f[3]<-(v6+v7)*(1-(v1+v3+v4+v5+v6+v7))-11*(v1+v4)*(v3+v5)
f[4]<-(v4+v5+v6)*(1-(v1+v2+v3+v4+v5+v6+v7))-4*(v1+v2+v3)*v7
return(f)
}
我的等式约束是:
v1+v4+v6+v7=0.14
v2+v4+v5+v7=0.01
v3+v5+v6+v7=0.08
我的不等式约束是Vi的必须是0和1之间,他们总和不能超过1.
从'quadprog'包中的函数'solve.QP'用于常规颇为解决与这两个二次规划问题线性和非线性约束。在SO上搜索'solve.QP'将返回很多例子。要解决您的具体问题,您需要首先使用等式约束和不等式约束来构造约束矩阵“A”。参数'meq'用于告诉'solve.QP'A'中有多少个第一个方程是等式约束。 – WaltS
谢谢你。不幸的是,它似乎解决了.QP不能处理一个二次方程系统,只有一个二次方程...我已经尝试过BB包中的各种函数,但似乎我可以优化一组没有约束的二次方程,或者一个带有约束的二次方程......仍然试图找到可以同时执行两个操作的东西。 – chrisjacques
如果您可以通过一个小例子问题更新您的文章以帮助我们更好地理解您的问题,这将会很有帮助。 – WaltS