多智能体、一致性、时滞 含通信时滞和输入时滞的多智能体一致性仿真 简单的多智能体一致性性仿真图包含状态轨迹图和控制输入图。 适用于初学者。多智能体系统的一致性控制挺有意思的特别是加上了时滞之后。今天咱们用MATLAB搞个简单的无人机编队仿真重点看看通信时滞和输入时滞对收敛速度的影响。不用复杂的高阶模型就拿一阶积分器模型说事。先看基础模型。假设有四个无人机动力学方程简单到离谱% 一阶积分器模型 dx (x, u) u;这时候要是没有时滞一致性协议直接用邻居状态差就行。但现实里信号传输总有个延迟咱们得在代码里模拟这个情况。先处理通信时滞。假设每个无人机收到邻居信息有0.3秒延迟咱们在内存里存个历史状态队列% 时滞参数 comm_delay 0.3; % 通信时滞300ms state_history []; % 存历史状态的环形缓冲区 % 在每次迭代时记录状态 state_history [state_history; t, x]; if size(state_history,1) comm_delay/dt state_history(1,:) []; end取数据的时候得往前翻记录就像找快递柜里昨天的包裹% 获取延迟后的邻居状态 delayed_states interp1(state_history(:,1), state_history(:,2:end), t - comm_delay);再来看输入时滞相当于控制器计算出的指令要过段时间才能执行。这个在代码里更好实现直接把控制量存到队列里control_queue []; % 控制指令缓冲区 u calculate_control(x); % 新控制量生成 control_queue [control_queue; u]; % 应用当前可用的最早控制量 if size(control_queue,1) input_delay/dt current_u control_queue(1,:); control_queue(1,:) []; else current_u zeros(1,4); % 缓冲不足时保持零输入 end这时候系统方程得改成用延迟后的控制量x x current_u * dt;把两个时滞叠加上去跑仿真状态轨迹明显变得扭捏了。这是某次跑出来的收敛过程多智能体、一致性、时滞 含通信时滞和输入时滞的多智能体一致性仿真 简单的多智能体一致性性仿真图包含状态轨迹图和控制输入图。 适用于初学者。插入状态轨迹图横轴时间纵轴状态值四条曲线最终收敛但路径曲折控制输入图更直观能看到指令像打水漂一样一浪接一浪插入控制输入图显示脉冲式的控制量发放几个调试小技巧时滞别超过系统稳定裕度否则直接发散通信时滞比输入时滞影响更大因为会产生误差累积步长dt要小于最小时滞否则插值会出鬼影完整代码大概长这样核心部分% 参数初始化 dt 0.01; T 10; x [3;1;-2;0]; % 初始状态 u_hist zeros(4,1); for t 0:dt:T % 通信时滞处理 delayed_x get_delayed_states(t); % 计算控制量包含邻居信息延迟 u -L * delayed_x; % L是拉普拉斯矩阵 % 输入时滞处理 apply_control get_delayed_control(u); % 状态更新 x x apply_control*dt; % 记录数据 record_plot_data(); end想自己试的可以把时滞参数调大点马上能看到系统开始抽风。这玩意儿就像煮粥火候时滞大了就糊锅太小了又煮不熟。多跑几次参数手感就出来了。