文章目录
刚刚做完最优控制的大作业,总结下所用的模拟退火算法,谈谈自己的理解。
1. 问题描述
问题就是典型的下料问题。把板材切割成要求数量和规格的产品。其中,输入为板材的大小、产品的数量和大小,输出为余料率、产品的坐标。
具体算法概述参见百度百科吧模拟退火
2. 自己的理解
退火过程中的每个金属分子有能量和状态两种属性,将能量最低时的状态记做r,能量和状态的概率有对应关系,能量越高,分子状态为r的概率越低,反之在最低温度时,r状态的概率趋近于1。将组合优化问题看做金属,解看做状态,那么最优解就是能量最低的状态,同时也定义一个费用函数来表示能量,通常都用T乘某个略小于1的系数。当T值比较高时,状态变化比较活跃,当T值达到最低时,达到最优解的概率趋近于1。
第一次接触模拟退火算法,表示这的确是一个不错的方法。对于求最优解的问题,的确能节约不少计算时间。模拟退火算法的精髓就在于其将收缩和扩张动态结合在一起,得到最优解是收缩的过程,而为了避免陷入局部最优解,又得有扩张的表现。再次印证了我一直以来坚信的一个想法,大自然演化的很巧妙,如果有什么无法解决的问题,或者想有什么创新,就到大自然中去找吧,哈哈,说多了。下面具体谈谈模拟退火。
3. 算法详细讲解
3.1 算法步骤
- 任选一初始解 x 0 x_0 x0。 给定初始温度 T m a x T_{max} Tmax;
- 若在该温度达到内循环停止条件,转第3步,否则,从解邻域