人工智能 6.2群算法
用蚁群算法解决TSP问题,改进蚁群算法:最大最小最优保留 正反馈现象
人工蚁群与自然蚁群相比有记忆功能(禁忌表)
群的每个成员,称为一个个体。每个个体,其运动只遵循简单的规则。并且群成员之间是平等关系,而没有主从关系。由这些平等的、相互间能够协调运动的个体的集合,称之为“群”。
蚁群算法原理
蚂蚁先随意地对其巢穴周围的区域进行搜寻,并在走过的路上留下信息素。一旦一只蚂蚁找到了食物源,它会对食物做出评估并将一部分带回巢穴。在返回的途中,蚂蚁会根据食物的数量和质量留下不同量的信息素,信息素的浓度痕迹会引导其他蚂蚁找到食物源。
蚂蚁行为的机制
蚂蚁个体之间的信息交换是一个正反馈过程,其觅食的协作本质可以概括为:
路径概率选择机制:信息素浓度越高的路线,被选中的概率越大。
信息素更新机制:路径越短,信息素的浓度增长得越快。
协同工作机制:蚂蚁个体之间通过信息素进行信息传递。
鸟群行为
个体经验和社会学习: 由此,创造了粒子群优化算法
规则是:
1. 避免碰撞
2. 飞向目标
3. 飞向群体的中心
鱼群行为
鱼在一片水域的游动,可以归纳为四种行为:
a. 觅食行为
当鱼群发现食物时,会向着食物的方向快速游去;
b. 追尾行为
一条鱼向其视野内的另一条游向食物的鱼游去;
c. 聚群行为
为了避免被其他动物捕食,游向伙伴多的地方;
d. 随机游动
无目的的游动。
由此,创造了人工鱼群算法(Artificial Fish Swarm Algorithm ,AFSA)
蚁群算法的提出
人工蚁群中把具有简单功能的工作单元看作蚂蚁。二者的相似之处在于都是优先选择信息素浓度大的路径。较短路径的信息素浓度高,所以能够最终被所有蚂蚁选择,也就是最终的优化结果。
两者的区别在于人工蚁群有一定的记忆能力,能够记忆已经访问过的节点。同时,人工蚁群在选择下一条路径的时候是按一定算法规律有意识地寻找最短路径,而不是盲目的。例如在TSP问题中,可以预先知道当前城市到下一个目的地的距离。
蚁群算法的特征
蚁群算法采用了分布式正反馈并行计算机制, 易于与其他方法结合, 并具有较强的鲁棒性。
(1)其原理是一种正反馈机制或称增强型学习系统;它通过信息素的不断更新达到最终收敛于近似最优路径上;
(2)它是一种通用型随机优化方法;但人工蚂蚁决不是对实际蚂蚁的一种简单模拟,它融进了人类的智能;
(3)它是一种分布式的优化方法;不仅适合目前的串行计算机,而且适合未来的并行计算机;
(4)它是一种全局优化的方法;不仅可用于求解单目标优化问题,而且可用于求解多目标优化问题;
(5)它是一种启发式算法;计算复杂性为 O(NC*m*n2),其中NC 是迭代次数,m 是蚂蚁数目,n 是目的节点数目。
旅行商问题(TSP)
第一步:初始化
将m只蚂蚁随机放到n个城市,每只蚂蚁的禁忌表为蚂蚁当前所在城市,各边信息素初始化为c。
禁忌表体现了人工蚂蚁的记忆性,使得蚂蚁不会走重复道路,提高了效率。
第二步:选择路径路径
在t时刻,蚂蚁k从城市i转移到城市j的概率为:
状态转移概率
信息素强度*距离权重(公式字母标错φ-->η)
第四步:输出结果
若未达到终止条件则转步骤二,否则,输出目前的最优解。
蚁群大小:
一般情况下蚁群中蚂蚁的个数不超过TSP图中节点的个数。
终止条件:
1 给定一个外循环的最大数目,表明已经有足够的蚂蚁工作;
2 当前最优解连续K次相同而停止,其中K是一个给定的整数,表示算法已经收敛,不再需要继续;
3 目标值控制规则,给定优化问题(目标最小化)的一个下界和一个误差值,当算法得到的目标值同下界之差小于给定的误差值时,算法终止。
达到预定的迭代步数,或出现停滞现象(所有蚂蚁都选择同样的路径,解不再变化),则算法结束,以当前最优解作为问题的解输出。
例题
混流装配线调度
混流装配线(sequencing mixed models on an assembly line, SMMAL)是指一定时间内,在一条生产线上生产出多种不同型号的产品,产品的品种可以随顾客需求的变化而变化。SMMAL是车间作业调度问题(job-shop scheduling problem, JSP)的具体应用之一。
蚂蚁系统求解SMMAL问题的性能较差,蚁群系统的性能相对于前两者而言,有了很大幅度的提高,最大-最小蚂蚁系统的性能最好,大多数情况下的求解结果已达到实际的最优解
蚁群算法与遗传、模拟退火算法的比较
有的实验结果表明:
1、蚁群算法所找出的解的质量最高,遗传算法次之,模拟退火算法最低。
2、蚁群算法的收敛速度最快,遗传算法次之,模拟退火算法最慢。蚁群算法之所以能够快速收敛到全局最优解,是因为该算法的个体之间不断进行信息交流和传递。单个个体容易收敛于局部最优,多个个体通过合作可以很快地收敛于解空间的最优解的附近。
人工智能 6.2群算法相关推荐
- 【人工智能】蚁群算法(密恐勿入)
蚁群算法(密恐勿入) 蚁群算法--给你一个感性认识 蚁群算法(密恐勿入) 1. 算法简介 1.1 基本原理 1.1.1 模拟蚂蚁在简单地形,寻找食物 1.1.2 模拟蚂蚁在复杂地形,找到食物 1.2 ...
- 蚁群算法优化神经网络matlab源程序,粒子群优化神经网络的程序大集合
粒子群程序集合 866867259psobp psobp.m pso(粒子群算法)优化神经网络 粒子群算法(PSO)应用于神经网络优化[matlab] PSOt A Particle Swarm Op ...
- 蚁群算法和简要matlab来源
1 蚁群算法原理 从1991由意大利学者 M. Dorigo,V. Maniezzo 和 A. Colorni 通过模拟蚁群觅食行为提出了一种基于群体的模拟进化算法--蚁群优化.极大关注,蚁群算法的特 ...
- 9.群智能算法及其应用: 粒子群优化算法及应用, 蚁群算法及其应用
本文内容为浙江工业大学王万良慕课课程的课程讲义, 将其整理为OneNote笔记同时添加了本人上课时的课堂笔记, 且主页中的思维导图就是根据课件内容整理而来, 为了方便大家和自己查看,特将此上传到CSD ...
- 智能优化及其应用——课程实验(粒子群算法)
目录 前言 一.粒子群算法原理 二.粒子群算法建模 三.Python编程实现 0.优化问题 1.定义PSO类 2.定义适应度函数 3.定义迭代运行函数 4.定义结果输出函数 5.编写main函数 6. ...
- python斗地主出牌算法_斗地主之用蚁群算法整理牌型:如何进行牌力估计
我们在前面讲到过,各牌手的牌力估计就是我们在用蚁群算法构造最优牌型时的启发性知识.启发性知识其实就是我们利用自己的经验对事物做出的判优性评估,或者说就是对事物价值的判断. 原则上,应用蚁群算法需要用到 ...
- 基于粒子群算法的组卷系统的研究与实现
摘 要 组卷系统的主要任务是根据用户的需要用当前数据库中的试题组成一套符合用户需求的试卷.随着数据库与题量增大,传统采用随机选取和回朔试探法的组卷抽提算法因其抽题时间长,占用的空间复杂度太大,容易陷入 ...
- 蚁群算法简介及matlab源代码
1 蚁群算法原理 自1991年由意大利学者 M. Dorigo,V. Maniezzo 和 A. Colorni 通过模拟蚁群觅食行为提出了一种基于种群的模拟进化算法--蚁群优化.该算法的出现引起了学 ...
- 旅行商问题的蚁群算法
旅行商问题是一个经典的组合优化问题,它的提出和研究有着悠久的历史.最早的描述是1759年欧拉研究的骑士环游问题,即对于国际象棋棋盘中的64个方格,走访64个方格一次且仅一次,并且最终返回到起始点.19 ...
最新文章
- 机器学习4个常用超参数调试方法!
- tensorflow 实现逻辑回归——原以为TensorFlow不擅长做线性回归或者逻辑回归,原来是这么简单哇!...
- Mac 技术篇-Oracle数据库官方连接工具SQL Developer的安装与连接演示
- python调用外部程序 退出_2019-09-09 python调用外部程序
- Android studio打开之后 cannot load project: java.lang.NUllpointerException
- 为什么公司宁愿花25K重新招人,也不愿花20K留住老员工?
- Java核心类库篇3——util
- Linux常用命令备忘(启动管理、文件或目录管理、系统管理)
- koa2 mysql_koa2+vue+mysql 全栈开发记录
- leetcode-231-Power of Two
- wp友情链接php代码,为wordpress增加友情链接内页
- 手绘风格的原型图制作工具
- Cousera Notebook 之 Python 备份记录
- STM32学习笔记(二)
- PTA-实验7-学生成绩录入及查询
- NLP入门干货:手把手教你3种中文规则分词方法
- 南大通用数据库(2):客户端的使用(GBase 企业管理器的使用)
- 一、Linux 教程-基础
- 数值计算——线性最小二乘问题
- html中表格边框好看的样式,table完美css样式 table表格边框样式