当前位置: 首页 > news >正文

论文复现:Predictive Control of Networked Multiagent Systems via Cloud Computing

Predictive Control of Networked Multiagent Systems via Cloud Computing论文复现

文章目录

  • Predictive Control of Networked Multiagent Systems via Cloud Computing论文复现
    • 论文摘要
    • 系统参数初始化
    • 系统模型
    • 观测器
    • 预测过程
    • 控制器设计
    • 系统的整体框图
    • 仿真结果

论文摘要

翻译版本见:论文翻译:通过云计算对联网多智能体系统进行预测控制-CSDN博客

本文研究了基于云计算的网络化多智能体预测控制系统的设计与分析。该文提出一种网络化多智能体系统(NMAS)云预测控制方案,以同时实现一致性和稳定性,并主动补偿网络时延。详细介绍了NMAS云预测控制器的设计。对云预测控制方案的分析给出了闭环网络化多智能体控制系统稳定性和一致性的必要和充分条件。通过仿真验证了所提方案表征NMAS的动力学行为和控制性能。研究结果为NMAS及其应用的合作和协调控制的发展奠定了基础。

论文链接:Predictive Control of Networked Multiagent Systems via Cloud Computing | IEEE Journals & Magazine | IEEE Xplore

期刊:IEEE Transactions on Cybernetics

分区:Q1

论文引用:G. -P. Liu, “Predictive Control of Networked Multiagent Systems via Cloud Computing,” in IEEE Transactions on Cybernetics, vol. 47, no. 8, pp. 1852-1859, Aug. 2017, doi: 10.1109/TCYB.2017.2647820.

项目地址:

CSDN资源论文复现:PredictiveControlofNetworkedMultiagentSystemsviaClou资源-CSDN文库
githublongchentian/Predictive-Control-of-Networked-Multiagent-Systems-via-Cloud-Computing: Predictive Control of Networked Multiagent Systems via Cloud Computing 论文复现 (github.com)

系统参数初始化

clc;
clear all;
close all;
A1 = [1.7,-1.3;1.6, -1.8];
B1 = [1.0;2.0];
C1 = [1.0,0.3];
A2 = [1.8,-1.4;1.8,-1.9];
B2 = [1.7;3.4];
C2 = [0.7,0.2];
A3 = [1.4,-1.1;1.3,-1.5];
B3 = [0.8;1.6];
C3 = [1.1,0.4];
G1 = -0.16;
G2 = -0.18;
G3 = -0.14;
H1 = -0.12;
H2 = -0.10;
H3= -0.14;
F1 = [-0.4483;-1.1724];
F2 = [-0.6803;-1.6191];
F3 = [-0.3908;-0.9254];
M = [1,0,1;1,1,1;1,0,1 
];
X1 =[0.1;0.2];
X2 =[0.1;0.7];
X3 =[0.1;0.8];
samp_t = 0.2
a1 = int8(3);
a2 = int8(2);
a3 = int8(3);
s1 = int8(2);
s2 = int8(3);
s3 = int8(1);

系统模型

为了说明如何轻松地设计、分析和执行云预测控制方案,下面考虑了线性非同一多智能体。实际上,该方案可以扩展到更一般的 NMAS,例如具有不确定性和干扰的非线性 NMAS
x i ( t + 1 ) = A i x i ( t ) + B i u i ( t ) y i ( t ) = C i x i ( t ) \begin{align} x_{i} (t+1)=&A_{i} x_{i} (t)+B_{i} u_{i} (t) \notag \\ y_{i} (t)=&C_{i} x_{i} (t) \end{align} xi(t+1)=yi(t)=Aixi(t)+Biui(t)Cixi(t)
∀i ∈ N,其中 x i ∈ R n i x_i∈R^{n_i} xiRni y i ∈ l y_i∈l yil u i ∈ m i u_i∈m_i uimi 分别是第 i i i 个智能体的状态、输出和输入向量, A i ∈ R n i × n i A_i∈R^{n_i×n_i} AiRni×ni B i ∈ R n i × m i B_i ∈R^{n_i×m_i} BiRni×mi C i ∈ R l × n i C_i ∈R^{l×n_i} CiRl×ni 是第 i 个智能体的矩阵。

