私はExcelソルバーを使用して次の問題を処理しています
方程式の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はほとんど答えを返しませんでした。
optimの使用に切り替えましたが、制約を適用するのに問題があります。
これは私がこれまでに得たところです-
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)
制約の最初のセットを追加するためにこれを行いました-
optim(p,best,x=x,y=y,method="L-BFGS-B",lower=c(0,0,0),upper=c(100,100,100))
エラー「"ERROR:ABNORMAL_TERMINATION_IN_LNSRCH"」が表示されます
そして、エラーの値($ value)が高くなります。だから私は何か間違ったことをしているようです。他の一連の制約を適用する方法がまったくわかりませんでした。
統計家以外の人が理解できるこの問題を解決するための基本的なアイデアを誰かに教えてもらえますか?私はたくさんの投稿を見て、いくつかのR本を調べました。Rの本は、optimの最も単純な使用で停止しました。