模拟退火算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

options = saoptimset('PlotFcns',{@saplotbestf,@saplottemperature, @saplotf,@saplotstopping}); simulannealbnd(@dejong5fcn,x0,lb,ub,options);
options = saoptimset('InitialTemperature',[300 50]);
模拟退火算法的数学模型:马尔可夫链(可达 性,渐近不依赖起点,分布稳定性,收敛到最 优解) 如果温度下降十分缓慢,而在每个温度都有足 够多次的状态转移,使之在每一个温度下达到 热平衡,则全局最优解将以概率1被找到。因 此可以说模拟退火算法能找到全局最优解。
模拟退火算法实现的技术问题
1)解的形式和邻域结构 •解的表现形式直接决定于邻域的构造
模拟退火算法对TSP的应用1)加ຫໍສະໝຸດ 数据表1 29个城市的坐标
城市序 号 X坐标 Y坐标 城市序 号 X坐标 Y坐标 1 1150.0 1760.0 11 840.0 550.0 21 830.0 1770.0 2 630.0 1660.0 12 1170.0 2300.0 22 490.0 500.0 3 40.0 2090.0 13 970.0 1340.0 23 1840.0 1240.0 4 750.0 1100.0 14 510.0 700.0 24 1260. 0 1500. 0 5 750.0 2030.0 15 750.0 900.0 25 1280.0 790.0 6 1030.0 2070.0 16 1280.0 1200.0 26 490.0 2130.0 7 1650.0 650.0 17 230.0 590.0 27 1460.0 1420.0 8 1490.0 1630.0 18 460.0 860.0 28 1260.0 1910.0 9 790.0 2260.0 19 1040.0 950.0 29 360.0 1980.0 10 710.0 1310.0 20 590.0 1390.0
PT E E (r )


e
sD

E (r ) k BT E (s) k BT
,
e
kB 0为玻尔兹曼常数, 其中,E(r)为状态r的能量,
E 为分子能量的一个随机变量,D表示状态空间集合.
•在同一个温度,分子停留在能量小状态的概率 比停留在能量大状态的概率大。 •当温度相当高时,每个状态的概率基本相同, 接近平均值 1/ D . •当温度越低时,能量越低的状态的概率值越高。 当温度趋于0时,分子停留在最低能量状态的 概率趋于1。
城市序 号 X坐标 Y坐标
inputcities = [1150.0 630.0 40.0 750.0 750.0 1030.0 1650.0 1490.0 ... 790.0 710.0 840.0 1170.0 970.0 510.0 750.0 1280.0 230.0 460.0 ... 1040.0 590.0 830.0 490.0 1840.0 1260.0 1280.0 490.0 1460.0 ... 1260.0 360.0; 1760.0 1660.0 2090.0 1100.0 2030.0 2070.0 650.0 ... 1630.0 2260.0 1310.0 550.0 2300.0 1340.0 700.0 900.0 1200.0 ... 590.0 860.0 950.0 1390.0 1770.0 500.0 1240.0 1500.0 790.0 ... 2130.0 1420.0 1910.0 1980.0];
模拟退火算法 (Simulated Annealing)
SA是基于Monte Carlo迭代求解策略的一种随机 寻优算法,理论上是一个全局最优算法。其出发 点是基于物理中固体物质的退火过程与一般组合 优化问题之间的相似性。
起源:1953,Metropolis,固体退火过程
1983,Kirkpatrick成功应用于组合优化问题
实际计算中,可以选K=10,20,100…等试验值
4)冷却进度T(t)
冷却进度表是指从某一高温状态T0向低温状态冷 却时的降温管理表。 •需综合考虑解的性能和算法速度
T0 经典模拟退火算法的降温方式为: T (t ) lg(1 t ) T0 快速模拟退火算法的降温方式为: T (t ) 1 t
x0 = [0 0]; lb = [-64 -64]; ub = [64 64]; [x,fval] = simulannealbnd(@dejong5fcn,x0,lb,ub)
Optimization terminated: change in best function value less than options.TolFun. x= -32.0169 -31.9879 fval = 0.9980
[x,fval,exitflag,output] = simulannealbnd(@dejong5fcn,[0,0])
Optimization terminated: change in best function value less than options.TolFun. x = -15.9669 -31.9749 fval = 1.9920 exitflag = 1 output = iterations: 1608 funccount: 1621 message: [1x80 char] randstate: [625x1 uint32] randnstate: [2x1 double] problemtype: 'unconstrained' temperature: [2x1 double] totaltime: 0.8268
z min f ( x) g ( x) 0, x D
类比:
组合优化问题 (可行)解 最优解 费用函数 金属物体 状态 能量最低的状态 能量
模拟退火算法基本流程:
Step1:随机产生一个初始解 x0 ,令 xbest x0 , 并计算目标函数值 E ( x0 ); k 0; t0 t max
3)初始温度T0
实验表明,初温越大,获得高质量解的几率越大, 但花费的计算时间将增加;初温过低则使算法过 早陷入局部最优点。因此,初温的确定应折中考 虑优化质量和优化效果。
t0 K ,
K充分大的数
max f ( j) | j D min f ( j) | j D
Step2:若在该温度达到内循环停止条件,则到 step3;否则,从当前最优解 xbest 的邻域 N ( xbest ) 中随机选一 xnew , 计算新的目标函数值 E( xnew ), 并 计算目标函数值的增量 E E( xnew ) E( xbest ).
若 E 0, 则 xbest xnew ; 否则 (E 0) 若 exp(E / tk ) random(0,1) 时
fun = @(x) 3*sin(x(1))+exp(x(2)); x = simulannealbnd(fun,[1;1],[0 0])
Optimization terminated: change in best function value less than options.TolFun. x= 896.9234 0.0000
2 例: f ( x) x ,0 x 100, x Z 的解可采用0-1编码
TSP问题可采用n个城市的一个排序表示问题的一个 解,可通过城市间不同位置交换构造邻域 例:同样的解的表达式和邻域结构用于背包问题和车间作业 问题时,由于背包问题有包容积约束的限制和车间作业的死 锁现象,无法保证每个邻域中邻居都是可行解。处理这个问 题有两类方法:一是用罚函数将不可行解可行化;另一个方 法是研究解和邻域结构,这一方法要求对问题有相当深入的 了解,难度较大。
options = saoptimset(options,'TemperatureFcn',@temperaturefast);
options = saoptimset(options,'ReannealInterval',50); options = saoptimset(options,'Display','iter','DisplayInterval',400); options = saoptimset(options,'TolFun',1e-5);
模拟退火算法的matlab实现
利用模拟退火算法求函数极小:无约束或 有界约束
x = simulannealbnd(fun,x0) x = simulannealbnd(fun,x0,lb,ub) x = simulannealbnd(fun,x0,lb,ub,options) [x,fval] = simulannealbnd(...) [x,fval,exitflag] = simulannealbnd(...) [x,fval,exitflag,output] = simulannealbnd(...)
统计力学表明材料中粒子的不同结构对应于粒子 的不同能量水平。在高温条件下,粒子的能量较 高,可以自由运动和重新排列。在低温条件下, 粒子能量较低。如果从高温开始,非常缓慢地降 温(这个过程被称为退火),粒子就可以在每个 温度下达到热平衡。当系统完全被冷却时,最终 形成处于低能状态的晶体。
统计力学的研究表明,在温度T,进行了充分 转换之后,材料将达到热平衡。此时分子停留 在状态r的概率满足Boltzmann分布:
6)外循环终止准则 即算法终止准则,常用的包括:
•零度法:设置终止温度的阀值:小正数

