202 多智能体系统神经网络自适应动态滑模控制 文献+MATLAB 代码 对比原文有少量改动,均已注释 研究了具有执行器滞后、未知系统动力学和外部扰动的二阶多agent系统的时变成形问题。 提出了一种新的自适应动态滑模控制方案,以控制一组智能体沿着期望的轨迹运动。 首先,利用基于局部队形跟踪误差的动态滑模方法抑制外部干扰,获得平滑无抖振的控制输入;采用切比雪夫神经网络估计与系统动态评估相关的非线性函数,采用光滑投影律调节神经网络的输出,并在当前控制律中加入Bouc-Wen迟滞补偿器来抵消已知的执行器迟滞效应。 最后,基于多方向机器人系统的数值仿真验证了所提控制律的性能。 #论文复现 #动态滑模 #自适应神经网络 #科研辅导 #多智能体

在科研领域,多智能体系统的控制一直是个热门话题。今天咱就来聊聊具有执行器滞后、未知系统动力学和外部扰动的二阶多 agent 系统的时变成形问题,并且分享一下我对相关论文进行复现的经验,还会附上 MATLAB 代码哦。

一、控制方案概述

这次研究提出了一种新的自适应动态滑模控制方案,目的是让一组智能体沿着期望的轨迹运动。这里面用到了好几个关键技术:

  1. 动态滑模抑制干扰:利用基于局部队形跟踪误差的动态滑模方法来抑制外部干扰,好处是能获得平滑无抖振的控制输入。简单理解就是,给智能体设定一个动态的“滑动轨道”,让它们沿着这个轨道走,就不容易被外界干扰带偏,还能走得稳稳当当。
  2. 切比雪夫神经网络估计:采用切比雪夫神经网络来估计与系统动态评估相关的非线性函数。神经网络大家都不陌生,这里用切比雪夫神经网络,就像给系统请了个“智能参谋”,能预测那些复杂的非线性变化。
  3. 光滑投影律调节输出:通过光滑投影律来调节神经网络的输出,确保它的输出是合理有效的。这就好比给“智能参谋”定了些规矩,让它的建议能真正帮上忙。
  4. Bouc - Wen 迟滞补偿器:在当前控制律中加入 Bouc - Wen 迟滞补偿器来抵消已知的执行器迟滞效应。执行器有时候反应会慢半拍,这个补偿器就是来“催催”它,让系统能及时响应。

二、MATLAB 代码实现及分析

1. 动态滑模部分代码

% 定义一些参数
n = size(agents, 1); % agents 是智能体相关信息矩阵,n 为智能体数量
dt = 0.01; % 时间步长
t = 0:dt:10; % 时间范围

% 初始化状态变量
x = zeros(n, length(t));
v = zeros(n, length(t));

for k = 1:length(t)-1
    % 计算局部队形跟踪误差
    error = calculate_error(x(:, k), desired_trajectory(:, k)); 
    % 动态滑模面
    s = v(:, k) + lambda * error; 
    % 这里 lambda 是预先设定的一个参数,用于调整动态滑模面的特性
    % 控制输入,这里简化表示,实际可能更复杂
    u = -kp * sign(s) - kd * s; 
    % kp 和 kd 是控制增益参数,sign 函数是符号函数,
    % 这个控制输入的目的是让系统状态朝着动态滑模面收敛
    v(:, k+1) = v(:, k) + dt * (u + disturbance(:, k)); 
    x(:, k+1) = x(:, k) + dt * v(:, k+1); 
end

在这段代码里,先定义了智能体数量、时间步长和时间范围,初始化了智能体的位置 x 和速度 v。通过 calculate_error 函数计算局部队形跟踪误差,然后构建动态滑模面 s。基于滑模面得到控制输入 u,这里通过调整 kpkd 可以改变控制效果。最后根据控制输入更新速度和位置。

2. 切比雪夫神经网络部分代码

% 初始化神经网络参数
num_neurons = 10; % 神经元数量
weights = randn(num_neurons, 1); % 随机初始化权重
bias = randn(1); % 随机初始化偏置

for i = 1:length(t)
    % 构建输入向量,这里简化表示,实际可能需要更多系统状态信息
    input_vector = [x(:, i); v(:, i)]; 
    % 计算切比雪夫多项式值
    chebyshev_polynomials = zeros(num_neurons, 1);
    chebyshev_polynomials(1) = 1;
    chebyshev_polynomials(2) = input_vector;
    for j = 3:num_neurons
        chebyshev_polynomials(j) = 2 * input_vector * chebyshev_polynomials(j - 1) - chebyshev_polynomials(j - 2);
    end
    % 神经网络输出
    neural_output = bias + weights' * chebyshev_polynomials; 
    % 这里神经网络输出用于估计非线性函数,
    % 后续可以结合这个估计值对控制律进行调整
end

这部分代码先初始化了切比雪夫神经网络的参数,包括神经元数量、权重和偏置。然后针对每个时间步,构建输入向量,计算切比雪夫多项式值,最后得到神经网络的输出。这个输出在整个控制方案里,是用来估计非线性函数,为更准确的控制提供依据。

3. Bouc - Wen 迟滞补偿器部分代码

% Bouc - Wen 模型参数
alpha = 1;
beta = 0.1;
gamma = 0.1;
n = 2;
z = 0; % 内部状态变量初始化

for k = 1:length(t)-1
    % 计算 Bouc - Wen 迟滞输出
    dz = alpha * (u(:, k) - gamma * abs(u(:, k)) * z - beta * u(:, k) * abs(z)^n);
    z = z + dt * dz;
    compensated_u = u(:, k) - z; 
    % 这里用计算得到的 z 来对控制输入 u 进行补偿,
    % 以抵消执行器迟滞效应
    % 后续用 compensated_u 替代 u 进行速度和位置更新等操作
end

这是 Bouc - Wen 迟滞补偿器的代码实现。先设定了 Bouc - Wen 模型的参数,初始化内部状态变量 z。在每个时间步,根据当前控制输入 u 计算 z 的变化量,更新 z,然后得到补偿后的控制输入 compensated_u,用于后续系统状态的更新,从而抵消执行器的迟滞效应。

三、数值仿真验证

最后通过基于多方向机器人系统的数值仿真来验证所提控制律的性能。在仿真过程中,观察智能体的轨迹是否能很好地跟踪期望轨迹,以及面对外部扰动和执行器迟滞时系统的稳定性和鲁棒性。从仿真结果来看,这种自适应动态滑模控制方案确实能让智能体较为准确地沿着期望轨迹运动,并且在一定程度上克服了外部扰动和执行器迟滞带来的影响。

通过这次论文复现,不仅对多智能体系统的控制技术有了更深入的理解,还在 MATLAB 代码实现上积累了不少经验。希望对同样在这个领域探索的小伙伴们有所帮助,一起在科研的道路上越走越远!#论文复现 #动态滑模 #自适应神经网络 #科研辅导 #多智能体

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