当前位置: 首页 > news >正文

模拟退火算法详解

一、引言

模拟退火算法(Simulated Annealing,简称SA)是一种通用概率型优化算法,用来在一个大的搜寻空间内找寻问题的最优解。其出发点是基于物理中固体物质的退火过程与一般组合优化问题之间的相似性。模拟退火算法从某一较高初温出发,伴随温度参数的不断下降,结合概率突跳特性在解空间中随机寻找目标函数的全局最优解,即在局部最优解能概率性地跳出并最终趋于全局最优。

二、算法原理

物理退火过程

加温过程:增强粒子的热运动,使其偏离平衡位置。当温度足够高时,固体将熔为液体,从而消除系统原先存在的非均匀状态。
等温过程:与周围环境交换热量而温度不变。对于与环境换热而温度不变的封闭系统,系统状态的自发变化总是朝自由能减少的方向进行,当自由能达到最小时,系统达到平衡态。
冷却过程:使粒子热运动减弱,系统能量下降、晶体结构得以形成。
Metropolis准则

固体在恒定温度下达到热平衡的过程可以用Monte Carlo方法进行模拟。虽然该方法简单,但必须大量采样才能得到比较精确的结果,因而计算量很大。1953年,Metropolis等提出重要性采样法,即用Metropolis准则对产生的新状态进行简略判断,从而减少计算量。

假设在状态x(i)时,系统受到某种扰动而使其状态变为x(j)。与此相对应,系统的能量也从E(i)变为E(j),定义系统由状态x(i)变为x(j)的接收概率为p(概率可以根据具体的优化问题来设定):

当E(j) < E(i)时,系统接受状态x(j)为新的当前状态;

当E(j) >= E(i)时,系统以概率exp[-(E(j)-E(i))/

http://www.xdnf.cn/news/825283.html

相关文章:

  • 简单聊一下EL表达式与单列集合
  • 虚函数详解
  • 什么是ETL?什么是ELT?怎么区分它们使用场景
  • 软件测试面试题合集
  • 学术期刊数据库---EBSCO
  • 两万字总结Linux常用指令 (非常详细)从零基础入门到精通,看完这一篇就够了
  • jQuery插件大全
  • qsort函数的使用方法,以及模拟实现
  • 个人博客系统的测试报告
  • Dom4j解析XML
  • 机器学习洞察 | JAX,机器学习领域的“新面孔”
  • HTML <select> 标签
  • MySQL中redo与undo的区别
  • 【Linux-常用命令-基础命令-解压rar文件-unrar-x-命令-笔记】
  • Android开发基础(一)
  • 最全Linux操作系统的下载与安装(保姆级教程),Linux运维-Binder机制及AIDL使用
  • spring数据校验:Validation
  • MVC框架介绍
  • #笔记 欧拉函数
  • VirtualBox虚拟机下载安装(win10环境)
  • vue3 集成kindeditor研究
  • FlowChartl流程图
  • ipscan怎么用?ipscan使用方法
  • 什么是CMS?
  • cmd的基本命令
  • 80端口知识
  • xiao
  • java面向对象的三大特征 - 继承 (extends)
  • PHP json_decode()函数详解(1),网络安全-Binder机制及AIDL使用
  • 批处理的copy与xcopy