python - Skopt.gp_minimize:将参数传递给目标函数
问题描述
我正在尝试使用 skopt 中的 gp_minimize 实现优化。但是,我的目标函数需要一些对象来处理,类似于:
def objective(optimisation_parameters, trees):
trees.manipulate(optimisation_parameters)
trees.shake()
return trees.count_fallen_fruits()
def optimise():
trees = [tree.Tree() for _ in range(0,5)]
res = gp_minimize(objectiv,space,...,args = trees)
有没有(正确的)方法可以做到这一点?我有几个想法:
- 每次优化时读取树并将其存储在 pickle 文件中
- 定义树,使它们在目标函数的范围内
谢谢
解决方案
你的想法2是常见的选择。在本例中使用它。
基于您的代码片段的划痕可能如下所示:
trees = [tree.Tree() for _ in range(0,5)]
def objective(optimisation_parameters):
trees.manipulate(optimisation_parameters)
trees.shake()
return trees.count_fallen_fruits()
res = gp_minimize(objective, space, ...)