一阶二阶多智能体一致性控制介绍及Matlab程序

本文的详细代码在https://github.com/Say-Hello2y/MultiAgentSystem中可找到

一阶二阶多智能体一致性控制介绍及Matlab程序

  • 一阶二阶多智能体一致性控制介绍及Matlab程序
  • 前言:多智能体控制的应用
  • 一、基础知识:图论与代数
    • 1.图论介绍
    • 2.图的Laplacian矩阵
  • 二、一阶二阶多智能体一致性控制介绍及代码(Matlab)
    • 1. 一阶智能体
    • 2.二阶智能体一致性控制(ode45算法)
  • 参考文献

前言:多智能体控制的应用

智能体本是人工智能领域的概念,控制领域的智能体一般指具有一定的 动力学和运动学特性且能同周围环境及其他个体交换信息的实体。在过去的十几 年里,多智能体系统 (multi-agent systems, MAS) 的协同控制问题受到了国际控制界越来越多的关注。多智能体系统的建模起源于群居动物,如昆虫,鱼群,鸟 群等 。这些群居动物能够共同完成一些单个个体很难完成的任务。

图1. 自然界的协同控制
一致性是多智能体控制的一个基本目标,许多多智能体任务都可转换为特殊的一致性控制任务。下面给出多智能体一致性任务分类:
图2. 多智能体一致性分类

一、基础知识:图论与代数

1.图论介绍

图论(graph theory),是组合数学分支,和其他数学分支,如群论、矩阵论、拓扑学有着密切关系。图是图论的主要研究对象。图是由若干给定的顶点及连接两顶点的边所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系。顶点用于代表事物,连接两顶点的边则用于表示两个事物间具有这种关系。
在多智能体研究领域,通常假定智能体之间通过通信网络或者传感器网络交换信息,采用有向图(Directed graphs)或无向图(Undirected graphs)来描述智能体之间的信息交换。无向图是指连接之间是没有方向的,即若节点A与节点B有连接,则意味着A可以和B通信,B也可以和A通信,而若为有向图,A,B之间的通信关系并不是一致的,即A可以和B通信不能推出B可以和A通信。

2.图的Laplacian矩阵

在介绍图的Laplacian矩阵之前,先引入图的邻接矩阵(Adjacency matrix)的概念,无向图的邻接矩阵计算方法是每条边为对应的单元加上1,而每个自环加上2。这样让某一节点的度数可以通过邻接矩阵的对应行或者列求和得到。如下图所示

图3. 无向图的邻接矩阵
有向图的邻接矩阵一般是不对称的。可以有如下定义:
定义一:定义有向图的邻接矩阵中的某个元素 AijA_{ij}Aij​代表:
1.从i指向j的边的数目

2.从j指向i的边的数目

第一种定义广泛用于图论和社会网络分析(如:社会学、政治学、经济学、心理学)。
第二种更加常见于其他应用学科(如:动态系统、物理、网络学),这些学科有时用邻接矩阵A表示图上的线性动力, 这里使用第二种定义。给大家举个栗子,见下面的草图
图4. 有向图的例子

