我正在尝试做一些物理实验,以找到优化某些参数的公式。通过物理实验,我的意思是我有一个化学工作台,我将材料混合在一起,然后测量该配方的特性。从历史上看,我使用过传统的 DOE,但我需要加快时间来获得理想的配方。我知道单纯形优化,但我有兴趣尝试贝叶斯优化。我发现 GPyOpt 声称(甚至在 SO Tag 描述中)支持物理实验。但是,尚不清楚如何启用这种行为。
我尝试过的一件事是通过 收集用户输入input
,我想我可以挑选优化器和函数,但这感觉很笨拙。在下面的示例代码中,我使用了 GPyOpt 示例中的函数,但我必须输入实际值。
from GPyOpt.methods import BayesianOptimization
import numpy as np
# --- Define your problem
def f(x):
return (6*x-2)**2*np.sin(12*x-4)
def g(x):
print(f(x))
return float(input("Result?"))
domain = [{'name': 'var_1', 'type': 'continuous', 'domain': (0, 1)}]
myBopt = BayesianOptimization(f=g,
domain=domain,
X=np.array([[0.745], [0.766], [0], [1], [0.5]]),
Y=np.array([[f(0.745)], [f(0.766)], [f(0)], [f(1)], [f(0.5)]]),
acquisition_type='LCB')
myBopt.run_optimization(max_iter=15, eps=0.001)
所以,我的问题是,使用 GPyOpt 进行物理实验的预期方式是什么?