优化算法-爬山法和模拟退火
1.随机搜索算法
随机搜索不是一种好的算法,但是它是爬山法和模拟退火的基础,可以帮助我们理解爬山法和模拟退火法。现在简单介绍一下随机搜索算法,随机确定许多个解,然后选择使目标函数最小的那个解,当然这个算法的结果不是非常好,其效果和随机确定的解的个数也有关系,后面实现的python算法就是随机确定1000个解。
2.爬山法引出模拟退火
先简单介绍一下爬山法,爬山发是一种贪心算法,该算法每次从当前解的临近的解集中寻找一个最优解作为当前解,直到达到一个局部最优解。爬山算法实现很简单,其主要缺点是会陷入局部最优解,而不一定能搜索到全局最优解。解决陷入局部最优解的一种方法就是随机重复爬山法,即让爬山法以多个随机生成的初始解为起点运行,求出多个局部最优解,希望在这些局部最优解中有全局最优解或者有一个接近全集最优解的局部最优解。而模拟退火也是一种贪心算法,但和爬山法不一样的是爬山法是完完
全全的贪心算法,每次都鼠目寸光的选择一个当前最优解,因此只能搜索到局部的最优值,但模拟退火在搜索中引入了随机因素,所以在一定程度上会避免陷入局部最小值。
3.模拟退火的原理
退火指的是将合金加热后再慢慢冷却的过程,大量的原子受热而向周围跳跃,然而又逐渐稳定到一个低能阶的状态。模拟退火算法以一定的概率来接受一个比当前解要差的解,因此有可能会跳出这个局部的最优解,达到全局的最优解。模拟退火算法从某一较高的温度T出发,这个温度称为初始温度,伴随着温度参数T的不断下降,算法中的解趋于稳定,但是,可能这样的稳定解是一个局部最优解,此时,模拟退火算法中会以一定的概率跳出这样的局部最优解,以寻找目标函数的全局最优解。
模拟退火算法的描述:
如果移动后得到更优的解,那么新的解就会成为当前的解。如果移动后得到更差的解,那么新的解就会以一定概率P成为当前的解。p的求解公式为: