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

m基于神经网络的飞机垂直尾翼振动主动控制系统matlab仿真,包括系统辨识和在线控制

时间:2023/2/11 20:52:12 点击:

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

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

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

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

点击店铺

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

2.部分仿真图预览



3.算法概述

        近年来,神经网络的研究得到了越来越多的关注和重视,神经网络以其独特的结构和信息 处理方法,已在系统辨识、信号处理、自动控制与人工智能等领域得到了实际应用。本章介绍 了人工神经网络的构成原理、BP网络和BP算法、神经网络系统辨识理论以及神经网络控制理 论,为神经网络在飞机垂尾模型智能结构振动主动控制系统中的应用奠定基础。 人工神经网络(Artificial Neural Network,简写为ANN),亦称为神经网络(Neural Network, 简写为NN),是由大量简单的处理单元(称为神经元或节点)互相连接而形成的复杂网络系统, 它反映了人脑功能的许多基本特征,是一个高度复杂的非线性动力学系统。  每个神经元代表一种特定的输出函数,称为传递函数。各神经元之间相互连接形成一个网 络拓扑,不同的神经网络模型对拓扑结构与互联模式都有一定的要求和限制。在每对神经元之 间的连接上还作用一个加权系数,这个加权系数起着生物神经系统中神经元突触强度的作用, 通常称之为连接权值。在神经网络中,连接权值可以根据经验或学习而改变,修改权值的规则 称为学习算法或学习规则。一个神经网络模型描述了一个网络如何将它的输入矢量转化为输出 矢量的过程。通常,神经网络模型的神经元特性、拓扑结构和学习算法是决定神经网络功能特 性的三大要素。 

4.部分源码

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

%定义期望输出

r = Out;

parameter;

% while Iter < Max_iter

u_delay1 = 0;

u_delay2 = 0;

u_delay3 = 0;

u_delay4 = 0;

y_delay1 = 0;

y_delay2 = 0;

y_delay3 = 0;   

y_delay4 = 0;

Err_tmp  = 0;

for k=1:All_Length

    Data_Delays = [y_delay1;

                   y_delay2;

                   y_delay3;

                   u_delay2;

                   u_delay3;

                   u_delay4];

    %学习

    [Y_hidden(k),Hidden1G,Hidden2G,Y_hiddenG(k),Hidden1F,Hidden2F,Y_hiddenF(k)] = func_Hiddern(Data_Delays,u_delay1,Num_Hidden,G_wight_In,G_wight_Inb,G_wight_Out,G_wight_Outb,F_wight_In,F_wight_Inb,F_wight_Out,F_wight_Outb);

    %根据r计算u           

    u(k) = func_r_u_g0f0(r(k),Y_hiddenG(k),Y_hiddenF(k));

    %根据辨识结果,计算输出yL

    yL(k) = func_Hiddern2(u_delay1,Num_Hidden,G_wight_In0,G_wight_Inb0,G_wight_Out0,G_wight_Outb0,F_wight_In0,F_wight_Inb0,F_wight_Out0,F_wight_Outb0);

    Err_tmp(k) = yL(k) - r(k);

    %F和G网络 

    %G神经网络计算

    [dg_weight_in,dg_bweight_in,dg_weight_out,dg_bweight_out] = func_G_net(Err_tmp(k),Out(k),In(k),Y_hidden(k),G_wight_Out,Hidden2G,Data_Delays,Y_hiddenG(k),Hidden1G,Num_Hidden,Num_In); 

    %F神经网络计算

    [df_weight_in,df_bweight_in,df_weight_out,df_bweight_out] = func_F_net(Err_tmp(k),Out(k),In(k),Y_hidden(k),F_wight_Out,Hidden2F,Data_Delays,Y_hiddenG(k),Hidden1F,Num_Hidden,Num_In);

    %G网络权值更新

    [G_wight_In,G_wight_Out,G_wight_Inb,G_wight_Outb]=func_G_W_updata(Learn_Rate,alpha,...

                                                                      G_wight_In1,G_wight_Out1,G_wight_Inb1,F_wight_Outb1,...

                                                                      dg_weight_in,dg_weight_out,dg_bweight_in,dg_bweight_out,...

                                                                      G_wight_Outb1,...

                                                                      G_wight_In2,G_wight_Out2,G_wight_Inb2,G_wight_Outb2);

    %F网络权值更新

    [F_wight_In,F_wight_Out,F_wight_Inb,F_wight_Outb]=func_F_W_updata(Learn_Rate,alpha,...

                                                                      G_wight_In1,F_wight_Out1,F_wight_Inb1,F_wight_Outb1,...

                                                                      df_weight_in,df_weight_out,df_bweight_in,df_bweight_out,...

                                                                      G_wight_In2,F_wight_Out2,F_wight_Inb2,F_wight_Outb2);

 

 

    %延迟

    u_delay4 = u_delay3;

    u_delay3 = u_delay2;

    u_delay2 = u_delay1;

    u_delay1 = In(k); 

    y_delay4 = y_delay3;

    y_delay3 = y_delay2;

    y_delay2 = y_delay1;

    y_delay1 = r(k); 

    G_wight_In2   = G_wight_In1;

    G_wight_In1   = F_wight_In;

    F_wight_Out2  = F_wight_Out1;

    F_wight_Out1  = F_wight_Out;

    F_wight_Inb2  = F_wight_Inb1;

    F_wight_Inb1  = F_wight_Inb;

    F_wight_Outb2 = F_wight_Outb1;

    F_wight_Outb1 = F_wight_Outb;

    G_wight_In2   = G_wight_In1;

    G_wight_In1   = G_wight_In;

    G_wight_Out2  = G_wight_Out1;

    G_wight_Out1  = G_wight_Out;

    G_wight_Inb2  = G_wight_Inb1;

    G_wight_Inb1  = G_wight_Inb;

    G_wight_Outb2 = G_wight_Outb1;

    G_wight_Outb1 = G_wight_Outb;

end

figure; 

subplot(121);

plot(r(end-1300:end),'b'); 

xlabel('Times(s)');

ylabel('Out'); 

hold on;

plot(yL(end-1300:end),'r--'); 

xlabel('Times(s)');

ylabel('Out'); 

legend('原始输出','控制后输出');

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

08_016_m

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