gpt4 book ai didi

python - 默认情况下,scipy 的 basinhopping 是随机还是自适应地改变步长?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:20:58 28 4
gpt4 key购买 nike

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

根据online reference :

The default step taking routine is a random displacement of the coordinates ... take_step can optionally have the attribute take_step.stepsize. If this attribute exists, then basinhopping will adjust take_step.stepsize in order to try to optimize the global minimum search.

根据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 的源代码中了解到,默认情况下,程序会自适应地将默认的 stepsize (0.5) 修改为某个步长 * 因子,stepsize/factor 等,遵循 Metropolis-Hasting 程序中接受了多少采样。我很困惑,因为另一方面,basinhopping 的在线引用似乎表明默认的 stepsize 将是完全随机的。

谁能解释一下?如果我basinhopping提供任何take_step过程,那么它会随机尝试stepsize,还是会自适应地修改 stepsize?谢谢。

最佳答案

步长默认自适应更新。唯一不更新的情况是您传递了一个自定义的 take_step 对象,该对象没有名为 stepsize

的属性

关于python - 默认情况下,scipy 的 basinhopping 是随机还是自适应地改变步长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30558116/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com