1983年Kirkpatrick使用模拟退火来求解组合最优化问题,尽管1953年Metropolis等人已经提出了模拟退火的思想。

也就是说1983年模拟退火开始被大量使用。它是模拟固体退火的过程,固体退火后,温度降低,能量也随之降低。如果我们把每个温度下的状态空间看做可行解集,把能量看做是目标函数值,就会发现它与组合最优化问题非常相似。

它是一种全局搜索算法,利用Metropolis控制温度下降过程来实现模拟退火。温度比较高时,接受差解的可能性/概率较高;温度较低时,接受差解的概率变小,趋近于爬山算法。这也很合理,温度高,也就是一开始,接受差解以保持解空间的多样性;待到后面温度降低,开始仔细搜索。也就是同时顾及到了搜索空间的多样性(横向)和质量(纵向)。

关键点有三个:怎么定义邻域结构,这往往是核心所在。也就是一个状态怎么变到另一个状态的(在随机过程中这被叫做马尔科夫过程)。还有接受/拒绝概率如何变化,这用来指导搜索方向。通常用蒙特卡洛法Monte Carlo来控制,接受概率为,也就是说rand小于此概率,差解被接受。最后一个就是温度如何变化,冷却温度或者升温,这一块也要思考设计。

下面是流程和步骤:

模拟退火法可分为解空间、目标函数和初始解三部分。具体流程如下:

step1:初始化。设置初始温度T0,充分大;初始解状态X0,是算法迭代的起点;每个T值的迭代次数L。

step2:当k=1,...,L,执行step3~step6。这里L也被称为马尔科夫链长度(也就是每一温度下有多个解)。

step3:产生新解X'。这里涉及到邻域设计。

step4:计算增量,也就是新解与以前解的差,也就是增量。增量为负,说明解变好了。接受,当为非负时,没改善,就要考虑是否接受了。

step5:若,则接受X'作为新的当前解,否则以概率接受X'作为新的当前解。

step6:如果满足终止条件,则输出当前解作为最优解,结束程序。

step7:T逐渐缩小,且T趋于0,执行step2。

step2-step6,可以理解为内循环,因为是一个温度下的邻域解集。温度在外循环。

更详细的SA介绍可以看这篇。

最后分享一个开源库搭建网址:开源库框架。

模拟退火simulated annealing相关推荐

  1. python模拟退火(Simulated Annealing)参数寻优实战

    python模拟退火(Simulated Annealing)参数寻优实战 目录 python模拟退火(Simulated Annealing)参数寻优实战 模拟退火 模拟退火算法流程

  2. 模拟退火(Simulated Annealing, SA)算法简介与MATLAB实现

    目录 模拟退火算法概述 算法步骤 算法特点 模拟退火算法MATLAB实现 [例1]一元/多元函数优化 [例2]TSP问题 模拟退火算法概述 模拟退火算法(Simulated Annealing,简称S ...

  3. R语言基于模拟退火(Simulated Annealing)进行特征筛选(feature selection)

    R语言基于模拟退火(Simulated Annealing)进行特征筛选(feature selection) 特征选择的目的 1.简化模型,使模型更易于理解:去除不相关的特征会降低学习任务的难度.并 ...

  4. Simulated Annealing(模拟退火算法)

    /* Simulated Annealing(模拟退火算法) 求解旅行商问题(TSP) 网上给的数据是31个省会的坐标,蚁群算法得到的结果是:15378 我算的结果中,最好的一次是:15495 */ ...

  5. 退火模拟算法c语言程序,C语言模拟退火算法(C language simulated annealing algorithm).doc...

    C语言模拟退火算法(C language simulated annealing algorithm) C语言模拟退火算法(C language simulated annealing algorit ...

  6. 【运筹优化】元启发式算法详解:模拟退火算法(Simulated Annealing,SA)+ 案例讲解代码实战

    文章目录 一.介绍 二.基础知识 2.1 局部搜索(或蒙特卡罗)算法 2.2 Metropolis 算法 2.3 模拟退火算法 三.原理 3.1 Statistical Equilibrium 统计平 ...

  7. 模拟退火算法全解(Simulated Annealing)文末有源码

    模拟退火算法全解(Simulated Annealing) 文章目录 模拟退火算法全解(**Simulated Annealing**) 金属退火 算法机制 爬山算法 模拟退火 Metropolis准 ...

  8. 模拟退火算法(Simulated Annealing,SA)的全面讲解及python实现

    https://blog.csdn.net/Trisyp/article/details/104953406 抽象来源:美国物理学家Metropolis等人在1953年发表研究复杂系统,计算其中能量分 ...

  9. 深入理解模拟退火算法(Simulated Annealing)

    本文将对模拟退火算法(Simulated Annealing)进行介绍,深入理解这个算法. 模拟退火算法和上一篇文章随机模拟算法中的Metropolis算法有着紧密的联系,在这里将详细探讨这种关系. ...

最新文章

  1. python网络编程及高并发问题
  2. -9 逆序输出一个整数的各位数字_计算机基础知识: 信息数字化
  3. vscode中experimentaldecorators报错
  4. intellij默认maven仓库配置路径+默认New Project 工程路径
  5. python类型和格式_json数据格式和python中字典的数据类型
  6. 4 截图_十年漫迷舍不得删的4张截图,有大汗淋漓的香磷,满满的都是回忆
  7. 向架构师进军--定义需求
  8. 【NOIP2013提高组T3】加分二叉树
  9. Ubuntu10.04下安装SQLite3
  10. KNN(一)--简单KNN原理及实现
  11. Win10官方原版ISO下载
  12. 电信光猫 中兴ZXHN F412破解
  13. 8月第1周基金排行榜 | TokenInsight
  14. Kotlin里的takeIf和takeUnless
  15. 新零售全渠道营销,线上经营,线下成长
  16. Federated learning for drone authentication
  17. 【数电】(组合逻辑电路)组合逻辑电路的分析和设计方法
  18. CRC校验值是如何计算出来的?
  19. 【Jetson-Nano】SD卡重新格式化
  20. 支持动图、一键生成,基于 React 的开源像素绘画应用 —— Pixel Art to CSS

热门文章

  1. 复合充血模式和领域服务调度-阿里互联网法院项目
  2. oracle的监听日志满了,对于Oracle监听日志定期清理
  3. 全向轮机器人运动学方程
  4. Highcharts 散点图上添加回归线
  5. python实现图片旋转
  6. Java int数据类型数组降序排列的方法
  7. nltk之查找同义词、反义词、指代关系
  8. 市场调研-临床前医疗设备检测服务市场现状及未来发展趋势
  9. 再见北京,你好天津!
  10. 双重回归学习:轻量化DRN网络---《Towards Lightweight Super-Resolution with Dual Regression Learning》