一、简介 1 模拟退火算法的应用背景
模拟退火算法提出于1982年。Kirkpatrick等人首先意识到固体退火过程与优化问题之间存在着类似性;Metropolis等人对固体在恒定温度下达到热平衡过程的模拟也给他们以启迪。通过把Metropolis 算法引入到优化过程中,最终得到一种对 Metropolis 算法进行迭代的优化算法,这种算法类似固体退火过程,称之为“模拟退火算法”。
模拟退火算法是一种适合求解大规模组合优化问题的随机搜索算法。目前,模拟退火算法在求解 TSP,VLSI 电路设计等组合优化问题上取得了令人满意的结果。将模拟退火算法同其它的计算智能方法相结合,应用到各类复杂系统的建模和优化问题中也得到了越来越多的重视,已经逐渐成为一种重要的发展方向。
2 模拟退火算法介绍
文章图片
文章图片
文章图片
文章图片
3 模拟退火算法的参数
模拟退火是一种优化算法,它本身是不能独立存在的,需要有一个应用场合,其中温度就是模拟退火需要优化的参数,如果它应用到了聚类分析中,那么就是说聚类分析中有某个或者某几个参数需要优化,而这个参数,或者参数集就是温度所代表的。它可以是某项指标,某项关联度,某个距离等等。
二、源代码
clear;
% 程 序 参 数 设 定
Coord = ... % 城 市 的 坐 标 Coordinates
[ 5.2 16.4 28.4 40.4 74.7 86.7 5.2 16.4 28.4 40.4 55.6 66.7 74.7 86.7 100.5;
...
10.2 10.2 10.2 10.2 10.2 10.2 0 0 0 0 -11 0 0 -2.5 -2.5 ] ;
t0 = 1 ;
% 初 温 t0
iLk = 20 ;
% 内 循 环 最 大 迭 代 次 数 iLk
oLk = 50 ;
% 外 循 环 最 大 迭 代 次 数 oLk
lam = 0.95 ;
% λ lambda
istd = 0.001 ;
% 若 内 循 环 函 数 值 方 差 小 于 istd 则 停 止
ostd = 0.001 ;
% 若 外 循 环 函 数 值 方 差 小 于 ostd 则 停 止
ilen = 5 ;
% 内 循 环 保 存 的 目 标 函 数 值 个 数
olen = 5 ;
% 外 循 环 保 存 的 目 标 函 数 值 个 数
% 程 序 主 体
p=inf;
for i=1:1:500
m = length( Coord ) ;
% 城 市 的 个 数 m
fare = distance( Coord ) ;
% 路 径 费 用 fare
path = 1 : m ;
% 初 始 路 径 path
pathfar = pathfare( fare , path ) ;
% 路 径 费 用 path fare
ores = zeros( 1 , olen ) ;
% 外 循 环 保 存 的 目 标 函 数 值
e0 = pathfar ;
% 能 量 初 值 e0
t = t0 ;
% 温 度 t
for out = 1 : oLk % 外 循 环 模 拟 退 火 过 程
ires = zeros( 1 , ilen ) ;
% 内 循 环 保 存 的 目 标 函 数 值
for in = 1 : iLk % 内 循 环 模 拟 热 平 衡 过 程
[ newpath , v ] = swap( path , 1 ) ;
% 产 生 新 状 态
e1 = pathfare( fare , newpath ) ;
% 新 状 态 能 量
% Metropolis 抽 样 稳 定 准 则
r = min( 1 , exp( - ( e1 - e0 ) / t ) ) ;
if rand < r
path = newpath ;
% 更 新 最 佳 状 态
e0 = e1 ;
end
ires = [ ires( 2 : end ) e0 ] ;
% 保 存 新 状 态 能 量
% 内 循 环 终 止 准 则 :连 续 ilen 个 状 态 能 量 波 动 小 于 istd
if std( ires , 1 ) < istd
break ;
end
三、运行结果
文章图片
四、备注 【matlab|【路径规划】基于matlab模拟退火算法之求解火灾巡逻最短路径【含Matlab源码 252期】】完整代码或者代写添加QQ1564658423
往期回顾>>>>>>
【预测模型】基于matlab粒子群的lssvm预测【含Matlab源码 103期】
【lSSVM预测】基于matlab鲸鱼优化算法之lSSVM数据预测【含Matlab源码 104期】
【lstm预测】基于matlab鲸鱼优化算法之改进的lstm预测【含Matlab源码 105期】
【SVM预测】基于matlab蝙蝠算法改进的SVM预测(一)【含Matlab源码 106期】
【SVM预测】基于matlab灰狼算法优化svm支持向量机预测【含Matlab源码 107期】
【预测模型】基于matlab BP神经网络的预测【含Matlab源码 108期】
【lssvm预测模型】基于蝙蝠算法改进的最小二乘支持向量机lssvm预测【Matlab 109期】
【lssvm预测】基于飞蛾扑火算法改进的最小二乘支持向量机lssvm预测【Matlab 110期】
【SVM预测】基于matlab蝙蝠算法之改进的SVM预测(二)【含Matlab源码 141期】
【lssvm预测】基于matlab飞蛾扑火算法之改进的最小二乘支持向量机lssvm预测【含Matlab源码 142期】
【ANN预测模型】基于matlab差分算法改进ANN网络预测【含Matlab源码 151期】
【预测模型】基于matlab RBF神经网络预测模型【含Matlab源码 177期】
【预测模型】基于matlab SVM回归预测算法来预测股票趋势【含Matlab源码 180期】
【预测模型】基于matlab BP神经网络之模型优化预测【含Matlab源码 221期】
【预测模型】基于matlab RLS算法的数据预测【含Matlab源码 222期】
【预测模型】基于matlab碳排放约束下的煤炭消费量优化预测【含Matlab源码 223期】
【路径规划】基于matlab A星和改进A星的路径规划【含Matlab源码 225期】
【TSP】基于matlab 改进的禁忌搜索算法之求解旅行商问题【含Matlab源码 241期】
【TSP】基于matlab 改进的蚁群算法之求解旅行商问题【含Matlab源码 242期】
推荐阅读
- MATLAB完整学习过程|Matlab中脚本的运用
- matlab|matlab小波变换、离散小波变换函数使用
- 数学建模与Matlab|层次分析法及matlab代码
- 程序人生|三阶魔方自动求解及动态可视化matlab代码
- 滑模控制|VSC/SMC(十三)——快速和非奇异Terminal滑模控制(含程序模型)
- matlab|基于matlab读取envi格式高光谱图像数据
- matlab|MATLAB读取高光谱数据
- matlab|matlab 显示高光谱,Matlab在高光谱图像处理上的使用指南(不断补充ing)
- matlab|基于MATLAB读取高光谱影像每个像素的光谱信息