1 局部搜索
1.1 局部搜索
局部搜索算法是对一类算法的统称,符合其框架的算法很多,比如爬山法、模拟退火算法和禁忌搜索算法都属于局部搜索算法。尽管各个算法在优化过程中的细节存在差异,但在优化流程上呈现出很大的共性。它的基本原理是在邻近解中迭代,使目标函数逐步优化,直至不能再优化为止。
1.2 局部搜索的过程
局部搜索算法的统一框架描述为:
1) 算法从一个或若干个初始解出发。
2)在算法参数控制下由当前状态的邻域中产生若干个候选解。
3) 以某种策略在候选解中确定新的当前解。
4)伴随控制参数的调节,重复执行上述搜索过程,直至满足算法终止条件。
5) 结束搜索过程并输出优化结果。
1.3 局部搜索的几大要素
局部搜索算法主要包含五大要素:
1) 目标函数:用来判断解的优劣。
2) 邻域的定义:根据不同问题,有着不同的邻域定义。
3) 初始解的产生方法。
4) 新解的产生和接受规则。
5) 算法终止条件。
其中前两个要素的定义和算法要解决的特定问题有关,而且不同的人对同一问题可能有完全不同的定义。后三个要素定义的不同则会产生各种不同的局部搜索算法,它们的效率和最终解的质量也会有很大的差异。
2 变邻域搜索算法
2.1 什么是变邻域搜索
变邻域搜索算法(VNS)是一种改进型的局部搜索算法。它利用不同的动作构成的邻域结构进行交替搜索。
变邻域搜索算法依赖于以下事实:
1) 一个邻域结构的局部最优解不一定是另一个邻域结构的局部最优解。
2)全局最优解是所有可能邻域的局部最优解。