【问题标题】:How to select the neighbours of a state in Simulated Annealing?如何在模拟退火中选择一个状态的邻居?
【发布时间】:2020-05-21 04:46:38
【问题描述】:

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

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

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

【问题讨论】:

    标签: algorithm matlab artificial-intelligence simulated-annealing


    【解决方案1】:

    使用 SA,有时快速而直接的提案效果很好,因为它们可以快速实施。

    (?) 效果好吗?

    如果它没有收敛到最后一英里,您可能想尝试选择相似提案但随机性较小的变体,以优化最后几个小步骤。大噪声在开始时会很快起作用,但可能无法让您接近(局部)最佳值。

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

    它使用了 2 个提案,一个随机噪声大,一个随机噪声小。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多