我有一个函数 f(x1,x2) 并且想使用 skopt 为 x 的两个维度设置 gp_minimization 的边界。
使用一个变量 (x1) 效果很好:
def func(x1):
return x1[0]
bounds = [(1.0, 10.0)]
gp_res = gp_minimize(func, dimensions=bounds, acq_func="EI", n_calls=100, random_state=0)
但是使用具有多个变量的函数,例如 f(x1,x2),我需要添加第二个变量的边界。我试过这样:
def func(x1, x2):
return x1[0][0]*x2[0][1]
bounds = [[(1.0, 10.0),(10.1, 9.9)]]
bounds[0][0] #(1.0,10.0) To set the bounds for x1
bounds[0][1] #(10.1,9.9) To set the bounds for x2
gp_res = gp_minimize(func=func, dimensions=bounds, acq_func="EI", n_calls=100, random_state=0)
我收到错误消息: ValueError: Invalid dimension [(1.0, 4.0), (1.1, 3.9)]。阅读支持类型的文档。
通过将边界更改为此:
def func(x1, x2):
return x1[0][0]*x2[0][1]
bounds = [(1.0, 10.0),(10.1, 9.9)]
gp_res = gp_minimize(func=func, dimensions=bounds, acq_func="EI", n_calls=100, random_state=0)
我收到以下错误消息: TypeError: func() missing 1 required positional argument: 'x2'
你能帮我解决这个问题吗?如何设置两个变量的界限?
参考此示例(Tim Head,2016 年 7 月。由 Holger Nahrstaedt 2020 重新格式化): https ://scikit-optimize.github.io/stable/auto_examples/strategy-comparison.html#sphx-glr-download-auto-examples-策略比较-py