提高邻域搜索效率

        邻域搜索是在使用元启发式算法解决组合优化问题中最为耗时的部分,大量学者通过改进数据结构或者搜索策略提升邻域搜索的效率。这里分享学术大牛vidal在解决CVRP(Capacitated vehicle routing problem)问题时使用的邻域搜索策略,主要从解的表示以及搜索框架两个方面进行了创新。

1.解的表示

        CVRP是组合优化领域的经典问题,其解通常以序列形式表示,序列中插入分隔符分割出不同路径,例如0-2-3-4-0-1-5-6-0表示共构建两条路径,第一条路径从车场出发依次访问节点2,3,4并最后回到车场,第二条路径从车场出发依次访问节点1,5,6并最后回到车场。

        但vidal为了更在搜索过程中高效地修改解的结构,评估解的质量,抛弃常规的CVRP问题的解的表示方式,而是分别使用两个与客户数量等长的序列记录节点的前驱节点和后继节点,在前驱节点序列中,第i个位置的数字表示第i个节点的前驱节点,同理,在后继节点序列中,第i个位置的数字表示第i个节点的后继节点。所以若需要表示解0-2-3-4-0-1-5-6-0,构造的前驱节点序列和后继节点序列分别为[0,0,2,3,1,5],[5,3,4,0,6,0]。

2.邻域搜索框架

        vidal所提出的邻域搜索框架和变邻域下降搜索算法(Variable Neighborhood Descent, VND)具有一定的共性。变量邻域下降法是由Mladenovic和Hansen(1997)提出的一种求解细化方法,它在求解空间中交替搜索,并系统地考虑邻域结构。设Ns = {M1(s),M2(s),…,Mk(s)}是一组不同的邻域结构。VND过程的默认版本从利用M1(s)邻域开始,根据这个结构定义的搜索策略。在M1(s)的开发完成后(即没有发现任何改进方案),开始开发M2(s)邻域。如果在M2(s)的开发结束时观察到改进,则恢复邻域开发M1(s)。否则,下一个邻域将被利用,即M3(s)邻域,以此类推。这种循环的、系统的邻居的交替过程一直持续下去,直到探索到第k个邻居结构,在现有的解决方案中没有改进,或者直到某个停止准则得到满足。(此处参考

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值