您现在的位置:首页 >> 智能控制 >> 内容

m基于遗传优化的时域声辐射模态的振动控制算法的matlab仿真

时间:2023/2/18 17:22:03 点击:

  核心提示:08_020_m,包括程序操作录像+说明文档+参考文献...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/ZJWWmJxx

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览




3.算法概述

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

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

4.部分源码

...........................................................................

%仿真时域声辐射模态平板的区域范围

%仿真时域声辐射模态平板的区域范围

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

08_020_m

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168