0

我正在尝试使用 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. 定义树,使它们在目标函数的范围内

谢谢

4

1 回答 1

0

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

于 2021-11-03T11:04:01.950 回答