我想在不同情况下使用模拟退火。网络中的每个模拟退火算法都为算法提供了温度示例。喜欢在wiki中
s ← s0; e ← E(s) // Initial state, energy.
sbest ← s; ebest ← e // Initial "best" solution
k ← 0 // Energy evaluation count.
while k < kmax and e > emax // While time left & not good enough:
T ← temperature(k/kmax) // Temperature calculation.
snew ← neighbour(s) // Pick some neighbour.
enew ← E(snew) // Compute its energy.
if P(e, enew, T) > random() then // Should we move to it?
s ← snew; e ← enew // Yes, change state.
if enew < ebest then // Is this a new best?
sbest ← snew; ebest ← enew // Save 'new neighbour' to 'best found'.
k ← k + 1 // One more evaluation done
return sbest // Return the best solution found.
现在这个“T”代表什么?假设我将使用模拟退火来下棋。我将使用此算法来查找计算机的下一步。我现在的状态(S)和它的值(e)。我接下来陈述(重新)和他们的价值观(enew)。国际象棋会有什么'T'?我需要它吗!这个算法有什么一般形式吗?我的意思是没有这个温度的例子,我可以得到基本的想法!我找不到任何东西。请帮忙。提前谢谢......
答案 0 :(得分:3)
网上的所有示例都使用温度示例,因为这是模拟退火的标准术语 - SA是一种物理启发技术,模仿现实世界称为退火的现象。它与遗传算法的所有例子如何谈论基因和染色体的方式大致相同。
如果你追溯到足够远的数学,各种优化元启发式和一些物理过程之间会有一些迷人的联系,通常由熵的概念来弥合。
但是,非常粗略地说,模拟退火中的温度T对应于算法“跳跃”的意愿或能力。在搜索全局(或至少是更好的本地)最小值时超出局部最小值。高温对应于较高的随机性,跳跃更多,甚至可能最终配置更差;低温对应于较低的随机性(最终是纯粹的贪婪算法),无论多浅,都无法逃避任何局部最小值。
关于如何将这个想法用于您的应用程序。它需要一些洞察力和一些创造力才能使大多数元启发式工作正常。你永远不会找到一个没有谈论温度的SA的讨论。