我对scipy.optimize.basinhopping
中的“采取步骤”选项感到困惑:
根据online reference:
默认的步进程序是
协调。。。执行步骤可以选择具有属性take_step.stepsize
。如果存在此属性,则BasunPo跳将
调整take_step.stepsize
以尝试优化全局
最小搜索。
但是,根据source(第587行,见下文),默认情况下,scipy
的basinhopping
使用AdaptiveStepSize
,并将stepsize
调整为0.9*stepsize或stepsize/0.9等,而不管是否指定了take_step.stepsize
。
# use default
displace = RandomDisplacement(stepsize=stepsize)
take_step_wrapped = AdaptiveStepsize(displace, interval=interval,
verbose=disp)
因此,我从阅读
basinhopping
的来源的理解是,在metropolis hasting过程中接受了多少样本之后,默认情况下,该过程将自适应地将默认值stepsize
(0.5)修改为一些步长*因子、步长/因子等。另一方面,basinhopping
的在线引用似乎表明默认值是完全随机的。有人能澄清吗?如果我没有为
stepsize
提供任何take_step
过程,那么它会随机尝试使用basinhopping
还是自适应地修改stepsize
?谢谢。 最佳答案
默认情况下,步长会自适应更新唯一不更新的时间是,如果您传递的自定义Take_Step对象没有名为stepsize
的属性