采用第二种定义,则
A=[000001100000010000101000000100001010](1)A=\left[ \begin{matrix} 0 & 0 & 0 &0 &0&1 \\ 1 & 0 & 0 &0 &0&0 \\ 0 & 1& 0 &0 &0&0\\ 1 & 0 & 1 &0 &0&0\\ 0 & 0 & 0 &1 &0&0\\ 0 & 0 & 1 &0 &1&0\\ \end{matrix} \right] \tag{1} A=⎣⎢⎢⎢⎢⎢⎢⎡​010100​001000​000101​000010​000001​100000​⎦⎥⎥⎥⎥⎥⎥⎤​(1)
以2,3节点为例,A32A_{32}A32​代表矩阵第三行第二列,具体意义为象征第3个智能体与第2个智能体之间的通信关系,采用邻接矩阵的第二种定义则由于2节点到3节点有一条有向线段故A32=1A_{32}=1A32​=1,而4节点没有指向3节点故A34=0A_{34}=0A34​=0。
定义二:图的入度矩阵D,入度矩阵是一个对角矩阵,对角线元素为终点在这个节点的边的条数,采用第二种定义的话,有向图的入度矩阵对角线元素就为邻接矩阵对应行和
D=[100000010000001000000200000010000002](2)D=\left[ \begin{matrix} 1& 0 & 0 &0 &0&0 \\ 0 & 1 & 0 &0 &0&0 \\ 0 &0& 1 &0 &0&0\\ 0 & 0 & 0&2 &0&0\\ 0 & 0 & 0 &0 &1&0\\ 0 & 0 & 0 &0 &0&2\\ \end{matrix} \right] \tag{2} D=⎣⎢⎢⎢⎢⎢⎢⎡​100000​010000​001000​000200​000010​000002​⎦⎥⎥⎥⎥⎥⎥⎤​(2)
定义三:图的laplacian矩阵:L=D−AL=D-AL=D−A,由定义可知laplacian矩阵行和为0
L=[10000−1−1100000−11000−10−1200000−11000−10−12](3)L=\left[ \begin{matrix} 1& 0 & 0 &0 &0&-1 \\ -1 & 1 & 0 &0 &0&0 \\ 0 &-1& 1 &0 &0&0\\ -1 & 0 & -1&2 &0&0\\ 0 & 0 & 0 &-1 &1&0\\ 0 & 0 & -1 &0 &-1&2\\ \end{matrix} \right] \tag{3} L=⎣⎢⎢⎢⎢⎢⎢⎡​1−10−100​01−1000​001−10−1​0002−10​00001−1​−100002​⎦⎥⎥⎥⎥⎥⎥⎤​(3)
关于图论方面就介绍到这里,下面介绍如何根据图的Laplacian矩阵设计多智能体一致性控制器。

二、一阶二阶多智能体一致性控制介绍及代码(Matlab)

本文的详细代码在https://github.com/Say-Hello2y/MultiAgentSystem中可找到

1. 一阶智能体

多智能体一致性的概念,对一阶系统而言就是状态趋于一致,即在t→∞t\rightarrow\inftyt→∞时,有xi→xjx_i\rightarrow x_jxi​→xj​成立。
最简单的智能体 (如阻尼器) 的动力学可用一阶积分器模型来描述 式中,
xi˙(t)=ui(t),i=1,…,N(4)\dot{x_i}(t)=u_i(t), i=1,\ldots,N \tag{4} xi​˙​(t)=ui​(t),i=1,…,N(4)

xi(t)⊂Rpx_i(t)\subset R^pxi​(t)⊂Rp为智能体 i 的位置, ui(t)⊂Rpu_i(t)\subset R^pui​(t)⊂Rp为控制输入,N 为智能体的总数。这里假设控制输入可直接控制智能体的速度。Olfati-Saber 和 Murray 在文献中针对一阶积分器智能体网络提出了一种 一致性控制器
ui(t)=−∑j=1Naij(xi(t)−xj(t)),i=1,…,N(5)u_i(t)=- \sum_{j=1}^N a_{ij}(x_i(t)-x_j(t)),i=1,\ldots,N \tag{5} ui​(t)=−j=1∑N​aij​(xi​(t)−xj​(t)),i=1,…,N(5)

式中, aija_{ij}aij​为邻接矩阵的第 (i, j) 项。Olfati-Saber 指出,对于智能体的通信拓扑 为无向图的情形,只要无向图是连通的,那么,在上式的作用下,一阶积分器智能体网络能够实现一致,即,当t→∞t\rightarrow\inftyt→∞时,有xi→xjx_i\rightarrow x_jxi​→xj​成立。而对于有向图而言, 包含一个有向生成树是智能体网络实现一致的充分必要条件。

该文献还指出,智能体的状态最后趋于一致的终值是由智能体状态的初值和通信拓扑图共同决定的,其终值可表示为 ∑i=1Nrixi(0)\sum_{i=1}^N r_ix_i(0)∑i=1N​ri​xi​(0)。其中r=[r1,…,rn]Tr=[r_1,\ldots,r_n]^Tr=[r1​,…,rn​]T 为 Laplacian 矩阵与零特征值相关的左特征向量且有1NTr=11_N^Tr=11NT​r=1成立。一致性控制 器可看作是一种负反馈控制。对智能体 i 来说,先把它的状态和它所有邻居的 状态作差,再求和后作负反馈。这种一致性控制器的思想后来被广泛应用于各类智能体网络。
上例的matlab实现一阶多智能体一致代码如下