•循环总数控制法:如设置外循环迭代次数 •基于不改进规则的控制法:算法搜索到的最优值 连续若干步保持不变
模拟退火算法实验性能分析 1)模拟退火法与局部搜索算法的差异 2)优点:高效、健壮、通用、灵活 3)不足:返回一个高质量近似解的时间花费 较多,当问题规模不可避免增大时,难于承 受的运行时间将使算法丧失可行性。 4)模拟退火算法理论上具有全局最优性,但 实际应用中的模拟退火算法是一个启发式算法, 它有诸多的参数需要调整。解决这个矛盾的方 法主要通过大量的数值模拟计算,从中选择比 较好的参数配置。
dejong5fcn
x0 = [0 0]; [x,fval] = simulannealbnd(@dejong5fcn,x0)
Optimization terminated: change in best function value less than options.TolFun. x= 0.0216 -31.9955 fval = 2.9821
2)状态转移概率(接受概率)p •状态转移概率是指从一个状态xold(一个可行解) 向另一个状态xnew(另一个可行解)的转移概率
通俗的理解是接受一个新解为当前解的概率 •它与当前的温度参数T有关,随温度下降而减小
•一般采用Metropolis准则
1, if p E ( xnew ) E ( xold ) , if exp T E ( xnew ) E ( xold ) E ( xnew ) E ( xold ) .
常用的两种简单下降方式:
tk 1 tk ,
其中 0 1
K k tk t0 , 其中K为算法温度下降的总次数 K
5)内循环终止准则 或称Metropolis抽样稳定准则,用于决定在各温 度下产生候选解的数目。 常用的方法: •固定长度:在每一温度迭代相同的步数,步数 的选取同问题的大小有关,通常采用与邻域大小 直接相关的规则。 •由接受和拒绝的比率来控制迭代步数:随着温度 的下降,将同一温度的迭代步数增加。
xbest xnew ;
Step3:tk 1 d (tk ); k k 1; 若满足停止条件,终止 计算,输出最优解 xbest ;否则,回到step2.
模拟退火算法中,包含一个内循环和一个外循 环,内循环表示在同一个温度时,在一些状态 随机搜索。外循环主要包括温度下降变化,迭 代步数的增加和停止条件。
相关文档
最新文档