我对scipy.optimize.basinhopping中的“采取步骤”选项感到困惑:
根据online reference
默认的步进程序是
协调。。。执行步骤可以选择具有属性
take_step.stepsize。如果存在此属性,则BasunPo跳将
调整take_step.stepsize以尝试优化全局
最小搜索。
但是,根据source(第587行,见下文),默认情况下,scipybasinhopping使用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的属性

09-27 03:05