转自:https://blog.csdn.net/yy2050645/article/details/80820287

蚁群算法

蚁群算法,也是优化算法当中的一种。蚁群算法擅长解决组合优化问题。蚁群算法能够有效的解决著名的旅行商问题(TSP),不止如此,在其他的一些领域也取得了一定的成效,例如工序排序问题,图着色问题,网络路由问题等等。接下来便为大家简单介绍蚁群算法的基本思想。

蚁群算法,顾名思义就是根据蚁群觅食行为而得来的一种算法。单只蚂蚁的觅食行为貌似是杂乱无章的,但是据昆虫学家观察,蚁群在觅食时总能够找到离食物最近的路线,这其中的原因是什么呢?其实,蚂蚁的视力并不是很好,但是他们又是凭借什么区寻找到距离食物的最短路径的呢?经过研究发现,每一只蚂蚁在觅食的过程中,会在沿途释放出一种叫做信息素的物质。其他蚂蚁会察觉到这种物质,因此,这种物质会影响到其他蚂蚁的觅食行为。当一些路径上经过的蚂蚁越多时,这条路径上的信息素浓度也就越高,其他蚂蚁选择这条路径的可能性也就越大,从而更增加了这条路径上的信息素浓度。当然,一条路径上的信息素浓度也会随着时间的流逝而降低。这种选择过程被称之为蚂蚁的自催化行为,是一种正反馈机制,也可以将整个蚁群认定为一个增强型学习系统。

为了让大家更好的理解上文中提到的蚁群觅食行为,这里通过一张图片来说明蚁群觅食行为。

如图所示,A点为一个蚁穴,设定其中有两只蚂蚁,蚂蚁1和蚂蚁2。B点为食物所在位置,C点只是路径上的一点。假设ABC形成一个等边三角形,且两只蚂蚁的移动速度均相同。

在t0时刻,两只蚂蚁在蚁穴中,在他们面前有两条路可以选择,即AB或AC。两只蚂蚁随机进行选择,我们假设蚂蚁1选择了路径AC,而蚂蚁2选择了路径AB。

在t1时刻是,蚂蚁1走到了C点,而蚂蚁2走到了B点,即食物所在位置。他们在其经过的路径上释放了信息素,在途中用虚线表示。之后蚂蚁2将食物运往蚁穴,并依然在沿途释放信息素,蚂蚁1则从C点向B点进发。

等到t2时刻时,蚂蚁2到达了蚁穴A点,蚂蚁1到达了食物所在位置B点,此时蚂蚁2再次出发去搬运食物,它发现AB路径上的信息素浓度要高于AC路径上的信息素浓度(AB路径上有两条虚线,AC路径上只有1条虚线)。因此蚂蚁2选择AB路径去搬运食物,而蚂蚁1则在B点获取到了食物,接下来返回蚁穴,但是它也有两种选择,一种是原路返回,另一种便是走线路AB。蚂蚁1发现AB路径上的信息素浓度要高于AC路径上的信息素浓度,因此它将选择AB来返回蚁穴。

如此往复,AC路径的信息素浓度会越来越低,AB路径上的信息素浓度会越来越高,所以AC路径上将没有蚂蚁再次经过,两只蚂蚁都只会选择路径较短的AB线路去搬运食物。

以上便是蚁群算法的基本原理。

接下来介绍蚁群算法的数学模型,我们以TSP问题为例来进行说明。

TSP(Traveling Salesman Problem)问题,中文叫做旅行商问题:什么是TSP问题,也许有些人还不太清楚。这里做个简要的介绍。TSP问题及著名的旅行商问题,记得第一次接触这个问题是在本科时学习运筹学课程时碰到的一个问题,因此,这个问题是运筹学领域或也可以说是数学领域中的一个著名的问题。这个问题简单描述就是:假设一个旅行商人,他要遍历n个城市,但是每个城市只能遍历一次,最终还要回到最初所在的城市,要求制定一个遍历方案,使经过的总路程最短。

接下来便用蚁群算法对这个问题进行求解:

首先列出一些蚁群算法中涉及到的参数及其符号:

:蚂蚁数量,约为城市数量的1.5倍。如果蚂蚁数量过大,则每条路径上的信息素浓度趋于平均,正反馈作用减弱,从而导致收敛速度减慢;如果过小,则可能导致一些从未搜索过的路径信息素浓度减小为0,导致过早收敛,解的全局最优性降低

:信息素因子,反映了蚂蚁运动过程中积累的信息量在指导蚁群搜索中的相对重要程度,取值范围通常在[1, 4]之间。如果信息素因子值设置过大,则容易使随机搜索性减弱;其值过小容易过早陷入局部最优

:启发函数因子,反映了启发式信息在指导蚁群搜索中的相对重要程度,取值范围在[3, 4.5]之间。如果值设置过大,虽然收敛速度加快,但是易陷入局部最优;其值过小,蚁群易陷入纯粹的随机搜索,很难找到最优解

:信息素挥发因子,反映了信息素的消失水平,相反的反映了信息素的保持水平,取值范围通常在[0.2, 0.5]之间。当取值过大时,容易影响随机性和全局最优性;反之,收敛速度降低

