局部搜索(爬山法+模拟退火+遗传算法)

写在前面

我们讨论过了无信息搜索和启发式搜索,最后讨论完这个局部搜索,这个搜索部分终于是要结束了,局部搜索不同于前两者,无信息搜索和启发式搜索都是可观察、确定的、已知的情况进行的搜索过程。局部搜索没有了那些条件。它不关心路径代价但是关注解的状态。比如八皇后问题中,不关心是怎么到目的状态的,只关心最终布局对不对,许多重要应用都有这样的性质,如作业空间调度,自动程序设计等。

局部搜索:不关心路径,从单个当前节点(而不是多条路径)出发,通常只移动到它的邻近状态。一般情况下不保留搜索路径。
虽然局部搜索算法不是系统化的,但是有两个关键优点

  • 1)通常只用常数级的内存;
  • 2)通常能在系统化算法不适用的很大或无限的(连续的)状态空间中找到合理的解;

此外,局部搜索算法对于解决纯粹的最优化问题十分有用,其目标是根据目标函数找到最佳状态。

如果存在解,最优的局部搜索算法总能找到全局最大/最小值


一:局部搜索

  1. 树搜索在边缘集合中保留未探索的替代路径(确保完备性)
  2. 局部搜索: 改进单一选项直到不能再改善为止 (no fringe!)
  3. 新的后继函数: 局部改变
  4. 通常更快,内存使用更有效 (但不完备、次优)

常见局部搜索算法有爬山法搜索、模拟退火、遗传算法等。。。。。。。。。。。。。

二:爬山法搜索

2.1 爬山法搜索(最陡上升版本)

        不断向值增加的方向移动,可以看成是一个登高的过程、在到达一个峰顶的时候结束(邻接状态下没有比它更高的)。算法不会考虑与当前状态不相邻的状态,算法不维护搜索树,当前节点的数据结构只是记录当前状态和目标函数值。

        爬山法有时被称为贪婪局部搜索,因为它只是选择邻居中状态最好的一个,而不考虑下一步怎么走。

在遇到:
1)局部极大值;2)山脊;3)高原 的情况下,爬山法都会到达无法再取得进展的地点。

设置允许侧向移动的次数,可以提高爬山法的成功率,但是相应的平均步数会增加。

2.2 随机爬山法

爬山法的变形。
随机爬山法在上山移动中随机选择下一步;被选中的概率可能随着上山移动的陡峭程度不同而不同。这种算法通常比最陡上升算法的收敛速度慢不少,但是在某些状态空间地形图上它能找到更好的解。

2.3 首选爬山法

实现了随机爬山法,随机地生成后继节点直到生成一个优于当前节点的后继。这个算法在后继节点很多的时候(比如上千个)是个好策略。

2.4 随机重启爬山法

之前的三个爬山法都是不完备的,经常会在局部极大值卡住。

随机重启爬山法(random restart hill climbing),
它通过随机生成初始状态来导引爬山法搜索,直到找到目标。
这种算法完备的概率接近1.原因:它最终会生成一个目标状态来作为初始状态。

三:模拟退火算法

        爬山法不完备,因为会碰到局部极大值
        随机走是完备的(因为完全等概率选择后续节点,不受局部极大值影响),但是效率极低。

        模拟退火算法:把爬山法和随机行走以某种方式结合,同时得到效率和完备性。

        模拟退火算法,允许下山的随机爬山法。在退火初期下山移动容易被接纳,随着时间推移下山的次数越来越少,输入的schedule决定了T的值,他是一个时间的函数。

至于这里为什么叫做“退火”,还要从物理学说起

在热力学上,退火(annealing)现象指物体逐渐降温的物理现象,温度愈低,物体的能量状态会低;够低后,液体开始冷凝与结晶,在结晶状态时,系统的能量状态最低。大自然在缓慢降温(亦即,退火)时,可“找到”最低能量状态:结晶。但是,如果过程过急过快,快速降温(亦称「淬炼」,quenching)时,会导致不是最低能态的非晶形。

这里的最低能量状态,也就是我们题目中的最优解

四:遗传算法

详细了解遗传算法https://www.jianshu.com/p/ae5157c26af9

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值