✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
随着先进控制技术的日益发展,分布式大规模复杂网络的出现和蓬勃发展被广泛应用于各个控制领域,比如无线传感器网络,编队控制,能源系统等.多智能体系统作为复杂网络系统中一种典型系统,由于它在实际中的广泛应用受到越来越多研究者的关注.在多智能体的协同控制中,一致性是其最基本的研究问题,其目标主要是通过设计一个控制器使得智能体之间通过局部的信息交换来实现每个智能体的状态或者输出收敛到一个共同的值.在传统的一致性控制背景下,一致性的获得是通过假设智能体之间存在连续的安全信息交换来实现的.
⛄ 部分代码
%文件名:multiAgentOptimalControlWithDisturbance.m
function multiAgentOptimalControlWithDisturbance(~)
%% 事件触发机制下带领导者的多智能体最优控制
function [x, y] = Ode(funcName, h, tspan, X_y0)
startTime = tspan(1);
endTime = tspan(2);
n=floor((endTime-startTime)/h);%求步数floor的作用是将小数转化为整数
x(1)=startTime;%时间起点
y(:,1)=X_y0;%赋初值,可以是向量,但是要注意维数
for i = 1 : n
x(i+1) = x(i) + h;
y( : , i + 1)= stepRK4(funcName, h, x(i), y( : , i));
end
%% 事件触发用到的ODE
% functionName:传入的微分方程的名称
% h:计算所用到的步长
% x0:其实时间点
% X_y0:初值
% u0:触发时刻的状态
function y = eventTriggersRK4(functionName, h, x0, X_y0, u0)
k1 = functionName(x0, u0);
k2 = functionName(x0 + h/2, u0 + h*k1/2);
k3 = functionName(x0 + h/2, u0 + h*k2/2);
k4 = functionName(x0 + h, u0 + h*k3);
y= X_y0 + h*(k1+2*k2+2*k3+k4)/6;
%% 连续时间下的单步的RK4
% functionName:传入的微分方程的名称
% h:计算所用到的步长
% x0:其实时间点
% X_y0:初值
function y = stepRK4(functionName, h, x0, X_y0)
k1 = functionName(x0, X_y0);
k2 = functionName(x0 + h/2, X_y0 + h*k1/2);
k3 = functionName(x0 + h/2, X_y0 + h*k2/2);
k4 = functionName(x0 + h, X_y0 + h*k3);
y= X_y0 + h*(k1+2*k2+2*k3+k4)/6;%y是个列向量
⛄ 运行结果
⛄ 参考文献
[1] 徐勇. 网络化多智能体系统的事件触发一致性研究[D]. 浙江大学.
[2] 邓甲, 王付永, 刘忠信,等. 动态事件触发机制下二阶多智能体系统完全分布式控制.
[3] 焦强. 同质与异质线性多智能体系统的分布式跟踪控制[D]. 南京理工大学, 2018.
[4] 王东, 王泽华, 刘洋,等. 基于事件触发的异构多智能体最优包含控制[J]. 航空学报, 2020(S01):8.
[5] 陈刚, 刘智. 具有时变状态约束的多智能体有限时间事件触发控制方法:, CN202210171849.X[P]. 2022.
[6] KONG Mingming, 孔明明, LIU Zhongxin,等. 基于事件触发机制的二阶多智能体系统控制[C]// 中国多智能体系统与控制会议. 中国系统仿真学会;中国人工智能学会, 2014.
[7] 周裕龙. 基于事件触发机制的多智能体系统一致性控制设计及实现[D]. 电子科技大学.