感谢秦晓卫老师的指导!!
在大规模问题中没有足够内存去存储整个边界集合,并且很多实际问题只关注最终状态,不关心到达路径,即局部搜索。它可表征为求解最优化问题,根据目标函数找到最优状态
爬山算法的策略可以概述为
Note
搜索相邻的节点,如果相邻节点优于当前节点,则替换当前节点
因此爬山算法只能找到局部最优而无法找到全局最优,它具有以下几个问题
局部极大值
爬山算法停留在某个局部的“山头”,但是存在更高的山头
平台区
爬山算法进行到平台区时,相邻的节点代价都相等,无法继续前进
岭
若在局部存在多个节点,它们都比相邻的节点更优,但是它们之间不能转移。爬山算法会停留在它们之中的一个
为了解决这个问题,有如下的改进方案
但是不论是何种改进,都无法从根本上解决不完备的问题
模拟退火综合了爬山法和随机游走法
模拟退火法模拟了退火的过程。其核心是定义了一个随时间逐渐下降的温度,在状态转移的过程中,如果后继的状态比当前的状态差,则以一定概率选择
综合来说,状态转移被接受的概率为
模拟退火法允许了下山的过程,能跨过“势垒”,从而有机会找到全局最优解
tips
可以证明,如果模拟退火的温度下降的足够慢,退火算法可以找到全局最优解
最大化收益的模拟退火算法可以描述如下
1
循环本文作者:GBwater
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!