>我正在尝试将SA(模拟退火(应用于线性回归问题。
例如:我现在有200
点,我想拟合一条线并得到k
和b
。
我的问题是:我正在尝试用 MATLAB 解决这个问题。但我对如何选择下一个状态感到困惑。我在我的程序中尝试了这个:
next_k = k + (2*rand-1);
next_b = b + (2*rand-1);
我觉得不是很好,结果k
和b
不准确。我想要一种更有效的方法来干扰 SA 中的当前状态。我认为通过这样做,我可以在这个问题上得到更准确的结果。在这个问题中,成本函数实际上与最小二乘法相同。我只是想申请 SA 到估计问题。
对于 SA,有时快速而直接的提案效果很好,因为它们实施速度很快。
(?效果好吗?
如果它没有收敛最后一英里,您可能想尝试选择类似提案但随机性较小的变体,以优化最后几个小步骤。大噪音在开始时会很快起作用,但可能不会让您接近(本地(最佳状态。
就像 https://pypi.org/project/frigidum/中的基本示例一样
它使用了 2 个提案,一个具有较大的随机噪声,另一个具有微小的噪声。
其他变化:随机调整k
或b
,这样退火会更平滑。