在这里插入图片描述

观测器

假设所有智能体都是可观察的,但它们的状态是不可测量的。然后,基于输出 y i ( t − s i ) y_i(t − s_i) yi(tsi) 和控制输入 u i ( t − s i ) u_i(t − s_i) ui(tsi),第 i 个智能体的状态观察器设计如下:
x ^ i ( t − s i + 1 ∣ t − s i ) = A i x ^ i ( t − s i ∣ t − s i − 1 ) + B i u i ( t − s i ) + F i ( y i ( t − s i ) − y ^ i ( t − s i ∣ t − s i − 1 ) ) y ^ i ( t − s i ∣ t − s i − 1 ) = C i x ^ i ( t − s i ∣ t − s i − 1 ) \begin{align} \hat {x}_{i} \left ({t-s_{i} +1 | t-s_{i} }\right )=&A_{i} \hat {x}_{i} \left ({t-s_{i} | t-s_{i} -1}\right )+B_{i} u_{i} \left ({t-s_{i} }\right )\notag \\&+ \,\, F_{i} \left ({y_{i} \left ({t-s_{i} }\right )-\hat {y}_{i} \left ({t-s_{i} | t-s_{i} -1}\right )}\right ) \notag \\ \hat {y}_{i} \left ({t-s_{i} | t-s_{i} -1}\right )=&C_{i} \hat {x}_{i} \left ({t-s_{i} | t-s_{i} -1}\right ) \end{align} x^i(tsi+1∣tsi)=y^i(tsitsi1)=Aix^i(tsitsi1)+Biui(tsi)+Fi(yi(tsi)y^i(tsitsi1))Cix^i(tsitsi1)
其中 x ^ i ( t − k ∣ t − j ) ∈ ℜ n i ( k < j ) \hat {x}_{i} (t-k|t-j)\in \Re ^{n_{i}} (k<j) x^i(tktj)ni(k<j)表示第 i 个智能体根据时间 t − j t − j tj 之前的可用信息对时间 t − k t − k tk 的状态预测, y ^ i ( . ∣ . ) ∈ ℜ l i \hat {y}_{i} (.|.)\in \Re ^{l_{i}} y^i(.∣.)li是输出预测, F i ∈ ℜ n i × l i F_{i} \in \Re ^{n_{i} \times l_{i}} Fini×li是观察者增益矩阵。

在这里插入图片描述

预测过程

要使用直到时间 t − s i t − s_i tsi 的可用信息来预测第 i 个智能体的状态,可以使用从 t − s i + 2 t − s_i + 2 tsi+2 t + a i t + a_i t+ai 开始的以下时间状态估计:
x ^ i ( t − s i + k ∣ t − s i ) = A i x ^ i ( t − s i + k − 1 ∣ t − s i ) + B i u i ( t − s i + k − 1 ) y ^ i ( t − s i + k ∣ t − s i ) = C i x ^ i ( t − s i + k ∣ t − s i ) \begin{align} \hat {x}_{i} \left ({t-s_{i} +k | t-s_{i} }\right )=&A_{i} \hat {x}_{i} \left ({t-s_{i} +k-1 | t-s_{i} }\right )\notag \\&+ \,\, B_{i} u_{i} \left ({t-s_{i} +k-1}\right ) \\ \hat {y}_{i} \left ({t-s_{i} +k | t-s_{i} }\right )=&C_{i} \hat {x}_{i} \left ({t-s_{i} +k | t-s_{i} }\right ) \end{align} x^i(tsi+ktsi)=y^i(tsi+ktsi)=Aix^i(tsi+k1∣tsi)+Biui(tsi+k1)Cix^i(tsi+ktsi)
传感器时延部分的预测+执行器部分的预测:

