首页 > 解决方案 > R 中 optim/SANN 的停止标准不起作用

问题描述

问题 1 我有一个目标函数,gFun(modelOutput,l,u)如果模拟输出在区间内,则返回 0 [l,u],否则返回正数(!)。

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有关。

任何建议将不胜感激。

标签: roptimization

解决方案


推荐阅读