algorithm - 模拟退火中的概率计算和比较

标签 algorithm machine-learning search optimization simulated-annealing

我刚刚意识到我在多年前编写的算法中犯了一个错误。

https://www.researchgate.net/publication/298209081/figure/fig7/AS:341632911200275@1458463041655/Flowchart-of-simulated-annealing-algorithm.png

在此流程中,我没有检查 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/

相关文章:

algorithm - 复杂求根算法

c - 在c++上使用fifo算法开发缓存模拟器的好方法

pandas - 如何处理这样的缺失值和回归的日期格式?

python - pytorch:获取给定 ImageFolder 数据集的类数

search - 使用 Lucene 处理数据库数据

java - 正则表达式 - 使用正则表达式在另一个字符串中搜索特定字符串

algorithm - 检查二叉树是否是另一棵二叉树的子树的有效算法

ruby-on-rails - 如何计算 Ruby 字符串中 url 和超链接的出现次数?

python - Scikit-learn Column Transformer 不返回特征名称

php - MySQL 统计特定记录