问题1
我有一个目标函数gFun(modelOutput,l,u)
,如果模拟输出在间隔[l,u]
中,则该函数返回0,否则返回正数(!)。
OFfun <- function(params) {
out <- simulate(params)
OF <- gFun(out,0,5)
return(OF)
}
具有某些公差设置的optim
函数将调用目标函数。
fitval=optim(par=parms,fn=OFfun,method="SANN",control = list(abstol = 1e-2))
summary(fitval)
我的问题是,如果OFfun == 0,优化不会停止。 我已经尝试过以下条件:
if (OF == 0){
opt <- options(show.error.messages=FALSE)
on.exit(options(opt))
stop()
}
它可以工作,但不会将OF返回到optim
,因此我无法获得带有估计参数的fitval
信息。
问题2
另一个问题是,求解器有时会崩溃并中止整个优化过程。我想针对不同的初始猜测收获许多解决方案集-因此我需要处理失败的模拟。可能与问题1有关。
任何建议将不胜感激。