- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
发自 csexchange :
Let s = s0
For k = 0 through kmax (exclusive):
T ← temperature( 1 - (k+1)/kmax )
Pick a random neighbour, snew ← neighbour(s)
If P(E(s), E(snew), T) ≥ random(0, 1):
s ← snew
Output: the final state s
我无法理解该算法如何在温度降低时不会陷入局部最优。如果我们在开始时温度很高时跳来跳去,最终只在温度冷却时采取上坡 Action ,那么找到的解决方案是否高度依赖于温度开始时我们恰好在搜索空间中结束的位置冷却?我们可能早就找到了更好的解决方案,在温度高的时候跳下,然后在温度变冷时处于更糟糕的位置,我们过渡到爬山。
此方法的一个经常列出的修改是跟踪迄今为止找到的最佳解决方案。我看到这种变化如何降低在温度较高时“丢弃”在探索阶段找到的更好解决方案的风险,但我看不出这比简单地重复随机爬山来对空间进行采样有什么好处,没有温度戏剧。
想到的另一种方法是将跟踪“迄今为止最佳”的想法与重复爬山和波束搜索相结合。对于每个温度,我们可以执行模拟退火并跟踪最佳的“n”个解决方案。然后对于下一个温度,从每个局部峰值开始。
最佳答案
据我了解,模拟退火不能保证不会陷入局部最大值(对于最大化问题),尤其是当它在循环后期“冷却”为 k -> kmax 时。
所以正如你所说,我们一开始就“到处跳”,但我们仍然选择是否接受该跳转,因为 P()
函数决定了接受概率是目标 E()
的函数。在同一篇维基百科文章的后面,他们稍微描述了 P()
函数,并建议如果 e_new > e,那么可能 P=1,如果它是一个改进,总是采取行动,但也许如果不是改善,则并非总是如此。在周期的后期,我们不太愿意随机跳跃以获得较小的结果,因此算法倾向于稳定在最大值(或最小值)中,这可能是也可能不是全局的。
关于python - 模拟退火 - 直觉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72942920/
我有一个 d3 力布局图可视化效果很好,但它经常过早地“卡住”。例如,节点正朝着一个好的位置摇晃,如果“碰撞”它们(向它们的位置注入(inject)一点随机性并再次 start() ,它们最终会到达那
我是一名优秀的程序员,十分优秀!