m基于遗传优化的时域声辐射模态的振动控制算法的matlab仿真
  lbWQrknXiYmG 2023年11月02日 45 0

1.算法仿真效果 matlab2013b仿真结果如下:

1.png2.png3.png4.png5.png6.png 7.png8.png

2.算法涉及理论知识概要 2.1 遗传优化 长度为L的n个二进制串bi(i=1,2,…,n)组成了遗传算法的初解群,也称为初始群体。在每个串中,每个二进制位就是个体染色体的基因。根据进化术语,对群体执行的操作有三种:

1.选择(Selection)

    这是从群体中选择出较适应环境的个体。这些选中的个体用于繁殖下一代。故有时也称这一操作为再生(Reproduction)。由于在选择用于繁殖下一代的个体时,是根据个体对环境的适应度而决定其繁殖量的,故而有时也称为非均匀再生(differential reproduction)。

2.交叉(Crossover)

    这是在选中用于繁殖下一代的个体中,对两个不同的个体的相同位置的基因进行交换,从而产生新的个体。

3.变异(Mutation)

   这是在选中的个体中,对个体中的某些基因执行异向转化。在串bi中,如果某位基因为1,产生变异时就是把它变成0;反亦反之。

遗传算法的原理可以简要给出如下:

choose an intial population

determine the fitness of each individual

perform selection

repeat

perform crossover

perform mutation

determine the fitness of each individual

perform selection

until some stopping criterion applies

    这里所指的某种结束准则一般是指个体的适应度达到给定的阀值;或者个体的适应度的变化率为零。

1.初始化

    选择一个群体,即选择一个串或个体的集合bi,i=1,2,...n。这个初始的群体也就是问题假设解的集合。一般取n=30-160。

    通常以随机方法产生串或个体的集合bi,i=1,2,...n。问题的最优解将通过这些初始假设解进化而求出。

2.选择

    根据适者生存原则选择下一代的个体。在选择时,以适应度为选择原则。适应度准则体现了适者生存,不适应者淘汰的自然法则。

给出目标函数f,则f(bi)称为个体bi的适应度。以

为选中bi为下一代个体的次数。

显然.从式(3—86)可知:

(1)适应度较高的个体,繁殖下一代的数目较多。

(2)适应度较小的个体,繁殖下一代的数目较少;甚至被淘汰。

这样,就产生了对环境适应能力较强的后代。对于问题求解角度来讲,就是选择出和最优解较接近的中间解。

3.交叉

    对于选中用于繁殖下一代的个体,随机地选择两个个体的相同位置,按交叉概率P。在选中的位置实行交换。这个过程反映了随机信息交换;目的在于产生新的基因组合,也即产生新的个体。交叉时,可实行单点交叉或多点交叉。

例如有个体

S1=100101

S2=010111

选择它们的左边3位进行交叉操作,则有

S1=010101

S2=100111

一般而言,交 婊显譖。取值为0.25—0.75。

4.变异

    根据生物遗传中基因变异的原理,以变异概率Pm对某些个体的某些位执行变异。在变异时,对执行变异的串的对应位求反,即把1变为0,把0变为1。变异概率Pm与生物变异极小的情况一致,所以,Pm的取值较小,一般取0.01-0.2。

例如有个体S=101011。

对其的第1,4位置的基因进行变异,则有

S'=001111

单靠变异不能在求解中得到好处。但是,它能保证算法过程不会产生无法进化的单一群体。因为在所有的个体一样时,交叉是无法产生新的个体的,这时只能靠变异产生新的个体。也就是说,变异增加了全局优化的特质。

5.全局最优收敛(Convergence to the global optimum)

    当最优个体的适应度达到给定的阀值,或者最优个体的适应度和群体适应度不再上升时,则算法的迭代过程收敛、算法结束。否则,用经过选择、交叉、变异所得到的新一代群体取代上一代群体,并返回到第2步即选择操作处继续循环执行。

9.png

2.2时域声辐射模态 10.png11.png12.png13.png

   影响声辐射模态声功率的因素主要有控制器参数QR,然后是控制力频率F和控制力位置,因此,我们再仿真的时候,主要通过遗传算法对这四个变量进行优化。

    这四个参数共同决定了最后的声功率大小,因此,在进行优化的时候,通过对这四个变量进行遗传算法的优化,那么系统总体的构架如下所示:

