1. 项目到底在解决什么问题:不完全信息下的末端追逃博弈
先直接说结论:这个项目复现的是一类带有不完全信息假设的航天器末端追逃博弈策略,参与双方都装备了扩展卡尔曼滤波器(EKF)来在线估计对方的机动参数,并在Epsilon纳什均衡(ε-纳什均衡)的意义下求解自己的控制策略,最终用一套Matlab仿真代码把整个“估计—博弈求解—控制闭环”跑通。
追逃博弈这个概念听起来很“军事”,但它在学术上属于微分博弈(differential game)和轨道机动控制交叉的经典问题:一个追踪航天器(Pursuer)试图靠近目标,而一个逃逸航天器(Evader)试图拉开距离。末端段意味着双方已经进入相对距离几十公里甚至几公里的量级,此时引力差、J2摄动等长期轨道效应相对次要,主导方程是相对运动动力学(Clohessy-Wiltshire方程或其非线性版本),控制力来自双方自身的推力加速度。
以前教材里的追逃博弈总是先假设“完全信息”:双方都知道对方的动力学模型、控制约束和收益函数。但工程实际立刻打脸——追踪航天器不可能精确知道逃逸航天器的最大推力、发动机响应延迟、真实导航误差水平,逃逸方同样也只知道追踪方的大致性能包线。这就是“不完全信息”。我们复现的期刊策略,就是在双方互相“猜参数”的前提下,用EKF把未知参数估计出来,再基于估计结果做自适应博弈求解。
适合看这篇文章的读者有三类:第一类是研究航天器相对运动控制的研究生,想找一个能跑通的仿真框架;第二类是研究博弈论与控制结合的人,想理解ε-纳什均衡怎么落到工程实现;第三类是刚接触EKF参数辨识的工程师,希望看到一个完整的、把状态估计和决策耦合起来的闭环例子。
2. 从“完全理性”到“有限理性”:为什么必须引入Epsilon纳什均衡
2.1 完全信息纳什均衡的工程困境
先回顾一下教科书定义。在追逃博弈中,设追踪方策略为 (u_p),逃逸方策略为 (u_e),追踪方收益函数为 (J_p(u_p, u_e))(越小越好),逃逸方收益为 (J_e(u_p, u_e))(越大越好)。常规纳什均衡 ((u_p^, u_e^)) 满足:
[ J_p(u_p^, u_e^) \le J_p(u_p, u_e^*), \quad \forall u_p \in \mathcal{U}_p ]
[ J_e(u_p^, u_e^) \ge J_e(u_p^*, u_e), \quad \forall u_e \in \mathcal{U}_e ]
换句话说,任何一方单独改变策略,都不会让自己更好。这个定义很优美,但落到航天器末端追逃场景立即遇到三个现实问题。
第一,计算代价太高。严格纳什均衡通常涉及求解一对Hamilton-Jacobi-Isaacs(HJI)偏微分方程,或者进行连续策略空间上的不动点迭代。在末端博弈这种时间以秒到分钟计算的场合,星载计算机根本扛不住高维PDE数值求解。
第二,收益估计本身有噪声。因为我们用了EKF去估计对方参数,估计误差必然传播到收益函数 (J_p)、(J_e) 的计算上。你辛辛苦苦求出的“严格均衡”,可能是基于一个有偏差的收益函数求出来的,那就谈不上严格了。
第三,双方理性程度是有限的。真实航天器控制系统不会真的去追求绝对最优策略,它只需要“足够好”——收益损失不超过某个可接受的小量即可。
所以项目里选择ε-纳什均衡,本质上是把“绝对最优”放松成“近似最优”:如果双方收益损失都不超过一个小常数 (\varepsilon),就认为达到了可接受的博弈解。这个放松是完全合理的工程折中。
2.2 Epsilon纳什均衡的数学定义
给定 (\varepsilon > 0),策略组合 ((u_p^, u_e^)) 是ε-纳什均衡,当且仅当:
[ J_p(u_p^, u_e^) \le J_p(u_p, u_e^*) + \varepsilon_p, \quad \forall u_p \in \mathcal{U}_p ]
[ J_e(u_p^, u_e^) \ge J_e(u_p^*, u_e) - \varepsilon_e, \quad \forall u_e \in \mathcal{U}_e ]
直观理解:追踪方如果单方面换策略,最多只能再减少 (\varepsilon_p) 的收益;逃逸方最多只能再多拿 (\varepsilon_e) 的收益。只要 (\varepsilon) 取得足够小,这个“差不多最优”的策略组合在工程上完全可用。
让我用一个生活化类比来解释:考试时大家都在有限时间内交卷,你不需要保证自己的答案全校最优,只需要保证“无论怎么改选某道题,总分提升不超过2分”——这个2分就是你的ε。ε越小,你和“绝对最优”越接近,但解题时间越长;ε取得太大,策略可能明显偏离最优。实际复现时的难点在于:ε到底取多少?这个没有普适答案,要结合动力学时间常数、EKF收敛速度和控制能力一起来试。
2.3 项目中的自适应博弈求解思路
在复现期刊代码时,我注意到它的求解思路不是一次性求全局均衡,而是在每个控制周期内根据当前EKF参数估计,局部迭代逼近ε-纳什均衡。具体来说做了三件事:
- 用EKF给出对手参数的当前估计值 (\hat{\theta}),把这个估计当作“当前时刻的近似真实参数”。
- 在当前参数下构建线性化或局部二次近似的收益函数。
- 用迭代最优响应法(Iterative Best Response)或梯度投影法,迭代若干轮后得到一个满足ε条件的策略组合。
这个思路非常实用,因为它在每个周期只做有限次迭代,计算量可控;同时由于参数估计持续更新,策略也会自适应调整。仿真里我最关注的就是ε的收敛曲线——如果策略迭代在后期稳定在一个很小的范围,说明算法确实收敛到了近似均衡。
3. EKF参数辨识与状态估计:追逃双方如何“看穿”对方
3.1 状态-参数联合估计问题建模
不完全信息是分层次的。最底层的不完全信息是“我不知道你的状态”,这个靠相对导航传感器(测距、测速、视线角)解决;更深一层是“我不知道你的动力学模型参数”,比如逃逸航天器的最大推力加速度 (a_{max})、控制响应时间常数 (\tau),或者追踪方导航系统量测噪声的真实方差 (R)。
在Matlab复现里,最常用的做法是增广状态向量:把未知参数放进滤波状态里一起估计。设原始状态 (x \in \mathbb{R}^6)(相对位置和相对速度),未知参数为 (\theta \in \mathbb{R}^m),增广状态就是 (X = [x; \theta])。
例如,期望估计追逃双方的“推力上限”,则增广状态为:
[ X = [r_x, r_y, r_z, v_x, v_y, v_z, a_{p,max}, a_{e,max}]^T ]
为什么可以用一个公共滤波器同时估计状态和参数?因为参数 (\theta) 虽然是常数(或缓变),但它会影响系统的演化方程,所以通过观测残差可以反推参数。这就是EKF做在线参数辨识的基本原理。
3.2 扩展卡尔曼滤波的核心流程
EKF处理的是非线性系统:
[ X_{k+1} = f(X_k, u_k, w_k), \quad w_k \sim \mathcal{N}(0, Q) ]
[ z_k = h(X_k) + v_k, \quad v_k \sim \mathcal{N}(0, R) ]
EKF与传统KF的区别在于:它对非线性函数 (f) 和 (h) 在当前估计 (\hat{X}_k) 处做一阶Taylor展开,得到雅可比矩阵 (F_k) 和 (H_k),然后套用线性卡尔曼滤波的预测-更新框架。
预测步:
[ \hat{X}{k+1|k} = f(\hat{X}{k|k}, u_k) ]
[ P_{k+1|k} = F_k P_{k|k} F_k^T + Q ]
更新步:
[ K_k = P_{k+1|k} H_k^T \left( H_k P_{k+1|k} H_k^T + R \right)^{-1} ]
[ \hat{X}{k+1|k+1} = \hat{X}{k+1|k} + K_k \left( z_{k+1} - h(\hat{X}_{k+1|k}) \right) ]
[ P_{k+1|k+1} = (I - K_k H_k) P_{k+1|k} ]
这套流程在Matlab里就是几个矩阵操作的事,十来行代码就能写出来。真正麻烦的是两个细节。
第一个细节是雅可比矩阵的推导。相对运动方程如果是CW方程,那对状态部分的雅可比是常值矩阵;但如果用了非线性Clohessy-Wiltshire修正项或考虑了J2项,就必须手动求偏导或使用数值雅可比。我复现时先用解析雅可比保证精度,调试通过后再尝试数值差分雅可比,发现只要步长选得合适,两者结果几乎一致,但解析式更快更稳。
第二个细节是参数可观测性。EKF不是万能的。如果观测方程 (h(X)) 完全不包含某个参数的信息,那EKF对那个参数的估计值就只由初始猜测决定,根本不会修正。典型例子:你试图从相对位置观测中估计逃逸航天器的质量,但如果观测信息里质量完全不出现在动态方程中(比如你用的是线性CW方程),那就估计不出来。务必先做可观测性分析,或者保底的办法是给参数估计加上小的过程噪声扰动,让协方差不至于迅速收缩到零。
3.3 噪声方差整定的经验
Q和R的选取直接决定EKF收敛速度和稳态精度。我复现时用了两个阶段:
阶段一(前几秒):把过程噪声Q设得稍大,让滤波器“敢信”测量、快速收敛。比如相对状态部分取 (Q_{state} = 10^{-6} \times I) 量级,参数部分可以取 (Q_{\theta} = 10^{-4}),因为参数初值不确定度大。
阶段二(估计收敛后):适当减小Q,让滤波器更信任动力学模型,降低稳态振荡。参数部分的Q可以降一个数量级,但要保留一个小的值(比如 (10^{-6})),防止EKF过度自信导致参数锁死。
R的选取相对直接,按传感器噪声方差标定。我假设测距噪声标准差5米、测速噪声标准差0.1米/秒,因此R取对角阵 (\text{diag}(25, 25, 25, 0.01, 0.01, 0.01))。如果你用视线角观测,R量纲就变成rad²,需要按实际传感器重标。
4. 自适应博弈策略设计:从估计值到控制指令的闭环
4.1 闭环架构:估计、博弈、控制三步循环
整个仿真在每个时间步内走三个环节:
- 测量与估计:读取相对导航传感器的带噪量测,运行EKF,得到当前增广状态估计 (\hat{X})。
- 博弈求解:以 (\hat{X}) 为初值,结合估计出的对手参数,利用ε-纳什均衡迭代求解双方控制指令 ((u_p, u_e))。
- 动力学推进:将控制指令代入真实(仿真)动力学,推进一个步长,生成下一周期的观测数据,循环往复。
这个架构里,博弈求解器是核心。我建议把博弈求解单独封装成一个函数,输入是当前状态估计、双方估计参数和当前时间,输出是双方控制指令。这样容易调试,也方便后续替换不同的求解算法对比效果。
4.2 收益函数与控制策略设计
项目中最常见的一类收益函数是二次型终端代价加控制代价的混合形式。追踪方想最小化终端相对距离,同时不想过度消耗燃料,其收益可以写成:
[ J_p = |r(t_f)|^2 + \int_{t_0}^{t_f} u_p^T W_p u_p , dt ]
逃逸方收益则是类似形式的相反数或另一种组合。在这个框架下,博弈问题转化为双方在各自的控制集合 (\mathcal{U}_p)、(\mathcal{U}_e) 内选择控制律,使终端指标达到ε-均衡。
求解时不能直接解HJI方程,而是用迭代最优响应:
- 固定逃逸方当前策略 (u_e^{(k)}),求解追踪方的最优响应 (u_p^{(k+1)} = \arg\min J_p(u_p, u_e^{(k)}));
- 固定追踪方策略 (u_p^{(k+1)}),求解逃逸方最优响应 (u_e^{(k+2)} = \arg\max J_e(u_p^{(k+1)}, u_e));
- 循环迭代,直到连续两次迭代的收益差都小于 (\varepsilon_p)、(\varepsilon_e)。
每一次“最优响应”求解本质上是一个单方最优控制问题,可以用直接法(配点法、伪谱法)或间接法(协态方程+打靶)求解。但为了满足实时性,我复现时采用的是在线线性二次型近似:把每个时刻的博弈问题近似成双线性二次博弈,最优响应闭式解就能出来,迭代几轮后近似得到ε均衡。这个简化在末端较短、状态变化平稳的工况下实测效果足够稳定。
4.3 自适应机制如何体现
自适应体现在两个层面。
第一个层面是对对手参数的在线修正。EKF把当前对 (a_{p,max})、(a_{e,max}) 的估计喂给博弈求解器。比如逃逸方一旦探测到追踪方实际推力更强((a_{p,max}) 估计值上升),它就会在博弈求解中更激进地拉开距离、减少接近风险。
第二个层面是策略更新频率随估计置信度变化。当EKF协方差较大、估计不可靠时,博弈求解器的步长可以适当保守,跳变幅度受限;当协方差收缩、估计可信时,再让策略更快响应。这个机制类似强化学习里的自适应学习率,用起来效果很好,能显著抑制初期震荡。
我个人的一个经验:不要把EKF估计值直接当作真值来更新控制,最好做一个简单的低通滤波或速率限制,否则估计噪声引起的控制抖动会反过来污染EKF的测量输入,造成正反馈振荡。这个坑我在初版代码里踩得很深,后面在“常见问题”部分细说。
5. Matlab仿真实现:完整复现流程与关键代码
5.1 仿真结构与初始化
我复现时的仿真结构分四个层级:
- 顶层
run_simulation.m:设置参数,调用循环,汇总结果绘图; - 中层
sim_step.m:单步仿真调度,串联EKF、博弈求解、动力学推进; - 底层
ekf_update.m和solve_epsilonNE.m:分别完成滤波和博弈求解; - 辅助函数
dynamics.m、measurement.m:生成真实状态演化和带噪观测。
初始化参数我建议单列一个脚本init_params.m,方便反复调整:
% init_params.m dt = 0.1; % 控制周期/仿真步长 T_end = 60; % 总仿真时间 t = 0:dt:T_end; % 初始相对状态:追踪方在逃逸方后方1km,速度差50m/s r0 = [1000; 0; 0]; v0 = [50; 0; 0]; X0 = [r0; v0; 20; 15]; % 增广状态,后两位是双方最大推力加速度初值 % 传感器噪声标准差 sigma_r = 5; % 位置量测噪声,m sigma_v = 0.1; % 速度量测噪声,m/s R = diag([sigma_r^2*ones(1,3), sigma_v^2*ones(1,3)]); % 过程噪声 Q = 1e-6 * diag([1 1 1 1 1 1 1e2 1e2]); % 参数部分噪声大一些 % 博弈参数 epsilon_p = 0.5; epsilon_e = 0.5; max_iter_gd = 100; % 博弈求解最大迭代次数5.2 EKF更新函数实现
核心的EKF函数大概是这样(只列主体逻辑,完整代码建议自己补齐):
function [X_est, P] = ekf_update(X_est, P, z, u_p, u_e, dt, Q, R) % 状态转移与雅可比 [X_pred, F] = dynamics_full(X_est, u_p, u_e, dt); % 预测协方差 P_pred = F * P * F' + Q; % 观测预测与雅可比 [z_pred, H] = measurement_full(X_pred); % 新息 y = z - z_pred; S = H * P_pred * H' + R; K = P_pred * H' / S; % 更新 X_est = X_pred + K * y; P = (eye(length(X_est)) - K * H) * P_pred; % 协方差对称化与正定修正 P = 0.5 * (P + P'); P = (P + P') / 2; if min(eig(P)) < 0 [V, D] = eig(P); D = max(D, 1e-10); P = V * D * V'; end end这个函数有几个细节值得注意。
第一,dynamics_full不仅要返回预测状态,还要返回状态雅可比矩阵 (F)。如果你在dynamics.m里只更新状态而不算雅可比,那EKF就无从进行协方差预测。我建议dynamics_full的输出格式固定为[X_pred, F],即使暂时用数值雅可比也要保证接口一致。
第二,协方差矩阵在数值运算中容易失去对称性甚至非正定。我加了对称化处理和特征值截断,这是一种“外科手术式”的补救措施。更体系化的做法是使用Joseph形式更新协方差,但在仿真里特征值截断已经足够,而且速度更快。
第三,观测雅可比 (H) 的计算。如果观测是直接相对位置和相对速度,那么 (H) 就是两个稀疏块矩阵;如果观测是视线角加距离,则要仔细算偏导。我建议先从全状态直接量测开始调试,等滤波收敛正常后再换更真实的观测模型。
5.3 博弈求解函数实现
博弈求解我采用最简单的梯度迭代法。基本思想是:每个控制向量沿自身收益梯度方向调整,但双方交替进行,近似逼近均衡点。
function [u_p, u_e] = solve_epsilonNE(X_est, params) % 初始化策略(取上一时刻策略为初值) u_p = params.u_p_prev; u_e = params.u_e_prev; for k = 1:params.max_iter_gd % 追踪方梯度下降:min J_p, 所以沿负梯度方向更新 grad_p = compute_grad_Jp(u_p, u_e, X_est, params); u_p_new = u_p - params.alpha_p * grad_p; u_p_new = project_control(u_p_new, params.a_p_max_est); % 逃逸方梯度上升:max J_e, 所以沿正梯度方向更新 grad_e = compute_grad_Je(u_p_new, u_e, X_est, params); u_e_new = u_e + params.alpha_e * grad_e; u_e_new = project_control(u_e_new, params.a_e_max_est); % 判断收敛:连续两次策略差足够小 if norm(u_p_new - u_p) + norm(u_e_new - u_e) < params.tol_gd u_p = u_p_new; u_e = u_e_new; break; end u_p = u_p_new; u_e = u_e_new; end end这个函数结构清晰,但也需要说明几个点。
一是梯度计算。compute_grad_Jp里如果把收益函数看作一次单步预测的形式,可以用解析梯度直接算;如果用多步前向Rollout,就要用伴随法或数值差分。末端长度10秒以内时,我直接对控制轨迹做数值差分也能接受;末端长度超过30秒时,数值差分的计算量会爆炸,必须换伴随法。
二是投影算子project_control。它的作用是约束推力加速度不超过当前EKF估计的最大值。这里特别要注意:投影后的控制量必须再用于下一轮博弈迭代,不能把投影放到迭代外只做最后一步,否则迭代可能来回震荡不收敛。我是在迭代循环内部每次更新后都做投影。
三是学习率 (\alpha_p)、(\alpha_e) 的选取。这里没有通用公式,我建议从0.1开始逐步调整。如果策略发散就减小到0.05;如果收敛太慢就试0.2。还有一个更稳妥的做法是用自适应步长,比如梯度方向的步长取收益改进量的线性搜索结果,但代码复杂度会高不少。
5.4 主循环与结果输出
主循环写起来很直白:
% run_simulation.m 主循环片段 for k = 1:length(t)-1 % 1. 生成真实带噪测量 z = measurement_true(X_true(:,k)) + mvnrnd(zeros(6,1), R)'; % 2. EKF估计 [X_est(:,k+1), P] = ekf_update(X_est(:,k), P, z, u_p(:,k), u_e(:,k), dt, Q, R); % 3. 利用估计值求解博弈 params.X_est = X_est(:,k+1); params.u_p_prev = u_p(:,k); params.u_e_prev = u_e(:,k); [u_p(:,k+1), u_e(:,k+1)] = solve_epsilonNE(params); % 4. 真实动力学推进 X_true(:,k+1) = dynamics_true(X_true(:,k), u_p(:,k+1), u_e(:,k+1), dt); end仿真结果重点看四个图:
- 相对轨迹图:看追踪方是否成功逼近,逃逸方是否成功逃开;
- 距离-时间曲线:看末端最小距离是否达到设计目标;
- EKF参数估计曲线:看 (a_{p,max}) 和 (a_{e,max}) 的估计值是否收敛到真实值附近;
- ε收敛曲线:看博弈迭代次数和残差是否随时间趋于稳定。
我的复现经验是:如果EKF参数估计收敛良好,距离曲线也会比较平滑;如果距离曲线频繁出现异常跳变,十有八九是博弈求解器振荡,先检查步长和投影逻辑,大概率能解决。
6. 常见问题与排查技巧实录
6.1 问题速查表
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| EKF估计发散,状态直接飞出合理范围 | 初始协方差P0设置过小,滤波器过度信任初值 | 把P0设置到合理物理量级,比如位置方差取100²,速度方差取10² |
| 参数估计收敛到错误值 | 参数不可观测或激励不足 | 调整观测模型,或在博弈轨迹里加入小幅探测激励 |
| 博弈迭代不收敛,策略来回震荡 | 学习率过大、投影顺序不对 | 降低学习率;确保每次迭代内投影后再参与下一步迭代 |
| 仿真前期控制量抖动剧烈 | EKF估计初期协方差大,估计噪声直接进入博弈求解 | 对博弈求解输出的控制指令做速率限制或低通滤波 |
| 后期控制量长期不变化 | 估计过程噪声Q设得过小,参数锁死 | 适当增大参数对应Q,给估计留一点“呼吸空间” |
| 相对距离曲线出现毛刺 | 传感器野值未处理 | 添加野值剔除逻辑,比如残差超过3倍标准差时降权处理 |
6.2 三个值得展开的避坑经验
第一个经验是关于EKF参数可观测性的。我初版仿真里试图从相对位置观测中估计双方最大推力加速度,但跑了500组参数,发现逃逸方参数估计经常跑偏。后来一查,原来逃逸方只对“拉距离”有影响,而追踪方一直紧追使得相对距离变化缓慢,逃逸方推力始终未被充分激发,参数自然不可观测。解决方案是在博弈收益函数里加入一个小的探针激励项,让逃逸方在博弈框架下“被迫”间歇性拉开距离,从而让观测序列包含参数信息。这个过程听起来有点绕,但本质上就是系统辨识里的“持续激励”条件。
第二个经验是关于控制抖动与滤波正反馈的。有段时间仿真总在末端10秒左右出现距离曲线剧烈波动,我最初以为是博弈求解器出问题。后来把EKF估计的控制输入和真实控制输入画在同一张图上才发现问题:博弈策略中包含了估计误差带来的高频噪声,这些噪声又通过动力学进入下一次量测,滤波器误以为状态真的高频变化,于是估计协方差增大、参数估计也随之偏离。这个“控制-估计相互污染”的问题在工程上非常典型。解决起来也不难,我在博弈求解器输出端加了一个一阶惯性滤波:
[ u_{applied} = \beta u_{desired} + (1 - \beta) u_{applied, prev} ]
(\beta) 取0.3到0.5之间即可,既抑制了高频抖动,又不至于让控制响应太迟钝。
第三个经验是关于仿真步长的。项目里我一开始用定步长 (dt = 0.1) 秒跑,博弈迭代每步大概70次左右。后来想加快仿真速度,把步长改成0.5秒,结果EKF经常在剧烈机动段发散。原因是动力学模型在这段时间内明显非线性和强耦合,线性化假设在步长过大时不再成立。我后来改成自适应步长:状态变化率小时用0.2秒,接近博弈末端时自动切到0.02秒。虽然代码多了一点分支逻辑,但仿真稳定性肉眼可见地上升。如果你不想写自适应步长,至少也要保证在距离小于300米的“末端末端”把步长手动调小。
6.3 关于复现期刊代码的心态建议
最后说点软性的东西。这类“期刊复现”项目最大的陷阱不是算法看不懂,而是你以为自己复现成功了其实没有。我调试过程中反复遇到“这次结果比论文好”“下次结果比论文差”的现象,后来明白这纯粹是参数初值不同造成的差异,而不是算法有本质优劣。正确做法是把论文里的核心结论作为一个边界条件:只要你的仿真在合理参数范围内能复现出“估计收敛、博弈接近ε均衡、控制闭环稳定”这三个特征,就可以认为复现成功。至于绝对值是否和论文图表完全一致,反而不重要。
7. 一点个人实践体会
这个项目我前后折腾了两周,最深的感受是:真正困难的不是EKF,也不是博弈求解,而是把两者在同一个闭环里稳定地跑起来。单独测试EKF收敛很容易——给一组标准轨迹,滤波效果一目了然;单独测试博弈求解也很容易——固定参数下迭代几十轮看结果就行。但它们一结合,各种正反馈、参数耦合、时序关系问题就全都冒出来了。
如果让我给后来者排一个合理的复现顺序,我会建议这样走:先做纯完全信息的博弈仿真,确认策略本身合理;再加入EKF做状态估计但不做参数辨识,确认滤波和控制可以共存;最后才把参数辨识加进来,实现完整的不完全信息博弈。这个顺序虽然多花一点时间,但每一步的变量都很少,出问题能快速定位。
项目里还有一个值得继续扩展的方向:目前EKF假设噪声都是高斯白噪声,但真实相对导航在末端可能会遇到非高斯厚尾噪声或通信断续。后续可以考虑用鲁棒卡尔曼滤波或粒子滤波替代EKF,看看在这种更恶劣的噪声环境下ε-纳什均衡策略还能保持多少性能。这个方向如果再发一篇论文,应该不难产出,而且工作量集中在滤波部分,博弈部分基本可以复用。
如果时间有限,优先把ε的取值敏感性分析做一遍,这个结果对你理解整体策略的鲁棒性格外有价值。