我必须找到以下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次运行中,它只给出一次左右的值。 这有什么原因吗? 到目前为止,我在多次运行中只能看到正确的输出一次。 有什么办法可以解决吗? 任何帮助表示赞赏!