模拟退火算法报告

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

提问的问题

1.初始值和终止值是如何确定的?(2组) 2.衰败函数中a这个常数是如何确定的?(3组) 3.while 1循环的作用是什么?(3组) 4.PSO算法和模拟退火算法是的区别是什么? (8组) 5.衰败函数中a0的初始值如果有所减小会不会 加快算法的运行速度?(12组)

回答的问题
3.会不会得出的结果不是唯一的而是有不同的 最优解? 答:例子中的数据比较后,通过多次检验,解 是唯一的,不过不排除会有其他结果的可能, 如果有在所得的相同价值的情况下,可以有其 他的舍弃的方式。

三、参数说明
控制参数的初值T0:冷却开始的温度。 控制参数T的衰减函数:因计算机能够处理的 都是离散数据,因此需要把连续的降温过程离 散化成降温过程中的一系列温度点,衰减函数 即计算这一系列温度的表达式。 控制参数T的终值tf,(停止准则)。 链长度Lk:任意温度t的迭代次数。

四、基本算法
二、基本原理

能量变化就是目标函数, 我们要得到的最优解就是 能量最低态。
“模拟退火”的原理也和金属退火的原理近似。模拟退 对应 设定初温 加温过程 火法是一种通用的优化算法,其物理退火过程由以下 三部分组成: (1)加温过程。其目的是增强粒子的热运动,使其 偏离平衡位置。当温度足够高时,固体将熔为液体,从 对应 等温过程 抽样过程 而消除系统原先存在的非均匀状态。 (2)等温过程。对于与周围环境交换热量而温度不 变的封闭系统,系统状态的自发变化总是朝自由能减少 冷却过程 控制参数下降 的方向进行的,当自由能达到最小时,系统达到平衡状 态。 (3)冷却过程。使粒子热运动减弱,系统能量下降, 得到晶体结构。
1) 初始化:初始温度T(充分大),初始解状态S(是算法迭代 的起点), 每个T值的迭代次数L (2) 对k=1,……,L做第(3)至第6步: (3) 产生新解S′ (4) 计算增量Δt′=E(S′)-E(S),其中E(S)为评价函数 (5) 若Δt′<0则接受S′作为新的当前解,否则以概率exp(-Δt′/T) 接受S′作为新的当前解. (6) 如果满足终止条件则输出当前解作为最优解,结束程序。 终止条件通常取为连续若干个新解都没有被接受时终止算 法。 (7) T逐渐减少,且T->0,然后转第2步。
续页


% 产生随机扰动 tmp = ceil(rand.*num); sol_new(1,tmp) = ~sol_new(1,tmp); % 检查是否满足约束 while 1 q = (sol_new * d <= restriction); if ~q p = ~q; % 实现交错着逆转头尾的第一个1 tmp = find(sol_new == 1); if p sol_new(1, tmp) = 0; else sol_new(1, tmp(end)); end else break end end

% 把冷却过程中最好的解保存下来 E_best = E_new; sol_best = sol_new; end else if rand<exp(-(E_new E_current)./t) E_current = E_new; sol_current = sol_new; else sol_new = sol_current; end end end t = t.*a; end
绪页


% 计算背包中的物品价格 E_new = sol_new * k; if E_new<E_current E_current = E_new; sol_current = sol_new; if E_new<E_best % 把冷却过程中最好的解保存下来 E_best = E_new; sol_best = sol_new; end else if rand<exp(-(E_new E_current)./t) E_current = E_new; sol_current = sol_new; else sol_new = sol_current; end end end t = t.*a; end
回答的问题
1.tmp=ceil(rand.*num);这句是什么思意? 答:ceil是向上取整,rand是在0与1之间的四位 小数 .*是矩阵中各元素相乘。 结果tmp就是 在1到12之间随机的数。 2.这个程序适用于什么样的概率模型? 答:适用于优化数据的技术,找到全局最优解 的一种概率求解方式。在例子中用于数据之间 比较,求和的最小值等。
模拟退火算法报告
一、模拟退火算法背景及简介

模拟退火算法(Simulated Annealing,简称SA) 的思想最早是由Metropolis等提出的。其出发 点是基于物理中固体物质的退火过程与一般的 组合优化问题之间的相似性 。 模拟退火算法是一种通用的概率算法,用来在 一个大的搜寻空间内寻找最优解。模拟退火算 法是三大经典算法之一,他脱胎于自然界的物 理过程,与实际优化问题相结合。
2、程序介绍

a = 0.95 k = [6;11;14;5;4;12;14;11;9;17;8;5]; k = -k; %模拟退火算法是求解最小值,故取负数 d = [3;6;19;4;3;6;11;5;12;8;15;7]; restriction = 30; num = 12; sol_new = ones(1,num); %生成初始解 E_current = inf;E_best = inf; % E_current 是当前解对应的目标函数值(即背包中物品的总价值) % E_now 是新解的目标函数值 % E_best 是最优解 sol_current = sol_new; sol_best = sol_new; t0 =97; tf = 3; t = t0 p = 1; while t >= tf for r=1:100
3、结果展示


a= 0.9500 t= 97 最优解为: sol_best = 1 1 0 0 0 1 物品总价值等于: 57 背包中物品的总重量是: 28
0
1
0
1
0
0
六、小结
模拟退火算法体现了这样一种优化技术: (1)他能够处理具有任意程度的非线性、不连续、 随机性的目标函数。 (2)目标函数可以具有任意的边界条件和约束。 (3)比起其他的非线性优化的方法,SA的编程 工作量小,且易于实现。 (4)统计上可以保证找到全局最优解 。

五、实例应用
1、实例Байду номын сангаас述 2、程序介绍
3、结果展示
1、实例叙述

某人出国旅行,计划在国外购买些当地特产, 其质量分别为:3 kg,6 kg,19 kg,4 kg,3 kg,6 kg,11 kg,5 kg,12 kg,8kg,15kg, 7kg,对应价格分别为:6,11,14,5,4, 12,13,11,8,17,8,4元。每件商品限 购一件,并且飞机限制每人所带的东西不能超 过30kg,问如何才能使所带物体价值最高。
相关文档
最新文档