3-模拟退火算法工具箱及应用解析

  • 格式:ppt
  • 大小:2.80 MB
  • 文档页数:15

下载文档原格式

  / 15
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6/15
案例分析
求解Rastrigin函数的最小值。
2 Ras( x)' 20 x12 x2 10(cos2x1 cos2x2 )
如何绘制?
10/10/2018
7/15
程 序:
x1= -5:0.01:5; x2= -5:0.01:5;
[x1,x2] = meshgrid(x1,x2);
10/15
10/10/2018
11/15
10/10/2018
12/15
rmsep = 0.4822
10/10/2018 13/15
rmsep = 0.4808
10/10/2018 14/15
模拟退火算法完
2018/10/10
15/15
2018/10/10
1/15
1.理论基础
1.1 模拟退火算法工具箱(simulated annealing toolbox, SAT)
在R2009a版本中,MATLAB自带的遗传算法与直接搜索工
具箱集成了模拟退火算法。 基本原理:模拟退火算法来源于固体退火原理,将固体加温至 充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为 无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度

温度(temperature): 是一个重要的参数,他随着算法的迭代逐步下
降,以模拟固体退火过程中的降温过程。一方面,温度用于限制
SA产生的新解与当前解之间的距离,即SA的搜索范围;另一方面
,温度决定了SA 以多大的概率接受目标函数值比当前解的目标函 数值差的新解。
10/10/2018 5/15


Meteopolis准则:
是指SA接受新解的概率,对于目标函数取最小值的问题,SA接受
新解的概率为:
1, P( x x ' ) f ( x ' ) f ( x)) exp[ ], T
10/10/2018
f ( x ' ) f ( x) f ( x ' ) f ( x)
x3 = 20+x1^2+x2^2-10*(cos(2*pi*x1)+cos(2*pi*x2)); surfc(x1,x2,x3) colormap hsv
10/10/2018 8/15
解题步骤:

Start — Toolboxes — Global optimization — Optimization tool 》optimtool (‘simulannealbnd’)
退火进度表(annealing schedule):是指温度随算法迭代的下降
速度。退火过程越缓慢, SA 找到全局最优解的机会就越大。退火 进 度 表 包 括 初 始 温 度 ( initial temperature ) 及 温 度 更 新 函 数 ( temperature update function)的参数。
10/10/2018
9/15
命令行方式使用SAT:
[x, fval] = simulannealbnd (fun, x0, lb, ub, options)
options = saoptimset (‘Param1’,’value1’, ‘Param2’,’value2’,…);
10/10/2018
10/10/2018
4/15
1.2 模拟退火的一些基本概念

目标函数(objective function ):即待优化的函数。在调用函数
simulannealbnd 运行模拟退火算法时,需要编写该目标函数的 M 文
件。SAT是对目标函数取最小值进行优化的,对于最大值的优化问 题,只需要将目标函数乘以-1即可化为来自百度文库小值优化问题。
3/15
SAT 的 使 用 只 需 要 调 用 主 函 数 simulannealbnd 即 可 , 函 数
simulannealbnd则调用函数simulanneal对模拟退火问题进行求解。函
数 simulanneal 依次调用函数 simulannealcommon 和函数 saengine ,并 最终得到最优解。在函数saengine 中, SA 进行迭代搜索,直到满足 一定的条件才退出。在迭代过程中,函数sanewpoint和函数saupdates 是关键函数。
都达到平衡态,最后在常温时达到基态,内能减为最小。
10/10/2018
2/15
simulannealbnd simulanneal
S A 算 法 结 构 示 意 图
10/10/2018
simulannealcommon.m saengine
solverData.running = ture?
N
Y
sacheckexit.m sanewpoint.m saupdates.m gadsplot.m 得到最优解