什么是盆地跳跃大都市温度?
What is the Basin-Hopping Metropolis Temperature?
我正在设置使用 SciPy 的 basin-hopping 全局优化器。其参数 T
的文档说明
T: float, optional
The “temperature” parameter for the accept or reject criterion. Higher “temperatures” mean that larger jumps in function value will be accepted. For best results T
should be comparable to the separation (in function value) between local minima.
当它说“函数值”时,是否意味着成本函数 func
的预期 return 值?或者传递给它的值?或者别的什么?
我阅读了源代码,我看到 T
在哪里传递给 Metropolis 接受标准,但我不明白它在转换为“测试版”时是如何使用的。
我不熟悉该算法,但如果你继续阅读你发布的 link 上的文档,你会发现:
Choosing T: The parameter T is the “temperature” used in the Metropolis criterion. Basinhopping steps are always accepted if func(xnew) < func(xold)
. Otherwise, they are accepted with probability:exp( -(func(xnew) - func(xold)) / T )
. So, for best results, T should to be comparable to the typical difference (in function values) between local minima. (The height of “walls” between local minima is irrelevant.)
所以我认为 T 应该具有您要优化的函数的值,func
。如果您查看该概率表达式,这是有道理的——您会将函数值的差异与该步骤的一种“上限”类型进行比较。例如,如果一个局部最小值是 func = 10
,另一个是 func = 14
,您可能会认为 T = 4
是一个合适的值。
我正在设置使用 SciPy 的 basin-hopping 全局优化器。其参数 T
的文档说明
T: float, optional
The “temperature” parameter for the accept or reject criterion. Higher “temperatures” mean that larger jumps in function value will be accepted. For best results
T
should be comparable to the separation (in function value) between local minima.
当它说“函数值”时,是否意味着成本函数 func
的预期 return 值?或者传递给它的值?或者别的什么?
我阅读了源代码,我看到 T
在哪里传递给 Metropolis 接受标准,但我不明白它在转换为“测试版”时是如何使用的。
我不熟悉该算法,但如果你继续阅读你发布的 link 上的文档,你会发现:
Choosing T: The parameter T is the “temperature” used in the Metropolis criterion. Basinhopping steps are always accepted if
func(xnew) < func(xold)
. Otherwise, they are accepted with probability:exp( -(func(xnew) - func(xold)) / T )
. So, for best results, T should to be comparable to the typical difference (in function values) between local minima. (The height of “walls” between local minima is irrelevant.)
所以我认为 T 应该具有您要优化的函数的值,func
。如果您查看该概率表达式,这是有道理的——您会将函数值的差异与该步骤的一种“上限”类型进行比较。例如,如果一个局部最小值是 func = 10
,另一个是 func = 14
,您可能会认为 T = 4
是一个合适的值。