说明
本博文承接上一篇博文[1]:遗传算法及基于该算法的典型问题的求解实践-CSDN博客,本博文探讨基于遗传算法做波束形成优化的相关问题,并做仿真实践。关于做波束形成的好处和意义这里就不展开了。不管是发射端还是接收端,都可以用来做相控阵扫描,或者让波束指向特定角度,我在之前的博文中聊过这个话题[2]:关于阵列发射端的波束形成(相控阵)研究与仿真实践-CSDN博客。所以读者在阅读本文前建议可以先看看上面的这两篇博文。
为简化问题,本文所涉及的仿真都只针对单个天线阵元是无方向性的(或者说是各向同性的):各向同性是说天线的方向图是一个球形。由诸多各向同性的阵元所构成阵列的波束形成的结果主要涉及到三个参数:1、各阵元的馈电幅度(发射功率);2、各阵元之间的相对位置关系;3、各阵元的初始相位。(同时这里暂定:各天线发射频率一致、阵元数目确定)。这几个参数共同决定了阵列波束形成后的方向图是什么样的(比如主波束指向、旁瓣高度等等)。
基于遗传算法做波束形成的优化,主要做的事情就是:基于遗传算法来优化各阵元的(幅度和相位)激励、优化阵列排布,以达到期望的波束方向图效果。这里面其实有很多很有意思且需要深入研究的点,鉴于本人现阶段在这方面的积累并不深,且没看过几篇相关的文献,本文的工作其实很基础,希望能帮到一些和我一样的入门者,或者起到一点抛砖引玉的效果。
特别地,本文针对峰值旁瓣比这一波束方向图中的核心参数之一,在控制单一变量的前提下,探讨如何基于遗传算法分别通过优化各阵元馈电幅度、馈电相位、阵元间相对位置关系的方法来达到压低波束旁瓣(提高峰值旁瓣比)的目的。本文的仿真暂时只针对一维线阵。
blog
2024.3.19 博文第一次撰写
目录
一、遗传算法概述
关于遗传算法的基础、基于该算法解决实际问题的思路和基本流程、以及基于该算法解决一些经典问题的仿真实践,我在之前的博文[1]中有了足够详细的论述和参考的代码,这里不再重复赘述,读者可以移步去那篇博文看看。
二、波束形成概述
与波束形成有关的概念我也在参考资料[2]中有过很详细的介绍和仿真实践,读者可以去到该链接中阅读参考。这里重申一下线阵下所合成的波束方向图公式:(所谓阵列的波束方向图,本质上就是各阵元所辐射电磁波在空间的叠加)
(2-1)
式中,AE为所合成的波束在不同方向(θ)的幅值,In为不同阵元的馈电幅度,δn为不同阵元所发射电磁波的初始相位,Dn为各阵元相对于参考阵元(比如对于线阵,我们一般选择第一个阵元作为参考阵元)的距离,λ为载波波长。
三、问题描述、建模&初始化参数设置
本博文(截止2024.3.19)想要探讨的问题具体表述如下:
1、探讨以各阵元馈电幅度为单一变量时,如何基于遗传算法优化各阵元幅度激励,以使得阵元为各向同性的线阵具备良好的峰值旁瓣比(足够低的旁瓣)。
2、探讨以各阵元馈电初始相位为单一变量时,如何基于遗传算法优化各阵元相位激励,以使得阵元为各向同性的线阵具备良好的峰值旁瓣比(足够低的旁瓣)。
3、探讨以各阵元相对位置关系为单一变量时,如何基于遗传算法优化各阵元间的相对位置关系,以使得阵元为各向同性的线阵具备良好的峰值旁瓣比(足够低的旁瓣)。
峰值旁瓣比的定义为:主瓣波束最大幅值与最大旁瓣的最大幅值之比(取dB)。关于如何找到最大旁瓣,本文提供的仿真代码中通过在方向图中找到第二大的极值点得到。
在前述问题描述下,设置前述三个问题下,遗传算法的适应度函数(评价标准)都为:所合成波束方向图的峰值旁瓣比。并预设各类参数列表如下(后面两问题下有些重复的参数我只在第一个问题中给出了,本文提供的代码中,这些预设参数读者后续参考时可以自由更改):
表3.1 算法中的核心参数列表
参数 | 值/方法 | |
基于遗传算法做幅值激励优化的核心参数 | 预设阵元数量 | 10 |
预设阵列位置关系 | [0:1:9]*0.5*λ | |
预设初始相位 | zeros(1,10) | |
预设波束方向图范围 | [-90 90] | |
预设各阵元最大幅值 | 10 | |
预设染色体数 | 10 | |
预设迭代次数 | 100 | |
预设变异率 | 0.02 | |
预设每次迭代直接复制染色体数 | floor(预设染色体数/5) | |
选择父代染色体算法 | 轮盘赌算法 | |
交叉算法 | 单点交叉 | |
变异算法 | 单基因在可选范围内随机突变 | |
基于遗传算法做相位激励优化的核心参数 | 预设各阵元馈电幅值 | ones(1,10) |
预设相位阈值 | [-180 180] | |
交叉算法 | 单点交叉 | |
变异算法 | 单基因在可选范围内随机突变 | |
基于遗传算法做阵元相对位置关系优化的核心参数 | 预设各阵元馈电幅值 | ones(1,10) |
预设各阵元初始相位 | zeros(1,10) | |
预设阵列孔径 | 10*λ | |
交叉算法 | 顺序交叉(因为阵元位置不能重复) | |
预设阵列类型 | 稀疏阵(关于稀布阵,阵列的初始化会有不同) |
关于遗传算法的一些核心代码细节,我在之前的博文[1]中有过说明,本文的仿真其实大体内容差不多,所以本文中不再做过多关于代码实现的说明而是直接贴结果。相关的代码细节读者可以参考所附代码链接。
四、基于遗传算法的阵元幅度激励优化
图4.1 初始化染色体下的波束形成结果
图4.2 不同迭代次数下各染色体下的波束形成结果的峰值旁瓣比
图4.3 迭代完成后适应度最高的染色体对应的波束形成结果
迭代完成后适应度最高的染色体对应的各阵元幅值激励结果:
从上面几幅图的结果来看,随着迭代次数的增加,峰值旁瓣比在整体上移,符合我们的诉求。迭代100次后,峰值旁瓣比从最低的约6dB,增加到了约25dB,效果显著。仿真的结果验证了理论以及代码的可行性和正确性。
五、基于遗传算法的阵元相位激励优化
图5.1 初始化染色体下的波束形成结果
图5.2 不同迭代次数下各染色体下的波束形成结果的峰值旁瓣比
图5.3 迭代完成后适应度最高的染色体对应的波束形成结果
迭代完成后适应度最高的染色体对应的各阵元相位激励结果:
从上面几幅图的结果来看,随着迭代次数的增加,峰值旁瓣比在整体上移,符合我们的诉求。迭代100次后,峰值旁瓣比从最低的约0.749dB,增加到了约10.09dB,效果显著。仿真的结果验证了理论以及代码的可行性和正确性。
不过可以看到:因为本节的仿真讨论优化相位以优化峰值旁瓣比,当阵元相对位置关系确定后,相位的改变会直接决定阵列的主波束方向,所以前后染色体下的主波束方向会有不同。在不同的主波束方向下讨论峰值旁瓣比似乎意义不大,本节的内容仅具备有限的参考性。
基于遗传算法来优化相位,更多的情况可能是指定主波束的前提下做的:比如通过优化相位设置来得到更为理想的余割平方波束。此时我们需要用波束方向图的相似度为适应度评价标准来优化相位设置。
六、基于遗传算法的阵元相对位置关系优化
图6.1 初始化染色体下的波束形成结果
图6.2 不同迭代次数下各染色体下的波束形成结果的峰值旁瓣比
图6.3 迭代完成后适应度最高的染色体对应的波束形成结果
迭代完成后适应度最高的染色体对应的各阵元相对位置优化结果:
从上面几幅图的结果来看,阵元相对位置关系的优化有一定的效果,但是不大…,似乎等距均匀阵下波束的峰值旁瓣比是最大(优)的。迭代的收敛效果不是很理想,考虑是因为交叉和变异的方法还有待改善。读者可以在本节的基础上做更多的优化。
六、总结
本文讨论基于遗传算法的波束形成优化问题,具体地:本文针对峰值旁瓣比这一波束方向图中的核心参数之一,在控制单一变量的前提下,探讨如何基于遗传算法分别通过优化各阵元馈电幅度、馈电相位、阵元间相对位置关系的方法来达到压低波束旁瓣(提高峰值旁瓣比)的目的。仿真的结果验证了建模和代码的可行性和正确性。
波束形成的优化还有诸多可以探讨的方向:如,使得波束指向特定区域的优化问题、面阵下的优化问题、多变量联合优化问题(比如同时考虑幅值和相位的组合来优化波束形成)等等。所以如前面说明中所说,本文的内容算是最基础的。
此外,在之前的博文[1]中我提出了一些关于遗传算法可以去思考的问题,这里再增加一点:其实本质上遗传算法要解决的问题,如果不考虑计算能力(比如所耗时间等问题),可以通过遍历所有可能来得到最优解。遗传算法的存在是加速了我们向最优解靠近的速度(不需要我们去遍历所有的可能解),但同时遗传算法也没法确保100%能到全局最优解里面去,那么可以思考的一个问题是:如何判断遗传算法的结果是在最优解里面?或者,可以通过什么操作确保我们是往全局最优解而不是局部最优解的方向走?
七、参考资料
[1] 遗传算法及基于该算法的典型问题的求解实践-CSDN博客
[2] 关于阵列发射端的波束形成(相控阵)研究与仿真实践-CSDN博客