ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

vns基本的变邻域搜索算法

2021-01-19 20:59:46  阅读:216  来源: 互联网

标签:邻域 搜索算法 utm 搜索 https vns com


论文VARIABLE NEIGHBORHOOD SEARCH
伪代码:
在这里插入图片描述
变邻域搜索算法(VNS)就是一种改进型的局部搜索算法。它利用不同的动作构成的邻域结构进行交替搜索,在集中性和疏散性之间达到很好的平衡

  1. 目标函数:用来判断解的优劣。
  2. 邻域的定义:根据不同问题,有着不同的邻域定义。
  3. 初始解的产生方法。
  4. 新解的产生和接受规则。
  5. 算法终止条件。
    主要由以下两个部分组成:
  6. VARIABLE NEIGHBORHOOD DESCENT (VND) 变邻域下降搜索
  7. SHAKING PROCEDURE 抖动过程
    在组合优化问题中,邻域一般定义为由给定转化规则对给定的问题域上每结点进行转化所得到的问题域上结点的集合,通俗一点:邻域就是指对当前解进行一个操作(可以称之为邻域动作)得到的所有解的集合。不同邻域的本质区别就在于邻域动作的不同。邻域动作是一个函数,通过这个函数,对当前解s,产生其相应的邻居解集合。
    VND其实就是一个算法框架,它的过程描述如下:
  8. 给定初始解S; 定义m个邻域,记为N_k(k = 1, 2, 3…m);i = 1。
  9. 使用邻域结构N_i(即 N_i(S))进行搜索,如果在N_i(S)里找到一个比S更优的解S′,则令S=S′, i=1
  10. 如果搜遍邻域结构N_i仍找不到比S更优的解,则令i++。
  11. 如果i≤m ,转步骤2。
  12. 输出最优解S。
    我的理解是:选择m种邻域生成策略,对于解x分别应用,生成m个邻域,从第一个邻域开始进行本地搜索,选择一个解作为全局最优解x’’,将这个邻域中的所有解x‘的集合看做是一个初始种群,利用不同的启发式算法,选择不同的交叉变异算子作为抖动,将种群中找到的最优解代替x’,如果没有比最优解更好的解,就转向下一个邻域进行搜索。
    c++的代码在第四个网址中。
    第五篇文章是我找到的精华,不同于大流的复制粘贴,其中有部分python代码,难得
    变邻域搜索一般应用于单目标搜索,因此可以将多目标处理按照第六篇文章中的方法进行处理

参考
1 https://www.cnblogs.com/dengfaheng/p/10852917.html
2 https://mp.weixin.qq.com/s/Z9-WmHl4hg7vhCyd9WDTOQ
3 https://blog.csdn.net/Rivalsx/article/details/90159859
4https://www.jianshu.com/p/057f01cd181autm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
5 https://blog.csdn.net/u011005745/article/details/108051760
6 https://wenku.baidu.com/view/b730777a0540be1e650e52ea551810a6f524c8fb.html

标签:邻域,搜索算法,utm,搜索,https,vns,com
来源: https://blog.csdn.net/qq_43561757/article/details/112101445

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有