2016-10-24 25 views
0

OptimまたはOptimxは、非線形最適化問題で不等式制約をとりますか?Optimx/Optim Rパッケージの不等式制約

私が課される制約の2種類がありますする非線形問題があります:あなたはこれを行うことができ

  • 変数> = 0
  • 変数の和< = 1
+0

[最適化のためのCRANタスクビュー](https://cran.r-project.org/web/views/Optimization)を参照してください。 .html)。 –

+2

Optim/Optimxは制約されていない制約付きの問題のみです。あなたは 'linear'制約のみを持っているようです(非線形制約は言いますが、あなたが表示するものは境界と線形制約です)。 'optim'の' see also'セクションには、あなたが持っている線形不等式制約を許す 'constrOptim'があります。また、線形および非線形制約を扱う他の多くのソルバーがRの下で利用可能です。 –

+0

あなたの制約:変数<= 0;また、sum(variables)<= 1は私にとって完全に線形に見えます。また、変数> 0もなければ、合計は<= 0でなければなりません... –

答えて

1

を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を使用して

+0

申し訳ありませんが、私は "最適化/最適化不等式制約を行う"ではなく、 "Rの不等式制約をどのように見積もるか"という質問に答えました。 –

0

  • 、あなたは合計(変数)< = 1の場合rep.int(0, n_variables)
  • optimxlower引数を設定します、私は「ドンoptimxでこれをプログラムする直接的な方法を知っています。あなたの目的関数を修正するには、upper = rep.int(1, n_variables)を提案してください:もしSum(variables)> 1、objectiveValue = objectiveFunction +大きなペナルティ、そしてあなたのすべての基準を満たす開始点を設定してくださいVars> = 0、Sum(Vars)< = 1 (あなたの制約が意味するように、< = 1)
関連する問題