在这里插入图片描述
在这里插入图片描述

预测部分代码:

function [x_,y]= fcn(u10,u9,u8,u7,u6,u5,u4,u3,u2,u1,x,s,a,A,B,C)
% tau的上界是N,最多迭代N次,控制输入按照t-s_i时刻的值
tau = s + a;
temp0 = x;
if tau == 1temp1 = A * temp0 + B * u1;x_ = temp1;
elseif tau == 2temp1 = A * temp0 + B * u2;temp2 = A * temp1 + B * u1;x_ = temp2;
elseif tau == 3temp1 = A * temp0 + B * u3;temp2 = A * temp1 + B * u2;temp3 = A * temp2 + B * u1;x_ = temp3;
elseif tau == 4temp1 = A * temp0 + B * u4;temp2 = A * temp1 + B * u3;temp3 = A * temp2 + B * u2;temp4 = A * temp3 + B * u1;x_ = temp4;  
elseif tau == 5temp1 = A * temp0 + B * u5;temp2 = A * temp1 + B * u4;temp3 = A * temp2 + B * u3;temp4 = A * temp3 + B * u2;temp5 = A * temp4 + B * u1;x_ = temp5;
elseif tau == 6temp1 = A * temp0 + B * u6;temp2 = A * temp1 + B * u5;temp3 = A * temp2 + B * u4;temp4 = A * temp3 + B * u3;temp5 = A * temp4 + B * u2;temp6 = A * temp5 + B * u1;x_ = temp6;
elseif tau == 7temp1 = A * temp0 + B * u7;temp2 = A * temp1 + B * u6;temp3 = A * temp2 + B * u5;temp4 = A * temp3 + B * u4;temp5 = A * temp4 + B * u3;temp6 = A * temp5 + B * u2;temp7 = A * temp6 + B * u2;x_ = temp7;
elseif tau == 8temp1 = A * temp0 + B * u8;temp2 = A * temp1 + B * u7;temp3 = A * temp2 + B * u6;temp4 = A * temp3 + B * u5;temp5 = A * temp4 + B * u4;temp6 = A * temp5 + B * u3;temp7 = A * temp6 + B * u2;temp8 = A * temp7 + B * u1;x_ = temp8;
elseif tau == 9temp1 = A * temp0 + B * u9;temp2 = A * temp1 + B * u8;temp3 = A * temp2 + B * u7;temp4 = A * temp3 + B * u6;temp5 = A * temp4 + B * u5;temp6 = A * temp5 + B * u4;temp7 = A * temp6 + B * u3;temp8 = A * temp7 + B * u2;temp9 = A * temp8 + B * u1;x_ = temp9;
elseif tau == 10temp1 = A * temp0 + B * u10;temp2 = A * temp1 + B * u9;temp3 = A * temp2 + B * u8;temp4 = A * temp3 + B * u7;temp5 = A * temp4 + B * u6;temp6 = A * temp5 + B * u5;temp7 = A * temp6 + B * u4;temp8 = A * temp7 + B * u3;temp9 = A * temp8 + B * u2;temp10 = A * temp9 + B * u1;x_ = temp10;
else x_ = temp0;end
y = C * x_;

控制器设计