14.png

3.MATLAB核心程序

%仿真时域声辐射模态平板的区域范围
Lx      = 0.3;
Ly      = 0.3;
%平面厚度
hs      = 0.01;
%材料的密度
density = 5900;
%结构刚度
Es      = 1e11;
As      = Lx*hs;
MOM     = hs^3*sqrt(Lx^2+Ly^2)/24;
%阻尼比
Rb      = 0.01;
%这两个值设置较小即可,否则运算量非常大
m       = 2;
n       = 2;
%平板区域分割数
MN      = m*n;
%力的区域
Xp        = [0.15,0.2];
Xcon      = [0.5 ,0.4];
Num_Force = 1;
Ms        = density*Lx*Ly*As*eye(MN);
for j = 1:MN
    a1(j) = j/5;
    b1(j) = (sinh(a1(j)) + sin(a1(j)))/(cosh(a1(j)) - cos(a1(j)));
end
Ks        = Es*MOM*Lx*diag(a1(1:MN).^2,0);
for k = 1:MN
    Fvalue(k,1:Num_Force) = b1(k)*(cos(a1(k)*mean(Xcon)));
    Pvalue(k,1)           = b1(k)*(cos(a1(k)*mean(Xp))); 
end
......................................................................
 
for j=1:1:NIND 
    x(j,1)  = phen(j,1);
    deltaT  = 0.0005;
    Tall    = 2000;
    T       = deltaT:deltaT:deltaT*Tall; 
    %定义一个控制输入
    %控制力频率
    f       = 50*(1+5*x(j,1));%50~200Hz之间优化
    U       = sin(2*pi*f*[1:length(T)]*deltaT); 
    [Y,X]   = lsim(Ac,Bc,Cc,Dc,U,T); 
    for t = 1:Tall
        Ws(t)= 1*(abs(Y(t)))^2; 
        tmps(t) = 10*log10(Ws(t)/Wr);
        if abs(tmps(t)) >1e10
           tmps(t) =  -1e6;
        end
    end
    J(j,1)  = min(tmps);
end
 
Objv  = 1./(J+eps);
gen   = 0; 
 
while gen < MAXGEN;   
      gen
      FitnV=ranking(Objv);    
      Selch=select('sus',Chrom,FitnV);    
      Selch=recombin('xovsp', Selch,0.9);   
      Selch=mut( Selch,0.01);   
      phen1=bs2rv(Selch,FieldD);   
      for a=1:1:NIND  
          x1(a,1)=phen1(a,1);              
            deltaT  = 0.0005;
            Tall    = 2000;
            T       = deltaT:deltaT:deltaT*Tall; 
            %定义一个控制输入
...............................................................
            JJ(j,1)  = min(tmps);
      end 
      Objvsel=1./(JJ+eps);    
      [Chrom,Objv]=reins(Chrom,Selch,1,1,Objv,Objvsel);   
      gen=gen+1; 
end 
 
MIN=min(Objv); 
for ttt=1:1:size(Objv)     
    if Objv(ttt)<=MIN         
       tt=ttt;         
       break;     
    end
end                 
 
deltaT  = 0.0005;
Tall    = 2000;
T       = deltaT:deltaT:deltaT*Tall; 
for t = 1:Tall
    f(t) = (t-1)/Tall*50*(1+5*x1(tt,1));  
end
U     = sin(2*pi*f.*[1:Tall]*deltaT);
[Y,X] = lsim(Ac,Bc,Cc,Dc,U,T); 
 
figure; 
plot(T,Y); 
xlabel('time(s)');
ylabel('y1');
grid on
title('第1阶伴随系数');
axis([0,1,-20,20]);
for t = 1:Tall
    Ws(t)= 1*(abs(Y(t)))^2; 
end
 
figure;
plot(deltaT*(1:Tall),10*log10(Ws/Wr),'b');
xlabel('time(s)');
ylabel('声功率级别db');
grid on
axis([0,1,20,130]);
save r3.mat Y Ws Wr

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

lbWQrknXiYmG
最新推荐 更多

2024-05-31