处理器/DSP
基于遗传算法的复杂无源滤波器参数设计
提出了一种基于计算机数值计算的复杂无源滤波器参数设计的新方法,首先把求解电路参数的问题数学化为性能指标优化模型,然后采用遗传算法求得特性符合要求的电路参数值,数值实验表明了此方法的有效性。
关键词:无源滤波器 参数优化设计 遗传算法
无源滤波器在电子技术领域有着广泛的应用。针对某一应用的复杂无源滤波器,往往结构容易确定,参数调整却十分困难。其原因是:结构中的组成元件?电阻、电容、电感?个数较多,频率特性与元件参数的关系是一个高阶的非线性函数,相互间对频率特性的影响存在着高度的耦合,因而欲达到频率特性优良的设计目的,无论采用实验手段还是常规数学手段,都需花费大量的时间与精力。
近年来,模拟生物进化过程的遗传算法作为求解优化问题的有效手法而倍受关注。正如Thomas Back等人指出?1?,同其他手法相比,其优点在于:处理问题的灵活性、适应性、鲁棒性,能取得全局解,对模型要求低,针对不同问题设计的不同遗传算法,不仅能提高现有解的优化品质,还能攻克某些难度大的优化问题。
本文以遗传算法的应用为出发点,提出了一种新的无源滤波器参数设计方法。它能有效克服上述无源滤波器参数设计的困难,十分方便地取得满足性能指标要求的参数设计值。
1 优化模型的建立
典型的无源滤波器电路组成元件一般按T型结构连接,如图1所示。滤波器的频率特性可以用功率传输函数来定义,即:
其中,X=[X1,X2,...,Xn],为电路的元件参数值矩阵,n为元件总个数,W为频率。若X已知,频率采样点Wi对应的频率特性Li可按下述方法计算:
设 I1=IL=0.1,
V1=ILRL+0=VL
I2=V1Y1+IL
V3=I2Z2+V1
V2n+1=I2nZ2n+V2n-1
I2n+2=V2n+1Y2n+1+I2n
Es=RsI2n+2+V2n+1
用简易的迭代程序求得Es,代入式(1)即可求得Li。
滤波器的结构已知后,先确定结构中的参数取值范围,选择的条件可以比较宽松,然后按预期的性能指标要求,选定适当个频率采样点W1,W2,...,规定其对应功率传输函数幅度界限值,迫使它调整后经过采样点时,满足幅度界限要求(大于、小于或介于)。由此获得的新设计参数X*即是满足预期性能指标的设计值。为求得X*,建立如下优化模型:
其中,X的定义同前,T=[T1,T2,...]为幅度界限值矩阵,S=[S1,S2,...]为加权系数矩阵,U=[U1,U2,...]为裕度矩阵,XL、XU分别为设计参数的上下界限矩阵。p为偶次方,m为采样点总数,Ri称为余差,具体表达式为:
下界 Ri=Si×Min(+[Li-Ti]-Ui,0)
上界 Ri=Si×Min(-[Li-Ti]-Ui,0)
显然,当存在解X使F函数最小时,Li的值应能控制在Ti的要求范围内,从而使频率特性满足指标要求,因此该解即可视为X*。
2 优化模型的求解
遗传算法是一个强有力的求优算法,它首先随机地产生一组潜在的解X(该解称为“染色体”,解的特定集合称为“人口”,解中的变量称为“基因”),然后采用生物进化的过程(如染色体交叉?变异?淘汰等)不断提高解的品质,最后获得最优解。遗传算法有两个重要控制参数——交叉率Pc和变异率Pm对算法的收敛速度有较大影响,文献[3]采用确定不变的Pc和Pm?而本文采用随世代数增加而不断自动调整的Pc和Pm。这样做的目的在于:在进化的初期,人口的差异一般较大,交叉率大和变异率小有助于加快收敛,而在进化的后期,交叉率小和变异率大有助防止过早陷入局部最优点。公式如下:
Pc(gen)=Pc(gen-1)-[Pc(0)-0.3]/MAXGEN
Pm(gen)=Pm(gen-1)+[0.3-Pm(0)/MAXGEN
其中,gen表示世代数,MAXGEN表示最大世代数,具体算法如下:
第1步,全局参数设定
给出POP_SIZE(人口数)、Pc(0)、Pm(0)、MAXGEN和设计次数dcnt的大小或范围。
第2步,人口的产生及初使化
设世代数gen=1。以设计参数为变量,组成矩阵X=[X1,X2,...,Xn]。第一代人口由POP_SIZE个染色体构成,每个染色体的基因(即设计参数)在参数各自取值范围内随机产生。
第3步,染色体评价
为了评价代世代中染色体X的优劣,建立染色体适应性评价函数eval(X):
eval(X)={F(X,T,S,U);当X满足约束条件 M,M为一大正数;当X不满足约束条件
对本问题,评价函数越小越好。
第4步,基因操作
通常基因操作有交叉、变异、选择三种(2)。
基因交叉:设交叉计数器ccnt=0,从[0,1]范围内产生随机数rk(k=1,2,...,POP_SIZE),如果rk<Pc(gen),则选择Xk为交叉用;使交叉染色体配对进行如下位交叉操作:
Xj=[X1j,X2j,...,Xpj,...,Xnj]? Xj′=[X1j,X2j,?...,Xpl,...,Xnl?
Xl=[X1l,X2l,...,Xpl,...,Xnl] Xl′=[X1l,X2l,...,Xpj,...,Xnj]
其中Xj、Xl为配对染色体,Xj′、Xl′为交叉后染色体。p为随机选择的交插位,接受交叉操作的染色体个数记入ccnt中。
基因变异:设变异计数器mcnt=0,从[0,1]范围内产生随机数rk(k=1,?2,...,n×POP_SIZE+n×ccnt),如果rk<Pm(gen),则第k个基因进行变异操作,并使mcnt=mcnt+1。新基因Xk′随机产生于区间[(1-α)Xk,(1+α)Xk];其中1≤i≤POP_SIZE,α为[0,1]范围内选定常数。
染色体选择:计算新生染色体Xn′的评价函数eval(Xn′)(n=1,2,...,ccnt+mcnt?和父代染色体Xn的评价函数eval?Xn??n=1?2?...?POP_SIZE?,并按适应性大小排列,选出其中适应性最强的POP_SIZE个染色体构成新一代人口并保留上述过程中最佳染色体V*,这个过程称为“适者生存”选择。
第5步,单次过程结束判断
当F<Er时(Er为一小数量级数值?,X*=V*,输出X*,转第6步。
当F≤Er且gen≥MAXGEN时,gen=gen+1,返回第3步。
当F≥Er时且gen≥MAXGEN时,返回第2步。
第6步,全过程结束判断
dcnt=dcnt-1;当dcnt>0时,返回第2步;否则,停机。
3 数值实验例
图2为一带通无源滤波器电路结构,通频带要求在950~1050 rad/s之间。为此,每隔5 rad/s作一次采样,采样点的幅度大于0.85;设定低频截止频率为800 rad/s,幅度小于1e-5;高频截止频率为1300rad/s,幅度小于1e-5。建立如下优化模型:
s.t. XL=[0,0,...,0]<X<XU=[18,18,...,18]?
其中
X=[X1,X2,...,X19]=[L,C3,C4,L6,L7,C7,L9,L10,C12,L13,C13,L15,L16,C18,L19,C19,L21,L22,C24];
R1=10×Min(+[1.0e-5-L1]-0.0,0),对应W1=800rad/s
Rj=1.0×Min(+[Lj-0.85]-0.05,0);j=2,3,?...,22,对应Wj=(5×j+940)rad/s
R23=10×Min(+[1.0e-5-L23]-0.0,0),对应W23=1300rad/s
在NEC4800/210Ⅱ工作站完成上述算法。算法的参数设置为Er=1e-6,α=0.1,Pc=Pc(0)=0.6,Pm(0)=0.1,POP_SIZE=40,MAXGEN=2000,程序语言为UNIX-C。dcnt取10,得到10组设计值,皆能使频率特性满足要求。平均世代数为1508代,平均时间为9.8min。其中一组结果为:
X*=[0.0792?12.6514?0.0752?13.0157?0.1058?3.3131?
0.1793?13.3386?0.0726?0.1334?3.326?0.1722?15.1218?0.0633?0.0876?1.9288?0.3333?10.3171?0.0900]。
按此参数设计后,滤波器频率特性较好地达到了预期要求,如图3所示。
本文简要分析了无源滤波器参数设计存在困难的主要原因。对无源滤波器的常用电路结构,提出了计算频率特性的简易迭代法,并将求解满足指标要求的参数设计值的问题转化为优化模型的求解过程,使的原来难以描述和解决的设计问题变得明确和简单。
在遗传算法方面,我们并不照搬前人的方法[3],例如,把最小目标函数的求解要求转化为进化的驱动力而不是刻意求得最优解,不仅减少了计算时间,还可提供设计者多种可选择的方案。在遗传算法的变异阶段,采用的是以现有的基因为中心的左右变异方法,有别于常用的在变量范围内变异的方法。因本法中心不断灵活飘移,求解过程出现两个极端,即快速找到合适解或走入死区——永远找不到解。我们通过设定最大世代数消除了后者的可能性,总体上提高了效率。
本法有效地克服了无源滤波器参数设计的困难,具有普遍性的价值和意义。其基本思想及原理亦可在电气、电子、自动化等较复杂系统的参数设计领域得到广泛的应用。
全部0条评论
快来发表一下你的评论吧 !