蚁群算法(蚁群算法论文)

几种蚁群算法介绍

最早的蚁群算法,其在小规模TSP中性能尚可,再大规模TSP问题中性能下降,容易停滞。其解决旅行商问题(TSP)过程大致如下:

在初始时刻,m只蚂蚁被随机的放到城市中,在各条路径上的信息素初始值相等裂颤。

蚁群算法(蚁群算法论文)

蚂蚁按照随机比例规则从允许的城市中选择下一个城市:

τ为信息素,η 为启发式因子,a_k 为下一步被允许城市的集合。

使用禁忌表记录蚂蚁走过的城市,不允许蚂蚁选择已经访问过的城市。

所有蚂蚁完成一次周游后,计算每只蚂蚁的路径长度,保存最短路径长度。

更新每个城市信亮源坦息素:

τ=(1−ρ)τ+∑Δτ, 0≤ρ≤1

Δτ=1/d

由上可知,先挥发信息素,再增加信息素。其中d为路径距离,路径越短,信息素增加越多。∑Δτ表示所有本次觅食过程中所有经过此城市的觅食成功的路线的信息素累加。

清空禁忌表,开始下一次周游。

对算法每次循环之后给予最优路径额外的敬桐信息素。

对于普通路径中的每个城市:

τ(t+1)=(1−ρ)τ(t)+∑Δτ

对于最优路径中的每个城市:

τ(t+1)=(1−ρ)τ(t)+∑Δτ+eΔτ^(bs)

Δτ^(bs)=1/L

其中L代表最优路径长度,e是一个参数,表示权值大小。

目前解决TSP问题最好的蚁群算法之一,在蚂蚁系统的基础上进行了如下更改:

对于一般城市: τ(t+1)=(1−ρ)τ(t)

对于最优路径上的城市:τ(t+1)=(1−ρ)τ(t)+∑Δτ

求生物学 蚁群算法

蚁群算法(ant colony optimization, ACO),又称蚂蚁算法,是一种用来在图中寻找优化路径的机率型算法。它由Marco Dorigo于1992年在他的博士论文中提出,其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。蚁群算法是一种模拟进化算法,初步的研究表明该算法具有许多优良的性质.针对PID控制器参数优化设计问题,将蚁群算法设计的结果与遗传算法设计的结果进行蚁群算法了比较,数值仿真结果表明,蚁群算法具有一种新的模拟进化优化方法的有效性和应用价值。

下面详细说型祥明:

1、范围:

蚂蚁观察到的范围是一个方格世界,蚂蚁有一个参数为速度半径(一般是3),那么它能观察到的范围就是3*3个方格世界,并且能移动的距离也在这个范围之内。

2、环境:

蚂蚁所在的环境是一个虚拟的世界,其中有障碍物,有别的蚂蚁,还有信息素,信息素有两种,一种是找到食物的蚂蚁洒下的食物信息素高团,一种是找到窝的蚂蚁洒下的窝的信息素。每个蚂蚁都仅仅能感知它范围内的环境信息。环境以一定的速率让信息素消失。

3、觅食规则:

在每只蚂蚁能感知的范围内寻找是否有食物,如果有就直接过去。否则看是否有信息素,并且比较在能感知的范围内哪一点的信息素最多,这样,它就朝信卜念搏息素多的地方走,并且每只蚂蚁都会以小概率犯错误,从而并不是往信息素最多的点移动。蚂蚁找窝的规则和上面一样,只不过它对窝的信息素做出反应,而对食物信息素没反应。

4、移动规则:

每只蚂蚁都朝向信息素最多的方向移,并且,当周围没有信息素指引的时候,蚂蚁会按照自己原来运动的方向惯性的运动下去,并且,在运动的方向有一个随机的小的扰动。为蚁群算法了防止蚂蚁原地转圈,它会记住最近刚走过了哪些点,如果发现要走的下一点已经在最近走过了,它就会尽量避开。

5、避障规则:

如果蚂蚁要移动的方向有障碍物挡住,它会随机的选择另一个方向,并且有信息素指引的话,它会按照觅食的规则行为。

6、播撒信息素规则:

每只蚂蚁在刚找到食物或者窝的时候撒发的信息素最多,并随着它走远的距离,播撒的信息素越来越少。

根据这几条规则,蚂蚁之间并没有直接的关系,但是每只蚂蚁都和环境发生交互,而通过信息素这个纽带,实际上把各个蚂蚁之间关联起来了。比如,当一只蚂蚁找到了食物,它并没有直接告诉其它蚂蚁这儿有食物,而是向环境播撒信息素,当其它的蚂蚁经过它附近的时候,就会感觉到信息素的存在,进而根据信息素的指引找到了食物。

蚁群算法

在蚂蚁种群中,蚂蚁间相互交流的方式是通过一种名为信息素的物质,它可以是蚂蚁行动时留下的物质,可以被其他蚂蚁所感知。

在寻找食物的过程中,如左图所示,三角形ABC是等边三角形,蚂蚁窝在A点,C点有食物,A点的两只蚂蚁选择了两条路线前往C点,一条为AB-BC,另一条A-C,当走远路的蚂蚁,到达C点时,延AC边上的蚂姿渣蚁已经走了一个来回,路径上信息素如右图所示。后到会感知到边AC上的信息素浓度更高一些,于是他也会册枣选择AC来行走,因为相同时间内,信息素浓度更高的说明,路程更短。

