没有中心化的组织,蚁群何以进行高效地搜寻呢?一个快递小哥有5个包裹要送,如何确定一条最短的行进路线?
本文我们一起学下常用于路径优化的蚁群算法,主要内容如下:
如何寻找一条合适的路径,几乎是一个永恒的话题。每个人、每天都会遇到。大到全国列车的运行规划,小到每个人的手机导航。其中一部分是关于“如何寻找两个位置间的最短距离”的,这一部分有较为成熟的理论与确切的解法,还有与之匹配的各种算法。
蚁群系统(Ant System(AS)
或Ant Colony System(ACS)
)是由意大利学者Dorigo
、Maniezzo
等人于20
世纪90
年代首先提出来的。他们在研究蚂蚁觅食的过程中,发现蚁群整体会体现一些智能的行为,例如蚁群可以在不同的环境下,寻找最短到达食物源的路径。
后经进一步研究发现,这是因为蚂蚁会在其经过的路径上释放一种可以称之为“信息素(pheromone
)”的物质,蚁群内的蚂蚁对“信息素”具有感知能力,它们会沿着“信息素”浓度较高路径行走,而每只路过的蚂蚁都会在路上留下“信息素”,这就形成一种类似正反馈的机制,这样经过一段时间后,整个蚁群就会沿着最短路径到达食物源了。
由上述蚂蚁找食物模式演变来的算法,即是蚁群算法。这种算法具有分布计算、信息正反馈和启发式搜索的特征,本质上是进化算法中的一种启发式全局优化算法。在数字时代背景下,蚁群算法在网络路由中的应用受到越来越多学者的关注,并提出了一些新的基于蚂蚁算法的路由算法。
同传统的路由算法相比较,该算法在网络路由中具有信息分布式性、动态性、随机性和异步性等特点,而这些特点正好能满足网络路由的需要。
蚁群算法是从自然界中真实蚂蚁觅食的群体行为得到启发而提出的,其很多观点都来源于真实蚁群,因此算法中所定义的人工蚂蚁与真实蚂蚁存在一定的辩证关系。
蚁群的自组织行为特征主要有:
1
次且仅1
次),为此设置禁忌表来控制。了解了基本思想,我们来关注几个必须得知道的问题:上述第2
步中,蚂蚁完成一次周游后各路径上的信息素怎么计算?计算公式如下:
其中,
为边
上的信息素量,刚开始时
,
为本次迭代边
上的信息素增量,
为第k
只蚂蚁在本次迭代中留在边
上的信息素量,
为信息素挥发系数。Q
是正常数,m
是蚂蚁数量,n
是城市数量,
为蚂蚁k
在本次周游中所走路径的长度。
第三步中蚂蚁的转移概率计算公式如下:
其中
为信息素的相对重要程度,
为启发式因子的相对重要程度,而
是蚂蚁k下一步允许选择的城市集合。
为启发式因子,反应蚂蚁由城市i转移到城市j的启发程度,
为城市
之间的距离。
我们了解了信息素计算公式和蚂蚁的转移概率之后,看下具体流程图如下:
,
.
1
只蚂蚁,计算转移概率,按照轮盘赌的方式选择下一个顶点,更新禁忌表,再计算概率,再选择顶点,再更新禁忌表,直至遍历所有顶点一次。
,该蚂蚁死去。
3-4
步,直至m
只蚂蚁都周游完毕。和信息素量
。
与其他优化算法相比,蚁群算法具有以下几个特点:
该算法应用于其他组合优化问题,如旅行商问题、指派问题、Job—shop
调度问题、车辆路由问题、图着色问题和网络路由问题等。
知道了上面的算法原理,我们来看下开头的那个问题,一个快递小哥有5
个包裹要送,如何确定一条最短的行进路线?
假设由于某种原因,城市道路均是单行道,即A->B
和B->A
的距离不相同,也就是说这是一个不对称的TSP
问题。现在城市距离信息如下表:
设置参数:
,
为禁忌表,那么第一次迭代第一只蚂蚁周游如下:
第一次迭代第二只蚂蚁周游如下:
依次类推,第一次迭代完成之后,我们得到信息素矩阵如下:
接着进行第二次迭代,第二次迭代第一只蚂蚁周游如下:
依次类推,发现第二次迭代的时候,假如五只蚂蚁走的是同一条路,那么算法收敛结束。最优路径为A->E->D->C->B->A
,最优路径的距离为9
.
至此,我们从蚁群算法的简介,原理以及实例方面对蚁群算法进行了详细的阐述,希望对大家有所帮助。
♥点个赞再走呗♥