IG算法由是Ruiz等提出的一种新型智能优化算法,该算法主要由邻域搜索、扰动算子和接受准则3个基本部分组成。IG算法提出后,以其参数少、易实现和效率高等特点引起了众多国内外学者的关注和研究,并在阻塞流水车间调度和二次多重背包问题等领域得到了理论研究和实践应用。

————————————————

算法初始化这两个解之后(通常由启发式规则实现),从当前解出发,考虑针对所解决问题设计的局部搜索方法,若局部搜索中有更好的解则贪婪地移动到那个解,局部搜索结束之后算法会采用类似模拟退火的接受准则以一定的概率接受比最好解更差的解,然后更新最好解,再对当前解采用破坏重建过程以跳出局部最优并准备下一次的迭代过程。该算法结构非常简单,参数较少,且求解效果好。

IG算法伪代码

初始化

初始解由NEH规则生成初始解,NEH算法伪代码如下:

领域搜索

插入领域搜索和交换领域搜索结合的随机领域搜索算法(Random Neigh-borhood Search,RNS)

  1. 每次从当前解中随机地选择一个订单,随机地选择插入邻域或者交换邻域进行搜索,
  2. 前者将其从原位置移除并插入到所有可能位置中的最优位置,后者将其与所有可能位置中最优位置的订单进行交换;
  3. 如果通过邻域搜索找到的新解优于当前解,则替换当前解并且继续搜索,否则结束搜索。

破坏-重构阶段:扰动算子-避免陷入局部最优

破坏和重建过程思想

  1. 在破坏阶段,从当前解中随机选择若干订单并移除,得到两个部分序列:
  2. 由剩余订单组成的部分解、由移除订单按照移除顺序组成的部分序列;
  3. 在重建阶段,将部分序列中的订单逐一插入到部分解中所有可能位置的最优位置,从而最终得到一个扰动解。

接受准则

接受准则的作用是更新IG算法的当前解和最好解。由于扰动算子的扰动有时可能不是足够大,导致算法在后续局部搜索过程中又陷入到相同局部最优点。

基于遗传算法中的轮盘赌选择策略

在该接受准则中,需要构建一个精英表,该精英表储存了通过局部搜索找到的新解。RWS接受准则:通过局部搜索找到新解后,如果新解优于最好解,则更新最好解,且清空精英表;如果新解不在精英表中,则将新解添加到精英表的尾部;如果精英表的长度超过ω,则从表中删除最坏解;按照RWS策略从精英表中选择一个解为当前解。令精英表的长度为τ(τ≤ω),RWS策略的实现步骤如下

reference :

本文参考了CSDN博主「~晚风微凉~」的原创文章,
原文链接:https://blog.csdn.net/qq_51976555/article/details/123167039

[1]张杨, 但斌, 高华丽. 基于改进迭代贪婪算法的产品服务系统订单调度优化[J/OL]. 计算机集成制造系统, 2020, 26(12): 3435-3446.

贪婪迭代算法(IG)相关推荐

  1. 统计学习方法第二十一章作业:PageRank迭代算法、幂法、代数算法 代码实现

    PageRank迭代算法.幂法.代数算法 import numpy as npclass PageRank:def __init__(self,M,D=0.85):self.M = np.array( ...

  2. 递归算法和迭代算法_Java中没有递归的二进制搜索–迭代算法

    递归算法和迭代算法 这周的任务是用Java实现二进制搜索 ,您需要编写迭代和递归二进制搜索算法 . 在计算机科学中,二进制搜索或半间隔搜索是一种分而治之的算法,用于在排序数组中定位项目的位置. 二进制 ...

  3. BCH码和m序列参数估计(梅西迭代算法求多项式的MATLAB实现)

    关注公众号[逆向通信猿]试读更多内容!!! 伯利坎普迭代算法解决了BCH码译码中求错位多项式 σ ( x ) \sigma (x) σ(x)的问题,即用迭代算法求解方程组,极大地加快了译码速度.求最短 ...

  4. python迭代算法_Python实现简单的梯度下降法

    Python 实现简单的梯度下降法 机器学习算法常常可以归结为求解一个最优化问题,而梯度下降法就是求解最优化问题的一个方法. 梯度下降法(gradient descent)或最速下降法(steepes ...

  5. 凸优化问题中的Bregman迭代算法

    对于搞图像处理的人而言,不懂变分法,基本上,就没法读懂图像处理的一些经典文献.当然,这已经是10年之前的事情了. 现在,如果不懂得Bregman迭代算法,也就没法读懂最近几年以来发表的图像处理的前沿论 ...

  6. python牛顿迭代法_Jacobi迭代算法的Python实现详解

    import numpy as np import time 1.1 Jacobi迭代算法 def Jacobi_tensor_V2(A,b,Delta,m,n,M): start=time.perf ...

  7. C语言经典迭代算法之求解函数定积分(详解)

    文章目录 一.迭代算法 二.梯形法求解定积分 一.迭代算法 1.辗转迭代 迭代法也称辗转法,它是一种不断用旧的变量值递推得到新值的过程.迭代法是用计算机解决问题的一种基本方法,它利用计算机运算速度快. ...

  8. Python-算法思维4.0.1迭代算法

    第1关:谷角猜想 日本数学家谷角静夫在研究自然数时发现了一个奇怪现象:对于任意一个自然数 n ,若 n 为偶数,则将其除以 2 :若 n 为奇数,则将其乘以 3 ,然后再加 1.如此经过有限次运算后, ...

  9. 迭代(一):迭代算法的基本思想

    迭代法也称辗转法,是一种不断用变量的旧值推出新值的过程.它是解决问题的一种基本方法,通过让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值 ...

最新文章

  1. html5模拟keyup事件
  2. “城迷”:黑白梦与精神逃离
  3. python 读取geotiff_科学网—利用python GDAL库读写geotiff格式的遥感影像方法 - 张伟的博文...
  4. 笔记本电脑如何保养_嘉兴专业笔记本电脑喷漆加工厂价格实惠
  5. oracle 月累计,oracle 可有什么方法 统计每月累积购买人数?
  6. vscode有时候不能注释_给大伙儿盘几个提效/创意的 vscode 插件
  7. 解决eclipse启动停在一个空白窗口的问题
  8. 查看linux电脑内存free命令,Linux free命令查看内存状态
  9. 关于synergy的问题
  10. 以四小龙为首的CV企业占比七成,安防AI化已成产业趋势
  11. Electron代码内部签名流程
  12. map返回另一个对象
  13. 国内首部HTML5技术之拉米牌游戏项目实战(涉及智能AI+HTML5图形+HTML5事件模型+网络通讯)...
  14. 原创:从零开始,微信小程序新手入门宝典《一》
  15. nginx重启报找不到nginx.pid的解决方法
  16. js屏蔽鼠标左右键和键盘按键功能
  17. 二月,适合一个人去的旅行地
  18. sql sever数据库出现恢复挂起的解决办法
  19. 2.45GHz天线初始尺寸设定
  20. Eclipse快捷键大全(转载)

热门文章

  1. CH3-Android常见界面控件
  2. 【unity实践demo】unity-2D游戏官方案例【2】
  3. BackgroundService 大佬教的好
  4. 2021年中国像增强器市场趋势报告、技术动态创新及2027年市场预测
  5. 常用编码说明-ASCIIISO
  6. C语言关键字浅析-switch
  7. 利用串口服务器WiFi转RS485组网
  8. UAV在无线通信系统中的相关研究总结
  9. Firefox将html设为默认页,Firefox:如何设置Firefox为默认浏览器
  10. java框架漏洞_Spring 框架漏洞集合