精华内容
下载资源
问答
  • 多智能体一致性matlab
    千次阅读
    2020-10-22 09:16:55
    %改变了Laplacian函数里面的FAI矩阵,使得状态收敛至静态值,
    clc;
    clear;
    
    % 初始化
    X0  = [-3, 2, 1, -1,4]';                               % 初始位置
    DX0 = [0.3, 0.1, 0.5, 0.2, 0.4]';                      % 初始速度
    Y1  = [X0; DX0];                                       % 积分初值
    n   = 5;
    n   = length(X0);
    A =[0 1 0 -1 1;
        0 0 1 0 0;
        1 0 0 0 0;
        0 0 0 0 1;
        0 0 0 1 0];                                     % 邻接矩阵,有向拓扑结构
    D =[1 0 0 0 0;
        0 1 0 0 0;
        0 0 1 0 0;
        0 0 0 1 0;
        0 0 0 0 1];                                     % 度矩阵,有向拓扑结构
    L = D - A;
    
    gama  = 1.2547;
    k     = 0.5;
    % 构造矩阵FAI
    FAI   = [zeros(n,n), eye(n); 
           -L, -k*eye(n)-gama*L]; 
    
    
    tBegin = 0;
    tEnd   = 10;
    h      = 0.1;
    times = (tEnd-tBegin) / h;
    Y(:,1) = Y1;
    t(1) = tBegin;
    
    i = 1;
    % 从1到100循环了100次
    while(i <= times)
        K1 = h * FAI * Y(1:10,i);
        K2 = h * FAI * Y(1:10,i) + K1/2;
        K3 = h * FAI * Y(1:10,i) + K2/2;
        K4 = h * FAI * Y(1:10,i) + K3;
        t(i+1) = t(i) + h;
        Val = (K1+2*K2+2*K3+K4)/6;
        Y(1:10,i+1) = Y(1:10,i) + Val;
        i = i+1;
    end
    
    % 显示
    subplot(2,1,1)
    plot(t,Y(1,:), t,Y(2,:), t,Y(3,:), t,Y(4,:), t,Y(5,:), 'linewidth',1.5)%位置
    subplot(2,1,2)
    plot(t,Y(6,:), t,Y(7,:), t,Y(8,:), t,Y(9,:), t,Y(10,:), 'linewidth',1.5)%速度
    

    在这里插入图片描述

    更多相关内容
  • 多智能体一致性代码仿真,可以参考一下
  • 多智能体一致性代码仿真,用matlab写的,可以参考一下
  • 基于matlab编写,5个智能体分为1-3,4-5两组,分别收敛至不同的状态。参考文献:多智能体_二阶系统组与混合阶情形的一致性问题研究_冯元珍 第三章
  • 多智能体一致性 matlab 仿真,matlab和ansys联合仿真,matlab源码.zip.zip
  • 低阶多智能体系统matlab仿真,主要是一阶多智能体的包含控制,以及没有包含的例子
  • 智能体一阶二阶一致性 matlab 仿真。 包涵一阶,二阶多智能体一致性,包涵对车辆的编队的算法仿真,最后仿真实现小车位置和速度的一致性。还包含带领导和时滞系统时的matlab仿真m文件 智能体。
  • Matlab实现多智能体一致性问题,可运行
  • 多智能体一致性编程,采用matlab编程
  • 一阶二阶多智能体一致性控制的Matlab程序

    千次阅读 多人点赞 2022-01-06 15:47:46
    一阶二阶多智能体一致性控制的Matlab程序一阶二阶多智能体一致性控制的Matlab程序前言:智能体控制的应用一、基础知识:图论与代数1.图论介绍2.图的Laplace矩阵二、一阶二阶智能体控制一致性代码(Matlab)1. ...

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

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


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

    智能体本是人工智能领域的概念,控制领域的智能体一般指具有一定的 动力学和运动学特性且能同周围环境及其他个体交换信息的实体。在过去的十几 年里,多智能体系统 (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. 无向图的邻接矩阵

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

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

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

    采用第二种定义,则
    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 ] (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=010100001000000101000010000001100000(1)
    以2,3节点为例, A 32 A_{32} A32代表矩阵第三行第二列,具体意义为象征第3个智能体与第2个智能体之间的通信关系,采用邻接矩阵的第二种定义则由于2节点到3节点有一条有向线段故 A 32 = 1 A_{32}=1 A32=1,而4节点没有指向3节点故 A 34 = 0 A_{34}=0 A34=0
    定义二:图的入度矩阵D,入度矩阵是一个对角矩阵,对角线元素为终点在这个节点的边的条数,采用第二种定义的话,有向图的入度矩阵对角线元素就为邻接矩阵对应行和
    D = [ 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 ] (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=100000010000001000000200000010000002(2)
    定义三:图的laplacian矩阵: L = D − A L=D-A L=DA,由定义可知laplacian矩阵行和为0
    L = [ 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 ] (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=110100011000001101000210000011100002(3)
    关于图论方面就介绍到这里,下面介绍如何根据图的Laplacian矩阵设计多智能体一致性控制器。

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

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

    1. 一阶智能体

    多智能体一致性的概念,对一阶系统而言就是状态趋于一致,即在 t → ∞ t\rightarrow\infty t时,有 x i → x j x_i\rightarrow x_j xixj成立。
    最简单的智能体 (如阻尼器) 的动力学可用一阶积分器模型来描述 式中,
    x i ˙ ( t ) = u i ( 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)

    x i ( t ) ⊂ R p x_i(t)\subset R^p xi(t)Rp为智能体 i 的位置, u i ( t ) ⊂ R p u_i(t)\subset R^p ui(t)Rp为控制输入,N 为智能体的总数。这里假设控制输入可直接控制智能体的速度。Olfati-Saber 和 Murray 在文献中针对一阶积分器智能体网络提出了一种 一致性控制器
    u i ( t ) = − ∑ j = 1 N a i j ( x i ( t ) − x j ( 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=1Naij(xi(t)xj(t)),i=1,,N(5)

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

    该文献还指出,智能体的状态最后趋于一致的终值是由智能体状态的初值和通信拓扑图共同决定的,其终值可表示为 ∑ i = 1 N r i x i ( 0 ) \sum_{i=1}^N r_ix_i(0) i=1Nrixi(0)。其中 r = [ r 1 , … , r n ] T r=[r_1,\ldots,r_n]^T r=[r1,,rn]T 为 Laplacian 矩阵与零特征值相关的左特征向量且有 1 N T r = 1 1_N^Tr=1 1NTr=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:n
      u(:,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算法)

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

    式中, γ > 0 \gamma>0 γ>0 为待确定的常数增益。Ren 指出,对于连接的无向通信拓扑而言, 上式可使二阶积分器智能体的位置和速度都渐近趋于一致。但对于有向通信拓扑而言,则需要上式中的增益参数 γ \gamma γ满足条件
    γ > max ⁡ ∀ R e ( μ i ) < 0 , I m ( μ i ) > 0 2 ∣ μ i ∣ cos ⁡ ( tan ⁡ − 1 ( I m ( μ i ) − R e ( μ 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μicos(tan1(Re(μi)Im(μi)))2 (8)

    式中, μ i \mu_i μi为矩阵 − L -L L的第 i 个特征值。从这里可以看出,有向图下智能体实现 一致比无向图更加困难。同样,有向图需至少包含一个有向生成树。若智能体网络的位置和速度能趋于一致,则它们的终值由下式给出
    x i → x j → ∑ i = 1 N r i x i ( 0 ) + t ∑ i = 1 N r i v i ( 0 ) v i → v j → ∑ i = 1 N r i v i ( 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} xixji=1Nrixi(0)+ti=1Nrivi(0)vivji=1Nrivi(0)(9)
    给定邻接矩阵(无向图)
    A = [ 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 ] (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=0101101001011010(1)
    初始速度和初始状态一致 v , x = [ 1 , 2 , 3 , 4 ] T \mathbf{v,x}=[1 ,2, 3 ,4]^T v,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仿真m文件,包括对车辆的编队的算法仿真,最后仿真实现小车位置和速度的一致性,思路清晰名了,非常适合初学者学习。
  • 该程序实现个有界输入的智能体状态趋于一致;并绘制出多智能体状态图以及一致函数曲线
  • 多智能体系统是智能体组成的集合,它的目标是将大而复杂的系统建设成小的、彼此互相通信和协调的,易于管理的系统。
  • 该文件主要用于多智能体网络一致性研究的matlab相关代码
  • matlab编程,可以实现多智能体一致性。简单交流和学习
  • 一个简单实用的二阶多智能体系统一致性的仿真框图,适合于初学者和大学生,可以进行修改,做实验等等
  • 该文件主要用于多智能体网络一致性研究所用的代码
  • 包涵一阶,二阶多智能体一致性,包涵对车辆的编队的算法仿真,最后仿真实现小车位置和速度的一致性。还包含带领导和时滞系统时的matlab仿真m文件
  • 包含多智能体一阶、二阶有无领导者等matlab仿真代码,适合初学者
  • 该文件主要用于多智能体网络达到一致性研究的matlab程序,simulink
  • 该文件主要用于多智能体网络达到一致性研究的matlab程序
  • 一个简单实用的二阶多智能体系统一致性的simulink仿真框图,可以进行修改,做实验等等
  • 文章中描述了几种多智能体一致性算法的数值仿真,亲测,可以运行,只需在MATLAB中新建M文件输入即可。
  • 多智能体的编队控制matlab程序(自己编写的,可以完美运行) 本程序是自己针对一篇IEEE ...适合多智能体的编队或一致性研究的初学者学习。(这个程序上传的时候少了一个m文件,请搜索本人上传的所有资源找到补充文件)
  • 多智能体一致性MATLAB仿真程序,研究了一阶一致性问题,使用LMI工具箱求解
  • 包涵一阶,二阶多智能体一致性,包涵对车辆的编队的算法仿真,最后仿真实现小车位置和速度的一致性。还包含带领导和时滞系统时的matlab仿真m文件
  • 文档中包含一个simulink仿真模型和S函数代码文件,在matlab中设置好路径,就可以成功仿真
  • 文件包里包含了多智能体最优一致性避障算法研究文章一篇及Matlab仿真源程序,使用一致性算法进行避障有利用机器人快速到达目标位置
  • 多智能体一阶二阶一致性 matlab 仿真

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,649
精华内容 659
关键字:

多智能体一致性matlab