最优化问题与局部搜索
最优化问题与局部搜索
最陡爬山法
基本思想:从当前节点的所有后继中选择出最优的结点
局限:当前最优的结点并不代表着全局最优,因此这里只考虑了局部最优性
随机爬山法
基本思想:从当前的结点的后继中随机选择一个比当前结点好的后继,并不要求最好,但要求好
局限性:有可能找不到最优解
首选爬山法
基本思想:反复的随机产生后继,这个后继可能比当前好,也可能比当前差,直到能够产生第一个比当前好的后继,就使用它
随机重启爬山法
基本思想:若前面的爬山结束找不到任何解,此时就重新启动,随机设置初始状态再爬一次,直到成功为止
若每次爬山成果概率为p,那需要重新爬山的期望次数为
模拟退火法
基本思想:在某些情况下如果想要找到全局最优解,需要允许往比当前状态更差的方向前进,即允许下山。且在后继的选择上与首选爬山法是一样的,因此该算法类似于首选爬山法和随机行走法
上图中核心语句已经标红,即以随机选择一个后继,若后继比当前状态好,则直接使用,若后继比当前状态差,也以一定的概率p=使用该后继,即随着时间变大,逐渐变小的概率使用该后继。此处T代表递减的温度
若T下降的足够慢(即需要更多的时间),那么该算法以概率1找到全局最优解
局部束搜索
上文提到随机重启爬山算法,若我们使用多次随机重启或者从多个随机初始状态出发,则可以有效的解决局部最优性,这里所提到的从多个随机初始状态出发,就是局部束搜索的思想
基本思想:随机选择k个初始状态,每个状态都产生自己的后继,随后从所有产生的后继中选择出k个最后的后继,如果能够找到目标节点,则停止。
局限:局部束搜索的k个状态缺乏多样性,它们会很快聚集在状态空间的某一块区域
区分:并行的K个随机重启和局部束搜索的区别
局部束搜索选择的是所有后继中的最佳的值,而并行随机重启选择的是每两个后继中选一个最优值,即并行随机重启的每个搜索是独立的,然而局部束搜索的每个搜索都是不独立的
随机束搜索
基本思想:其并不是从候选后继中选择最好的k个后继,而是随机选择k个后继状态,其中选择后继状态的概率是状态值的递增函数。即好的状态值被选择的概率大,不好的状态值被选择的概率小。
遗传算法
基本思想:同随机束搜索即好的状态值被选择的概率大,不好的状态值被选择的概率小。即选择,杂交,变异三步
选择:上图中24表示不发生冲突的对数,即越多越好,故选择它的概率值为31%
杂交:两两前后序列发生交换,如52411->48552 , 48552->52411 411->124 124->411
变异:将序列里的某些值进行变换,如5->1 7->2
连续空间中的局部搜索
连续空间的特点是:其可能具有无限多个后继,即分支因子是无限的
因此我们需要避免那些需要枚举所有后继的搜索算法
因此上述所讲的算法中
最陡爬山法,随机爬山法,局部束搜素,遗传算法都不能用于处理连续空间
首选爬山法,模拟退火法可以处理连续空间
下面将举一个实例介绍连续空间的局部搜索
连续问题离散化
求解析解
梯度上升/下降法
牛顿拉弗森法
即g(x)=0是为求梯度为0的解
上述更新公式,若g'(x)越大,则更新应越小。
在连续状态空间同样也会存在局部极大值或者局部极小值或山脊问题,高原问题,可以使用随机重启或者模拟退火法。但在高维空间中,容易迷路找不到解。