【人工智能Ⅰ】4-蚁群算法

【人工智能Ⅰ】4-蚁群算法

文章目录

  • 【人工智能Ⅰ】4-蚁群算法
    • 4.1 群智能概述
      • 群智能
    • 4.2 蚁群算法ACO
      • 概念
      • 特征
    • 4.3 ACO伪代码
    • 4.4 TSP问题中的应用
      • 【1】初始化
      • 【2】选择路径
      • 【3】更新信息
      • 【4】输出结果
    • 4.5 ACO基本思想
    • 4.6 关键参数选取
    • 4.7 算法参数设计策略
      • 组合参数设计策略
      • 终止条件
    • 4.8 改进的ACO
    • 4.9 一般ACO的框架组成
    • 4.10 ACO应用
    • 4.11 与其他算法的比较

4.1 群智能概述

群(swarm):平等的、相互间能够协调运动的个体的集合

个体:群的每个成员

群成员之间是平等关系,没有主从关系

群智能

个体——简单智能;群体——高级智能

群成员的集体运动以及他们之间的相互作用是从每个群成员个体所遵循的一些简单行为规则自底向上的一种突现

1:蚁群行为

三个选择机制:

路径概率选择机制(信息素浓度高的路线)

信息素更新机制(短路径增长快)

协同工作机制(个体间信息素传递信息)

2:鸟群行为

两个社会行为要素:

个体经验(学习单个个体)

社会学习(学习鸟群)

3:鱼群行为

四个游动行为:

觅食行为(向食物方向游动)

追尾行为(向视野内的其他觅食行为的鱼游动)

聚群行为(避免被捕食,向同类多的地方游动)

随机行为(无目的游动)

4.2 蚁群算法ACO

概念

在图中寻找优化路径的机率型算法

核心机制

1:信息素(蚂蚁途径的地方留下信息素,越多蚂蚁经过越多信息素)

2:正反馈现象(信息素越多的路径,蚂蚁选择概率越大)

人工蚁群 和 自然蚁群 的不同

1:人工蚁群有记忆能力

2:人工蚁群会针对性选择路径(即不是盲目选择)

特征

1:原理是一种正反馈机制或增强型学习系统(信息素的不断更新导致路径收敛于近似最优解)

2:通用型随机优化(实际情况 + 人工智能)

3:分布式优化(串行计算机 + 并行计算机)

4:全局优化(单目标优化问题 + 多目标优化问题)

5:启发式算法(复杂度为O(epoch × m × n × n),epoch是迭代次数、m是蚂蚁数、n是节点数)

4.3 ACO伪代码

1:开始

2:初始化

3:迭代次数NC=NC+1

4:蚂蚁数k=1

5:蚂蚁数k=k+1

6:按照状态转移概率公式,选择下一个元素

7:修改禁忌表

8:判断k是否大于蚂蚁总数m,若是,则进入9,否则继续进入4

9:按照公式更新信息素

10:判断是否满足结束条件,若是,则进入11,否则继续进入3

11:输出程序计算结果

12:结束

4.4 TSP问题中的应用

【1】初始化

将m只蚂蚁随机放到n个城市,每只蚂蚁的禁忌表(人工蚁群的记忆功能,旨在不走重复道路)是蚂蚁当前所在城市,各边信息素初始化为c

【2】选择路径

