
做阵列信号处理的同行应该都清楚阵元数量往往不是想多加就能加的——成本、通道数、结构重量、阵元耦合每一项都在逼着你在“少装阵元”和“保住性能”之间做权衡。我最近在做一个圆阵项目时就卡在了这个点阵元数砍了一半方向图旁瓣直接飙到没法看。一开始试过均匀排布、随机稀疏效果都很一般后来把思路转向了智能优化算法但遗传算法和粒子群在这类离散组合搜索上又容易早熟结果忽好忽坏。最后我干脆把稀疏圆阵的位置选择建模成一个顺序决策问题用双深度Q网络DDQN让智能体自己学“怎么摆阵”然后在MATLAB里做了完整的仿真验证。这篇博文就把整个思路、建模过程、仿真实现和踩坑点完整整理出来给同样被阵列布阵问题折腾的人一个可以参考的完整方案。1. 先弄清楚稀疏圆阵位置优化到底在优化什么1.1 圆阵方向图的数学表达与稀疏化动机圆阵之所以在很多雷达、通信场景里被高度关注核心就一点它能做到方位面360°全覆盖波束指向在不同方位角上的性能基本一致。线阵天生只能覆盖有限扇区转动起来要么靠机械伺服要么靠多口径拼接远不如圆阵来得干净。均匀圆阵的方向图用标准公式来描述就是AF(θ) Σ w_m · exp(j · k · R · cos(θ - φ_m))其中θ是观察方向角φ_m是第m个阵元的方位角k 2π/λ为波数R为圆环半径w_m为激励权值。阵元按角度等间隔排布时即φ_m 2π(m-1)/M方向图会在360°内形成近似均匀的主瓣覆盖但旁瓣水平往往偏高——尤其阵元数少、圆阵半径与波长之比R/λ偏大的时候方向图会出现明显的高旁瓣甚至栅瓣。稀疏化的动机很现实。一个100阵元的均匀圆阵性能确实好但馈电网络、接收通道、数据处理、结构重量全都往上涨。工程上更常见的做法是先把圆周上可能布阵的候选位置细分成若干网格然后从里面挑出一部分真正放置阵元其他位置空着。这样阵元量级降下来了但阵列的“口径”没有变——物理孔径还在只是采样稀疏了。问题也随之而来稀疏化会导致方向图能量向旁瓣区域泄漏峰值旁瓣电平PSLL显著恶化。不加处理的随便稀疏PSLL可能比均匀满阵差上6~10 dB这在雷达里就是副瓣杂波淹没目标在通信里就是干扰抑制失效。所以说到底稀疏圆阵位置优化就是回答一个问题在给定候选网格、阵元数量、半径和频率约束下挑哪几个位置放阵元才能让方向图的旁瓣尽可能低这是典型的离散组合优化问题。1.2 位置优化的评价指标与目标函数工程上评价稀疏阵列方向图性能用得最多的指标就是峰值旁瓣电平PSLL。它的定义很直白在主瓣区域之外方向图归一化幅度取最大值换算成dBPSLL max{20·log10(|AF(θ)| / max|AF(θ)|)} θ ∈ 旁瓣区间这里有个容易忽略但极其关键的细节主瓣区域怎么排除。主瓣不是就一个方向延展出来的角度范围它是由阵列口径和波束宽度共同决定的主瓣中心往外大概多少度算作旁瓣区域直接决定了PSLL数值的大小。如果主瓣排除得过窄会把主瓣本身的肩部也算进旁瓣PSLL会虚高排除得过宽又把旁瓣误当成主瓣PSLL被低估。在后续仿真里我专门处理过这个细节后面会有专节说明。单纯追求PSLL最低还不够。实际布阵有硬约束最常见的是阵元间最小间距约束——阵元物理尺寸摆在那里间距小于半个波长或者小于阵子尺寸互耦就会严重恶化方向图。在位置优化模型里这个约束必须强制加入否则算法会给出“数学上漂亮、工程上没法实现”的布局。另外有的场景还要求主瓣宽度不能超过某阈值比如固定半功率波束宽度HPBW这也会限制阵元分布过度集中在某一弧段。把这些问题汇总成目标函数我实际用的形式是min PSLL(φ_1, φ_2, ..., φ_M) s.t. φ_i ∈ Φ_candidate min|φ_i - φ_j| ≥ Δφ_min HPBW ≤ HPBW_max其中Φ_candidate是离散化的候选角位置集合。这是个带约束的组合优化问题候选位置N16、阵元数M8的时候组合数是C(16,8) 12870穷举勉强可行但当N64、M16的时候组合数就到了亿级别以上穷举完全不现实。这也是为什么需要智能算法尤其是能学习布局规律、一次训练多次推理的强化学习方法。2. 从Q-learning到DDQNQ值过估计会怎样影响阵元选址2.1 Q-learning与DQN的基本逻辑在正式把DDQN应用到这个阵列问题之前先快速回顾一下它从哪来。强化学习的核心思路是智能体通过与环境交互获得奖励逐步学习一个策略π(a|s)让长期累积奖励期望最大化。Q-learning的方法是用一张表或者一个函数来估计“状态-动作”价值Q(s, a)表示在状态s下执行动作a之后按照当前策略继续走下去所能获得的期望累计奖励。逐回合更新时用的贝尔曼公式Q(s, a) ← Q(s, a) α[r γ·max_{a} Q(s, a) - Q(s, a)]这里γ是折扣因子r是即时奖励。表格型Q-learning在小状态空间里很好用但布阵问题的状态空间一旦变成候选位置占用情况的组合表格维度直接爆炸。DQN的贡献就是用深度神经网络来逼近Q函数同时引入两个稳定训练的机制经验回放和目标网络。经验回放把交互生成的四元组(s, a, r, s)存入缓冲区训练时随机采样小批量打破样本间的时间相关性目标网络则用一份延迟更新的网络参数来生成TD目标减小自举更新带来的不稳定。2.2 DQN过估计的数学成因与Double DQN的拆解手段DQN大名鼎鼎但实际用起来会发现一个问题它倾向于过估计Q值。根源就藏在max_{a}这个操作里。因为网络输出是带误差的对状态s下所有动作的输出值取最大值时Q函数中的随机正误差会被系统性选出来负误差被忽略掉所以max操作让Q估计值向上偏。这种过估计在普通的DQN中会随着训练推进不断累积具体到布阵问题上的表现就是智能体可能对某个布局方案“盲目自信”——它以为这个位置组合能带来很低的旁瓣但实际上没那么好。这种错误判断会直接干扰策略的学习造成训练过程中的震荡和最终收敛性能下降。DDQN的思路非常直接把“动作选择”和“动作评估”两件事解耦。更新目标不再是直接取目标网络输出的最大值而是先用当前在线网络在状态s下选择最优动作a*a* argmax_{a} Q_online(s, a)然后再把这个a*的Q值交给目标网络来评估Y_DDQN r γ · Q_target(s, a*)这样即使在线网络对某些动作的Q值估计偏高只要目标网络给出的是相对平稳的估计过估计的累积就会被抑制住。论文里对Atari游戏上的对比已经很清楚地展示了DDQN在Q值准确性和得分稳定性上的优势而在我这个稀疏圆阵布阵问题里这个效果同样明显——后面实验对比部分会说数据。2.3 位置优化为什么天然适合用强化学习来做有人可能会问这种离散组合优化问题传统遗传算法GA、粒子群PSO也能做为什么非要用强化学习我的理解有两点。第一阵元位置选择本身可以被看成是一个顺序决策过程。一个完整的布局不是一次性生成的而是从第一个阵元开始一个一个地放到圆周网格的可用位置上去。每放一个阵元就是在“当前占用状态”下做了一个动作然后进入新的占用状态。这个性质和强化学习的序贯决策框架完全吻合。遗传算法把整个布局当成一个个体去变异、交叉反而丢失了这种逐步构造的中间信息。DDQN从这个意义上说是在学习一种“布阵策略”——它不是针对某一次布局做局部搜索而是学会了面对不同部分布局状态时接下来应该优先考虑在哪个位置放阵元。第二一次训练多次复用。GA和PSO每给定一个新的参数条件比如阵元数从8变成10或者圆阵半径改变都要从头搜索一遍。DDQN的在线网络一旦训练好对于同规模、同约束下的新问题可以直接通过策略网络快速生成布局推理成本极低——只需把状态向量输入网络对每个合法动作的Q值排序就能得到最终布局。这在需要反复尝试、多场景快速出方案的实际工程环境里价值是实打实的。3. 把阵元布局建模成强化学习状态、动作、奖励三个要害3.1 状态空间离散标记比连续角度更稳把稀疏圆阵布阵套进强化学习框架第一个要决定的是状态怎么表达。这里有一个非常容易踩的歧义状态是该用连续角度值还是用离散候选位置占用标记我的选择是后者——把圆周上可布阵的候选位置均匀离散成N个网格状态用N维的0/1向量表示。某个位置如果已经放上了阵元对应维度取1否则取0。例如N16时状态就是一个16维向量[1, 0, 1, 0, ...]。我在最初测试时试过直接把已放置阵元的方位角数值列表作为状态输入网络但效果很差。原因也很简单网络对连续的角数值变化不敏感而且同一个物理布局因为阵元排列顺序不同会产生多个等效状态这白白增加了学习难度而0/1占用向量是天然的集合表示没有顺序歧义。但这里还有一个隐藏的坑需要处理置换不变性。已经放置的阵元是“集体”的在状态向量中自然不存在顺序问题因为是不同位置维度的0/1但如果在设计时把已放置阵元记录成一个列表再按放置顺序拼接成状态网络将难以学到旋转/置换等价的布局其实是同一个物理布置。解决方案是始终保持状态为占用向量并通过掩码把非法动作剔除。3.2 动作空间与动作掩码机制动作空间的设计直接关系到训练效率。最简单的定义是智能体每次选择一个未占用的候选位置放入一个新阵元。这样动作数量就等于候选位置数量N。但问题来了——如果某个候选位置已经被占用选择它就是非法动作。如果不加处理智能体就会被奖励函数惩罚硬生生多学一条“别选重复位置”的规则浪费样本和训练时间。更聪明的做法是引入动作掩码action mask。具体实现上每个状态下计算一个布尔掩码向量maskmask[i]1代表候选位置i可用mask[i]0代表该位置已被占用。网络输出层是对应N个动作的Q值向量但要把非法动作的Q值设置为-∞实践中用一个很大的负数比如-1e8经过softmax或argmax后非法动作自然不会被选中。这一步对样本效率的提升是数量级的我强烈建议所有做这类问题的人都加上。此外为了压缩搜索空间我利用圆阵的旋转对称性把第一个阵元固定在一个参考位置比如0°并且让布局在候选网格上按逆时针顺序依次放置杜绝了重复排列。这样动作数与决策步数都直接降了下来。3.3 奖励函数从稀疏奖励到稠密奖励的转换奖励函数是整个问题建模的灵魂。最初我用的是稀疏奖励只有当所有M个阵元全部放完才根据最终方向图的PSLL计算一个奖励值。智能体在训练初期几乎得不到任何梯度信号探索过程极其缓慢——因为它每步都不知道自己放得对不对只有走完一整条路才知道结果好还是坏而这条路上的每个中间状态几乎都没有反馈。这在阵列优化问题上尤其致命因为PSLL计算本身就是一个代价不低的仿真过程稀疏奖励意味着要跑大量的完整仿真才能学到一点东西。所以我把奖励改成了稠密形式。每次放入一个新阵元后立即计算当前部分布局下的方向图PSLL用放置前后PSLL的变化量ΔPSLL作为即时奖励r_t PSLL_t - PSLL_{t-1}由于PSLL越低越好ΔPSLL 0说明旁瓣升高了应该给负奖励ΔPSLL 0说明当前放的位置让方向图变好了应该给正反馈。这里的PSLL计算是在“部分阵元”状态下完成的——虽然物理上不完整但方向图公式照样能算而且它提供的趋势信息对智能体是有效的引导。具体的奖励函数还要加几个工程修正项。首先是阵元最小间距约束如果新放置的阵元与已有阵元的角度间隔小于Δφ_min给一个大的负奖励把这个非法动作“教”给智能体。其次是主瓣宽度约束如果某个部分布局的HPBW已经超过阈值也要给负奖励避免继续沿这条路径布阵。最后为了稳定训练我会对奖励做归一化处理将ΔPSLL除以一个缩放尺度使得即时奖励落在[-1, 1]区间附近防止个别大步长奖励主导梯度方向。4. MATLAB仿真主流程、网络结构与训练超参数4.1 方向图与PSLL计算函数整个仿真代码里方向图和PSLL计算是被调用频率最高的模块它的精度和效率直接决定了训练能不能跑完。我用MATLAB实现了一个computePSLL函数它的输入是阵元方位角数组和圆阵半径输出是归一化峰值旁瓣电平以及对应的方向图数据。核心计算部分简化如下function [PSLL, ang_deg, AF_norm] computePSLL(phi_array, R, lambda) k 2 * pi / lambda; ang_deg -180:0.1:180; ang_rad deg2rad(ang_deg); AF zeros(size(ang_deg)); for m 1:length(phi_array) AF AF exp(1j * k * R * cos(ang_rad - phi_array(m))); end AF abs(AF); AF_norm AF / max(AF); AF_dB 20 * log10(AF_norm eps); % 找到主瓣峰值方向 [~, main_idx] max(AF_dB); % 排除主瓣区域这里按主瓣第一零点间隔设定 bw_deg find_mainlobe_width(AF_dB, main_idx); side_idx setdiff(1:length(ang_deg), ... (main_idx-floor(bw_deg/2/0.1)):(main_idxfloor(bw_deg/2/0.1))); PSLL max(AF_dB(side_idx)); end这里有几个值得说清楚的细节。第一角度扫描步长取0.1°。如果步长太粗比如1°可能会漏掉窄旁瓣峰值导致PSLL被低估太细则会成倍增加仿真时间。我自己测试中0.1°是个精度和耗时的平衡点。第二主瓣宽度的确定用了find_mainlobe_width辅助函数它从主瓣峰值出发沿两侧寻找第一次低于-3 dB的位置再乘上系数作为主瓣排除范围。这个系数不要取得过大否则会吞掉靠近主瓣的强旁瓣。另外方向图理论公式里的阵元都是理想全向点源。如果工程上用的是微带贴片或者偶极子还需要乘上阵元单元方向图因子。在算法原理验证阶段全向点源是标准做法。4.2 DDQN网络结构与训练主循环网络结构我采用了三层全连接结构输入维度等于候选位置数N隐含层分别为64和32个神经元激活函数ReLU输出层维度也是N对应N个候选动作。对于状态表示除了0/1占用向量我另外拼接了一个“已放置阵元数/总阵元数”的标量作为附加输入让网络不仅能感知布局结构还能感知当前布阵进度。这个小小的设计在实际训练中对收敛速度有明显帮助。网络更新的训练循环是标准的DDQN流程经验池中随机采样小批量用在线网络选最优动作目标网络算TD目标然后做梯度下降。核心代码结构如下% DDQN核心更新步骤 for epoch 1:max_epochs batch randsample(buffer_size, batch_size); s_batch buffer.states(batch, :); a_batch buffer.actions(batch, :); r_batch buffer.rewards(batch, :); s_next_batch buffer.next_states(batch, :); done_batch buffer.dones(batch, :); % 在线网络在下一个状态上选最优动作 q_online_next onlineNet.predict(s_next_batch); a_next onehot_to_action(q_online_next, mask_next_batch); % 目标网络评估该动作的Q值 q_target_next targetNet.predict(s_next_batch); q_target_value sum(q_target_next .* a_next, 2); y r_batch gamma * q_target_value .* (1 - done_batch); % 只更新实际执行动作对应的Q值 loss mse(onlineNet.predict(s_batch) .* a_onehot_batch, y .* a_onehot_batch); onlineNet trainNetwork(s_batch, y, onlineNet, options); end4.3 关键超参数配置与目标网络软更新策略我把自己的实测超参数列成了一张表这套配置在16选8的问题上表现稳定。超参数设定值说明折扣因子γ0.98稍高一些让长期奖励有足够权重学习率1e-3Adam优化器训练后期衰减为5e-4经验池容量20000够覆盖较多布局状态又不至于采样过旧样本批量大小64常规取值探索率ε起始1.0前4000步线性衰减到0.05探索率ε终止0.01训练中后期保持小概率探索目标网络更新间隔每200步硬拷贝也可以每步软更新τ0.005每个episode最大步数M即阵元总数放完即结束奖励缩放系数2.0把ΔPSLL映射到[-1,1]附近目标网络的更新方式我两种都试过。硬更新每隔固定步数直接拷贝参数收敛更快但在训练后期有轻微震荡软更新每步按τ0.005往目标网络参数方向移动更稳但需要更长训练时间。在16选8的小规模问题上我用硬更新每200步拷贝一次2500个episode左右就能稳定收敛如果换到规模更大的问题建议用软更新。训练过程中还需要记录两个重要监控指标每个episode最终的PSLL值以及在线网络在固定测试布局集合上的平均Q值偏差。前者反映策略质量后者反映过估计程度。实测中DDQN的Q值偏差比DQN明显更小这正是它在这个问题上收敛更稳的本质原因。5. 训练收敛性、算法对比与边界条件实测结果5.1 收敛过程与学习曲线解读先看收敛过程。我以16个候选位置、8个阵元的稀疏圆阵为例圆阵半径R 1.2λ候选网格把360°均匀切为16份最小阵元间距约束设为15°。智能体在每个episode中依次放置8个阵元每放置完一个阵元就得到一个即时奖励episode结束时额外根据总布局PSLL给一个终局奖励。训练前500个episode探索率还比较高智能体基本在乱摆最终PSLL在-7 dB到-11 dB之间大幅波动。500个episode之后能明显看到学习曲线开始向下走PSLL均值快速下降到约1800个episode时均值降到-15 dB附近波动范围收窄。2500个episode后基本稳定在-16 dB左右。这个收敛速度在我的预期之内因为一步布阵奖励的稠密反馈让问题变得“好学了”。而DQN在同样配置下虽然也能收敛但收敛曲线明显更抖而且最终均值差了约1到2 dB。学习曲线分析时我特别关注一个现象如果奖励函数改成纯稀疏奖励只在布阵完成后给分同样2500个episodePSLL均值只能到-11 dB左右而且方差非常大。这说明在布阵这类多步决策问题上稠密奖励真的不是加分项而是决定训练成败的关键因素。5.2 与均匀圆阵、遗传算法和DQN的横向对比我在相同仿真条件下做了四组对比均匀8元圆阵无优化、随机稀疏16选8多次随机取平均、遗传算法GA种群规模100迭代200代交叉率0.8变异率0.1、DQN以及DDQN。结果汇总如下方法最佳PSLL (dB)平均PSLL (dB)耗时参考均匀8元圆阵-7.9-7.9无需优化随机稀疏-11.6-9.2毫秒级/次遗传算法GA-15.2-14.1约2000次方向图计算DQN-16.1-14.8约2500个episode训练DDQN-17.3-16.4约2500个episode训练从结果能看出三点。第一均匀圆阵虽然工程上直观、好排布但在阵元数受限时旁瓣性能确实差——这是稀疏阵优化的最大动力。第二GA代表了经典启发式算法的基线水平它能找到比随机稀疏好得多的解但单次运行结果不稳定需要反复跑多组随机种子取最优而且它的计算开销随候选网格数急剧上升。第三DDQN的训练后推理阶段非常便宜布一次阵就是一次网络前向传播批量生成布局时优势尤其明显。DDQN相对DQN的提升在多次独立实验的统计数据上表现为约1~2 dB的PSLL改善以及收敛过程更平滑。用DQN训练时多次出现“突然掉点”的现象——某个episode里Q值估计突然恶化策略也变差之后又要花一两百个episode恢复。DDQN在这种掉点现象上明显更少我觉得这正是对Q值过估计进行抑制带来的直接回报。5.3 旋转对称性与布局复用边界圆阵有个很有意思的性质整个阵列绕着圆心旋转任意角度方向图的形状不变只是整体发生旋转。因此我测试了同一个训练好的DDQN策略网络在状态基础上做整体循环移位后网络给出的布局是否仍然保持低旁瓣。实测发现如果把候选网格旋转一个网格步长例如22.5°网络输出的相对位置布局基本保持不变PSLL损失在0.3 dB以内。这说明策略网络确实学到了相对几何关系而不是死记硬背了某个绝对坐标下的最优解。这个性质很有工程价值我们可以把一次训练好的策略网络应用于相同候选网格数、相同阵元数和相同半径约束下的不同需求批次只需要根据实际物理安装约束做坐标对齐即可。但需要注意的是这个复用边界很严格——如果候选位置数N、阵元数M或最小间距约束发生变化状态维度和动作空间都变了原网络没法直接使用需要重新训练。跨度较小的调整比如半径从1.2λ变到1.3λ可以尝试用原网络参数做迁移学习的初始权重实测能省约一半训练时间。6. 这几次仿真里最值得记住的四个工程坑6.1 主瓣排除区间定偏了PSLL全盘失真这是我在初期最容易忽视、影响也最大的一个坑。PSLL的计算结果完全取决于“主瓣区域”怎么排除。一开始我把主瓣排除区间设得太窄只排除了峰值附近±5°结果方向图主瓣的肩部被当成了旁瓣PSLL算出来虚高了好几dB。更麻烦的是这种系统性误差会直接污染奖励信号智能体辛辛苦苦学到的策略看起来“在降低PSLL”但其实是在迁就一个错误的目标函数。后来我改用第一零点间隔作为主瓣宽度基准从方向图峰值出发沿两侧找到第一次下降到-20 dB的角度位置以这两个位置之间的宽度作为主瓣排除带宽再外扩10%作为安全边界。这样算出来的PSLL在后续和全波仿真软件比如HFSS的阵因子验证对照时趋势一致性明显更好。这里想提醒的是主瓣排除策略必须在算法设计阶段就固定下来而且要和最终验收口径保持一致否则算法调参和结果评估都是在打移动靶。6.2 状态编码忽略了旋转等价的顺序歧义我前面提到状态用0/1占用向量。过程中我一度偷懒把已放阵元的位置记录成一个1×M的数组然后按放入顺序拼接到状态尾部再喂给网络。结果训练时发现网络对于四种不同放入顺序、但最终布局完全相同的情况给出的Q值居然有明显差异。问题就出在物理世界中等价的布局在状态空间里被表示成了不同的向量网络被迫去学“同样的布局因顺序不同而产生不同价值”这种根本不存在的规律白白浪费了模型容量。改成纯0/1占用向量后位置无关顺序这个问题就消失了。这里我吸取的教训是强化学习里的状态表示一定要尊重问题的对称性。布阵问题是置换对称的状态就应该具备置换不变性如果原始特征不具备这个性质就要通过编码方式人为引入。6.3 探索率衰减策略不对导致后期困在局部最优训练初期我把ε从1.0衰减到0.01的周期设得太短总共只给了1000个episode。前期的随机探索还没充分覆盖足够多样的布局状态探索率就已经降得很低智能体很快就锁死在一个局部最优布局附近后面不管怎么训都突不破。后来我把探索周期拉长到了4000步并且加了一个“探索率阶段性回升”的机制每累积300个episode没有刷新历史最好PSLL就把ε临时调回0.2继续探索一段时间再逐步下降。这个简单机制让我在16选8问题上找到了多个不同布局方案它们PSLL差距在0.5 dB以内而且后续如果遇到实际工程约束比如某个候选位置被其他设备占用可以直接换用备选布局灵活性提高不少。探索率策略在一般的DQL教程里经常被一句话带过但在阵列布阵这种奖励分布存在多个峰值的组合优化问题中它的重要性甚至比网络结构还要高。6.4 方向图扫描步长与训练耗时的矛盾方向图扫描步长方面我一开始追求精确全程用0.01°步长扫描。10万个角度点逐点计算方向图单次PSLL计算耗时飙升到约0.8秒。一次训练2500个episode每个episode按8步计算光方向图计算就要跑2万次总耗时直接飙到四个多小时。这个成本在调参阶段完全不可接受。我后来改成两段式策略训练过程中的前向计算用0.2°步长扫描方向图趋势没太大偏差单次PSLL计算降到约30毫秒训练整体压缩到20分钟以内训练完成后对最终选出的最优布局用0.01°步长做一次精确验证。两段式的关键认知是强化学习训练过程并不需要极高精度的PSLL绝对值它需要的是不同布局之间PSLL的“相对排序”保持稳定。0.2°步长虽然会低估极窄旁瓣的峰值但好布局和差布局之间的排序关系基本不会错这就足够引导智能体找到正确方向了。一直等到最后验收环节再花一次精算的代价换取精确结果即可。最后再分享一个验证工作流的小建议单独训练一次DDQN得出的最优布局不足以证明算法有效一定要用至少5个不同的随机种子重复训练看PSLL均值和方差。我在实际测试中遇到过同一个配置下几次训练结果差距达到2 dB的情况这个波动幅度在工程上不可忽略。多种子重复训练不仅是为了统计可信度还能顺手收集多个高质量备选布局为工程实现时因为空间干扰、安装误差等硬约束必须调整阵元位置的情况提供足够的选择余地。