蚁群算法(Ant Colony Optimization, ACO

一、概述:  

   又称蚂蚁算法,是一种用来在图中寻找优化路径的概率型型算法。

   灵感来源于蚂蚁在寻找食物的过程中发现路径的行为,即这是一种模拟进化算法。

   车间作业调度、网络路由、车辆路径、数据挖掘、航迹规划、图像处理、生命科学、布局优化等领域均有广泛应用。

   具有稳定性好,全局搜索,并行分布式计算,易于其他问题结合等优点。

 

二、基本思想:

蚂蚁在爬行中会在路径中释放外激素:蚂蚁倾向于朝外激素强度高的方向移动。
某路径经过的蚂蚁越多,则后来者选择该路径的概率就越大。

挥发率使得有些路径上最后信息素的浓度几乎为0

 

三、基本步骤:

1、核心:路径中的信息素以一定的比例挥发减少,而某蚂蚁经过的路径,信息素以一定的比例释放增加。

2、算法过程:m只蚂蚁,最大迭代次数为k

(1)信息素的初始化。

       初值太小:算法易早熟,蚂蚁很快会全部集中到一条局部最优路径中。

       初值太大:信息素对搜索方向的指导作用太低,影响算法技能。

       一般: ij之间的信息素浓度和dist(表示i, j之间的距离)成反比,和蚂蚁的个数成正比。

(2)路径构建。选择路径的概率:

       α和β为权值调节因子,一般α=1β=2

(3)信息素更新。

       Vij(k) 表示第k只蚂蚁在城市i, j的边释放的信息素。该值往往取这只蚂蚁经过的整个的路径长度的(^1^2^3)的倒数。

Ρ表示挥发率,提出者建议用0.5。

(4)23步迭代K次或最短路径不再变化。

 

四、代码实现:

Proceure AS:

  int bestRoute;

    for each edge

    set initial pheromone value t0 //初始化信息素

  end for

  while not stop //迭代次数

    for each ant k  //对每只蚂蚁

        randomly choose an initial city  //随机选择一个初始城市

          for i=1 to n  //

            choose next city with probability

          end for

         compute the length Ck of the tour constructed by the kth ant     //计算当前蚂蚁的路径长度

             compare to update bestRoute // 比较更新最优路径长度

         for each edge  //更新每条路径的信息素浓度

            update the pheromone value

         end for

       end for

  end while  //最短路径不再变化 或者 到达迭代次数

  print result //输出最后得到的最优路径长度

end procedure

 

五、优势分析:

在数学领域,根据问题本身的复杂度是有分类的。

简单来说,问题分为P问题,NP问题,NPC问题,NP-hard问题。

P是多项式这个单词的首写字母,即Polynomial,【这里指多项式时间】

P问题意为 总能找到相应的经典算法 在多项式时间 里面得出最优解。

NP问题意为 不能确定是否能找到相应算法 能够在多项式时间内 得出最优解。

NPC问题可以理解成NP问题中最难(复杂度最高)的问题,也就是说很难找到相应算法 能够在多项式时间内得出最优解。

NP-hard问题可以简单理解成找不到相应算法 能够在多项式时间内得出最优解。

 

简单来说就是,传统的经典算法能够解决P类问题,而NP问题,特别是NPC问题,则束手无策,于是科学家们开始想办法了,既然不能在多项式时间里得出

一个最优解,那么咱们得一个较优解吧,用先验的经验知识作为启发算子,于是启发式算法诞生了,但启发式算法只能针对特定问题(比如,prime算法和

kruskal算法都是经典启发式算法,在最小生成树领域比较好的效果),启发式算法不适合跨领域,但NP问题又如此之多,怎么办,于是各种仿生学理论开

始引入计算机的算法领域,诞生了所谓的蚁群,粒子群,遗传,神经网络算法这些统称智能优化算法(元启发式算法)的东东来求较优解。

 

也就是说,我们在有限的时间内,无法求得最优解的情况下,转而求较优解。而且这个算法跨领域应用很广泛。这就是蚁群算法的优势吧。

 

【起因是准备无线传感器课堂的share,讲完觉得大家内心毫无波动甚至还想把我赶下去,然后就被神奇的赵老师praise了一下。哈哈哈...

这也成了这学期唯一听的一节无线传感器课。23333.

生活中的很多东西,背后的道理好像挺有趣的。比如,把饭卡放进微波炉转一圈能多100块?gg...有点难...】

 

posted on 2016-11-02 15:52  小小八  阅读(986)  评论(0编辑  收藏  举报