:信息素常数,表示蚂蚁遍历一次所有城市所释放的信息素总量。越大则收敛速度越快,但是容易陷入局部最优;反之会影响收敛速度

:城市数量

:城市i到城市j之间的距离

:t时刻,城市i与城市j之间的信息素浓度

:t时刻,蚂蚁k从城市i向城市j转移的概率

:启发函数,表示蚂蚁从城市i转移到城市j的期望程度,这里我们取值为

:蚂蚁k待访城市的集合,初始时刻中有个元素,即排除掉蚂蚁一开始所在城市以外的其他城市,随着时间推移,其中的城市越来越少,直到为空,表示遍历完所有的城市

:表示在所有蚂蚁遍历完所有城市时,第k只蚂蚁对城市i与城市j之间信息素浓度总增加量的贡献量

:表示所有蚂蚁遍历完所有城市时,城市i与城市j之间信息素浓度的累积增加量

:表示蚂蚁k遍历完所有城市后经历的总路程长度

接下来给出三个公式:

公式一:

从公式中可以看出信息素因子为信息素浓度的指数,启发函数因子为启发函数的指数,这样便很好理解这两个参数所起到的作用了,分别决定了信息素浓度以及转移期望对于蚂蚁k从城市i转移到城市j的可能性的贡献程度。

公式二:

这个公式反映了信息素浓度的迭代更新规律,可以看出,所有蚂蚁遍历完一次所有城市后,当前信息素浓度由两部分组成,第一部分即上次所有蚂蚁遍历完所有城市后路径上信息素的残留,第二部分为本次所有蚂蚁遍历完所有城市后每条路径上的信息素的新增量。

公式三:

公式三反映了每只蚂蚁对于自己经过的城市之间路径上信息素浓度的贡献量,可以看出,其经历的路程越长,则对于沿途上信息素浓度的贡献量也就越低,如果尽力的路程越短,则对于沿途上信息素浓度的贡献量也就越高,结合公式二可以看出,信息素浓度累积贡献量大的路径被选择的概率也就大,这就是为什么能够选出最短路径的原因。关于的计算还有一些其他模型,这里就不详细介绍了,我们这里给出的是ant cycle system模型,也是TSP问题中常用的一种模型。

最后给出蚁群算法解决TSP问题的流程:

组合参数设计策略:

由于蚁群算法对于参数的敏感程度较高,参数设置的好,算法的结果也就好,参数设置的不好则运行结果也就不好。

以上便是蚁群算法的基本原理,以下附上本人用python编写的关于蚁群算法的程序(程序中的参数需要根据具体问题自己进行调整):


http://www.taodudu.cc/news/show-2222104.html

相关文章:

  • 蚁群算法原理c语言,蚁群算法原理及其应用--详细介绍
  • 蚁群算法原理及Matlab实现
  • 蚁群算法详解
  • 蚁群算法原理及其实现(python)
  • 【智能算法第一期】蚁群算法原理和多种改进方法
  • 蚁群算法原理以及应用
  • 优化算法|蚁群算法的理解及实现
  • 优化算法3--蚁群算法(原理)
  • python为什么胶水语言_Python可以干什么?Python胶水语言由来
  • python语言是不是胶水语言_不会吧,不会吧,不会还有人觉得Python是胶水语言吧?...
  • python为什么被称为胶水语言_为什么Python被称为“胶水语言”?
  • python语言是胶水语言吗_为什么只有python是胶水语言?
  • 胶水语言
  • 为什么python胶水语言_为什么只有python成了胶水语言?
  • python胶水语言融合其他语言_1. Python中如何使用其他语言?(python的胶水作用,python又叫胶水语言)...
  • 入门Python,胶水语言的优势和困扰
  • python语言是一种胶水语言吗_Python是唯一被称为“胶水语言”的编程语言?事实并非如此...
  • python是什么语言简称为_python为何称为胶水语言
  • python为什么被称为胶水语言_为什么说python是胶水语言
  • python是一门胶水语言_Python是唯一被称为“胶水语言”的编程语言?事实并非如此!...
  • python为什么被称为胶水语言_为什么只有python成了胶水语言?
  • python为什么胶水语言_为什么称python为胶水语言
  • python是一门胶水语言_python为何被称之为胶水语言
  • python是一门胶水语言_python为什么叫胶水语言
  • python为什么叫胶水语言-为什么称python为胶水语言
  • 一、python:一种计算机的胶水语言
  • 胶水语言概述(以Python为例)
  • 概率图模型(05): 揭示局部概率模型, 稀疏化网络表示(Structured-CPDs)
  • 朴素贝叶斯分类器常用的三种条件概率模型:伯努利、多项式、高斯模型
  • 【机器学习】监督学习的分类:判别/生成模型,概率/非概率模型、参数/非参数模型

