【事件触发一致性】多智能体网络的基于事件的协议(Matlab代码实现)

    💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

 ⛳️赠与读者

💥1 概述

📚2 运行结果

🎉3 参考文献 

🌈4 Matlab代码、文献下载


 ⛳️赠与读者

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能解答你胸中升起的一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。

     或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

💥1 概述

本文研究了在固定或切换的无向连通网络拓扑结构下,多个积分器的平均共识问题。每个智能体采用基于事件的控制方法,使其状态最终收敛到初始状态的平均值。基于二次Lyapunov函数设计了一个事件触发方案。通过为每个智能体选择合适的事件条件,使Lyapunov函数的导数为负。该事件条件是采样数据且分布式的,即事件检测器仅在离散采样时刻使用邻居信息和进行本地计算。通过仿真展示了基于事件的协议设计。

众多文献为多智能体系统做出了贡献,这些贡献来自于研究论文(Arcak, 2007; Cortés, 2008; Jadbabaie, Lin, & Morse, 2003; Lin, Broucke, & Francis, 2004; Moreau, 2005; Olfati-Saber & Murray, 2004; Tanner, Jadbabaie, & Pappas, 2007; Xiao & Wang, 2008)以及专著(Mesbahi & Egerstedt, 2010; Ren & Beard, 2008)。在分布式共识协议设计中,通常使用相邻智能体之间的连续通信。尽管连续通信是一个理想化的假设,但在离散采样时刻间歇性地进行交互更为现实(Chen & Francis, 1995)。一种选择是使用周期性同步采样(Xie, Liu, Wang, & Jia, 2009a,b),然而,同时为所有智能体更新控制动作是不理想且不必要的。

基于事件的控制是时间触发控制的替代方案(Henningsson, Johannesson, & Cervin, 2008; Lunze & Lehmann, 2010)。基于事件的控制的一个显著特点是,只有在特定事件发生时才更新控制动作。例如,逻辑条件被违反或网络拓扑发生变化。与时间触发控制相比,基于事件的控制在通信减少方面具有常被引用的优势。自开创性论文(Åström & Bernhardsson, 2002)以来,基于事件的控制已在网络化控制系统(Wang & Hovakimyan, 2012)、分散系统(Mazo & Tabuada, 2011; Wang & Lemmon, 2011)中得到了广泛研究,并且在许多情况下优于传统的基于时间的控制(Meng & Chen, 2012)。它还被证明在多智能体系统中特别有用,例如共识算法(Dimarogonas, 2011; Dimarogonas & Frazzoli, 2009; Dimarogonas, Frazzoli, & Johansson, 2012; Dimarogonas & Johansson, 2009; Liu & Chen, 2010, 2011; Seyboth, Dimarogonas, & Johansson, 2013; Shi & Johansson, 2011)、队形控制(Tang, Liu, & Chen, 2011)、跟踪控制(Hu, Chen, & Li, 2011a,b)以及路径规划(Teixeira, Dimarogonas, Johansson, & Sousa, 2010a,b)。

本文关注的是基于事件的共识问题,该问题出现在多个领域,包括多自主车辆的协同控制、协同机器人和无线传感器网络。感兴趣的读者可以参考上述引用的关于基于事件的共识协议的理论研究。这些参考文献的一个共同特点是连续通信和基于事件的控制更新。这种连续检测和更新并没有达到引入基于事件的控制的初衷,即减少互联子系统之间的通信需求。因为实现连续事件检测器需要精细的硬件来不断监测和检查事件条件,这可能也会成为能量消耗的主要来源。

基于上述观察,本文定义了采样数据事件检测的概念,即周期性地评估事件条件。本文致力于开发和分析具有采样数据事件检测的分布式基于事件的算法,以解决在无向、连通网络拓扑结构上定义的平均共识问题。分析从固定拓扑结构的共识问题开始,还提出了对切换拓扑结构分析的直接扩展。据作者所知,本文是首次使用采样数据事件检测器来解决多智能体系统的共识问题,这比连续事件检测器有所改进。此外,本文的采样数据事件检测器允许最小事件间隔时间,该时间下界由同步采样周期决定。这有利于每个智能体的事件检测器设计,以减少相邻智能体之间的通信并节省用于事件检测的传感器能量。本文采用基于Lyapunov的方法,这在使用基于事件的通信来研究多智能体系统共识的最新研究中具有重要作用。与现有工作中常用的Lyapunov函数不同,本文引入了一个新的Lyapunov函数,作为详细动态模型的抽象。结果表明,可以选择事件检测器的参数,使得沿闭环系统轨迹计算的Lyapunov函数的时间导数为半负定。借助LaSalle不变性原理,可以证明每个智能体最终会收敛到所有智能体的初始平均值。

