更多精彩尽在微信公众号【程序猿声】

变邻域搜索算法(Variable Neighborhood Search,VNS)一看就懂的解析
00 目录
- 局部搜索再次科普
- 变邻域搜索
- 造轮子写代码
01 局部搜索科普三连
虽然之前做的很多篇启发式的算法都有跟大家提过局部搜索这个概念,为了加深大家的印象,在变邻域主角登场之前还是给大家科普一下相关概念。热热身嘛~
1.1 局部搜索是什么玩意儿?
官方一点:局部搜索是解决最优化问题的一种启发式算法。对于某些计算起来非常复杂的最优化问题,比如各种NP完全问题,要找到最优解需要的时间随问题规模呈指数增长,因此诞生了各种启发式算法来退而求其次寻找次优解,是一种近似算法(Approximate algorithms),以时间换精度的思想。局部搜索就是其中的一种方法。
通俗一点:局部搜索算法是对一类算法的统称,符合其框架的算法很多,比如之前公众号推文中介绍的爬山法、模拟退火法和禁忌搜索算法都属于局部搜索算法。尽管各个算法在优化过程中的细节存在差异,但在优化流程上呈现出很大的共性。
它的基本原理是在临近解中迭代,使目标函数逐步优化,直至不能再优化为止。
1.2 局部搜索的过程
我们可以将局部搜索算法的统一框架描述为:
- 算法从一个或若干个初始解出发。
- 在算法参数控制下由当前状态的邻域中产生

变邻域搜索算法(VNS)是一种改进的局部搜索算法,通过交替使用不同的邻域结构来平衡集中性和疏散性。VNS包括variable neighborhood descent (VND)和shaking procedure两部分,适用于解决最优化问题。本文从局部搜索的基本概念出发,详细解释了VNS的工作原理,并提供了C++代码示例。
最低0.47元/天 解锁文章
1928

被折叠的 条评论
为什么被折叠?



