我对scipy.optimize.basinhopping
中的'take_step'选项感到困惑:
默认步骤采取例程是随机位移的 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
?谢谢。
答案 0 :(得分:1)
默认情况下,步长会自动更新。唯一没有更新的是你传递的自定义take_step对象没有名为stepsize
的属性