【问题标题】:What is the Basin-Hopping Metropolis Temperature?跳盆大都市的温度是多少?
【发布时间】:2020-10-28 05:34:57
【问题描述】:

我正在设置使用 SciPy 的 basin-hopping 全局优化器。其参数T 状态的文档

T:浮动,可选

接受或拒绝标准的“温度”参数。更高的“温度”意味着函数值的更大跳跃将被接受。为获得最佳结果,T 应与局部最小值之间的分离(函数值)相当。

当它说“函数值”时,这是否意味着成本函数func 的预期返回值?还是传递给它的值?还是别的什么?

我阅读了源代码,我看到 T 在哪里传递给 Metropolis 接受标准,但我不明白它在转换为“测试版”时是如何使用的。

【问题讨论】:

  • 不检查我猜:是的,func 的结果。 the value passed to it 对我来说没有多大意义,尤其是因为它不一定是标量。另见this code-part(有另一种说法)

标签: python scipy scipy-optimize


【解决方案1】:

我不熟悉该算法,但如果您继续阅读您发布的链接上的文档,您会发现:

选择 T:参数 T 是 Metropolis 标准中使用的“温度”。如果func(xnew) < func(xold),则始终接受盆地跳跃步骤。否则,它们被接受的概率为:exp( -(func(xnew) - func(xold)) / T )。因此,为了获得最佳结果,T 应该与局部最小值之间的典型差异(函数值)相当。 (局部最小值之间的“墙”的高度无关紧要。)

所以我相信 T 应该采用您正在尝试优化的函数的价值,func。如果您查看该概率表达式,这是有道理的——您会将函数值的差异与该步骤的“上限”类型进行比较。例如,如果一个局部最小值是 func = 10 而另一个是 func = 14,您可能会认为 T = 4 是一个合适的值。

【讨论】:

    猜你喜欢
    • 2019-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多