Optim
またはOptimx
は、非線形最適化問題で不等式制約をとりますか?Optimx/Optim Rパッケージの不等式制約
私が課される制約の2種類がありますする非線形問題があります:あなたはこれを行うことができ
- 変数> = 0
- 変数の和< = 1
Optim
またはOptimx
は、非線形最適化問題で不等式制約をとりますか?Optimx/Optim Rパッケージの不等式制約
私が課される制約の2種類がありますする非線形問題があります:あなたはこれを行うことができ
をmaxLikで不等式制約は、$ Ax + B> 0 $として指定する必要があります。ここで、xはパラメータです。
たとえば、あなたは2つのパラメータを持っていて、指数帽子を最大限に想定しています
f <- function(x) exp(- (x[1]-2)^2 - (x[2]-2)^2)
A <- matrix(c(1,1,-1,-1), 2, 2, byrow=TRUE)
B <- c(0,1)
あなたが今$斧+ B> 0 $はあなたのことを除いて、あなたの不等式条件(よく、と等価であることを確認することができます> =の代わりに> =と書いていますが、数値解ではそれほど重要ではありません)。
BFGSまたは他のオプティマイザを使用できます。あなたは制約が結合されて見るように、制約のない最大は(2,2)であることでしょう
a <- maxBFGS(f, start=c(0.2, 0.2), constraints=list(ineqA=A, ineqB=B))
summary(a)
--------------------------------------------
BFGS maximization
Number of iterations: 50
Return code: 0
successful convergence
Function value: 0.01104892
Estimates:
estimate gradient
[1,] 0.4990966 0.03316674
[2,] 0.4990966 0.03316674
Constrained optimization based on constrOptim
1 outer iterations, barrier value -0.0003790423
--------------------------------------------
:あなたは、制約のためineqAとineqBのリストが必要です。変数> = 0の場合optimx
にL-BFGS-Bを使用して
申し訳ありませんが、私は "最適化/最適化不等式制約を行う"ではなく、 "Rの不等式制約をどのように見積もるか"という質問に答えました。 –
、
rep.int(0, n_variables)
optimx
でlower
引数を設定します、私は「ドンoptimx
でこれをプログラムする直接的な方法を知っています。あなたの目的関数を修正するには、upper = rep.int(1, n_variables)
を提案してください:もしSum(variables)> 1、objectiveValue = objectiveFunction +大きなペナルティ、そしてあなたのすべての基準を満たす開始点を設定してくださいVars> = 0、Sum(Vars)< = 1 (あなたの制約が意味するように、< = 1)
[最適化のためのCRANタスクビュー](https://cran.r-project.org/web/views/Optimization)を参照してください。 .html)。 –
Optim/Optimxは制約されていない制約付きの問題のみです。あなたは 'linear'制約のみを持っているようです(非線形制約は言いますが、あなたが表示するものは境界と線形制約です)。 'optim'の' see also'セクションには、あなたが持っている線形不等式制約を許す 'constrOptim'があります。また、線形および非線形制約を扱う他の多くのソルバーがRの下で利用可能です。 –
あなたの制約:変数<= 0;また、sum(variables)<= 1は私にとって完全に線形に見えます。また、変数> 0もなければ、合計は<= 0でなければなりません... –