t时刻,蚂蚁k从城市i走到城市j的概率:
P k ( i , j ) = [ ε ( i , j ) ] α ∗ [ η ( i , j ) ] β / Σ s ∈ J k ( i ) (当 j ∈ J k 时,否则为 0 ) P^k(i,j)=[ε(i,j)]^α*[η(i,j)]^β/Σ_{s∈J_k(i)}(当j∈J_k时,否则为0) Pk(i,j)=[ε(i,j)]α[η(i,j)]β/ΣsJk(i)(当jJk时,否则为0
T_k:保存每只蚂蚁k已经访问过的城市集合

J_k:没有访问过的城市集合,大小是N-T_k

α:信息素对蚂蚁选择路径的影响程度(若为0,则变为选择最近城市)

β:距离对蚂蚁选择路径的影响程度(若为0,则只根据信息素浓度确定路径)

ε(i,j):边L(i,j)上的信息素强度

η(i,j):城市i到城市j的期望程度
η ( i , j ) = 1 / d i j η(i,j)=1/d_{ij} η(i,j)=1/dij

合适的α与β范围

α=[1,2]

β=[2,5]

【3】更新信息

在所有蚂蚁找到一条合法路径后更新信息
ε i j ( t + 1 ) = ( 1 − ρ ) ε i j ( t ) + Σ m Δ ε i j k ( t , t + 1 ) ε_{ij}(t+1)=(1-ρ)ε_{ij}(t)+Σ_mΔε_{ij}^{k}(t,t+1) εij(t+1)=(1ρ)εij(t)+ΣmΔεijk(t,t+1)

Δ ε i j k ( t , t + 1 ) = Q / L k (当蚂蚁经过 i , j 时,否则为 0 ) Δε_{ij}^{k}(t,t+1)=Q/L_k(当蚂蚁经过i,j时,否则为0) Δεijk(t,t+1)=Q/Lk(当蚂蚁经过i,j时,否则为0

ρ:信息素的挥发速率,是小于1的正数

合适的ρ范围

ρ=0.5

作用:防止信息素积累,提高搜索能力

Δε:所有蚂蚁在这轮运行在边(i,j)上增加的信息素强度

Δε^k:蚂蚁k在边(i,j)上增加的信息素强度

Q:蚂蚁所留轨迹正常数

L_k:蚂蚁k在这轮运行走过的路径长度和

【4】输出结果

若未达到终止条件,则继续【2】,否则输出最优解

蚁群大小:根据计算规模确定

终止条件:

1-外循环的最大数目(有足够蚂蚁工作)

2-最优解连续K次相同(K为给定整数,算法已收敛)

3-目标值控制,目标值与给定下界的差小于给定误差值

4.5 ACO基本思想

1:根据具体问题设置多只蚂蚁,分头并行搜索

2:每只蚂蚁完成一次周游后,在行进的路上释放信息素,信息素量与解的质量成正比

3:蚂蚁路径的选择根据信息素强度大小(初始信息素量设为相等),同时考虑两点之间的距离,采用随机的局部搜索策略。这使得距离较短的边,其上的信息素量较大,后来的蚂蚁选择该边的概率也较大

4:每只蚂蚁只能走合法路线(经过每个城市1次且仅1次),为此设置禁忌表来控制

5:所有蚂蚁都搜索完一次就是迭代一次,每迭代一次就对所有的边做一次信息素更新,原来的蚂蚁死掉,新的蚂蚁进行新一轮搜索

6:更新信息素包括原有信息素的蒸发和经过的路径上信息素的增加

7:达到预定的迭代步数,或出现停滞现象(所有蚂蚁都选择同样的路径,解不再变化),则算法结束,以当前最优解作为问题的解输出

4.6 关键参数选取

1:蚂蚁数量m

过大:信息素变化趋于平均

过小:未搜索路径信息素提前减到0

一般情况,m=1.5M,M是城市数量

2:信息素因子α

过大:选择走以前的路径概率大

过小:提前局部最优

一般情况,α=[1,4]

3:启发函数因子β

过大:提前局部最优

过小:随机搜索

一般情况,β=[3,4.5]

4:信息素挥发因子ρ

一般情况,ρ=[0.2,0.5]

5:信息素常数Q

越大:已遍历路径的信息素积累越快,有利于收敛

一般情况,Q=[10,1000]

6:最大迭代次数epoch

过大:资源浪费

过小:算法未收敛就结束

一般情况,epoch=[100,500]

建议起初epoch=200,然后根据收敛轨迹修改

4.7 算法参数设计策略

组合参数设计策略

1:确定m,m=1.5M

2:粗调,即调整取值范围较大的α、β、Q

3:微调,即调整取值范围较小的ρ

终止条件

1:给定外循环的最大数目

2:最优解连续K次相同(已收敛)

4.8 改进的ACO

ASelite:最优解保留策略蚂蚁系统(精英策略)

ACS:蚁群系统

MMAS:最大-最小蚂蚁系统

ASrank:基于优化排序的蚂蚁系统

BWAS:最优最差蚂蚁系统

AACA:一种自适应蚁群算法

HBACA:基于混合行为的蚁群算法

4.9 一般ACO的框架组成

1:蚁群活动

2:信息素挥发

3:信息素增强

主要体现:转移概率公式 + 信息素更新公式(p和ε)

4.10 ACO应用

1:网络路由问题

2:电力系统领域

3:航迹规划问题

4:混流装配线调度

4.11 与其他算法的比较

解质量:ACO > GA > 退火

收敛速度:ACO > GA > 退火(ACO个体之间不断进行信息交流和传递)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/126960.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法---缺失的第一个正数

题目 给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。示例 1:输入:nums [1,2,0] 输出:3 示例 2:输入:nums …

C++数据结构算法篇Ⅰ

C数据结构算法篇Ⅰ 📟作者主页:慢热的陕西人 🌴专栏链接:C算法 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 主要内容讲解数据结构中的链表结构 文章目录 C数据…

WSL安装Ubuntu

先安装wsl2 安装Ubuntu 打开windows商店,搜索对应版本的Ubuntu,点击获取进度跑完后,点击打开,就可以完成安装 删除Ubuntu版本 wsl --unregister Ubuntu-18.04安装位置迁移 正常情况下Ubuntu是被安装在C盘,我们需要…

什么是数字展览馆,数字展览馆有什么应用前景

引言: 数字展览馆作为一种新兴的文化艺术展示形式,以数字化技术和虚拟现实为基础,正在逐渐改变传统展览的方式。 一、什么是数字展览馆? 1.定义 数字展览馆是利用数字技术和虚拟现实技术打造的一种线上文化艺术展示平台。通过虚…

@reduxjs/toolkit配置react-redux解决createStore或将在未来被淘汰警告

通常 我们用redux都需要通过 createStore 但目前 你去用它 基本都会被划线 甚至有点厉害的的编辑器 他会直接告诉你这个东西基本快被弃用了 这个应该大家都知道 最好不要用已经被明确未来或弃用的语法 因为一旦弃用这个系统就需要维护 而且说 一般会被淘汰的语法 本身也就是有…

2023年免费CRM软件盘点:14款热门工具全面比较(含开源)

在初创企业或小型企业阶段,特别是在预算有限且客户管理需求较为基础的情境下,使用免费的CRM系统通常是一个理智的选择。这类系统虽然在功能上可能不如付费版本丰富,但基本的客户信息管理、销售跟踪和沟通记录等核心功能通常都能满足需求。 对…

Flink SQL Hive Connector使用场景

目录 1.介绍 2.使用 2.1注册HiveCatalog 2.2Hive Read 2.2.1流读关键配置 2.2.2示例

玩了一下 Jenkins,最新版本 + JDK11

背景 今年五月的时候玩了一下 Jenkins,最新版本 2.414.3 ,JDK 11 。本机有两个 JDK,只放到 Tomcat 里面了,看到了一个启动页面,后面有其他事情就忘记了。最近又想起来,觉得还是应该玩一下这么有技术含量的…

对一个金融风控测额公式的理解

目录 公式:(近3个月回款总额/过去3个月的FBA平均库存价值)*最近FBA的库存价值*过去13周FBA发货比例 详细讨论一下这个:(近3个月回款总额/过去3个月的FBA平均库存价值) 既然(近3个月回款总额/…

liunx相关指令以及操作(未完待续)

1. 安装unzip和zip apt需要超级用户权限,可能需要在sudo下运行如下命令 sudo apt update sudo apt install unzip zip2. 删除压缩文件 删除名为xxx的压缩文件 !rm -rf xxx.zip3. 删除文件夹及文件夹下的所有 删除名字为xxx的文件夹及其所有内容 !rm -rf xxx4.…

kafka生产者源码精华总结

kafka的源码阅读起来思路很清晰,命名也很规范。 KafkaProducer值得学习的地方: Kafka的网络部分的设计绝对是一个亮点,Kafka基于NIO封装了一套自己的网络架构,支持一个客户端与多个Broker建立连接。处理拆包和粘包的思路和代码&…

PTA 函数题(C语言)-- 阶乘计算升级版

题目title: 阶乘计算升级版 题目作者: 陈越 浙江大学 本题要求实现一个打印非负整数阶乘的函数。 函数接口定义: void Print_Factorial ( const int N ); 其中N是用户传入的参数,其值不超过1000。如果N是非负整数&#…

数据结构和算法——用C语言实现所有图状结构及相关算法

文章目录 前言图的基本概念图的存储方式邻接矩阵邻接表十字链表临界多重表 图的遍历最小生成树普里姆算法(Prim)克鲁斯卡尔算法(Kruskal) 最短路径BFS求最短路径迪杰斯特拉算法(Dijkstra)弗洛伊德算法&…

chorme安装esay scholar及chrome 无法从该网站添加应用、扩展程序和用户脚本解决方案

问题描述 如题,博主想安装easy scholar用于查询论文的分区,结果安装了半天一直出现chrome 无法从该网站添加应用、扩展程序和用户脚本解决方案的问题。 解决方案 先从这个网址下载:https://www.easyscholar.cc/download 然后对下载好的文…

MFC网络通信-Udp服务端

目录 1、UI的布局 2、代码的实现: (1)、自定义的子类CServerSocket (2)、重写OnReceive事件 (3)、在CUdpServerDlg类中处理 (4)、在OnInitDialog函数中 &#xff0…

计算1到100的和

一、不好的写法 public static void main(String[] args) {int sum 0;int n 100;for (int i 1; i < n; i) {sum i;}System.out.println("sum" sum);}1.定义两个整型变量&#xff1b; 2.执行100次加法运算&#xff1b; 3.打印结果到控制台&#xff1b; 二、好…

图解Kafka高性能之谜(五)

高性能的多分区、冗余副本集群架构 高性能网络模型NIO 简单架构设计&#xff1a; 详细架构设计&#xff1a; 高性能的磁盘写技术 高性能的消息查找设计 索引文件定位使用跳表的设计 偏移量定位消息时使用稀疏索引&#xff1a; 高响应的磁盘拷贝技术 kafka采用sendFile()的…

Qwt QwtPolarPlot类使用

1.概述 QwtPolarPlot是Qwt库中用于绘制极坐标图的类。它继承自QwtPolarItemDict和QFrame类&#xff0c;并且可以作为QwtPlot控件的一部分使用。 以下是类的继承关系图&#xff1a; 2.常用方法 设置标签&#xff1a; void setTitle (const QString &)void setTitle (con…

ClickHouse Java多参UDF

一、环境版本 环境版本docker clickhouse22.3.10.22 docker pull clickhouse/clickhouse-server:22.3.10.22二、XML配置 2.1 配置文件 # 创建udf配置文件 vim /etc/clickhouse-server/demo_function.xml<functions><function><type>executable</type&…

美创科技位居IDC MarketScape:中国数据安全管理平台市场「领导者」类别

近日&#xff0c;IDC发布《IDC MarketScape: 中国数据安全管理平台2023年厂商评估》 报告&#xff0c;报告从交付、产品特性、创新能力、研发速度、客户满意度等多个维度对国内厂商进行全面评估。美创科技列为『领导者』类别&#xff01; ◼︎ 报告中&#xff0c;从关键战略指…