×

优化算法系列——蚁群算法

hqy hqy 发表于2025-02-27 15:37:44 浏览5 评论0百度已收录

抢沙发发表评论

1 蚁群算法原理

20世纪90年代,意大利学者Dorigo、Maniezzo等人率先提出蚁群系统的概念。蚂蚁觅食的过程中,蚂蚁会在经过的路径上释放一种物质——“信息素”。蚁群内的蚂蚁选择沿着“信息素”浓度较高的路径行走,但是也会有一定的概率选择其他路径。每只路过的蚂蚁会在其经过的路上留下“信息素”,很长时间过后,越来越多的蚂蚁选择“信息素”含量最高的路径,整个蚁群就会随之找到距离食物源的最短路径了。

正如图a所示,对于第一批探路的蚂蚁而言,因为没有信息素的影响或影响较小,所以它们选择往左或者往右的可能性是一样的。

随着觅食过程的进行,各条道路上信息素的强度开始出现变化。由于ACB比ADB要短,因此选择ACB的第一只蚂蚁先到达B点。此时,从B点向A点看,路径BCA上的信息素浓度要比BDA上的大。因此从下一时刻起,从B点到A点的蚂蚁,它们选择BCA路径的可能性大些,从而使BCA路线上的信息素进一步增强,于是依赖信息素浓度选择路径的蚂蚁逐渐偏向于选择路径ACB,如图b所示。

如图c所示,随着时间的推移,几乎所有蚂蚁都会选择路径ACB搬运食物,而我们同时也会发现,ACB路径也正是最短路径。

2 蚁群算法求解TSP问题

如果将蚁群算法应用于解决优化问题,优化问题的解空间由整个蚂蚁群体的所有路径构成,优化问题的可行解用蚂蚁的行走路径表示。

TSP问题是这样的,有一个旅行商要拜访个n城市,最后要回到最初出发的城市,每个城市只能拜访一次。TSP问题是确定旅行商访问各个城市的路径顺序,使得最终回到出发点的路径最短TSP问题的目标函数是遍历各个城市的路程和为所有路径和之中的最小值,即

其中 d(i,j) 表示城市i和城市j之间的距离。

设整个蚂蚁群体中蚂蚁的数量为m,城市数量为n,城市i与城市j之间的距离为 d(i,j),t时刻城市i与城市j连接路径上的信息素浓度为τij(t)。初始时刻,将蚂蚁放置在不同的城市里,各城市间的路径上的信息素浓度相同,设τij(0)=τ0,然后蚂蚁按照一定概率选择出发的路线。

蚂蚁的TSP策略会受到两个方面的影响,一方面是访问某城市的期望,另一方面是其他蚂蚁释放的信息素浓度。所以定义t时刻蚂蚁k从城市i转移到城市j的概率为

其中,ηij(t)为启发函数,表示蚂蚁从城市i转移到城市j的期望程度;allowk(k=1,2,…,m)为蚂蚁k待访问城市集合,开始时,allowk中有n-1个元素,即包括除了蚂蚁k出发城市的其他所有城市。随着时间的推移,蚂蚁已经经过了很多城市,allowk中的元素也越来越少,最后为空。α为信息素重要程度因子,简称信息素因子,表示信息素强度的影响。β为启发函数重要程度因子,简称启发函数因子,表明启发函数的影响。

在蚂蚁遍历各城市的过程中,蚂蚁在释放信息素的同时,各个城市间连接路径上的信息素强度也在通过挥发等方式逐渐消散。为了描述这一特征,不妨令ρ(0<ρ<1)表示信息素的挥发程度。因此,当所有蚂蚁完整走完所有城市一遍之后,各个城市间连接路径上的信息浓度为

其中,为第k只蚂蚁在城市i和城市j连接路径上释放信息素而增加的信息素浓度;△τij 为所有蚂蚁在城市i和城市j连接路径上释放信息素而增加的信息素浓度。

根据信息素更新策略的不同,有如下三种不同的蚁群模型,分别为Ant-Cycle模型、Ant-Quantity模型及Ant-Density模型。

在Ant-Cycle模型中,

在Ant-Quantity模型中,

在Ant-Density模型中,

其中,Q为信息素常数,它在一定程度上将影响算法的收敛速度Lk为第k只蚂蚁经过路径的总长度。

这三种模型的区别在于Ant-Quantity模型和Ant-Density模型利用的是局部信息,即蚂蚁完成一步后更新路径上的信息素,在Ant-Cycle模型中利用的是整体的信息,蚂蚁完成循环后将更新所有路径上的信息素。Ant-Cycle模型在求解问题时性能较好,因此一般选择Ant-Cycle模型作为蚁群算法的基本模型。

3 蚁群算法的实现

蚁群算法是一种基于解空间参数化概率分布的搜索算法。蚁群算法中解空间参数化概率模型的参数是信息素,具有随机搜索机制的人工蚂蚁通过信息素的指引,在各个城市间进行移动,从而逐步构造出问题的可行解。由此,可以得到蚁群算法的流程图如图所示。

对蚁群算法MATLAB实现感兴趣的小伙伴可以在后台回复 “蚁群算法”,就可以获得下载链接啦!

更多优化算法文章

你离精通粒子群算法可能只差这篇文章

优化算法系列之模拟退火算法(1)

优化算法系列之模拟退火算法(2)——0-1背包问题

优化算法系列之遗传算法原理

优化算法系列之遗传算法MATLAB程序设计及应用实例