默认情况下,scipy的bashopping是随机变换还是自适应地变化?

时间:2015-05-31 13:40:28

标签: python algorithm scipy

我对scipy.optimize.basinhopping中的'take_step'选项感到困惑:

根据online reference

  

默认步骤采取例程是随机位移的   coordinates ... take_step可以选择具有该属性   take_step.stepsize。如果这个属性存在,那么盆地化将会   调整take_step.stepsize以尝试优化全局   最小搜索。

根据source(第587行,见下文),scipy的{​​{1}}默认使用basinhopping,并将AdaptiveStepSize调整为无论是否指定stepsize,类似0.9 *步长或步长/ 0.9等等。

take_step.stepsize

因此,通过阅读# use default displace = RandomDisplacement(stepsize=stepsize) take_step_wrapped = AdaptiveStepsize(displace, interval=interval, verbose=disp) 的来源,我的理解是,默认情况下,该过程将自适应地将默认basinhopping(0.5)修改为某些步长*因子,步长/因子等,在Metropolis-Hasting程序中接受了多少采样。我很困惑,因为另一方面,stepsize的在线参考似乎表明默认basinhopping将是完全随机的。

任何人都可以澄清吗?如果我stepsize提供任何take_step程序,那么它会随机尝试basinhopping,还是会自动修改stepsize?谢谢。

1 个答案:

答案 0 :(得分:1)

默认情况下,步长会自动更新。唯一没有更新的是你传递的自定义take_step对象没有名为stepsize的属性