私はかなり単純な最適化に関する質問をしていますが、私はかなりうまくいっていますが、最適化はあまりできません。最適化 - 制限と単純な制約
my.function <- function(parameters){
x <- parameters[1]
y <- parameters[2]
z <- parameters[3]
((10*x^2) - ((y/2) * (z/4)))^2
}
result <- optim(c(7,10,18),fn = my.function, method = 'L-BFGS-B',
lower = c(2,7,7),
upper = c(15,20,20))
result$par
#[1] 2.205169 19.546621 19.902243
これは私が取り組んでいる問題のメークアップ版です。その目的が理にかなっていない場合は、許してください。私は 'L-BFGS-B'メソッドを使用して制限を設けていますが、制約を追加する必要があり、それを行う方法がわかりません。次のように私が実装しようとしている私のルールは以下のとおりです。
- xがyはzは7と20
- の間でなければなりません
- 7〜20でなければならない2及び15
- 間でなければなりません。 z < = y
これは実装方法がわからない最後のものです。どんな助けもありがとう。ありがとうございました。制約違反があった場合に
「L-BFGS-B」は、束縛された制約付きの問題のみです。 'x <= y'は実際の制約なので、別のオプティマイザ(cobyla、slsqpなど)が必要です –
@ErwinKalvelagenありがとうございました。 – Balter
@Balterネイティブな最適化を使用する場合は 'constrOptim'が問題のために動作します –