一、实验原理
模拟退火算法是一种随机寻优算法,其出发点是基于物理中固体物质的退火过程与一般组合优化问题之间的相似性。模拟退火算法从某一较高初温出发,伴随温度参数的不断下降,结合概率突跳特性在解空间中随机寻找目标函数的全局最优解,即在局部最优解能概率性地跳出并最终趋于全局最优。
模拟退火算法是一种贪心算法,但是其搜索过程引入了随机因素,在迭代更新可行解时,以一定的概率来接受一个比当前解要差的解,因此有可能会跳出这个局部的最优解达到全局最优。
过程:
- 随机挑选一个单元k,并给它一个随机的位移,求出系统因此而产生的能量变化ΔEk
- 若ΔEk⩽0该位移可采纳,而变化后的系统状态可作为下次变化的起点;若ΔEk>0位移后的状态可采纳的概率为:
式中T 为温度,然后从( 0 , 1 ))区间均匀分布的随机数中挑选一个数R ,若R<Pk
则将变化后的状态作为下次的起点;否则,将变化前的状态作为下次的起点。
3) 转第(1)步继续执行,知道达到平衡状态为止。
二、实验过程及结果
1. 使用matlab优化工具箱-模拟退火算法求解内部函数Rastrigin函数的最小值
函数:
打开优化工具箱进行参数设置
图1 工具箱配置
接下来运行程序,结果如下:
图2 运行结果
图3 最优点取值
图4 绘制的图像
从结果可以看出,最优值为0.994959
2.自定义目标函数使用matlab优化工具箱求解无约束优化问题
函数如下:
工具箱参数设置:
图5 工具箱设置
结果:
图6 最优解
图7 绘图结果
可以得知,程序迭代两次求出最优解为-10
3. 自定义目标函数使用matlab优化工具箱求解约束优化问题
函数如下:
图8 工具箱配置
结果:
图9 运行结果
图10 绘图结果
从结果中可以看出,-3456左右的值满足限制条件,三个参数值分别为24 12 12
4. matlab优化工具箱的非线性最小二乘优化方法
实现及结果如下:
图11 优化结果
图12 绘图结果
从结果可知,在1.041这个点取最小值1.958
5.旅行商问题
代码如下:
目标函数:
新解生成函数:
主函数:
运行后结果如下:
图13 路线绘制
图14 方案及最优值
三、总结
本文介绍了如何利用matlab实现退火算法并且通过优化工具箱去求解一系列问题。利用优化工具箱实现了求解Rastrigin函数的最小值,无约束优化问题,约束优化问题以及非线性最小二乘优化,在之外,还通过代码完成了旅行商的路线规划问题。