模拟退火算法的数学建模总结——摘自《matlab在数学建模中的应用(第二版)》

退火和优化问题的关系:

由物理学可知,温度是分子热运动强弱的度量,但分子运动又有很大的随机性,即时存在涨落的,因此高温物体比低温物体中的单个分子更容易调到能量比较高的位置上。在模拟退火算法中,控制参数高的时候,接收函数相对较大,即便产生了一个目标函数值比当前解更大的新解也有可能被接受,而温度低时则相反,即便产生了一个目标函数值比当前解更大的新解也有可能被接受,而温度低时则相反。那么由此说来,在高温时新产生的并且被接受了的目标函数值大的解得数量,与新产生而又被接受了的目标函数值小的解得数量的比值,要比低温时的高,因此统计下来,低温时的平均目标函数值会比高温的平均值低,这正联系着固体退货时高温内能大,低温内能小的情况。

ASA程序包的作者在其1993年发表的一篇论文中说道:模拟退火算法提供了这样一种优化技术:

(1)它能够处理具有任意程度的非线性、不连续性、随机性的目标函数;

(2)目标函数可以具有任意的边界条件和约束;

(3)比起其他的非线性优化方法,SA的编程工作量小,且易于实现;

(4)统计上可以保证找到全局最优解。

但同时SA也存在以下一些不足:
(1)找到最优解要耗费非常多的时间,特别是当使用“标准”的Boltzmann采样技术时(即标准的接收函数exp(deltaE/kt))

(2)相对于其他一些技术对某一个具体问题的求解需要更困难的参数调整;

(3)忍受“过度炒作”和时髦化的滥用,导致结果的误解。

(4)使用不当(冷却进度表制定不合适,降温过快),导致模拟退火SA变成了模拟淬火SQ,而SQ是无法从统计学上保证找到全局最优解的。

SA有很强的全局寻优能力,但是,SA非常需要调整参数的耐心和经验。参数调整过程中很重要的一点就是查看SA程序的输出,了解被调整的(冷却进度表中的)参数是否合理地关联着目标函数值的变化。这可以通过详细化SA的输出实现,监视冷却过程中个温度被接受的值和目标函数值。在求解的开始阶段应确保SA具有强的跳跃性,使它能够访问到求解空间的各个区域,最终阶段则应保证被接受的新解保持在全局最优附近(即差解得接受概率很小),以待逐渐探索到全局最优,而中间阶段相比起来需要更多的调整,它应使开始和最终阶段的平滑过渡,并能够进行大量的定期抽样,以检验解空间的不同区域。这一过程是艰苦的。所以,如果对待求解的目标函数有清楚的了解,那么用一种“更针对性”(抛物线型用牛顿梯度法)的算法是有效的;但如果对目标系统的结构没有多少了解,特别是其中还有复杂的约束,而又需要找到全局最优的时候,那么SA是一个不错的选择。时尚,世界上大约也没有什么算法可以不加调整或很少调整地求解任一非线性问题,这一点和准线性问题有很大区别。

猜你喜欢

转载自blog.csdn.net/Zjhao666/article/details/81533970