局部搜索算法简介

2017-12-06  本文已影响167人  迷之菌

局部搜索算法

目录:

1、数学定义

2、过程描述

3、算法简介

4、总结


1、数学定义

局部搜索是解决最优化问题的一种启发式算法。对于某些计算起来非常复杂的最优化问题,比如各种NP完全问题,要找到最优解需要的时间随问题规模呈指数增长,因此诞生了各种启发式算法来退而求其次寻找次优解,是一种近似算法(Approximate algorithms),以时间换精度的思想。局部搜索就是其中的一种方法。

对于组合问题,给出如下定义:

image

其中,S为搜索空间(解空间),其中的每一元素都是问题一个可能解。解决组合问题,即是找到一个s*

∈ S,使得目标函数f值最小。s*称为全局最优解。

对于邻域动作定义如下:

image

邻域动作是一个函数,通过这个函数,对当前解s,产生其相应的邻居解集合。例如:对于一个bool型问题,其当前解为:s = 1001,当将邻域动作定义为翻转其中一个bit时,得到的邻居解的集合N(s)={0001,1101,1011,1000},其中N(s) ∈ S。同理,当将邻域动作定义为互换相邻bit时,得到的邻居解的集合N(s)={0101,1001,1010}.

2、过程描述

局部搜索算法从一个初始解开始,通过邻域动作,产生其邻居解,判断邻居解的质量,根据某种策略,来选择邻居解,重复上述过程,至到达终止条件。不同局部搜索算法的区别就在于:邻域动作的定义和选择邻居解的策略,也是决定算法好坏的关键(集中性发散性,Intensification and Diversification)。

3、算法简介

对于优化问题相关算法有如下分类:

image

下文分别简单介绍几个局部搜索相关算法,也是基于个体的启发式算法(Single solution)。

3.1 爬山法(HILL-CLIMBING)

爬山法与Iterative Improvement的思想是一样的,区别在于前者寻找最大值,后者寻找最小值。一种完全的贪心的思想,有更好的,则选择更好的,没有更好的,则终止。

image

流程如上图所示,判断当前解s的邻居解质量,若其中有比当前解更好的解,则s = Improve(N(S)),令当前解等于邻居解中质量最好的解,重复上述过程,直至邻居解中没有更好的解为止。

缺点:很容易陷入局部极值,最终解的好坏与初始解的选择有很大关系。

3.2 模拟退火(SIMULATED ANNEALING)

为了防止陷入局部最优,模拟退火算法以一定概率接受比当前解差的解,接受差解的概率随着迭代次数的增加而下降,或者说是随着温度T的下降而下降。先看流程图,如下:

image

该算法从一个初始解开始,这个初始解可以是随机选择的,也可以是启发式方式得到的,并初始化一个温度。在每次迭代过程中,从当前解的邻居解中随机的选择一个解,若随机选择的一个邻居解比当前解的质量好,则替换当前解,若质量比当前解差,则以一定的概率接受这个差解,来替换当前解。最后更新温度T,进行下一次迭代。

3.3 禁忌搜索(TABU/TABOO SEARCH, TS)

禁忌搜索,顾名思义,禁止某些选项。

TS算法通过引入一个灵活的存储结构和相应的禁忌准则来避免暂时的迂回搜索。

举个简单的例子:一日三餐,为了寻找最好的搭配。

通过上例,引出一下几个概念:

禁忌表(tabu list):记录被禁止的属性,其值为禁忌长度(tabu tenure),该长度范围内,该属性被禁止。

解禁条件(aspiration condition):当含有禁忌属性的解,效果好于历史最好解时,我们选择这个被禁忌的解,其他情况,被禁忌的解不予考虑。

image

对于禁忌算法,每次一迭代都要更新禁忌表,禁忌表的维护决定了算法的快慢,对于禁忌长度,可以是恒定的长度,也可以是动态的长度。具体的细节,可以参见博文的图染色问题

3.4 EXPLORATIVE LOCAL SEARCH METHODS

注:此节中,伪代码中提到的 LocalSearch(s) 为简单的局部搜索,上面三种算法的任意一种。c

3.4.1 迭代局部搜索(Iterated Local Search, ILS)

在局部搜索得到的局部最优解上,加入了扰动,再重新进行局部搜索。其思想是:物以类聚,好的解之间会有一些共性,所以在局部最优解上做扰动,比随机的选择一个初始解在进行局部搜索,效果更好。

过程描述如下:

image image

其伪代码如下:

image

对与其中的接受准则:这里采用了模拟退火中的概率函数:

image

3.4.2 变邻域搜索(Variable Neighborhood Search, VNS)

过程描述如下:

image

每变换一次邻域,相对于切换了搜索的地形(landscape)。效果如下:

image

伪代码如下图:

image

4、总结

启发式算法蕴含着许多人生哲学,它虽不是数学方法,其思想更类似于人类解决问题的思想和一些人生中总结的道理,值得好好体会。最后用网上一段描述局部搜索的例子来作为总结:

为了找出地球上最高的山,一群有志气的兔子们开始想办法。

转自:
局部搜索算法
https://www.cnblogs.com/JiePro/p/Metaheuristics_0.html
学习总结:局部搜索
http://blog.sciencenet.cn/home.php?mod=space&uid=628137&do=blog&id=497041

上一篇 下一篇

猜你喜欢

热点阅读