说明:

1. 五种启发式算法包括:遗传算法,粒子群算法,蚁群算法,禁忌搜索,模拟退火
之前的博文中已经写了五种启发式算法的偏应用的总结,避开背景知识和代码,已经尝试从问题和解的角度去总结五种算法的流程和思路
其中:
遗传算法,粒子群算法,模拟退火 附带的示例是求解函数极值
蚁群算法,禁忌搜索 附带的示例是求解TSP

遗传算法(GA):      遗传算法(GA)总结:算法流程,实例,思路
粒子群算法(PSO):粒子群算法(PSO)总结:算法流程,实例,思路
蚁群算法(ACO):   蚁群算法(ACO)总结:算法流程,实例,思路
禁忌搜索(TS):      禁忌搜索(TS)总结:算法流程,实例,思路
模拟退火(SA):      模拟退火(SA)总结:算法流程,实例,思路

2. 不同的启发式算法原本就是针对不同的问题而发明的,各种方法有各自的适用范围,原则上应该是根据具体问题选择算法,脱离具体问题而单独对比算法不太合理。但是对比总结有助于理清各个算法的思路,所以本文还是给出简要对比

3. 各种启发式方法都存在各种改进版,都在不断的更新完善,这里只是根据个人的理解,总结基础版的五种启发式方法

以下是根据个人理解的对比总结

注意:各种算法里的每种操作都可以自由设计,而且设计方式不固定,所以对比总结里的某些方面不一定完全准确,这里仍然是尝试从问题和解的角度去总结

1.遗传算法

2.粒子群算法

3.蚁群算法

4.禁忌搜索

5.模拟退火

群体/单体

群体

群体

群体

单体

单体

使用问题范围

离散优化

连续优化

连续优化

离散优化

离散优化

离散优化

连续优化

新解的产生方式

(选择)

交叉

变异

速度更新公式产生增量,增量添加到当前解上

依据信息素和城市间距,以概率产生新解

构造邻域,邻域中选取

构造偏移量,偏移量加到当前解上

逐步靠近优解

(优解对于新解的产生过程的引导性)

选择过程中的轮盘赌,更优的解保留的几率更大

群体最优解、单体最优解都影响每个解的更新过程

信息素越浓、城市间距越短的路径被选中的概率越大

选用最优解产生领域

更优的解一定接受

劣解概率接受

(跳出局部最优)

交叉变异都会产生新解,种群更新时采用轮盘赌,劣解有几率保留

解的更新过程中产生的新解会覆盖群体最优解、单体最优解的周边解空间

信息素不浓、城市间距不短的路径也有概率被选中

只能取和禁忌表中保存的解不相同的解,有几率取到次优解或劣解

Metropolis准则,以概率接受劣解

算法中的随机性

1.初始解

2.选择环节

某个解是否保留

3.交叉环节

某个基因是否用于交叉,交叉位置

4.变异环节

某个基因是否变异,变异位置

1.初始解

2.初始速度

3.速度更新公式里的随机权重

蚂蚁在某城市选择下一个要去的城市的概率

初始解

1.初始解

2.产生的新解

3.接受劣解时概率

核心思路

(思想内涵)

(算法特色)

选择环节保留优解,交叉变异环节产生新解

解的更新同时利用全局最优解和局部最优解信息

反馈机制,且搜索机制深入到具体问题层面

通过禁忌表避开已经搜索到的最优解,迫使算法搜索新的最优解

搜索到的更好的解一定接受,搜索到的更差的解以概率接受

