최적화는 R
종종 후보 매개 변수 공간의 특정 지점에서 평가 된 목적 함수 값을 반환하는 함수를 사용하여 작동합니다.
f=function(x) x[1]**2+x[2]**2
그런 다음 최적 벡터 x
는 일반적으로
x_opt=somepkg::optim(f,xstart,params) #xstart may be the starting point
좋은 이유로 대부분의 패키지는 최적화 되지 않는f
추가 매개 변수를 가질 수 있습니다 ( 최적화 기능에서 생략 부호 사용 ). 예를 들어 . 그래서 만약 내가params
...
somepkg::optim
DEOptim
f=function(x,a) x[1]**2+x[2]**2+a*x[1]
나는 전화 할 것이다
x_opt=somepkg::optim(f,xstart,a=1)
지금, 나는 패키지 (발생했습니다 rBayesianOptimization
(종속성 패키지의 일부 함수에 매개 변수를 전달 줄임표를 사용) GPfit
)하지만, 하지로를 f
. 따라서, 질문하는 방법을 발생 a
알고 f
...
아래는 누락 된 줄임표를 어떻게 해결할 수 있었는지 보여주는 최소한의 예입니다. 그러나 나는 내 방법이 내가 아직 알지 못하는 심각한 함정을 도입 할 수 있다는 느낌이있다. 이것이 어떻게 제대로 수행되는지에 대한 조언을주십시오.
library(rBayesianOptimization)
Test_Fun <- function(x) {
#hacky way of finding 'a' from the calling function
#n=6 was "empirically" determined
a=get("a",envir=parent.frame(n=6))
list(Score = exp(-a*(x - 2)^2) + exp(-(x - 6)^2/10) + 1/ (x^2 + 1),
Pred = 0)
}
Do_Opt=function () {
#it's a requirement of mine that BayesianOptimization is called from Do_Opt
a=2
OPT_Res <- BayesianOptimization(Test_Fun,
bounds = list(x = c(1, 3)),
init_points = 2, n_iter = 1,
acq = "ucb", kappa = 2.576, eps = 0.0,
verbose = FALSE)
}
Do_Opt()
다음과 같이 "생성자 함수"에서 additioanl 매개 변수를 래핑 할 수 있습니다.
getTestFun <- function(a) {
Test_Fun <- function(x) {
list(Score = exp(-a*(x - 2)^2) + exp(-(x - 6)^2/10) + 1/ (x^2 + 1),
Pred = 0)
}
Test_Fun
}
그런 다음 다음을 수행 할 수 있습니다.
Do_Opt=function () {
a=2
Test_Fun <- getTestFun(a)
OPT_Res <- BayesianOptimization(Test_Fun,
bounds = list(x = c(1, 3)),
init_points = 2, n_iter = 1,
acq = "ucb", kappa = 2.576, eps = 0.0,
verbose = FALSE)
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다