假设所需的参考输入由阶跃信号向量 r 0 r_0 r0 表示,并且仅应用于其中一个智能体,例如,具有 a 1 ≥ a i , ∀ i ∈ N − 1 a_1 ≥ a_i,∀i ∈ N − {1} a1aiiN1的第一个智能体。为了跟踪这个所需的参考输入,引入了一组动态变量
z 1 ( t + 1 + a 1 ) = z 1 ( t + a 1 ) + y ^ 1 ( t + a 1 ∣ t − s 1 ) − r 0 z i ( t + 1 + a i ) = z i ( t + a i ) + y ^ i ( t + a i ∣ t − s i ) − y ^ 1 ( t + a i ∣ t − s 1 ) . \begin{align} z_{1} \left ({t+1+a_{1}}\right )=&z_{1} \left ({t+a_{1}}\right )+\hat {y}_{1} \left ({t+a_{1} | t-s_{1} }\right )-r_{0}\qquad \\ z_{i} \left ({t+1+a_{i} }\right )=&z_{i} \left ({t+a_{i}}\right )+\hat {y}_{i} \left ({t +a_{i} | t-s_{i} }\right )\notag \\&- \,\, \hat {y}_{1} \left ({t +a_{i} | t- s_{1} }\right ). \end{align} z1(t+1+a1)=zi(t+1+ai)=z1(t+a1)+y^1(t+a1ts1)r0zi(t+ai)+y^i(t+aitsi)y^1(t+aits1).
(5)和(6)中动态变量的作用相当于常规控制系统中的积分作用,可以消除稳态跟踪误差。
在这里插入图片描述