五种典型启发式算法对比总结相关推荐

  1. 五种常见启发式算法求解TSP问题-总结篇

    1. 前言 本文将总结先前设计的五个启发式算法的求解效果,算法文章如下表: 智能优化算法类别 启发式算法求解TSP问题系列博文 进化算法 遗传算法求解TSP问题 仿人智能优化算法 禁忌搜索算法求解TS ...

  2. 三种典型启发式算法(禁忌搜索,模拟退火,遗传算法)

    启发式算法 启发式算法:用来求解非常好的可行解,但不一定是最优解:该类算法可处理非常大的问题,可用来解决NP hard问题,是一种成熟的迭代算法,每次迭代结果可能导致比先前最佳解更好的新解,当算法经过 ...

  3. 高级IO--1 ---(五种典型IO,阻塞IO,非阻塞IO,信号驱动IO,异步IO, IO多路转接)

    高级IO: 五种典型IO: 阻塞IO/非阻塞IO/信号驱动IO/异步IO/IO多路转接 IO多路转接模型:select/poll/epoll 五种典型IO 阻塞IO IO操作的流程:等待IO操作条件具 ...

  4. 递推算法-五种典型的递推关系

    递推算法 递推法是一种重要的数学方法,在数学的各个领域中都有广泛的运用,也是计算机用于数值计算的一个重要算法.这种算法特点是:一个问题的求解需一系列的计算,在已知条件和所求问题之间总存在着某种相互联系 ...

  5. 五种典型的递推关系——一步一步算法篇

    五种典型的递推关系 1.Fibonacci数列 在所有的递推关系中,Fibonacci数列应该是最为大家所熟悉的.在最基础的程序设计语言Logo语言中,就有很多这类的题目.而在较为复杂的Basic.P ...

  6. 五种典型开发周期模型(瀑布、V、原型化、螺旋、迭代)

    1.迭代模型     迭代模型,摒弃了传统的需求分析,设计,编码,测试的流程,而是将整个生命周期变成若干个冲刺(Sprint)阶段,而每一个阶段都是由以上若干或者全部传统的流程组成,在每一个阶段中,都 ...

  7. 程序员要避免的五种程序注释方式

    导读:注释,本是提高代码可读性.让其他开发人员更快速地理解程序的,然而一些无意义的注释会让人郁闷至极.本文是国外网站GreaterGeek上的一篇文章,作者通过分类介绍了五种一定要避免的程序注释方式. ...

  8. 千万要避免的五种程序注释方式

    你是否有过复查程序时发现有些注释毫无用处?程序注释是为了提高代码的可读性,为了让原作者以外的其他开发人员更容易理解这段程序. 我把这些让人郁闷的注释方式归为了五类,同时把写出这些注释的程序员也归为了五 ...

  9. 漫谈分子动力学计算热导率的五种方法

    关注 Mr.material,\color{Violet} \rm Mr.material\ ,Mr.material , 更\color{red}{更}更多\color{blue}{多}多精\col ...

最新文章

  1. Python趣味打怪:60秒学会一个例子,147段简单代码助你从入门到大师 | 中文资源...
  2. R语言可视化、编写自定义函数可视化水平排序条形图(horizontal bar plot)、自定义图像布局模仿经济学人杂志可视化效果、右侧添加标签数值图像方框、自定义背景色、水平条形图中间线条等
  3. 通过域名,直接访问到网站主页
  4. Vue2.x-01点击按钮弹出子Vue组件,遍历JSON展示数据
  5. nginx四层端口转发
  6. Linux中DD命令详解
  7. halcon gen_region_hline 绘制霍夫变换提取直线
  8. 使用路标的Scala和Java的Twitter REST API
  9. 源码|详解分布式事务之 Seata-Client 原理及流程
  10. C#算法设计查找篇之02-二分查找
  11. 使用静态库的一些问题 -all_load
  12. fread函数在C语言中的用法,c语言fread函数的用法
  13. Progressive GAN
  14. 在WordPress中重新排序博客文章的4种简单方法(循序渐进)
  15. ERROR: 错误 1406。未能将值 写入项 \Software\Classes\CLSID\{4B75FA16-56AF-4DC4-941D-F84B279DDB15}\LocalServer3
  16. 彩虹色MD主题1 for Sublime Text Typora EmEditor EverEdit
  17. vue通过子组件修改父组件prop的几种实现方式
  18. 百万点赞怎么来?Python批量制作抖音的卡点视频原来这么简单!
  19. linux 查找出包含某个字符串的所有文件的方法详解
  20. linux静默安装oracle11g数据库教程

热门文章

  1. 了解Hybird和小程序和react-native的技术架构
  2. griddata - 插入二维或三维散点数据(绘制等值线图,应力应变云图,像素点图)
  3. 用本地光盘建yum仓库安装Gcc
  4. mark一波——度量学习(metric learning)
  5. 碳中和专题最新更新:碳排放交易2013-2020年、省级碳排放效率
  6. 基于Diffusion Model的数据增强方法应用——毕业设计 其三
  7. 24.模拟多时钟定时器
  8. 无法建立 SSL 连接,无法连接到raw.githubusercontent.com
  9. 英语四级作文计算机,英语四级作文范文:科技与现代生活
  10. “分手后”“在一起”的第三天