本文的两个主要贡献如下:第一,为多智能体系统提供了一种新的具有采样数据事件检测的基于事件的共识算法。这种方法与之前开发的方法有本质区别,这些区别便于我们以采样数据的方式实现事件检测器。第二,提出了新的基于事件的共识算法,用于具有分布式和采样数据事件检测的切换网络拓扑,并展示了固定拓扑和切换拓扑之间的紧密联系。

结论
本文提出了基于事件的控制算法,使具有固定拓扑结构的多智能体系统在共识意义上具有收缩性。引入了一个新的Lyapunov函数,并通过适当选择事件条件,使该Lyapunov函数的时间导数为半负定。基于这个Lyapunov函数,设计了采样数据事件检测器,以驱动状态收敛到其初始平均值。基于固定拓扑的结果,还给出了适用于切换拓扑的基于事件的共识算法。通过仿真展示了这些设计。
未来的工作将致力于将这些结果推广到具有通信时延和干扰的有向拓扑网络。此外,为所有智能体使用一个共同的采样周期在分布式网络中可能过于限制性。为不同智能体采用不同的采样周期将是一个有趣的扩展,但可能需要新的分析工具。

📚2 运行结果

部分代码:

 if f1>=0%第1个智能体事件触发
        xtk_1=x;
    end
    if f2>=0%第2个智能体事件触发
        xtk_2=x;
    end    
    if f3>=0%第3个智能体事件触发
        xtk_3=x;
    end  
    if f4>=0%第4个智能体事件触发
        xtk_4=x;
    end 
    if f5>=0%第5个智能体事件触发
        xtk_5=x;
    end 
     A=A+1;

end

figure(1)
plot(Ts,X,'LineWidth',1);
xlabel('time(s)');ylabel({'positions of agents';'x_{i}'});
legend('x_1','x_2','x_3','x_4','x_5');
grid on

figure(2)
plot(Ts,U,'LineWidth',1);
xlabel('time(s)');ylabel('control input');
legend('u_1','u_2','u_3','u_4','u_5');
grid on

%图例换行操作
% h1=plot(Ts,U(:,1));hold on;
% h2=plot(Ts,U(:,2));hold on;
% h3=plot(Ts,U(:,3));hold on;
% h4=plot(Ts,U(:,4));hold on;
% h5=plot(Ts,U(:,5));hold on;
% lgd1=legend([h1,h2],'u_1','u_2','orientation','horizontal','location','north');
% % set(lgd1,'FontName','宋体','FontSize',14);
% set(lgd1);
% %不想要有框框区分,在每个图例下面加行代码就行啦,如下
% legend boxoff;
% ah=axes('position',get(gca,'position'),'visible','off');
% lgd2=legend(ah,[h3,h4,h5],'u_3','u_4','u_5','orientation','horizontal','location','north');
% set(lgd2);
% %不想要有框框区分,在每个图例下面加行代码就行啦,如下
% legend boxoff;

figure(3)
plot(Ts,E1,Ts,Y1,'LineWidth',1);
xlabel('time(s)');ylabel('||e1||');
legend('||e1||','0.6||y1||')
grid on

figure(4)
plot(Ts,E2,Ts,Y2,'LineWidth',1);
xlabel('time(s)');ylabel('||e2||');
legend('||e2||','0.6||y2||')
grid on

figure(5)
plot(Ts,E3,Ts,Y3,'LineWidth',1);
xlabel('time(s)');ylabel('||e3||');
legend('||e3||','0.6||y3||')
grid on

figure(6)
plot(Ts,E4,Ts,Y4,'LineWidth',1);
xlabel('time(s)');ylabel('||e4||');
legend('||e4||','0.6||y4||')
grid on

figure(7)
plot(Ts,E5,Ts,Y5,'LineWidth',1);
xlabel('time(s)');ylabel('||e5||');
legend('||e5||','0.6||y5||')
grid on

ut1=U;
n=size(ut1,1);
T_1=[];T_2=[];T_3=[];T_4=[];T_5=[];
for i=1:n-1
    if (ut1(i,1)~= ut1(i+1,1))
        t1=i;
        T_1=[T_1;t1];
    end
end
for i=1:n-1
    if (ut1(i,2)~=ut1(i+1,2))
        t1=i;
        T_2=[T_2;t1];
    end
end
for i=1:n-1
    if (ut1(i,3)~=ut1(i+1,3))
        t1=i;
        T_3=[T_3;t1];
    end
end

🎉3 参考文献 

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。(文章内容仅供参考,具体效果以运行结果为准)

🌈Matlab代码、文献下载

资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取

                                                           在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值