【转载】蚁群算法原理及实现相关推荐

  1. 蚁群算法原理详解和matlab代码

    1原理: 蚂蚁在寻找食物源的时候,能在其走过的路径上释放一种叫信息素的激素,使一定范围内的其他蚂蚁能够察觉到.当一些路径上通过的蚂蚁越来越多时,信息素也就越来越多,蚂蚁们选择这条路径的概率也就越高,结 ...

  2. MATLAB机器学习系列-12:蚁群算法优化原理及其matlab实现

    蚁群算法原理 概述 蚁群算法(Ant Colony Algorithm, ACA)由Marco Dorigo于1992年在他的博士论文中首次提出,该算法模拟了自然界中蚂蚁的觅食行为. 蚂蚁在寻找食物源 ...

  3. 离散蚁群算法实例(求解旅行商问题)

    蚁群算法 蚁群算法原理 万字长文带你了解蚁群算法及求解复杂约束问题[源码实现] 上面这篇博文的蚁群算法是实数编码.今天讲解下离散编码的蚁群算法.      算法原理不再解释,直接上算例. 旅行商问题 ...

  4. 蚁群算法(Ant Colony Optimization)

    蚁群算法(Ant Colony Optimization) 蚁群算法简介 蚁群算法(Ant Clony Optimization, ACO)是一种群智能算法,它是由一群无智能或有轻微智能的个体(Age ...

  5. 蚁群算法解决TSP问题

    原文转载于https://www.cnblogs.com/biaoyu/archive/2012/09/26/2704456.html 蚁群算法简介 蚁群算法(Ant Clony Optimizati ...

  6. 智能优化算法之蚁群算法(1)

    蚁群算法(ant colony algorithm) : 一种模拟进化算法 蚂蚁在觅食过程中能够在其经过的路径留下一种称为信息素的物质,并在觅食的过程中能感知这种物质的强度,并指导自己的行动方向,他们 ...

  7. 蚁群算法和简要matlab来源

    1 蚁群算法原理 从1991由意大利学者 M. Dorigo,V. Maniezzo 和 A. Colorni 通过模拟蚁群觅食行为提出了一种基于群体的模拟进化算法--蚁群优化.极大关注,蚁群算法的特 ...

  8. 【路径规划】基于蚁群算法的多配送中心车辆路径优化方法matlab代码

    1模型介绍 一种基于蚁群算法的多配送中心车辆路径优化方法,首先,针对多配送中心车辆路径优化问题,对各个客户点设计了以最近配送中心为启发式信息的惩罚函数;其次,将具有上述启发式信息的罚函数加入到各配送点 ...

  9. 蚁群算法简介及matlab源代码

    1 蚁群算法原理 自1991年由意大利学者 M. Dorigo,V. Maniezzo 和 A. Colorni 通过模拟蚁群觅食行为提出了一种基于种群的模拟进化算法--蚁群优化.该算法的出现引起了学 ...

  10. 道路匹配MapMatching:GPS轨迹点常用聚类算法介绍(K-Means聚类、蚁群算法等)

    道路匹配MapMatching:GPS轨迹点常用聚类算法介绍(K-Means聚类.蚁群算法等) 前言 一.聚类算法是什么? 二.道路匹配中常见聚类算法介绍 1.K-Means算法 2.基于时间和距离的 ...

最新文章

  1. 重装操作系统的20条原则(转载)
  2. YOLO-Fastest从Darknet源码编译、测试再到训练完整图文教程!
  3. 数据中心机房建设几个重要的国家标准
  4. #51CTO学院四周年# 51CTO与我的大学生活
  5. 关于mobile中datagrid的使用
  6. 原来fb可以在一个工程里面输出多个swf模块
  7. mac os 配置 mysql_基于MAC OS 操作系统安装、配置mysql
  8. 手动安装VMware Tools
  9. 为什么使用工作流引擎,什么是工作流引擎,工作流引擎选型以及如何使用
  10. 四、软考·系统架构师——软件工程基础
  11. PhotoScan:为冲印的照片拍摄无眩光照片
  12. android7 显示到pc,安卓手机上的画面怎么投屏到Win7电脑上?超详细投屏方法看这里!...
  13. python 战舰_Python战舰随机数发生器
  14. mybatis定义别名
  15. JS 日期的获取和计算 ios不兼容问题
  16. ⭐程序员必备软件图鉴⭐(建议收藏)
  17. 【结构体】C语言结构体使用教程
  18. openlayers+vue 仿百度罗盘功能(指北针)
  19. 曾經很愛很愛伱,洳紟莪巳經放棄,哆謝伱啲鈈珍惜讓莪學茴迉惢,深噯灬伱时﹎ o放ヅ棄 我﹖ヅo
  20. power 见解_客户见解的两个简单来源,可改善用户体验

热门文章

  1. 三维重建开源代码汇总【保持更新】
  2. 【LaTeX入门】软件安装
  3. Google退出中国,我同意了。
  4. Python3爬虫之咪咕音乐
  5. 软件测试的艺术读书笔记<转>
  6. vue+echarts绘制中国地图,动态配置省份颜色和城市标点
  7. 智能电视软件安装(WIFI上网)
  8. 高项_第三章项目立项管理
  9. matlab 求虚数的反正切,matlab中的反正切函数
  10. 第二章节:期货市场组织结构与投资者