首页 > 解决方案 > 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)

有没有(正确的)方法可以做到这一点?我有几个想法:

  1. 每次优化时读取树并将其存储在 pickle 文件中
  2. 定义树,使它们在目标函数的范围内

谢谢

标签: pythonoptimizationparameter-passingskopt

解决方案


你的想法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, ...)


推荐阅读