启发式算法
是搜素策略的一种,是可以利用问题自身的一些特征信息(启发式信息)
来指导搜素的过程,从而可以缩小搜素范围,提高搜素效率,尽可能逼近最优解
- 蚁群算法(ACO)
- 模拟退火算法(SA)
- 遗传算法(GA)
- 神经网络
1 蚁群算法
蚁群算法(ACO)是一种用来寻找优化路径的概率型算法
。这种算法具有分布计算、信息正反馈和启发式搜素
的特征,本质上是进化算法中的一种启发式全局优化算法
1.1 基本原理
- 蚂蚁在行走过程中会释放一种称为“
信息素
”的物质,用来标识自己的行走路径 - 在寻找食物的过程中,
根据信息素的浓度选择行走的方向
,并最终到达食物所在的地方 - 信息素会随着时间的推移而
逐渐挥发
- 由大量蚂蚁组成的蚁群集体行为便表现出一种
信息正反馈现象
:某一路径上信息素浓度越高,走过的蚂蚁越多,则后来的蚂蚁选择该路径的概率就越大
1.2 特点
并行性
:每只蚂蚁搜索的过程彼此独立,仅通过信息素进行通信信息正反馈
:在较短的路径上信息素浓度高,更多蚂蚁选择较短路径,该路径信息素浓度更高,吸引更多蚂蚁,最终找到最优路径多样性
:蚂蚁不一定选择信息素浓度高的路线
1.3 流程图
1.4 步骤
Step1:初始化参数
:对相关的7个参数进行初始化,如目标数量n、蚂蚁数量m、信息素因子α、启发函数因子β、信息素挥发因子ρ、信息素常量Q、最大迭代次数tmax;以及数据预处理,如转换为距离矩阵
Step2:构建解空间(路径)
:将各个蚂蚁随机地放置于不同的出发点,对每个蚂蚁k(k=1,2,…,m),根据轮盘赌法(比例选择法)计算其下一个访问的城市的概率,直到所有蚂蚁访问完所有的城市
Step3:更新信息素
:计算各个蚂蚁经过的路径长度
L
k
{L_{\rm{k}}}
Lk,并记录当前迭代次数中的最优解(最短路径)。同时,根据公式:新信息素=(1-ρ)*原信息素+
Δ
\Delta
Δ信息素来对各个城市连接路径上的信息素浓度进行更新
Step4:判断是否终止
:若迭代次数小于最大迭代次数,则迭代次数加1,清空蚂蚁经过路径的记录表,并返回步骤二;否则终止计算,输出最优解
Step5:输出结果
:输出最优解和最短距离,还可输出寻优过程中的相关指标,如运行时间、收敛迭代次数等
1.4.1 参数设置
1.4.2 构建解空间(路径)
1.4.3 更新信息素
1.4.4 判断是否终止
1.5 注意点
- 蚁群算法是怎么使得大量蚂蚁走最短路径的?
蚂蚁选择的最短距离表现在计算各蚂蚁访问下一个城市的概率上
- 蚂蚁行走的过程中新解是怎么产生的?
- 蚂蚁虽然会根据信息素较大的地方进行行驶,但是因为有了**
轮盘赌
**的存在,因此蚂蚁可以走那些未知的可能产生最优解的路线
- 蚂蚁虽然会根据信息素较大的地方进行行驶,但是因为有了**
1.6 优缺点
- 优点:
- 蚁群算法与其他启发式算法相比,在求解性能上,具有很强的搜素较好解的能力
- 蚁群算法是一种基于种群的进化算法,具有本质并行性,易于并行实现
- 蚁群算法很容易与多种启发式算法结合,以改善算法性能
- 缺点:
- 收敛速度慢
- 参数的设置起决定性影响
- 基本蚁群算法中理论上要求所有的蚂蚁选择同一路线,该路线即为所求的最优路线;但在实际计算中,在给定一定迭代次数的条件下很难达到这种情况
2 TSPLIB
TSPLIB
是来自各种来源和各种类型的 TSP(和相关问题)的实例库