现有的各种群智能优化算法(比如遗传算法,粒子群算法,萤火虫算法等)有什么区别吗,其实质是不是相同的?
2024-07-08
[摘要] 现有的各种群智能优化算法(比如遗传算法,粒子群算法,萤火虫算法等)有什么区别吗,其实质是不是相同的,希望行家来解释。遗传算法,粒子群算法,萤火虫算法等。这三种算法我恰好都用过,也敲过代码实现过。主要对SelinaChu提出的场景识别算法(matchingpursuit,MP)中寻找最佳原

现有的各种群智能优化算法(比如遗传算法,粒子群算法,萤火虫算法等)有什么区别吗,其实质是不是相同的,希望行家来解释。

遗传算法,粒子群算法,萤火虫算法等。

这三种算法我恰好都用过,也敲过代码实现过。主要对Selina Chu 提出的场景识别算法(matching pursuit,MP)中寻找最佳原子的过程的优化,的确能极大提升搜索速度。

但是各有各的优点,这类论文非常多,只要一搜就一大堆。还有什么蚁群,鸟群,基本上是个动物名字都用上了。

搬书搬书~《粒子群算法及应用》

群体智能算法家族的两个重要成员就是粒子群算法与蚁群算法。基本思想都是模拟自然界生物群体行为来构造随机优化算法的,不同的是粒子群算法模拟鸟类群体行为,而蚁群算法模拟蚂蚁觅食原理。

1.相同点

(1)都是一类不确定算法。不确定性体现了自然界生物的生物机制,并且在求解某些特定问题方面优于确定性算法。仿生优化算法的不确定性是伴随其随机性而来的,其主要步骤含有随机因素,从而在算法的迭代过程中,事件发生与否有很大的不确定性。

(2)都是一类概率型的全局优化算法。非确定算法的优点在于算法能有更多机会求解全局最优解。

(3)都不依赖于优化问题本身的严格数学性质。在优化过程中都不依赖于优化问题本身严格数学性质(如连续性,可导性)以及目标函数和约束条件精确的数学描述。

(4)都是一种基于多个智能体的仿生优化算法。仿生优化算法中的各个智能体之间通过相互协作来更好的适应环境,表现出与环境交互的能力。

(5)都具有本质并行性。仿生优化算法的本质并行性表现在两个方面:仿生优化计算的内在并行性(inherent parallelism )和内含并行性(implicit parallelism ),这使得仿生优化算法能以较少的计算获得较大的收益。

(6)都具有突出性。仿生优化算法总目标的完成是在多个智能体个体行为的运动过程中突现出来的。

(7)都具有自组织和进化性。具有记忆功能,所有粒子都保存优解的相关知识。在不确定的复杂时代环境中,仿生优化算法可以通过自学习不断提高算法中个体的适应性。

(8)都具有稳健性。仿生优化算法的稳健性是指在不同条件和环境下算法的实用性和有效性。由于仿生优化算法不依赖于优化问题本身严格数学性质和所求问题本身的结构特征,因此用仿生优化算法求解不同问题时,只需要设计相应的评价函数(代价函数),而基本上无需修改算法的其他部分。但是对高维问题复杂问题,往往会遇到早熟收敛和收敛性能差的缺点,都无法保证收敛到最优点。

~~~~~~~~~~~~~~~~~

这是一条奇怪的分割线~~~~~~~~~~~~~~~~~~~~~~~~

进入正题~~区别!!!!!

2.不同点

(1)粒子群算法。粒子群算法是一种原理相当简单的启发式算法,与其他仿生算法相比,它所需的代码和参数较少。

粒子群算法通过当前搜索到的最优点进行共享信息,很大程度上这是一种单项信息共享机制。

粒子群算法受所求问题维数的影响较小。

粒子群算法的数学基础相对较为薄弱,目前还缺乏深刻且具有普遍意义的理论分析。在对收敛性分析方面研究还需进一步将确定性向随机性转化。

(2)蚁群算法。蚁群算法采用了正反馈机制,这是不同于其他仿生算法最为显著的一个特点。

蚁群算法中那个个体只能感知局部信息,不能直接利用全局信息。

基本蚁群算法一般需要较长的搜索时间,且容易出现停滞现象。

蚁群算法的收敛性能对初始化参数的设置较为敏感。

蚁群算法已经有了较成熟的收敛性分析方法,并且可对收敛速度进行估计。

搬书完毕~~~

写过动态的粒子群,布谷鸟和灰狼,以及一些传统的算法,也看过最近花里胡哨的麻雀算法,天牛须算法,社会蜘蛛算法等等,想说说自己的看法。

首先,这些算法从数学角度来讲,都是不一样的,每个算法都有自己的特性,也有自己适合用的地方,比如说天牛须算法适合低维度搜索,布谷鸟算法适合没有同样高度峰值点的函数搜索,粒子群算法适合低维度,图像简单的函数搜索,没有哪个算法能说好或者坏,只有合适不合适的分别。

其次,个人理解,现在动物园算法有这么多,其实追根溯源,都是最初的几个算法进行演变得来的,如果想要学习智能算法,建议从蚁群算法和粒子群算法开始学习,这两个算法基本是所有群智能算法的祖先,在之后出现的算法中,或许几年加了各种复杂的运算,积分,微分,二阶震荡因子,或者混沌,量子力学等等,但是整体的思想还是在这两个算法之上。



最近又重新把之前的项目拿出来,又过了一遍,想了想,应该还是有不同点的,比如遗传算法比较适合二进制,因为它本身的物理意义就是用基因,或者说10这样的数字来表示,而粒子群这样的算法更倾向于模拟量,也就是连续变化的量,这算是一个简单的区分。


另外本题目问的是,这些算法的区别,整体还是有一些区别的,但是现在存在的问题大于优点,很多情况我们只是希望能够实线全局优化,但并不是必须要全局优化,这就导致使用这个方法似乎并不是必要的,另一点是,这类算法普遍没有稳定性证明,比如粒子群算法为例,目前很少有人能够确定下来一个普适性的收敛证明,每个问题里面的三个基础参数值是不同的,当社会学系银子过大,极有可能造成系统不能收敛,但是,科学研究不能用“过大”这样的字眼,这是不严谨的,而是应该给出一个,在什么问题下的什么样的值是大,什么样的值是小,小于哪一个值能够保证结果收敛。


相较于这类算法,在机器学习这类问题中普遍使用的梯度下降法就相当友好了,已经有很多人证明了梯度下降法的收敛性,虽然只能实线局部最优,但是对于工程上来说,这已经够用了。


所以,倒也不至于说粒子群,蚁群这类算法没有意义,只是很多问题并没有一定要使用,实际应用的必须性还是较低。

实质没啥不同,本质就是

1:种群初始化

2:种群更新

3问题所对应的适应度函数构建

不过近两年出现大量的文章,改进也是从上述三方面进行排列组合+函数测试+各种对比指标(唯一目的就是吹嘘自己的算法有多么多么好 ?♂?,认真复现你会发现百分之八十的文章达不到实际效果,)+大组里面的相关方向应用。

知网里面有几个老师常年发这块的文章。

确实是一个近似解决方案,极其容易入门,四年前就接触这块了

读博+好的前沿项目赋能

就业+往运筹学那边靠吧,不然进大厂的概率为百分之十

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

欢迎与我交流!白菜价的code!更多内容必里必里同名

所谓群体智能优化算法,本质上都类似,大同小异,很难又让人惊艳的,一般都是:

1.种群初始化

2.种群更新

3.适应度函数构建

等等


平台注册入口