为了主动补偿网络延迟 s i s_i si a i , ∀ i ∈ N a_i,∀i ∈ N aiiN,NMAS 的预测控制协议如下:
u ^ i ( t + a i ∣ t − s i ) = G i z i ( t + a i ) + H i ∑ j = 1 N c i j ( y ^ j ( t + a i ∣ t − s j ) − y ^ i ( t + a i ∣ t − s i ) ) \begin{align} \hat {u}_{i} \left ({t+a_{i} | t-s_{i} }\right )=&G_{i} z_{i} \left ({t+a_{i} }\right )\notag \\&+ \,\, H_{i} \sum _{j=1}^{N}c_{ij} \Biggl ({\hat {y}_{j} \left ({t+a_{i} | t-s_{j} }\right )}\notag \\&\qquad \qquad \qquad {- \,\, \hat {y}_{i} \left ({t+a_{i} | t-s_{i} }\right )}\Biggr )\qquad \end{align} u^i(t+aitsi)=Gizi(t+ai)+Hij=1Ncij(y^j(t+aitsj)y^i(t+aitsi))
其中
c i j = { 1 , i f a i ≤ a j 0 , i f a i > a j . \begin{equation} c_{ij} =\begin{cases} {1}, & {\mathrm{ if}}~a_{i} \, \le \, a_{j}\\ {0},& {\mathrm{ if}}~a_{i} \, >a_{j}. \end{cases} \end{equation} cij={1,0,if aiajif ai>aj.
G i ∈ R m i × m i G_i ∈R^{m_i×m_i} GiRmi×mi H i ∈ R m i × l i H_i ∈R^{m_i×l_i} HiRmi×li 是需要设计的增益矩阵。以上暗示预测控制协议利用基于时间 t − s i , ∀ i ∈ N t − s_i,∀i ∈ N tsi,iN 可用信息的输出预测来估计时间 t + a i , ∀ i ∈ N t + a_i,∀i ∈ N t+ai,iN 的未来控制行为。实际上,所提出的预测控制协议由两部分组成。一个是让智能体 1 跟踪所需的参考,让其他智能体跟踪智能体 1 的输出,这由 (7) 中右侧的第一项表示。另一个是智能体之间的协调,由(7)中右侧的第二项表示。

在这里插入图片描述
在这里插入图片描述

然后,第 i 个智能体的预测控制输入被设计为
u i ( t + a i ) = u ^ i ( t + a i ∣ t − s i ) . \begin{equation} u_{i} \left ({t+a_{i}}\right )=\hat {u}_{i} \left ({t+a_{i} | t-s_{i}}\right ). \end{equation} ui(t+ai)=u^i(t+aitsi).
因此,第 i 个智能体的控制输入为
u i ( t ) = u ^ i ( t ∣ t − s i − a i ) . \begin{equation} u_{i} (t)=\hat {u}_{i} \left ({t | t-s_{i} -a_{i}}\right ). \end{equation} ui(t)=u^i(ttsiai).

因此,云预测控制方案被提出如下。

  1. 来自传感器的所有智能体的输出数据 y i ( t ) , ∀ i ∈ N y_i(t),∀i ∈ N yi(t),iN, 在每个采样时间 t 被发送到网络。

  2. 基于从网络接收到的输出数据 y i ( t − s i ) , ∀ i ∈ N y_i(t − s_i),∀i ∈ N yi(tsi),iN,云计算系统计算预测 x ^ i ( t + a i ∣ t − s i ) , y ^ i ( t + a i ∣ t − s i ) , u ^ i ( t + a i ∣ t − s i ) , ∀ i ∈ N , \hat {x}_{i} (t+a_{i} |t-s_{i} ),~\hat {y}_{i} (t+a_{i} |t-s_{i} ),~\hat {u}_{i} (t+a_{i} |t-s_{i} ),~\forall i\in {\mathbb N}, x^i(t+aitsi), y^i(t+aitsi), u^i(t+aitsi), iN,, 分别使用(3),(4)和(7)的智能体的状态,输出和控制输入,和动态变量 z i ( t + a i ) z_{i}(t+a_{i}) zi(t+ai), ∀ i ∈ N ∀i ∈ N iN 使用 (5) 和 (6)。

  3. 由(9)给出的控制输入预测 u i ( t + a i ) , ∀ i ∈ N u_{i} (t+a_{i}),∀i ∈ N ui(t+ai),iN通过网络从云计算系统发送到每个智能体的执行器。

  4. 所有智能体的执行器在每个采样时间 t 从网络接收由 (10) 给出的控制输入 u i ( t ) , ∀ i ∈ N u_i(t), ∀i ∈ N ui(t),iN

系统的整体框图

在这里插入图片描述

仿真结果

基本符合原文结果。

在这里插入图片描述

原文结果:

在这里插入图片描述

相关文章:

  • x264 编码器 CAVLC 熵编码源码分析
  • Alpine Linux 轻量级Linux 适合于 docker 容器镜像
  • 浏览器缓存:强缓存与协商缓存实现原理有哪些?
  • HTTPS请求头缺少HttpOnly和Secure属性解决方案
  • 微服务实战系列之玩转Docker(二)
  • redis基本类型和订阅
  • 数据结构之初始二叉树(2)
  • docker网络互联
  • 机器学习-20-基于交互式web应用框架streamlit的基础使用教程
  • 企业如何查看员工的上网时长和记录?如何查看公司局域网员工电脑的上网记录
  • uniapp 开发 App 对接官方更新功能
  • 【Android】基础—基本布局
  • 校验el-table中表单项
  • Flink实时开发添加水印的案例分析
  • 【Qt】之【Bug】error:C1083 无法打开包括文件
  • 时间复杂度分析经典问题——最大子序列和
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • Brief introduction of how to 'Call, Apply and Bind'
  • Centos6.8 使用rpm安装mysql5.7
  • HTTP 简介
  • interface和setter,getter
  • js
  • k个最大的数及变种小结
  • laravel with 查询列表限制条数
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 分类模型——Logistics Regression
  • 聚类分析——Kmeans
  • 首页查询功能的一次实现过程
  • 网页视频流m3u8/ts视频下载
  • Java性能优化之JVM GC(垃圾回收机制)
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​第20课 在Android Native开发中加入新的C++类
  • ​十个常见的 Python 脚本 (详细介绍 + 代码举例)
  • ​水经微图Web1.5.0版即将上线
  • !!Dom4j 学习笔记
  • !$boo在php中什么意思,php前戏
  • ###STL(标准模板库)
  • #数学建模# 线性规划问题的Matlab求解
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (分布式缓存)Redis持久化
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (一)python发送HTTP 请求的两种方式(get和post )
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .NET Core中如何集成RabbitMQ
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .NET 反射 Reflect
  • .net 受管制代码
  • .NET 指南:抽象化实现的基类