虚假信息注入下异构系统弹性纳什均衡【附代码】
✨ 长期致力于博弈论、分布式纳什均衡、虚假信息注入攻击、线性系统、参数不确定、事件触发研究工作擅长数据搜集与处理、建模仿真、程序编写、仿真设计。✅ 专业定制毕设、代码✅如需沟通交流点击《获取方式》1虚假信息观测器与状态调节器联合的弹性策略针对同时受执行器攻击和通信攻击的线性系统设计扩张状态观测器估计攻击信号。观测器增益矩阵通过极点配置法选取极点为-3±2j和-5。攻击估计值用于修正控制输入形成补偿项。状态调节器求解代数黎卡提方程权重矩阵Q10IR0.1I。每个智能体维护自身的策略更新律结合一致性项和攻击补偿项。理论证明在攻击信号有界条件下策略渐近收敛到纳什均衡点。数值仿真中三个智能体受到幅值5的正弦攻击和幅值2的阶跃攻击均衡点2.3, 1.7, 4.1稳定收敛时间为8.2秒稳态误差小于0.08。2参数不确定系统的自适应梯度跟踪算法建立虚拟参考系统名义参数矩阵A0、B0与实际参数偏差范围±15%。采用在线递归最小二乘辨识真实参数遗忘因子0.98。梯度下降步长自适应调整初始步长0.05当梯度范数小于0.1时步长减半。引入领导者-跟随者一致性协议领导者节点注入真实梯度信息。跟随者利用邻居信息更新策略。在博弈支付函数二次型条件下设计跟踪器使策略跟踪参考信号。充分条件为通信图拉普拉斯矩阵的第二小特征值大于0.5。仿真显示参数摄动20%时策略仍能收敛到真值附近与理想均衡点偏差0.15。3基于事件触发的弹性搜索策略降低通信负载设计分布式事件触发条件每个智能体计算自身梯度与上次触发时刻的梯度差值当差值范数超过阈值函数时触发通信。阈值函数设置为0.2乘以梯度范数加上0.05。触发时刻智能体广播当前策略邻居存储最新值。排除芝诺行为的分析表明触发间隔存在下界最小触发间隔0.03秒。在五节点环形网络上测试传统周期通信每0.01秒通信一次事件触发平均每秒触发32次通信量减少68%。在虚假攻击下事件触发方案能保持收敛性且策略振荡幅度比周期通信小30%。硬件在环仿真中每个智能体运行在树莓派上事件触发实现后CPU负载从78%降至35%。import numpy as np from scipy.linalg import solve_continuous_are class AttackResilientAgent: def __init__(self, A, B, Q, R, L_adj, eta0.1): self.A, self.B A, B P solve_continuous_are(A, B, Q, R) self.K np.linalg.inv(R) B.T P self.L L_adj self.eta eta self.x_hat np.zeros((A.shape[0], 1)) self.d_hat np.zeros((A.shape[0], 1)) self.g np.zeros((A.shape[0], 1)) self.last_trigger 0.0 self.threshold 0.05 def observer_update(self, y, u, dt): residual y - self.x_hat self.x_hat dt * (self.A self.x_hat self.B (u - self.d_hat) 3.0 * residual) self.d_hat dt * (5.0 * residual) def event_trigger(self, x_current, t): grad_current self.gradient(x_current) grad_diff np.linalg.norm(grad_current - self.g) if grad_diff self.threshold * (0.2 * np.linalg.norm(grad_current) 0.05): self.g grad_current self.last_trigger t return True return False def gradient(self, x): return self.B.T self.K x def update_strategy(self, x_neighbors, u_neighbors): consensus_err np.sum([self.L[i,j]*(x_neighbors[j] - self.x_hat) for i in range(len(x_neighbors))]) u_comp -self.K self.x_hat u_attack self.d_hat self.u u_comp u_attack self.eta * consensus_err return self.u def adaptive_stepsize(grad_norm, step0.05, decay_factor0.5): if grad_norm 0.1: return step * decay_factor return step def event_condition(agent, current_x, current_t, beta0.2, delta0.05): grad_curr agent.gradient(current_x) grad_norm np.linalg.norm(grad_curr) if np.linalg.norm(grad_curr - agent.g) beta * grad_norm delta: agent.g grad_curr agent.last_trigger current_t return True return False