我有希望在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