提问人:JacquieS 提问时间:11/17/2023 更新时间:11/17/2023 访问量:9
MLR3MBO - 输入功能不优化
MLR3MBO - function with inputs not to optimise
问:
在定义要在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 循环)。
答: 暂无答案
上一个:从截断数据拟合分布
评论