我刚刚意识到我在多年前编写的算法中犯了一个错误。
在此流程中,我没有检查 r < p,而是检查 p <= r。老实说,我无法综合考虑这是否是一个巨大的错误。
delta = old state - new state
P = exp(delta / T) * 100
if(delta > 0 or P <= random(100))
{
accept(new state)
}
最佳答案
P
随着温度升高变得越来越小。当您检查 r < p
您的搜索从当前状态切换到更糟糕的新状态的情况越来越不可能。这就是模拟退火的思想。
您检查 p <= r
,这使得您的搜索最终越来越有可能切换到更糟糕的状态,而在开始时则不太可能。我假设你会得到非常复杂的结果,因为你先进行开发,然后再进行探索。
关于algorithm - 模拟退火中的概率计算和比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58061175/