蚁群算法简介(part 1:蚁群算法之绪论)
群算法是Marco Dorigo在1992年提出的一种优化算法,该算法受到蚂蚁搜索食物时对路径的选择策略的启示。蚁群算法作为群体智能算法的一种利用分布式的种群搜索策略来寻找目标函数的最优解。蚁群算法与其他优化算法相比较的一个明显优势是蚁群算法能够适应动态变化的环境,这个特点使它特别适合解决像网络路由这类解空间频繁发生变化的优化问题。
为了更好的理解蚁群算法,我们首先需要了解在自然界中蚂蚁是如何寻找食物的。蚂蚁在寻找食物时会遵循一些简单的基本法则。这些法则的核心是利用一种叫作信息素的物质,信息素是一种蚂蚁分泌的用来向其他同伴告知哪里有食物以及如何得到这些食物的化学物质。当一只蚂蚁在某条路径上发现其它蚂蚁分泌的信息素时,它沿着这条遗留有信息素的路径前进常常会发现食物。然而,蚂蚁不总是沿着遗留有信息素的路径前进,而是按一定的概率来选择这条路径。通常一条路径上的信息素浓度越高,蚂蚁沿着这条路径前进的概率就越大。如果长时间没有蚂蚁在一条路径上分泌新的信息素,这条路径上原有的信息素会全部挥发。我们举一个例子来说明蚂蚁们是如何通过分泌和利用信息素来找到通向食物的最优路径这一过程的。

从上面这幅图上我们可以看到蚂蚁们找到了一条通向食物的路径,但这条路径不是最优路径。

此时,由于概率的因素,有一些蚂蚁开始沿着下面最优的那条路径向食物行进,虽然上面那条不是最优的路径上的蚂蚁仍然比较多,即遗留的信息素也比较多,但下面这条最优路径却比较短,这就意味着一只蚂蚁沿着上面路径到达食物时,利用下面路径获取食物的蚂蚁可能已经往返了几个来回,在这个过程中也分泌了更多的信息素。随着时间的推移下面这条路径上的信息素越来越多,而上面那条路径的信息素却不断地挥发,最后所有蚂蚁都按照下面这条最优路径来前进获取食物,如下图所示:

蚁群算法简介(part 1:蚁群算法之绪论)的更多相关文章
- STL所有算法简介 (转) http://www.cnblogs.com/yuehui/archive/2012/06/19/2554300.html
STL所有算法简介 STL中的所有算法(70个) 参考自:http://www.cppblog.com/mzty/archive/2007/03/14/19819.htmlhttp://hi.baid ...
- 算法(三)粒子群算法PSO的介绍
一.引言 在讲算法之前,先看两个例子: 例子一:背包问题,一个书包,一堆物品,每个物品都有自己的价值和体积,装满书包,使得装的物品价值最大. 例子二:投资问题,n个项目,第i个项目投资为ci 收益为p ...
- AI - 机器学习常见算法简介(Common Algorithms)
机器学习常见算法简介 - 原文链接:http://usblogs.pwc.com/emerging-technology/machine-learning-methods-infographic/ 应 ...
- PageRank 算法简介
有两篇文章一篇讲解(下面copy)< PageRank算法简介及Map-Reduce实现>来源:http://www.cnblogs.com/fengfenggirl/p/pagerank ...
- 【异常检测】孤立森林(Isolation Forest)算法简介
简介 工作的过程中经常会遇到这样一个问题,在构建模型训练数据时,我们很难保证训练数据的纯净度,数据中往往会参杂很多被错误标记噪声数据,而数据的质量决定了最终模型性能的好坏.如果进行人工二次标记,成本会 ...
- Redis集群搭建,伪分布式集群,即一台服务器6个redis节点
Redis集群搭建,伪分布式集群,即一台服务器6个redis节点 一.Redis Cluster(Redis集群)简介 集群搭建需要的环境 二.搭建集群 2.1Redis的安装 2.2搭建6台redi ...
- nginx集群:nginx配置负载均衡集群(nginx1.18.0)
一,nginx的负载均衡集群的特点: 1,nginx集群和lvs的不同? lvs集群:工作在第4层(传输层) nginx集群:工作在第7层(应用层) lvs集群:性能更强 nginx集群:功能更强:可 ...
- 海洋女神建新installshield交流群了,原来的老群都满了,请加新群哦,记得认真填写验证信息
群号511751143 海洋女神installshield群
- 6.3.28微信需群主确认才可进群&发GIF动图功能内测开始了
昨天下午有网友收到微信6.3.28新版内测邀请,不过这个内部体验目前貌似只对安卓手机开放,苹果的IOS系统还不支持,会提示“你当前使用的是非安卓设备,不建议下载安卓体验包,但你仍可邀请朋友尝鲜”.最新 ...
- webrtc 的回声抵消(aec、aecm)算法简介(转)
webrtc 的回声抵消(aec.aecm)算法简介 webrtc 的回声抵消(aec.aecm)算法主要包括以下几个重要模块:1.回声时延估计 2.NLMS(归一化最小均方自适应算法) ...
随机推荐
- xargs -I
xargs -i 参数或者-I参数配合{}即可进行文件的操作. -I replace-str Replace occurrences of replace-str ...
- python_excel
1. xlrd, xlwt, xlutils的关系 Python中一般使用xlrd(excel read)来读取Excel文件,使用xlwt(excel write)来生成Excel文件(可以控制Ex ...
- jQuery初始化加载的实现
与jQuery事件模块的其他事件不同,其他事件是通过数据缓存实现的,而初始化事件,jQuery.ready则是通过回调函数列表实现的.$()的参数如果是函数就向回调函数列表中添加回调函数,同时为DOM ...
- js瀑布流(定位法)
1.首先,自己写好图片路径,引入jquery <!DOCTYPE html> <html> <head> <meta charset="utf-8& ...
- 遇到 Line 21: StartTag: invalid element name ios
打开这个的storyboard 文本编辑打开修改里面有冲突的部分
- eclipse自动补全快捷键失效,sysout用不了!
好久没写Java代码了,使用新版Neon的Eclipse Java EE IDE开发时,自动补全各种失败,sysout也各种用不了, 开始还以为是电脑卡比呢,原来是版本的快捷键不同了,修改方法如下! ...
- 裁剪Tessdata
一个项目只需要tesseract traineddata 中的数字部分. 实现过程简单说就是解包,去掉多余,再打包.利用了tesseract的dawg2wordlist / wordlist2da ...
- oracle细节
1.oracle中NVL的含义: 如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值. 2.Oracle中in和exists的区别: 1).sel ...
- 微信接口php
官方提供的SDK只有一个文本消息功能,我们将所有消息的消息类型及事件响应都整理了进来,并且加入日志记录,代码如下: 更新日志: 2013-01-01 版本1.0,包含Token验证及基本消息接口的收发 ...
- 关于SMBIOS
一, 1.什么是SMBIOS? A: SMBIOS(System Management BIOS),是主板或者系统制造者以标准的格式显示产品管理信息所需遵循的统一规范.也就是不管你是怎么去实现的,结果 ...