模拟退火算法(SA)

模拟退火是很经典的算法,针对大多数模型、应用,受限于SA运行时间长等特点,已不能直接应用SA,这样的算法值得去改进,我试图找一些缩短运行时间的方法,已经在测试,这里是模拟退火第一篇文章,介绍模拟退火,给出基础代码(经过多次测试,可直接运行)。
参考了https://blog.csdn.net/qq_34554039/article/details/90294046(该文介绍了模拟退火)

1.简介

模拟退火算法的思想:
借鉴于固体的退火过程,当固体的温度很高时,内能比较大,固体内的粒子处于快速无序运动状态,当温度慢慢降低,固体的内能减小,粒子逐渐趋于有序,最终固体处于常温状态,内能达到最小,此时粒子最为稳定。
思路:
一开始为算法设定一个较高的值T(模拟温度),算法不稳定,选择当前较差解的概率很大;随着T的减小,算法趋于稳定,选择较差解的概率减小,最后,T降至终止迭代的条件,得到近似最优解。

2.算法步骤

模拟退火算法,有很多文章进行了介绍,这里不赘述,算法思想也简单,看流程图一般就很清晰了。

其中,

代码(一个求函数极值的程序):

运行方式:全部复制保存到一个m文件中,直接运行

function main_fcn_extreme_value()T=1000;%初始化温度值
T_min=1e-12;%设置温度下界
alpha=0.98;%温度的下降率
k=1000;%迭代次数(解空间的大小)x=getX;%随机得到初始解
while(T>T_min)for I=1:kfx=Fx(x);x_new=getX;if(x_new>=-2&&x_new<=2)fx_new=Fx(x_new);delta=fx_new-fx;if(delta<0)x=x_new+(2*rand-1);elseP=getP(delta,T);if(P>rand)x=x_new;endendend
end
T=T*alpha;
end
disp('最优解为:')
disp(x)%%getX.m
function x=getX
x=4*rand-2;
end%%Fx.m
function fx=Fx(x)
fx=(x-2)^2+4;
end%%getP.m
function p=getP(c,t)
p=exp(-c/t);
end
end

模拟退火算法(代码可直接运行)相关推荐

  1. 一段经典模拟退火算法代码

    AW OL社区偶遇一段精彩代码实现,是关于模拟退火算法的,拿过来跑了跑,留在这里,以免忘记: /** 使用模拟退火算法(SA)求解TSP问题(以中国TSP问题为例)* 参考自<Matlab 智能 ...

  2. 【matlab】模拟退火算法代码分析(附sj.txt文件)

    简介 模拟退火算法得益于材料的统计力学的研究成果.统计力学表明材料中粒子的不 同结构对应于粒子的不同能量水平.在高温条件下,粒子的能量较高,可以自由运动和 重新排列.在低温条件下,粒子能量较低.如果从 ...

  3. 模拟退huo算法的特点_兄弟,退火吗?—— 初窥模拟退火算法

    模拟退火算法(Simulated annealing, SA)是一种基于蒙特卡罗(Monte Carlo)思想设计的,常用于在较大的解空间中搜索近似全局最优解的优化算法.本文将从模拟退火算法的历史.形 ...

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

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

  5. [算法学习]模拟退火算法(SA)、遗传算法(GA)、布谷鸟算法(CS)、人工蜂群算法(ABC)学习笔记---附MATLAB注释代码

    目录 1.模拟退火算法(Simulated Annealing,SA) 1.1 本质: 1.2 算法思想 1.3 SA流程图 1.4 模拟退火过程 1.5 SA解决TSP问题 1.6 SA改进方向 1 ...

  6. 算法学习之模拟退火算法路径规划(python代码实现)

    模拟退火算法路径规划(python代码实现) 一.引言 二.算法介绍以及伪代码 1.算法通俗介绍 2.路径规划算法伪代码 三.算法流程及代码实现 1.地图创建 2.初始化路径 小结 3.计算适应度值 ...

  7. 模拟退火算法详细讲解(含实例python代码)

    模拟退火算法详细讲解(含实例python代码) (一)模拟退火算法简介 (二)模拟退火算法原理 (三)退火过程中参数控制 (四)算法步骤 (五)实例分析 最近老师要求做模拟退火算法实验,看了很多博客之 ...

  8. 模拟退火算法 java_转 | 模拟退火算法(SA)和迭代局部搜索(ILS)求解TSP的Java代码分享...

    以下文章来源于数据魔术师 ,作者周航 前言 大家好呀!我们你们好久不见的...咳咳,初次见面的小编! 之前重新整理了ILS的代码,有人留言问能不能提供java版. 正好最近在学启发式算法和java,为 ...

  9. 模拟退火算法解决TSP(python实现 110+行代码)【gif生成】

    简述 代码我是基于我之前写的两篇,一篇是遗传算法TSP的Python实现,一篇是模拟退火算法的解决TSP的C++实现. 模拟退火算法理论+Python解决函数极值+C++实现解决TSP问题 遗传算法解 ...

最新文章

  1. springboot集成rabbitMQ安装+代码
  2. python文件不存在时创建文件_python-创建一个文件(如果不存在)
  3. MySQL · 特性分析 · 优化器 MRR BKA
  4. 判断字符串是否为正整数 浮点小数
  5. MATLAB教程(1) MATLAB 基础知识(3)
  6. Linux---文件、软链接于硬链接文件
  7. 在集合点的同步 CyclicBarrier
  8. 文献挖掘:SATI文献题录信息统计分析工具初试
  9. 深度解析TCP/IP---网络原理的重重之重
  10. Devexpress WPF教程
  11. 【HDU2825】AC自动机+状压DP
  12. 第五人格显示服务器连接失败,第五人格网络连接失败怎么回事
  13. 国外android内存清理工具,给大家推荐一个安卓清理神器哈,确实好用
  14. rasp 系统_RASP技术分析
  15. C++程序设计课上机作业
  16. 相关性扫描匹配CSM与分支限界
  17. 用 Neon Intrinsics 优化 C 代码
  18. 鼠标处显示坐标 html,cesium的鼠标事件(最基础的显示鼠标位置坐标)
  19. MATLAB教程二:MATLAB矩阵处理
  20. 纹理分析及其在医学成像中的应用

热门文章

  1. AsyncTask使用详解
  2. js 页面所有超链接后加随机数 基于jquery
  3. linux搭建java开发环境_linux中搭建java开发环境
  4. winmail计算机三级,2016年计算机三级网络技术机考模拟题(1)
  5. linux用vsc写c语言,vscode写c语言(windows)
  6. 主机关机后第二天就无法开机_iphone没电自动关机后无法充电和开机的解决办法!(亲身经历)...
  7. 【C++深度剖析教程31】被遗弃的多重继承
  8. Hive中COUNT的高级用法(条件过滤等)
  9. CentOS 7.2.1511 x64下载地址
  10. 算法导论课后习题解析 第四章 下