异同点 模拟退火 遗传算法 邻域搜索_干货|变邻域搜索算法(VNS)求解TSP

482a9da0149d43dc54736bb231ddb966.png

干货 | 变邻域搜索算法(VNS)求解TSP(附C++详细代码及注释)

文章发表于微信公众号【数据魔术师】同名文章
干货 | 变邻域搜索算法(VNS)求解TSP(附C++详细代码及注释)​mp.weixin.qq.com
fb27e10fbd34789a00b6e89ad20796d4.png

上次变邻域搜索的文章发出来以后,看过的小伙伴纷纷叫好。小编大受鼓舞,连夜赶工,完成了手头上的一份关于变邻域搜索算法解TSP问题的代码。今天,就在此给大家双手奉上啦,希望大家能ENJOY哦!

代码说明

本次代码还是基于求解TSP旅行商问题的。至于什么是TSP问题,小编这实在是不想科普啦……

04158515a3db8b473244018097d68968.png

代码是基于迭代搜索那个代码魔改过来的。其实看了这么多启发式算法解TSP问题的代码。想必各位都有了一个比较清晰的认识,其实呀。之前介绍的模拟退火、遗传算法、迭代搜索和现在的变邻域等等,是十分相似滴。最大的不同在于算法框架的不同而已,像什么扰动啦,邻域动作啦。代码基本是不变的。所以大家可以多联想,多思考,学习就是一个探求事物本质的过程嘛!

至于算法框架什么的概念,大家看我们之前发的关于VNS的推文啦。

干货 | 变邻域搜索算法(Variable Neighborhood Search,VNS)超详细一看就懂​mp.weixin.qq.com
a921883e491b01b0d7b92ac3b9ba3210.png

这里就不做过多介绍了。再次贴一下伪代码。代码是基于伪代码写的。不过本文的代码只做了一个shaking的邻域,vnd的邻域做了两个。这里给大家说明一下。

00c38a1f21bebb419997f8d519451d70.png

简要说说算法vnd里面两个邻域使用的算子:

1. two_opt_swap

选定两个点,将这两个点之间的区间反转。直接上图:

ddcd5d3d44d620c6c7025b975c227316.png

two_h_opt_swap

还是要说一下,随机产生两点,塞进新排列头部。其余的按顺序往后逐个塞进去。嗯,来看图片~

d0969c46ae74d7cfa3ca3dc1eedea5d2.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值