模拟退火中的概率计算和比较
Probability calculation and comparison in Simulated Annealing
我刚刚意识到我在几年前写的算法中犯了一个错误。
在此流程中,我没有检查 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
,这使得您的搜索 越来越有可能结束,不太可能在开始。我假设你会得到非常复杂的结果,因为你先进行开发,然后再进行探索。
我刚刚意识到我在几年前写的算法中犯了一个错误。
在此流程中,我没有检查 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
,这使得您的搜索 越来越有可能结束,不太可能在开始。我假设你会得到非常复杂的结果,因为你先进行开发,然后再进行探索。