clear;
close all;
clc;
X0=[1;2;3;4;5;6];%状态初始值
dt=0.01;T=10;%步长与仿真时间
t=0:dt:T;
n=length(t);
x=X0;
A=[0 0 0 0 0 1;1 0 0 0 0 0;0 1 0 0 0 0;1 0 1 0 0 0;0 0 0 1 0 0;0 0 1 0 1 0];%邻接矩阵
D=diag(sum(A,2));%利用Laplacian 行和为0构造D矩阵
L=D-A%利用算法求出Laplacian矩阵
for i=1:nu(:,i)=-L*x;X(:,i)=x;x=dt*u(:,i)+x;
end
%画出状态图与u随时间的图像
figure(1);
plot(t,X)
title('status diagram');
xlabel('time');
ylabel('status');
legend('x1','x2','x3','x4','x5','x6');
figure(2);
plot(t,u)
title('velocity diagram');
xlabel('time');
ylabel('u');
legend('u1','u2','u3','u4','u5','u6');

2.二阶智能体一致性控制(ode45算法)

比一阶积分器模型稍复杂一些的智能体动力学模型是二阶积分器模型
xi˙(t)=vi(t)vi˙(t)=ui(t)(6)\dot{x_i}(t)=v_i(t)\\ \dot{v_i}(t)=u_i(t) \tag{6} xi​˙​(t)=vi​(t)vi​˙​(t)=ui​(t)(6)
式中,xi(t),vi(t)⊂Rpx_i(t),v_i(t)\subset R^pxi​(t),vi​(t)⊂Rp分别表示智能体 i 的位置和速度向量, ui(t)u_i(t)ui​(t)仍表示控制输入。这里的二阶常系数微分方程可用来描述经典的牛顿第二定律模型,如自主车。二阶积分器模型假设控制输入可直接控制被控对象的加速度。对由上式描述的多智能体网络,Ren 提出了一种有效的一致性控制器。
ui=−∑j=1Naij((xi(t)−xj(t))+γ(vi(t)−vj(t))),i=1,…,N(7)u_i=-\sum_{j=1}^Na_{ij}((x_i(t)-x_j(t))+\gamma(v_i(t)-v_j(t))),i=1,\ldots,N\tag{7} ui​=−j=1∑N​aij​((xi​(t)−xj​(t))+γ(vi​(t)−vj​(t))),i=1,…,N(7)

式中,γ>0\gamma>0γ>0 为待确定的常数增益。Ren 指出,对于连接的无向通信拓扑而言, 上式可使二阶积分器智能体的位置和速度都渐近趋于一致。但对于有向通信拓扑而言,则需要上式中的增益参数 γ\gammaγ满足条件
γ>max⁡∀Re(μi)<0,Im(μi)>02∣μi∣cos⁡(tan⁡−1(Im(μi)−Re(μi)))(8)\gamma>\max_{\forall Re(\mu_i)<0,Im(\mu_i)>0}\sqrt{\frac{2}{\lvert \mu_i \rvert \cos{(\tan^{-1}(\frac{Im(\mu_i)}{-Re(\mu_i)}))}}}\tag{8} γ>∀Re(μi​)<0,Im(μi​)>0max​∣μi​∣cos(tan−1(−Re(μi​)Im(μi​)​))2​​(8)

