如何在模拟退火中选择状态的邻居?



>我正在尝试将SA(模拟退火(应用于线性回归问题。
例如:我现在有200点,我想拟合一条线并得到kb
我的问题是:我正在尝试用 MATLAB 解决这个问题。但我对如何选择下一个状态感到困惑。我在我的程序中尝试了这个:

next_k = k + (2*rand-1);
next_b = b + (2*rand-1);

我觉得不是很好,结果kb不准确。我想要一种更有效的方法来干扰 SA 中的当前状态。我认为通过这样做,我可以在这个问题上得到更准确的结果。在这个问题中,成本函数实际上与最小二乘法相同。我只是想申请 SA 到估计问题。

对于 SA,有时快速而直接的提案效果很好,因为它们实施速度很快。

(?效果好吗?

如果它没有收敛最后一英里,您可能想尝试选择类似提案但随机性较小的变体,以优化最后几个小步骤。大噪音在开始时会很快起作用,但可能不会让您接近(本地(最佳状态。

就像 https://pypi.org/project/frigidum/中的基本示例一样

它使用了 2 个提案,一个具有较大的随机噪声,另一个具有微小的噪声。

其他变化:随机调整kb,这样退火会更平滑。

最新更新