贝叶斯优化Python

时间:2018-04-10 11:09:12

标签: python bayesian

我必须找到以下2D函数的全局最大值:

(((sin(((x-8)**2+y**2)**0.5))/((((x-8)**2+y**2)**0.5)))+0.8*((sin(((x+8)**2+y**2)**0.5))/(((x+8)**2+y**2)**0.5)))

我使用的是:fmfn/Bayesian-Optimization

这是我找到全局最大值的代码:

import sys
from numpy import sin
sys.path.append("./")
from bayes_opt import BayesianOptimization

bo = BayesianOptimization(lambda x, y: (((sin(((x-8)**2+y**2)**0.5))/((((x-8)**2+y**2)**0.5)))+0.8*((sin(((x+8)**2+y**2)**0.5))/(((x+8)**2+y**2)**0.5))),
                         {"x": (-20,20), "y": (-20, 20)})

bo.maximize(init_points=5, n_iter=50, kappa=5)

#print global maxima
print(bo.res['max'])

通过蛮力发现的全局最大值为0.79

该程序产生的值为0.79,尽管它非常不一致。在10次运行中,它只给出一次左右的值。 这有什么原因吗? 到目前为止,我在多次运行中只能看到正确的输出一次。 有什么办法可以解决吗? 任何帮助表示赞赏!

0 个答案:

没有答案