我一直在使用Excel的求解器處理以下問題錯誤試圖約束優化使用Optim()
解決AB和C的方程中時:
y = a*b*c*x/((1 - c*x)(1 - c*x + b*c*x))
受到限制
0 < a < 100
0 < b < 100
0 < c < 100
f(x[1]) < 10
f(x[2]) > 20
f(x[3]) < 40
其中我有大約10(x,y)值對。我最小化abs(y - f(x))的和。我可以在每個x上限制我的函數結果的係數和值範圍。
我試過nls(沒有試圖強制約束),而Excel提供了幾乎任何我關心的初始值的估計值,nls幾乎從未返回答案。
我切換到使用優化,但我無法應用約束。
這是我已經變得如此之遠
best = function(p,x,y){sum(abs(y - p[1]*p[2]*p[3]*x/((1 - p[3]*x)*(1 - p[3]*x + p[2]*p[3]*x))))}
p = c(1,1,1)
x = c(.1,.5,.9)
y = c(5,26,35)
optim(p,best,x=x,y=y)
我這樣做是爲了增加第一套constraints-
optim(p,best,x=x,y=y,method="L-BFGS-B",lower=c(0,0,0),upper=c(100,100,100))
我得到的錯誤 「」 錯誤:ABNORMAL_TERMINATION_IN_LNSRCH」
並最終得到一個更高的錯誤值($ value)。所以看起來我做錯了什麼,我無法弄清楚如何應用我的其他約束。
有人能給我提供一個基本的想法如何解決這個非統計學家能理解的問題嗎?我看了很多帖子,看了幾本R書。 R書停止了最簡單的使用優化。
一般洞察關於優化與約束[這裏](http://stackoverflow.com/questions/9817001/optimization-with-constraints) – Chase 2012-07-08 23:31:21