MLR3MBO - 输入功能不优化

MLR3MBO - function with inputs not to optimise

提问人:JacquieS 提问时间:11/17/2023 更新时间:11/17/2023 访问量:9

问:

在定义要在MLR3MBO中优化的目标函数时,是否有可能不优化输入?

更长的描述: 数据:人类在执行计算机任务,因此是一系列 y 值(他们按下的按钮)和同时的 x 值(屏幕上显示的内容)。我有一个他们的认知模型(函数)(人类决策模型),即描述如何在给定参数 p 的情况下从 x 创建 y。我想优化 p,即找到“正确”的参数来描述每个参与者。因此,每个参与者都有不同的 x、y 和 p。

我试图通过向函数提供列表 xs 来捕获这一点进行优化

xs=list(x1=x1,x2=x2... ,p1=p1,p2=p2)
domain=paradox::ps(p1=p_dbl(lower = -10, upper = 10),....)

所以不包括 x1,x2...在域定义中。但是当我随后运行代码(见下文)时,它无法识别 x1,x2...

codomain=ps(y=p_dbl(tags='minimize'))
  objective= ObjectiveRFun$new(
    fun=myModel,
    domain=domain,
    codomain=codomain)
  instance = OptimInstanceSingleCrit$new(
    objective=objective,
    search_space=domain,
    terminator=trm('evals',n_evals =60)) # maybe change this?
  # Gaussian Process, EI, DIRECT
  surrogate = srlrn(lrn("regr.km",
                        covtype = "matern3_2",
                        optim.method = "gen",
                        nugget.stability = 10^-8, control = list(trace = FALSE)))
  acq_function = acqf("ei")
  acq_optimizer = acqo(opt("nloptr", algorithm = "NLOPT_GN_DIRECT_L"),
                       terminator = trm("stagnation", threshold = 1e-8))
  optimizer = opt("mbo",
                  loop_function = bayesopt_ego,
                  surrogate = surrogate,
                  acq_function = acq_function,
                  acq_optimizer = acq_optimizer)

  set.seed(2906)
  start.time=Sys.time()
  optimizer$optimize(instance)

我首先想到使用 MLR3MBO 的原因是该函数需要很长时间来计算每个优化循环(它有一个包含许多步骤的 for 循环)。

R 优化 MLR3 黑匣子

评论


答: 暂无答案