Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 贝叶斯优化_Python_Mathematical Optimization_Bayesian - Fatal编程技术网

Python 贝叶斯优化

Python 贝叶斯优化,python,mathematical-optimization,bayesian,Python,Mathematical Optimization,Bayesian,有人知道为什么下面的代码在多次运行时不会产生相同的全局最大值吗 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**

有人知道为什么下面的代码在多次运行时不会产生相同的全局最大值吗

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.explore({'x': [7,7.1,7.2,7.3,7.4,7.5,7.6,7.7,7.8,7.9,8], 'y': [-0.5,-0.4,-0.3,-0.2,-0.1,0,0.1,0.2,0.3,0.4,0.5]})
gp_params = {"alpha": 1e-5, "n_restarts_optimizer": 2}

bo.maximize(init_points=5, n_iter=25, acq="ucb", kappa=10, **gp_params)

# The output values can be accessed with self.res
print(bo.res['max'])

我曾尝试在最大化功能中发挥价值,但没有成功。有什么方法可以让这个函数在多次运行时返回相同的正确值吗?

可能不是凸函数?它是凸函数。我认为这与函数本身未知有关。贝叶斯优化就是在不同的点上探测函数,并探索/利用函数来寻找最小值。因为您设置了
kappa=10
,所以您的算法擅长探索(我认为)。然而,我没有一个很好的答案告诉你为什么它找不到全局最大值。唯一的问题可能是它在找到最大值之前就完成了探索。因此,如果我增加迭代次数,它应该有足够的时间找到最大值?你可以尝试两种方法。1.使用默认值
kappa
(我认为
2.576
)和2。增加迭代次数。你将做更多的开发和更少的探索,这是你想要在这里给出的函数是凸的。增加迭代次数将确保此利用完成。
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.explore({'x': [7,7.1,7.2,7.3,7.4,7.5,7.6,7.7,7.8,7.9,8], 'y': [-0.5,-0.4,-0.3,-0.2,-0.1,0,0.1,0.2,0.3,0.4,0.5]})
gp_params = {"alpha": 1e-5, "n_restarts_optimizer": 2}

bo.maximize(init_points=5, n_iter=25, acq="ucb", kappa=10, **gp_params)

# The output values can be accessed with self.res
print(bo.res['max'])