基本蚁群算法介绍

您所在的位置:网站首页 蚁群觅食视频讲解 基本蚁群算法介绍

基本蚁群算法介绍

2024-07-14 03:14| 来源: 网络整理| 查看: 265

蚁群算法 概述

​   蚁群算法(Ant Colony Algorithm)是由意大利学者 Dorigo M等于20世纪90年代初期受到自然界中真实蚂蚁觅食行为启发而提出的一种仿生优化算法。算法采用分布式并行计算机制,具有较强的鲁棒性,且易与其它优化算法相结合。

​   蚂蚁是一种社会性昆虫,蚂蚁之间可以相互协作完成复杂 的任务。单个蚂蚁的行为较为简单,但是由简单个体所组成的蚂蚁群体却表现出了极为复杂的行为。真实蚁群在觅食时能够在蚁穴和食物之间找到一条最短路径,并且在环境变化时,比如出现新的障碍物时,蚁群可以相互协作找到一条新的最短路径。群在觅食路径上释放信息素,单个蚂蚁通过感知路径上的信息素强度按概率选择下一步的行进方向,而蚂蚁之间则通过感知和释放信息素完成了间接的信息传递。当觅食路径上有了新的障碍物时,信息素轨迹暂时被隔断,此时蚂蚁随机地选择 下一步的行进方向,而恰好选择了障碍物附近新的最短路径的那些蚂蚁将最先重构起连续的信息素轨迹。久而久之,选择短路径的蚂蚁越来越多,使得短路径上的信息素的强度越发大于较长路径上的信息素强度,从而使得后续的蚂蚁以较大的概率选择短路径,这种自身催化过程形成的信息正反馈机制使得蚁群最终可以找到新的最短路径。

​   蚁群算法最早应用于旅行商问题,并取得了广泛的应用,诸如作业调度、路径规划、数据挖掘等多个领域。现以TSP问题阐述蚁群算法的基本原理:

​   设将 m m m只蚂蚁放置在 n n n个随机城市上,设所有城市组成的集合为 C C C,城市 i i i与城市 j j j之间的距离为 d i j ( i , j = 1 , 2 , . . . , n ) d_{ij}(i,j=1,2,...,n) dij​(i,j=1,2,...,n), t t t时刻城市 i i i与城市 j j j连接路径上的信息素浓度为 τ i j ( t ) \tau _{ij}(t) τij​(t)。初始时刻,各个城市间连接路径上的信息素浓度相同,不妨设为 τ i j ( 0 ) = τ 0 \tau _{ij}(0)=\tau _{0} τij​(0)=τ0​.

​   Step1:状态转移概率准则。每只蚂蚁根据各条路径上的 信息量独立地选择下一个要转移的城市,并将蚂蚁 k k k走过的城市记录在禁忌表 t a b u k tabu_k tabuk​中。在 t t t时刻蚂蚁 k k k从城市 i i i移动到城市 j j j的状态转移概率 p i j k ( t ) p_{ij}^{k}(t) pijk​(t)表达式如下: p i j k ( t ) = { [ τ i j ( t ) ] α [ η i j ( t ) ] β ∑ s ∈ a l l o w e d k [ τ i s ( t ) ] α [ η i s ( t ) ] β , j ∈ a l l o w e d k 0 , j ∉ a l l o w e d k p_{ij}^{k}(t) =\left\{\begin{matrix} \frac{[\tau _{ij}(t)]^{\alpha }[\eta_{ij}(t)]^{\beta } }{\sum_{s\in allowed_{k} }[\tau _{is}(t)]^{\alpha }[\eta_{is}(t)]^{\beta } },j\in allowed_{k} \\ 0,j\notin allowed_{k} \end{matrix}\right. pijk​(t)={∑s∈allowedk​​[τis​(t)]α[ηis​(t)]β[τij​(t)]α[ηij​(t)]β​,j∈allowedk​0,j∈/allowedk​​ 其中 η i j ( t ) \eta_{ij}(t) ηij​(t)为启发函数,一般取 η i j ( t ) = 1 d i j \eta_{ij}(t)=\frac{1}{d_{ij}} ηij​(t)=dij​1​,表示蚂蚁从城市 i i i转移到城市 j j j的期望程度, a l l o w e d k allowed_{k} allowedk​为蚂蚁允许访问的城市的集合,且 a l l o w e d k = C − t a b u k allowed_{k}=C-tabu_{k} allowedk​=C−tabuk​,因为从每个城市仅允许访问一次。 α \alpha α表示信息素重要程度因子,其值越大,表示信息素的浓度在转移中起的作用越大; β \beta β为启发函数重要重要程度因子,其值越大,表示启发函数在转移中起的作用越大;

​   Step2:信息素更新。在所有蚂蚁完成一次遍历后,对路径上的残留信息作更新处理,各路径上的信息素按下式进行更新: { τ i j ( t + 1 ) = ( 1 − ρ ) τ i j ( t ) + △ τ i j ( t ) , 0 < ρ < 1 △ τ i j ( t ) = ∑ k = 1 m △ τ i j k ( t ) \left\{\begin{matrix} \tau_{ij}(t+1)=(1-\rho ) \tau_{ij}(t)+\bigtriangleup\tau_{ij}(t) ,027-> 30->31->1->15->14->12->13->7->6->2-> 4->8->9->10->5->16->23->11->29->25-> 24 min distance:16025.1 best route: 1->15->14->12->13->11->23->16->5->6->7-> 8->9->10->2->4->19->17->18->3->22-> 21->20->24->25->26->28->27->30->29->31-> 1 min distance:15889.9 best route: 29->30->25->20->24->19->17->18->3->22->21-> 26->28->27->31->1->15->14->12->13->7-> 6->5->16->4->8->9->10->2->23->11-> 29 min distance:15922.4 best route: 20->21->22->18->3->19->17->16->4->8->9-> 10->2->7->6->5->23->11->12->14->13-> 15->1->31->29->30->27->28->26->25->24-> 20 min distance:15928.1 best route: 17->19->3->18->22->21->20->24->25->26->28-> 27->30->31->29->1->15->14->12->13->11-> 6->5->7->2->4->8->9->10->16->23-> 17 min distance:15769.3 best route: 19->17->18->3->22->21->26->28->27->31->1-> 15->14->12->13->7->6->5->4->2->8-> 9->10->16->23->11->29->30->25->20->24-> 19 min distance:15740 best route: 14->12->13->11->23->16->5->6->7->2->4-> 8->9->10->3->18->17->19->24->25->20-> 21->22->26->28->27->30->31->29->1->15-> 14 min distance:15601.9

matlab仿真结果:

在这里插入图片描述在这里插入图片描述

  用此前14个城市的tsp问题测试,蚁群算法很快就能得出最优解:

best route: 5->6->12->7->13->8->11->9->10->1->2-> 14->3->4->5 min distance:29.3405

​   笔者后续也测试了遗传算法处理31个城市的Tsp问题,结果发现,在31个城市的Tsp问题上,发现基本蚁群算法得到的寻优结果要好于基本遗传算法得到的寻优的结果,但从算法构造上来看,不难发现蚁群算法的时间复杂度明显较高。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3