粒子群优化算法在天线方向图应用ppt课件.ppt
粒子群算优化法应用,在阵列天线方向图综合中 姓名: 李亚 学号:2201500384,引言,粒子群优化算法(Particle Swarm optimization,PSO)又翻译为粒子群算法、微粒群算法、或微粒群优化算法。是通过模拟鸟群觅食行为而发展起来的一种基于群体协作的随机搜索算法。通常认为它是群集智能 (Swarm intelligence,SI) 的一种。它可以被纳入多主体优化系统(Multiagent Optimization System,MAOS).粒子群优化算法是由Eberhart博士和kennedy博士发明。,算法介绍,设想这样一个场景:一群鸟在随机搜索食物,在这个区域里只有一块食物。所有的鸟都不知道食物在那里。但是他们知道当前的位置离食物还有多远。那么找到食物的最优策略是什么呢。最简单有效的就是搜寻目前离食物最近的鸟的周围区域。PSO从这种模型中得到启示并用于解决优化问题。PSO中,每个优化问题的解都是搜索空间中的一只鸟。我们称之为粒子。所有的粒子都有一个由被优化的函数决定的适应值(fitnessvalue),每个粒子还有一个速度决定他们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。,PSO算法初始化,PSO初始化为一群随机粒子(随机解),然后通过迭代找到最优解,在每一次叠代中,粒子通过跟踪两个极值来更新自己。第一个就是粒子本身所找到的最优解,这个解叫做个体极值pBest,另一个极值是整个种群目前找到的最优解,这个极值是全局极值gBest。另外也可以不用整个种群而只是用其中一部分最优粒子的邻居,那么在所有邻居中的极值就是局部极值。在找到这两个最优值时,粒子根据如下的公式来更新自己的速度和新的位置 vn 是粒子的速度,persentn 是当前粒子的位置. pbestn and gbestn 如前定义 rand1、rand2是介于(0,1)之间的独立随机数. c1,c2 是学习因子. w是速度惯性因子,通常c1=c2=2,w取0.4,0.9。,算法流程,与遗传算法比较,共同点种群随机初始化。对种群内的每一个个体计算适应值(fitness value)。适应值与最优解的距离直接有关。种群根据适应值进行复制。如果终止条件满足的话,就停止,否则转步骤 。从以上步骤,我们可以看到PSO和遗传算法有很多共同之处。两者都随机初始化种群,而且都使用适应值来评价系统,而且都根据适应值来进行一定的随机搜索。两个系统都不是保证一定找到最优解。但是,PSO没有遗传操作如交叉(crossover)和变异(mutation),而是根据自己的速度来决定搜索。粒子还有一个重要的特点,就是有记忆。,与遗传算法比较,不同点:PSO的信息共享机制是很不同的。在遗传算法中,染色体(chromosomes)互相共享信息,所以整个种群的移动是比较均匀的向最优区域移动。在PSO中,只有gBest (orlBest) 给出信息给其他的粒子,这是单向的信息流动。整个搜索更新过程是跟随当前最优解的过程。与遗传算法比较,在大多数的情况下,所有的粒子可能更快的收敛于最优解。,参数设置,应用PSO解决优化问题的过程中有两个重要的步骤: 问题解的编码和适应度函数PSO的一个优势就是采用实数编码,不需要像遗传算法一样是二进制编码(或者采用针对实数的遗传操作.例如对于问题 f(x) = x12 + x22+x32 求解,粒子可以直接编码为 (x1,x2,x3),而适应度函数就是f(x). 接着我们就可以利用前面的过程去寻优.这个寻优过程是一个叠代过程,中止条件一般为设置为达到最大循环数或者最小错误PSO中并没有许多需要调节的参数,下面列出了这些参数以及经验设置粒子数: 一般取 2040. 其实对于大部分的问题10个粒子已经足够可以取得好的结果,不过对于比较难的问题或者特定类别的问题,粒子数可以取到100 或 200粒子的长度: 这是由优化问题决定,就是问题解的长度粒子的范围: 由优化问题决定,每一维可是设定不同的范围,参数设置,Vmax: 最大速度,决定粒子在一个循环中最大的移动距离,通常设定为粒子的范围宽度,例如上面的例子里,粒子 (x1,x2,x3) x1 属于 -10,10,那么 Vmax 的大小就是 20学习因子: c1 和 c2 通常等于 2. 不过在文献中也有其他的取值. 但是一般 c1 等于 c2 并且范围在0和4之间中止条件: 最大循环数以及最小错误要求. 例如,在上面的神经网络训练例子中,最小错误可以设定为1个错误分类,最大循环设定为2000,这个中止条件由具体的问题确定.全局PSO和局部PSO: 我们介绍了两种版本的粒子群优化算法: 全局版和局部版. 前者速度快不过有时会陷入局部最优. 后者收敛速度慢一点不过很难陷入局部最优. 在实际应用中,可以先用全局PSO找到大致的结果,再用局部PSO进行搜索.另外的一个参数是惯性权重,由Shi 和Eberhart提出,,基于粒子群算优化算法方向图综合技术,通过优化阵列的激励电流大小实现低旁瓣的方向图分布,同时在指定的干扰位置形成具有指定深度的零陷值;着重介绍了对于传统PSO算法易于早熟问题的改进。,参数设置,对于由 n 个理想点源组成的离散直线阵,以阵列的第一个单元为参考点,在不考虑单元之间耦合的条件下,天线阵的远场方向图可表示为: (3)式中为空间辐射角,为工作波长,k=2/为波数,a1i和1i是第i 个天线单元的幅度和相位,d1i为第i个单元到第一个单元的距离,用 PSO 算法综合方向图的目的就是根据波束形状要求来求解阵列天线的激励幅值、相位、单元间距。 标准 PSO 算法的参数包括 :群体规模swarm-size,每个粒子的维数dimension,惯性权重,加速常数c1和c2,最大速度Vmax,最大代数MAXDT。具体程序中 PSO 算法的参数设置如下 :种群的规模由待优化的参数决定,一般原则是种群个数多于优化参数的个数;惯性权重可以是定值也可是随叠代的次数而呈线性变化的,这里使用的是前者取0.7298;加速常数c1=c2=2.0;最大速度Vmax设置为1.0;而程序的终止条件是程序运行达到了预置的最大叠代次数。,参数设置,种群中个体的维数dimension就是所要优化的参数的个数,在天线阵综合中,要优化的参数通常由天线阵单元间距,阵元的激励幅度和相位构成。 适应度函数的设计是算法的关键,在天线阵列综合中,适应度函数一般表示天线实际所产生的方向图与目标方向图的差异大小。具体过程是先计算出每个粒子的方向图与目标方向图的误差,再对这个误差作变换得到适应度。误差越大,适应度越高;误差越小,适应度也越小。 在计算误差时,采用了最大误差的形式,即计算实际天线阵方向图与规定方向图在各个取样点(一般为副瓣(sll)位置,零深(null)位置)的误差,然后找出误差的最大值,优化的目的就是使最大误差达到最小,这样实际的方向图就最接近目标方向图。,适应度函数,针对天线阵综合这种多目标问题,文中选用的适应度函数的形式是:其中 x =(a1i, aii, 1i in, d1i din ) 即由激励幅值,激励相位和单元间距组成, 其取值范围为, D = x|0 a1(i)1, 0 1(i)2, d1(i)d2(i)dn(i),在这里我么给定d=0.5; 是辐射角,它们是 m 个角度取样点(通常取为方向图的副瓣位置和零深位置);fa (x,i)是根据每个粒子的值所计算出的方向图,而fd(i)是所要逼近的目标方向图。下面给出阵列综合中常用的例子用 PSO 算法综合的结果,详细讨论综合具体天线阵列时PSO算法的设置。,仿真实例,天线阵列方向图的设计目标:主瓣宽度10(第一零陷宽度),要求方向图在 40、45、50、55、60生成-90dB的零陷,旁瓣电平-15dB以下(使用吸收边界条件)具体的算法参数设置和优化结果:算法中种群的大小设置为 60,每个粒子的维数为 64(其中前32位表示激励幅度大小, 后 32 位表示激励相位大小),适应度函数包括副瓣区的电平高低和两个零深区的电平高低。,matlab语句段,clear allclcformat longc1=2; %学习因子1c2=2; %学习因子2w=0.7298; %惯性权重MAXDT=1000;%最大迭代次数D=64;N=60; %初始化群体个体数目m=90;%角度取样点(取方向图的副瓣位置、零深位置);esp=10(-6); %设置精度for i=1:N for j=1:D/2 x(i,j)=randn; v(i,j)=randn; endendfor i=1:N for j=D/2:D x(i,j)=randn; v(i,j)=randn; endendfor i=1:N p(i)=fitness(x(i,:),D); y(i,:)=x(i,:);end pg=x(1,:); %pg为全局最优for i=2:N if fitness(x(i,:),D)fitness(pg,D) pg=x(i,:); endend,%-主循环,按照公式依次迭代-for t=1:MAXDT for i=1:N v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:)+c2*rand*(pg-x(i,:); x(i,:)=x(i,:)+v(i,:); if fitness(x(i,:),D)p(i) p(i)=fitness(x(i,:),D); y(i,:)=x(i,:); end if p(i)fitness(pg,D) pg= y(i,:); end end pbest(t)=fitness(pg,D);enddisp(*)disp(函数的全局最优位置:)solution =pg %即为激励幅值,激励相位disp(最后得到的优化极值:)result=pbest ezplot(fxita)%即为天线阵列图函数axis(0,90,-90,0);xlabel(角度/);ylabel(归一化方向图增益/dB);title(阵列天线归一化方向图),matlab语句段,function y=fxita(x,N)d1=0.5*lanbuda;k=2*pi/lanbuda;fxita=0;for i=1:Na1(i)=x(i,1:32);beta1(i)=x(i,32:64); fxita(i)=a1(i)*exp(j*(k*i*d1*sin(t)+beta1(i) fxit(t)=fxit(t)+fxita(i);endfunction y=fitness(x)for t=1:m f(t)=(abs(fxit(t)-fdxit(t)2 %不停调整的是激励幅值,激励相位,那么幅值和相位应该就是对应的粒子位置,也就是x,i是目标函数的自变量,最后图形的横轴。问题:(1)如何表示最后的目标图形fdxita?end y=max(f),程序在1000代达到了图2所示的结果。从图2可以看出, 用PSO优化后的方向图在期望的零深位置电平均已经压制到了-90dB,副瓣的其它位置的电平也均已经压至-15dB以下,实际方向图与目标方向图逼近较好,基本满足了设计要求, 阵元的激励与相位分布如下表所示。,