说明
在之前的博文中,我分别探讨了基于遗传&粒子群算法的波束形成优化问题[1][2],不过这两篇博文中所探讨的问题是:只针对单一类型变量以及只有一个优化目标,比如在各阵元幅值和相对位置关系确定的情况下,优化各阵元的相位(这就是单一类型变量)以得到较好的峰值旁瓣比(这是优化目标)。
本文想探讨的是:把影响波束的全部因素,包括幅值、相位、以及相对位置关系联合起来同时优化,并考虑至少两个优化目标:一是尽可能高的峰值旁瓣比;二是使得主波束尽可能指向需求的方向。
在之前工作的基础上,从代码编写的角度来说,其实很容易实现,但是得到比较理想的结果是很困难的(本文给出的结果都不是很理想)!不过本博文的目的在于提供一个基础的、对于该问题的解决思路、框架和初步结果。更理想的优化结果,需要做更细节和更深入的工作。
Blog
2024.4.28 博文第一次撰写
目录
4.1 基于遗传算法的多变量、单一优化目标的仿真结果及其讨论
4.2 基于粒子群算法的多变量、单一优化目标的仿真结果及其讨论
4.4 基于粒子群算法的多变量、多优化目标的仿真结果及其讨论
一、遗传算法&粒子群算法综述
我在之前的博文[3][4]中已经对这两算法有了足够详细的说明,这里不再赘述。读者可移步查看。
二、波束形成概述
有关波束形成的概念,我也在之前的博文中有过详细介绍,读者可以参考资料[5][6]。和之前在[1][2]中的仿真预设条件一样,本文的仿真下,各阵元为各向同性的,且本文只仿真一维线阵。
三、多类型变量&多优化目标问题明确、参数预设
问题明确:具体地,本博文给出了四个仿真:
1. 基于遗传算法,优化目标为:更高的峰值旁瓣比。同时优化:幅值、相位以及阵元间的相对位置关系。
2. 基于粒子群算法,优化目标为:更高的峰值旁瓣比。同时优化:峰值、相位以及阵元间的相对位置关系。
3. 基于遗传算法,优化目标为:使得波束指向特定的角度,且具有更高的峰值旁瓣比。同时优化:幅值、相位以及阵元间的相对位置关系。
4. 基于粒子群算法,优化目标为:使得波束指向特定的角度,且具有更高的峰值旁瓣比。同时优化:幅值、相位以及阵元间的相对位置关系。
仿真中的参数预设如下(除去所使用的优化算法不同外,这两种算法下关于阵列的预设参数一致)。
表3.1 仿真预设参数列表
参数 | 值 | |
阵列参数 | 波长 | 载频77GHz对应的波长 |
阵元个数 | 8 | |
各阵元馈电幅值范围 | [0 10] | |
各阵元馈电相位范围 | [-180 180] | |
阵列孔径 | 15*波长 | |
阵列排布类型 | 稀布阵,不过相邻两阵元之间的间隔>0.5*波长 | |
波束方向图范围 | [-90 90] | |
遗传算法参数 | 染色体数 | 20 |
单条染色体基因数 | 8*3 = 24 (1:8对应阵元幅值、9:16对应相位、17:24对应位置) | |
变异率 | 20% | |
从上一代直接复制的染色体数占比 | 20% | |
选择父代染色体的方法 | 轮盘赌算法 | |
交叉方法 | 单点交叉(对幅值、相位以及位置值分别进行) | |
变异方法 | 单点变异 (对幅值、相位以及位置值分别进行) | |
迭代次数 | 200 | |
粒子群算法参数 | 粒子群数量 | 20 |
单粒子长度 | 8*3=24 | |
幅值运动速度范围 | [-1 1] | |
相位运动速度范围 | [-20 20] | |
位置运动速度范围 | [-1*波长 1*波长] | |
惯性权重范围 | [0.6 1.2] (随迭代次数线性递减,幅值、相位以及位置取同一个值,读者可以在代码中另设) | |
个体学习因子 | 0.4(相位以及位置取同一个值,读者可以在代码中另设) | |
群体学习因子 | 0.6(相位以及位置取同一个值,读者可以在代码中另设) | |
迭代次数 | 200 |
在前述参数预设值下,分别基于遗传算法和粒子群算法进行波束形成的优化。
四、仿真结果与讨论
4.1 基于遗传算法的多变量、单一优化目标的仿真结果及其讨论
本节优化的目标是:峰值旁瓣比尽可能地高,并直接用峰值旁瓣比作为适应度值。得到的仿真结果如下:
图4.1 不同迭代次数下各染色体适应度值的分布
图4.2 各迭代次数下最优适应度值的变化
图4.3 迭代完成前后最优适应度染色体对应的波束方向图
可以看到还是有一些改善的,迭代完成后最优适应度染色体的值如下:(1:8)表示幅值,(9:16)表示相位,(17:24)*λ表示位置。
图4.4 迭代完成后最优适应度的染色体
读者可以在我的基础上优化参数、增加迭代次数以达到更好的效果。
4.2 基于粒子群算法的多变量、单一优化目标的仿真结果及其讨论
本节优化的目标是:峰值旁瓣比尽可能地高,并直接用峰值旁瓣比作为适应度值。得到的仿真结果如下:
图4.5 不同迭代次数下各粒子适应度值的分布
图4.6 各迭代次数下最优适应度值的变化
图4.7 迭代完成前后最优适应度粒子对应的波束方向图
图4.8 迭代完成后最优适应度的粒子
从上面几幅图得到的结果来看,效果远差于遗传算法。当然,这里面有参数设计的原因,读者可以基于所给代码进行更多的参数尝试。
不过从两种算法的迭代方式来看:针对多变量问题,遗传算法是通过自身变异的方法来寻找最优解,虽然不能确保变异一定朝更好的方向变异,但是一旦出现适应度更高的染色体遗传算法会将之保存下来,所以整体上来说,即便是多变量的问题,遗传算法也是在往更好的方向运动的。而对于粒子群算法,其迭代寻优的方式是朝着群体最优的方向运动,并在运动的过程中不断找全局最优点,这在单变量下(比如单纯优化相位)是没问题的,但是对于多变量问题,往群体最优的方向靠,不代表每个变量在运动的过程中也是这样,更不能保证各变量组合下的粒子会更优,所以该算法解决多变量问题有更多的随机性,更难收敛,体现在上面的结果中就是看起来效果更差。 这是我对这两算法处理多变量问题的一点理解,所以针对多变量问题,遗传算法应该是更好的选择。
4.3 基于遗传算法的多变量、多优化目标的仿真结果及其讨论
本节优化的目标是:使得主波束指向设定的角度(预设角度为10°),并尽可能有更高的峰值旁瓣比。多目标下的优化问题,关键在于如何计算整体的适应度!因为我们基于波束方向图可以得到两个适应度值:一是该波束的峰值旁瓣比A(该值越大,表示适应度越高),二是该波束的主波束指向与预设角度之间的差值B(该值越小,表示适应度越高)。组合好这两适应度很重要,且需要确保这两适应度在整体适应度C下的占比应该接近于1:1,否则整体的优化方向将朝着占比高的方向优化。
本博文给出的方法是:C = abs(A – B/Bmax), Bmax是差值的理论最大值,该值由前面预设的波束范围以及设定的波束指向得到:我们将波束范围设置在±90°,而预设的波束指向为10°,则此时理论的波束指向最大差值为:100°,B/Bmax的范围就被限定在[0 1]区间,该值越接近于1表示差值越大,适应度值越低。此外,峰值旁瓣比A的范围从仿真的结果来看在[1 2]之间,所以本文我将整体适应度值的计算方法设计为:C = abs(A – B/Bmax),【当然,这种方法不是最优的,读者可以自行设定其它的方法】。
在前述预设条件下,得到的仿真结果如下:
图4.9 不同迭代次数下各染色体适应度值的分布
图4.10 各迭代次数下最优适应度值的变化
图4.11 迭代完成前后最优适应度染色体对应的波束方向图
图4.12 迭代完成后最优适应度的染色体
从上面的结果来看,趋势是符合预期的,且波束指向(11°)已经很接近预设的方向(10°)。 更优的结果读者可以通过优化参数设计、设置更多的迭代次数等方法来实现。
4.4 基于粒子群算法的多变量、多优化目标的仿真结果及其讨论
和4.3的预设条件以及求整体适应度值的方法一样,粒子群算法下得到的结果如下:
图4.13 不同迭代次数下各粒子适应度值的分布
图4.14 各迭代次数下最优适应度值的变化
图4.15 迭代完成前后最优适应度粒子对应的波束方向图
图4.16 迭代完成后最优适应度的粒子
从上面的结果来看,效果远差于遗传算法。关于该结果的解释以及两种算法针对多变量、多目标函数问题的对比探讨,同4.2节。
五、总结
本博文对基于遗传算法和粒子群算法的多变量、多目标函数下的优化问题进行了探讨。以波束形成优化为例,使用这两种算法分别仿真了多变量(阵元幅值、相位、位置),单一目标优化(更高的峰值旁瓣比),多目标(设定波束指向&更高的峰值旁瓣比)优化四种情况,给出了仿真结果以及一些简单的探讨。
本博文的目的在于提供一个基础的、对于该问题的解决思路、框架和初步结果。更理想的优化结果,需要做更细节和更深入的工作。
六、参考资料
[2] 基于粒子群算法的波束形成优化 – 仿真实践-CSDN博客
[3] 遗传算法及基于该算法的典型问题的求解实践-CSDN博客
[4] 粒子群算法及基于该算法的典型问题求解实践-CSDN博客
[5] 关于阵列发射端的波束形成(相控阵)研究与仿真实践-CSDN博客
[6] 关于柔性阵列(/三维阵列)波束形成的仿真实践以及稳健波束形成的思考(1)-CSDN博客