蚁群算法便是基于这样的一个思想来解决如TSP等优化问题,一下介绍便是拿TSP问题来介绍蚁群算法

信息素用符号τ来表示,如下式,下标i,j表示从城市i到城市j这条道路上的信息素,上标0表示这是初次计算,也就是初始信息素,初始信息素都设置为1,或者一个较小的常数,表示每条道路上的信息素都相等,这样通过运算蚂蚁爬向各个城市的概率都相等

基于信息素,每只蚂蚁都有一个选择道路的公式,如下式

其中

当所有蚂蚁完成一次周游后,各个路径上的信息迹姿悄素进行一次更新

蚁群算法及其应用实例

       蚁群算悄腊法(ant colony optimization, ACO),又称蚂蚁算法,是一种对自然界蚂蚁的寻径方式进行模拟而得到的一种仿生算法,是一种用来在图中寻找优化路径的机率型算法。

       蚂蚁在运动过程中,可以在行走的路径上留下信息素,后来的蚂蚁可以感知到信息素的存在,信息素浓度越高的路径越容易被后来的蚂蚁选择,从而形成一种正反馈现颂正象。

       它能够求出从原点出发,经过若干个给定的需求点,最终返回原点的最短路径。这也就是著名的旅行商问题(Traveling Saleman Problem,TSP)。

       若蚂蚁从A点出发到D点觅食,它可以随机从ABD或ACD中选择一条路。假设初始时为每条路分配一只蚂蚁,每个时间单位行走一步,则经过8个时间单位后,情形如下图所示:ABD路线的蚂蚁到达D点,ACD路线的蚂蚁到达C点。

       那么,再过8个时间单位,很容易可以得到下列情形:ABD路线的蚂蚁回到A点,ACD路线的蚂蚁到达D点。

α 代表信息素量对是否选择当前路径的影响程度,反映了蚁群在路径搜索中随机性因素作用野运悔的强度。

α 越大,蚂蚁选择以前走过的路径的可能性越大,搜索的随机性就会减弱。

α 过小,会导致蚁群搜索过早陷入局部最优,取值范围通常为[1,4]。

β 反映了启发式信息在指导蚁群搜索中的相对重要程度,蚁群寻优过程中先验性、确定性因素作用的强度。

β 过大,虽然收敛速度加快,但是易陷入局部最优。

β 过小,蚁群易陷入纯粹的随机搜索,很难找到最优解。通常取[0,5]。

ρ 反映了信息素的蒸发程度,相反,1-ρ 表示信息素的保留水平

ρ 过大,信息素会发过快,容易导致最优路径被排除。

ρ 过小,各路径上信息素含量差别过小,以前搜索过的路径被在此选择的可能性过大,会影响算法的随机性和全局搜索能力。通常取[0.2,0.5]。

m过大,每条路径上信息素趋于平均,正反馈作用减弱,从而导致收敛速度减慢。

m过小,可能导致一些从未搜索过的路径信息素浓度减小为0,导致过早收敛,解的全局最优性降低

总信息量Q对算法性能的影响有赖于αβρ的选取,以及算法模型的选择。

Q对ant-cycle模型蚁群算法的性能没有明显影响,不必特别考虑,可任意选取。

蚁群算法是什么

蚁群算法蚁群算法,又称蚂蚁算法,是一种用来在图中寻找优化差物薯路径蚁群算法的机率型算法。 它由Marco Dorigo于1992年在他的博士论文中提出,其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。蚁群算法是一种模拟进化算法,初步的研究表明该算法具有许多优良的性质。针对PID控制器参数优化设计问题,将蚁群算法设计的结果与遗传算法设计的结果进行了比较,数值仿真结果表明,蚁群算法具有一种新的模拟进化优化方法的有效性和应用价值。

原理

设想,如果我们要为蚂蚁设计一个人工智能的程序,那么这个程序要多么复杂呢?首先,你要让蚂蚁能够避开障碍物,就必须根据适当的地形给蚂闹它编进指令让他们能够巧妙的避开障碍物,其次,要让蚂蚁找到食物,就需要让他们遍历空间上的所有点;再次,如果要让蚂蚁找到最短的路径,那么虚者需要计算所有可能的路径并且比较它们的大小,而且更重要的是,你要小心翼翼地编程,因为程序的错误也许会让你前功尽弃。这是多么不可思议的程序!太复杂了,恐怕没人能够完成这样繁琐冗余的程序。

然而,事实并没有你想得那么复杂,上面这个程序每个蚂蚁的核心程序编码不过100多行!为什么这么简单的程序会让蚂蚁干这样复杂的事情?答案是:简单规则的涌现。事实上,每只蚂蚁并不是像我们想象的需要知道整个世界的信息,他们其实只关心很小范围内的眼前信息,而且根据这些局部信息利用几条简单的规则进行决策,这样,在蚁群这个集体里,复杂性的行为就会凸现出来。这就是人工生命、复杂性科学解释的规律!那么,这些简单规则是什么呢?

本站内容来源于互联网,由于内容是机器自动获取,无法一一甄别,如果有侵权的内容,请联系站长处理