式中,μi\mu_iμi​为矩阵 −L-L−L的第 i 个特征值。从这里可以看出,有向图下智能体实现 一致比无向图更加困难。同样,有向图需至少包含一个有向生成树。若智能体网络的位置和速度能趋于一致,则它们的终值由下式给出
xi→xj→∑i=1Nrixi(0)+t∑i=1Nrivi(0)vi→vj→∑i=1Nrivi(0)(9)x_i \rightarrow x_j \rightarrow \sum_{i=1}^Nr_ix_i(0)+t\sum_{i=1}^Nr_iv_i(0)\\ v_i\rightarrow v_j\rightarrow\sum_{i=1}^Nr_iv_i(0)\tag{9} xi​→xj​→i=1∑N​ri​xi​(0)+ti=1∑N​ri​vi​(0)vi​→vj​→i=1∑N​ri​vi​(0)(9)
给定邻接矩阵(无向图)
A=[0101101001011010](1)A=\left[ \begin{matrix} 0 & 1 & 0 &1 \\ 1 & 0 & 1 &0 \\ 0 & 1& 0 &1 \\ 1 & 0 & 1 &0 \\ \end{matrix} \right] \tag{1} A=⎣⎢⎢⎡​0101​1010​0101​1010​⎦⎥⎥⎤​(1)
初始速度和初始状态一致v,x=[1,2,3,4]T\mathbf{v,x}=[1 ,2, 3 ,4]^Tv,x=[1,2,3,4]T,则使用ode45(ode45为一种微分方程解法,ode45表示采用四阶-五阶Runge-Kutta算法,它用4阶方法提供候选解,5阶方法控制误差,是一种自适应步长(变步长)的常微分方程数值解法,其整体截断误差为(Δx)^5。解决的是Nonstiff(非刚性)常微分方程。
求解微分方程的二阶智能体一致性代码为

clear;
close all;
clc;
X0=[1;2;3;4];
V0=[1;2;3;4];
gamma=1;
A=[0 1 0 1;1 0 1 0;0 1 0 1;1 0 1 0];%邻接矩阵
D=diag(sum(A,2));%利用Laplacian 行和为0构造D矩阵
L=D-A;%利用定义求出Laplacian矩阵
u0=-(L*X0+gamma*L*V0);%u0初值
options = odeset('MaxStep', 1e-2, 'RelTol',1e-2,'AbsTol',1e-4);
[t,y] = ode45(@odefun,[0 15],[X0;V0;u0],options);
X=y(:,1:4);
V=y(:,5:8);
u=y(:,9:12);
%画图部分
figure(1);
plot(t,X)
title('status diagram');
xlabel('time');
ylabel('status');
figure(2);
plot(t,V)
title('velocity diagram');
xlabel('time');
ylabel('velocity');
figure(3)
plot(t,u)
title('acc diagram');
xlabel('time');
ylabel('u');
%函数部分
function dydt = odefun(t,y)
dydt = zeros(12,1);% 指定dydt为微分方程变量的导数,dydt代表(x1,x2,x3,x4,v1,v2,v3,v4,u1,u2,u3,u4)^T的导数,y代表
% (x1,x2,x3,x4,v1,v2,v3,v4,u1,u2,u3,u4)^T ,x代表位置,v代表速度,u代表控制变量即加速度
A=[0 1 0 1;1 0 1 0;0 1 0 1;1 0 1 0];%邻接矩阵
D=diag(sum(A,2));%利用Laplacian 行和为0构造D矩阵
L=D-A;%利用算法求出Laplacian矩阵
gamma=1;
dydt(1:4)=y(5:8);%
dydt(5:8)=y(9:12);%-(L*y(1:4)+gamma*L*y(5:8));
dydt(9:12)=-(L*y(5:8)+gamma*L*y(9:12));
end

参考文献

[1.]Seyboth, G.S., D.V. Dimarogonas, and K.H. Johansson, Event-based broadcasting for multi-agent average consensus. Automatica, 2013. 49(1).
[2.]冯元珍, 多智能体系统一致性问题综述. 长江大学学报(自然科学版), 2011. 8(03): p. 84-87+9.
[3.]龙晓军, 多智能体系统的有限时间一致性跟踪. 2015, 大连海事大学.
[4.]佘莹莹, 多智能体系统一致性若干问题的研究. 2010, 华中科技大学.
[5.]王国锋, 多智能体系统的一致性问题研究. 2017, 东北大学.
[6.]杨大鹏, 多智能体系统的事件驱动一致性控制与多 Lagrangian 系统的分布式 协同. 2015, 北京理工大学.

一阶二阶多智能体一致性控制的Matlab程序相关推荐

  1. 第5章 - 二阶多智能体系统的协同控制 --> 连续时间系统一致性

    第4章-一阶多智能体系统的协同控制 -> 领航跟随系统一致性[程序代码] 回到目录 第5章 - 二阶多智能体系统的协同控制 --> 连续时间系统一致性[程序代码]

  2. 【控制】《多智能体系统一致性协同演化控制理论与技术》纪良浩老师-第6章-一阶时滞多智能体系统分组一致性

    第5章 回到目录 第7章 配套程序下载地址:[控制]<多智能体系统一致性协同演化控制理论与技术>纪良浩老师-第6章-一阶时滞多智能体系统分组一致性.zip 第6章-一阶时滞多智能体系统分组 ...

  3. 第5章 - 二阶多智能体系统的协同控制 --> 连续时间含时延系统一致性

    第5章 - 二阶多智能体系统的协同控制 --> 离散时间系统一致性[程序代码] 回到目录 第5章 - 二阶多智能体系统的协同控制 --> 连续时间含时延系统一致性[程序代码] 连续时间含时 ...

  4. 第5章 - 二阶多智能体系统的协同控制 --> 连续时间含时延系统一致性【程序代码】

    第5章 - 二阶多智能体系统的协同控制 --> 连续时间含时延系统一致性 回到目录 第5章 - 二阶多智能体系统的协同控制 --> 领航跟随系统一致性 文章目录 τ = 0 \tau=0 ...

  5. 第5章 - 二阶多智能体系统的协同控制 --> 连续时间系统一致性【程序代码】

    第5章 - 二阶多智能体系统的协同控制 --> 连续时间系统一致性 回到目录 第5章 - 二阶多智能体系统的协同控制 --> 离散时间系统一致性 文章目录 动态一致性 静态一致性 动态一致 ...

  6. 第5章 - 二阶多智能体系统的协同控制 --> 离散时间系统一致性

    第5章 - 二阶多智能体系统的协同控制 --> 连续时间系统一致性[程序代码] 回到目录 第5章 - 二阶多智能体系统的协同控制 --> 离散时间系统一致性[程序代码]

  7. 【控制】《多智能体系统的动力学分析与设计》徐光辉老师-第3章-采样环境下带有领航者的二阶多智能体系统的一致性

    第2章 回到目录 第4章 第3章-采样环境下带有领航者的二阶多智能体系统的一致性 3.1 引言 3.2 预备知识和模型的建立 3.3 二阶多智能体系统在固定拓扑下的一致性分析 3.4 二阶多智能体系统 ...

  8. 【控制】《多智能体系统一致性协同演化控制理论与技术》纪良浩老师-第3章-有向二阶多智能体系统脉冲一致性

    第2章 回到目录 第4章 第3章-有向二阶多智能体系统脉冲一致性 3.1 引言 3.2 预备知识 3.3 问题描述与分析 3.3.1 具有固定拓扑的多智体系统一致性 3.3.2 具有切换拓扑的多智体系 ...

  9. 基于事件触发的二阶多智能体领导跟随一致性

    [无限嚣张(菜菜)]:hello您好,我是菜菜,很高兴您能来访我的博客,我是一名爱好编程学习研究的菜菜,每天分享自己的学习,想法,博客来源与自己的学习项目以及编程中遇到问题的总结. 座右铭:尽人事,听 ...

最新文章

  1. 干货!机器学习中,如何优化数据性能
  2. CSDN博客获取积分规则!不是下载积分!如何快速增长积分!
  3. 你必须要知道的架构知识~目录
  4. “大话架构”阿里架构师分享的Java程序员需要突破的技术要点
  5. SAP ECC6.0内存参数调整和调优
  6. 计算机英语 自我介绍,计算机面试英文自我介绍范例
  7. three.js加载3d模型_基于WebGL的3D技术在网页中的运用 ThingJS 前端开发
  8. 对于boost锁机制结论性的介绍
  9. What code you will get when you create a wcf library
  10. appcrash事件java,java – SpringBoot应用程序崩溃
  11. CNN中的卷积操作与权值共享
  12. 产品经理与产品运营哪个更有前途/钱途?
  13. Apache 日志配置,包含过滤配置
  14. linux 网卡无效 设置_请教,关于更改linux网卡配置文件后重启IP不生效的问题~
  15. .net 新添加的项目未加载_重大更新|报表分析工具FastReport .NET v2020.4发布!添加了新的条形码...
  16. ORM框架 之 Entity Framework
  17. 123个微信小程序源码分享(附下载)
  18. 扒一扒网易云课堂python课程,发现还有不少可以白嫖的免费好资源
  19. python转换字符编码_python 字符串编码转换
  20. python批量下载OSTIA数据

热门文章

  1. offsetParent、offsetTop、offsetLeft、offsetHeight、offsetWidth
  2. 抖音直播团队部门岗位KPI考核主播绩效制度
  3. 捕获输入值的异常(try...except)
  4. DOM解析与DOM4J
  5. MVC中方便的[Authorize],加上这特性,就可以加上登录验证
  6. TEB局部轨迹规划代码解读
  7. HTML学生个人网站作业设计:明星介绍网站制作——刘德华(11页) HTML+CSS+JavaScript 简单DIV布局明星人物介绍网页模板代码 DW学生个人网站制作成品下载
  8. 安利几个堪称黑科技的电脑软件
  9. Nvidia GPU信息nvidia-smi(Persistence-M持久性内存、Volatile Uncorr. ECC显存错误校正、GPU-Util显卡利用率、Compute M.显卡计算模式)
  10. PowerJob 的自实现高可用方案,妙妙妙!