目录
摘要
这篇博客是自身用作记录学习智能计算时的一些经典算法的原理、特点及实际应用,对于各个优化算法有一个简单的概述,后续根据学习进度会补充内容进去(如其他算法及Python代码实例),学习书籍是《计算智能》——张军这本书,下载链接:Computational-intelligence/计算智能 张军(上).pdf at main · czmgzsy/Computational-intelligence · GitHub
1. 遗传算法(GA)
1.1 算法原理
达尔文的进化论提出自然界“自然选择”和“优胜略汰”的进化规律,而遗传算法正是通过模拟自然界中生物遗传进化的过程,对优化问题(比较经典的就是路径优化问题)的最优解进行搜索,算法引入了类似自然进化中选择、交配以及变异等算子,其搜索全局最优的过程是一个不断迭代的过程(每一次迭代相当于生物进化中的一次循环),直到满足算法的终止条件为止
对照关系如表1.1。

1.2 算法流程
遗传算法的实现主要包含了以下七个重要的问题:染色体编码->群体初始化->适应值评价->选择种群->种群交配->种群变异->算法流程。
其中选择算子、交配算子和变异算子的具体实现与算法搜索全局最优解的效果息息相关,要提高遗传算法性能,这几点的数据必须处理到位。
具体流程图请参考如下图1.2

1.3 优缺点
优点:
- 能够求出优化问题的全局最优解
- 优化结果与初始条件无关
- 算法独立于求解域
- 具有较强的鲁棒性(在异常和危险的情况下系统的生存能力,这里就是指稳定性强)
- 适合于求解复杂的优化问题
- 应用较为广泛
缺点:
- 收敛速度慢
- 局部搜索能力差
- 控制变量多
- 无缺点的终止准则
正是因为这样,现在提出了很多混合遗传算法,各取其优,有一些成功实例,文献可自行检索
如表1.3。

1.4 实际应用
大量实际工程系统的设计和优化问题可以转化为函数优化问题进行解决、实际生活中存在许多调度和规划问题,如作业调度问题、旅行商问题、布局问题等等,一些例子如下表1.4。

当然,遗传算法的应用范围并不局限于函数优化和组合优化问题,还可以广泛应用在图像处理和模式识别、机器学习、智能控制、人工生命、自动程序设计等重要领域,如下表1.5。

2. 蚁群优化算法(ACO)
2.1 算法原理
蚂蚁在觅食过程中能够在其经过的路上留下一种称之为信息素的物质,并在觅食过程中能够感知这些物质的强度,作为指导自己行为的方向,他们一定是朝着该物质强度高的方向移动,因此大量蚂蚁组成的集体觅食就表现为一种对信息素正反馈的现象。
并且信息素会随着时间的流逝不断减弱,因为长路径需要行驶时间长,显然短路径的信息素会越来越多,这是一个正反馈的过程,同时,某一条路径越短,路径上经过的蚂蚁越多,其信息素遗留的也就越多,信息素的浓度也就越高,蚂蚁选择这条路径的概率也就越大,这也是一个正反馈过程,从而逼近了最优路径,找到最优路径。当蚂蚁从食物源走到蚁穴,或者从蚁穴走到食物的地方,都会在经过的路上释放信息素,蚂蚁可以感觉出路径上信息素浓度的大小,并且以较高的概率选择信息素浓度较高的路径。
如图2.1

对照表如下:

2.2 算法流程

2.3 优缺点
优点:
-
正反馈机制:蚁群算法采用正反馈机制,使得搜索过程不断收敛,最终逼近最优解。
-
分布式计算:算法的搜索过程采用分布式计算方式,多个个体同时进行并行计算,大大提高了算法的计算能力和运行效率。
-
全局搜索能力:启发式的概率搜索方式不容易陷入局部最优,易于寻找到全局最优解。
-
自组织和鲁棒性:蚁群算法是一种自组织的算法,具有较强的鲁棒性,对初始路线的要求不高,参数设置简单,易于应用到组合优化问题的求解。
缺点:
-
收敛速度慢:蚁群算法初期信息素均等,导致算法初期收敛速度较慢。
-
局部最优问题:由于正反馈特性,如果算法开始得到的较优解为次优解,那么正反馈会使次优解很快占据优势,使算法陷入局部最优,且难以跳出。
-
优化能力问题:蚁群算法中参数众多并且具有一定的关联性,不恰当的初始参数会减弱算法的寻优能力
2.4 实际应用
如下图



3. 粒子群优化算法(PSO)
3.1 算法原理
PSO模拟的是鸟群的捕食行为。设想这样一个场景:一群鸟在随机搜索食物。在这个区域里只有一块食物。所有的鸟都不知道食物在那里。但是他们知道当前的位置离食物还有多远。那么找到食物的最优策略是什么呢。最简单有效的就是搜寻目前离食物最近的鸟的周围区域。
鸟群在整个搜寻的过程中,通过相互传递各自的信息,让其他的鸟知道自己的位置,通过这样的协作,来判断自己找到的是不是最优解,同时也将最优解的信息传递给整个鸟群,最终,整个鸟群都能聚集在食物源周围,即找到了最优解。
PSO中,每个优化问题的解都是搜索空间中的一只鸟。我们称之为“粒子”。所有的粒子都有一个由被优化的函数决定的适应值(fitness value),每个粒子还有一个速度决定他们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。
PSO 初始化为一群随机粒子(随机解)。然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个"极值"来更新自己。第一个就是粒子本身所找到的最优解,这个解叫做个体极值pBest。另一个极值是整个种群目前找到的最优解,这个极值是全局极值gBest。另外也可以不用整个种群而只是用其中一部分作为粒子的邻居,那么在所有邻居中的极值就是局部极值


3.2 算法流程

3.3 优缺点
优点:
- 容易实现和调试
- 不需要计算梯度信息
- 适用于求解非线性、非凸、高维度函数优化问题
- 全局收敛性良好
缺点:
- 易陷入局部最优
- 搜索速度不太稳定,有时会出现迭代次数较多的情况
关于PSO的研究内容和改进方向,如下图

3.4 实际应用


