智能计算大作业

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

1.1 问题描述

求解Rastrigin 函数的最小值,函数Rastrigin 表述如下:

221212()2010(cos2cos2)Ras x x x x x ππ=++-+

1.2 算法理论

模拟退火算法(simulated annealing,简称SA)的思想最早由Metropolis 等(1953)提出,1983年Kirkpatrick 等将其用于组合优化。SA 算法是基于Mente Carlo 迭代求解策略的一种随机寻优算法,其出发点是基于物理中固体物质的退火过程与一般组合优化问题之间的相似性。其思想于固体退火过程,将固体加温至充分高, 再让其冷却; 加温时, 固体内部粒子随温升变为无序状, 内能增大, 而徐徐冷却时粒子渐趋有序, 在每个温度都达到平衡态, 最后在常温时达到基态, 内能减为最小。

其物理退火过程由以下三部分组成:

(1)加温过程——增强粒子的热运动,消除系统原先可能存在的非均匀态;

(2)等温过程——对于与环境换热而温度不变的封闭系统,系统状态的自发变化总是朝自由能减少的方向进行,当自由能达到最小时,系统达到平衡态;

(3)冷却过程——使粒子热运动减弱并渐趋有序,系统能量逐渐下降,从而得到低能的晶体结构。

其中,加温的过程对应算法的设定初温,等温过程对应算法的Metropolis 抽样过程,冷却过程对应控制参数的下降。这里能量的变化就是目标函数,要得到的最优解就是能量最低态。Metropolis 准则以一定的概率接受恶化解,这样就使算法跳离局部最优的陷阱。用固体退火模拟组合优化问题,将内能E 模拟为目标函数值f ,温度T 演化成控制参数t , 即得到解组合优化问题的模拟退火算

法。由初始解i和控制参数初值t开始,对当前解重复“产生新解→计算目标函数差→判断是否接受→接受或舍弃”的迭代, 并逐步衰减t值,算法终止时的当前解即为所得近似最优解。退火过程由冷却进度表( Cooling Schedule)控制。包括控制参数的初值t及其衰减因子t每个t 值时的迭代次数( 称为一个Mapkob 链的长度) L和停止条件S。

1.3 求解步骤

SA算法实现过程如下图所示:

本文具体步骤如下:

(1)目标函数

目标函数即是待优化的函数。在调用函数simulannealbnd 运行模拟退火时,需要编写该目标函数的M 文件。需要指出的是,SAT 是对目标函数取最小值进行优化的。对于最大优化问题,只需将目标函数乘以-1即可化为最小值优化问题,

(2)温度

对于模拟退火算法来说,温度是一个很重要的参数,它随着算法的迭代二逐步下降,以模拟固体退火过程中的降温过程。一方面,温度用于限制SA 产生的新解与当前解之间的距离,也就是SA 的搜索范围;另一方面,温度决定了SA 以多大的概率接受目标函数值比当前解的目标函数值差的新解。

(3)退火进度表

退火进度表是指温度随着算法迭代的下降速度。退火过程越缓慢,SA 找到全局最优解的机会越大,相应的运行时间也会增加。退火进度表包括初始温度及温度更新函数等参数。

(4)Meteopolis 准则

Meteopolis 准则是指SA 接受新解的概率。对于目标函数取最小值的优化问题,SA 接受新解的概率为

其中,x 为当前解;x '为新解;()f 表示解得目标函数值;T 为温度。 该过程不断重复,可以看到,开始时温度较高,SA 接受较差解得概率也相对较高,这使得SA 有更大的机会跳出局部最优解,随着退火的进行,温度逐步下降,SA 接受较差解的概率变小。

()()()()f x f x f x f x '<'≥()()[],1,)f x f x T P x x e '--⎧⎪'⇒=⎨⎪⎩

1.4 运行结果(图、表等)

某次得到的当前解目标函数值历程曲线

1.5 分析小结

运行模拟退火算法,得到的最优解目标函数值历程曲线和当前解目标值历程曲线分别如上图,函数simulannealbnd 返回的最优解及其对应的目标函数值在Workspace 中,分别为:

55126,)(8.27410,4.254010)

1.71710x x y ---=-⨯⨯=⨯(

需要强调的是,由于算法中使用了函数randn 和函数rand ,因此,每次运行的结果是不一样的。

量子遗传算法流程如下:

(1)初始化种群0()Q t ,随机生成n 个以量子比特位编码的染色体;

(2)对初始化种群0()Q t 中的每个个体进行一次测量,得到对应的确定解0()P t ;

(3)对各确定解进行适应度评估;

(4)记录最优个体和对应的适应度;

(5)判断计算过程是否可以结束,若满足结束条件则退出,否则继续计算;

(6)对种群0()Q t 中的每个个体实施一次测量,得到相应的确定解;

(7)对各个确定解进行适应度评估;

(8)利用量子旋转门()U t 对个体实施调整,得到新的种群(1)Q t +;

(9)记录最优个体和对应的适应度;

(10)将迭代次数t 加1,返回步骤(5)。

需要说明的是:

(1) 在种群初始化中,种群规模为N ,即有N 个量子编码的个体,每个量子个体

都设为1/

:

1212⎤⎥⎥⎥⎥⎦

(2)对种群每个个体实施一次测量是指对每个个体每个量子位进行测量,过程为随机生成一个[0,1]的随机数,如果该随机数大于等于几率幅(2ij a 或2

ij b ),则测量结果取1,否则取0。由此将量子编码的个体转换为二进制编码的个体,得到了N 个二进制编码的个体。

(3)求解适应度指利用得到的二进制编码求解函数的适应度,在数值优化问题中过程为: 先将二进制代码转换为十进制数,然后代入优化的函数中,得到其函数值即为适应度。

(4)种群更新按照式(1)的方式进行。 3.4 运行结果(图、表等)

量子遗传算法优化200代得到的进化过程图所示:

相关文档
最新文档