什么是模拟退火中的T代表什么?

我想在不同情况下使用模拟退火。网上的每个模拟退火算法都提供了带有温度示例的算法。比如在维基百科上

s ← s0; e ← E(s)                                  // 初始状态,能量。
sbest ← s; ebest ← e                              // 初始“最佳”解
k ← 0                                             // 能量评估计数。
while k < kmax and e > emax                       // 当时间未用完且未达到足够好时:
 T ← temperature(k/kmax)                         // 温度计算。
 snew ← neighbour(s)                             // 选择某个邻居。
 enew ← E(snew)                                  // 计算其能量。
 if P(e, enew, T) > random() then                // 我们应该移动到那里吗?
  s ← snew; e ← enew                            // 是的,改变状态。
  if enew < ebest then                            // 这是新的最佳吗?
   sbest ← snew; ebest ← enew                    // 保存‘新邻居’到‘找到的最佳’。
 k ← k + 1                                       // 完成一次评估
return sbest                                      // 返回找到的最佳解。

现在,这个’T’通常代表什么?假设我将模拟退火用于国际象棋。我将使用这个算法为电脑找到下一步。我有当前状态(S)及其值(e)。我有下一状态(snew)及其值(enew)。那么对于国际象棋,’T’会是什么?我需要它吗!这个算法是否有任何通用形式?我是说,没有这个温度示例,我可以得到基本的概念!我找不到任何这样的信息。请帮助我。提前感谢……


回答:

网上的所有示例都使用温度示例,因为这是模拟退火的标准术语——SA是一种受物理启发的技术,模拟了一个称为退火的现实现象。这与所有关于遗传算法的示例谈论基因和染色体非常相似。

如果你足够深入地追溯数学背景,会发现各种优化元启发式方法和一些物理过程之间存在一些引人入胜的联系,通常由熵的概念来桥接。

但从非常粗略的角度来说,模拟退火中的温度T对应于算法“跳出”局部最小值寻找全局(或至少是更好的局部)最小值的意愿或能力。高温度对应于更高的随机性,更多地跳跃,甚至可能最终进入更差的配置;低温度对应于较低的随机性(最终完全是贪婪算法),无论局部最小值多么浅,都无法逃脱。

至于如何将这个想法应用到你的应用中,这需要一些洞察力和创造力,才能让大多数元启发式方法正确运作。但你永远不会找到不讨论温度的SA讨论。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注