一.介绍模拟退火算法
模拟退火算法是根据退火原理尽量找到最优解的一种方法。
计算机在寻找最优解的时候,通常会大量搜索和逼近,以随机小量的扰动不断接近最优解。
而模拟退火算法则是在此基础上加入了退火的过程:温度较高时容易发生突变,即使扰动后的函数值相对于上一个函数值远离了最优解也会有大概率接受这个新解;温度较低时不容易发生突变,如果扰动后的函数值相对于上一个函数值远离了最优解则只有极小可能接受这个新解。
模拟退火算法的5个要素:
1.初始温度
2.结束温度
3.衰减系数
4.马尔科夫链长
5.初始解
这里简单介绍一下马尔科夫链的概念:
有一个状态序列为X1,X2,X3...... 每一个Xt都仅仅取决于前一项X(t-1),这就被称为马尔科夫模型。实际上,一般的马尔科夫链都有其状态转移矩阵,我们可以举个例子:
在模拟退火算法中,马尔科夫链的长度决定着每一个温度下扰动的次数,也可以理解为是迭代的次数,一次完整的马尔科夫链扰动走完之后,以衰减系数降低温度(将温度乘以衰减系数),再重复进行马尔科夫扰动,直到温度达到结束时的目标温度,完成退火,找到全局的最优解。这里退火的过程是外层循环,扰动的过程是内层循环。
模拟退火算法相对于一般的扰动逼近的优点在于接受新解的方式不同,模拟退火算法遵循的是Metropolos原则,具体计算方式如下:
从T很大,基本接受远离的新解;到T很小,基本不接受远离的新解。
这是模拟退火算法的精髓。
二.模拟退火算法的缺点
1.马尔可夫链长的取定
马尔科夫链取得太长会导致计算量增大,取得太短又会导致搜索不充分。
2.衰减系数的确定
衰减系数太大会导致计算量增大,衰减系数太小会导致退火过程过于迅速,难以跳出局部最优解。
3.初始值的确定
这个很容易理解,因为扰动量并不会很大,所以初始值如果与最优值相差太大,那么很有可能检索不到全局最优解。
这就是本人对模拟退火算法的理解,希望能够对你有所帮助!