精华内容
下载资源
问答
  • BP神经网络系统辨识及自适应控制MATLAB代码,值得一看
  • 神经网络系统辨识法综述,张国钧,李岚,随着系统辨识技术发展的逐渐成熟,人工神经网络的系统辨识方法也越来越多的应用于各个领域,本文首先将神经网络系统辨识方法与经
  • 为解决混沌光学系统自适应控制所需之控制参考动力学模型问题,以布拉格声光混沌系统的系统辨识为例,研究了利用前向神经网络对混沌光学系统进行系统辩识的可行性。计算机仿真实验发现,在静态BP算法支持下一结构十分...
  • 人工神经网络理论及应用屈桢深哈;系统辨识应用控制系统的分析和设;主要内容系统辨识理论基础神经网;系统辨识理论基础 定义在;符号P: 待辨识系统 辨;系统辨识问题表述 以SI;模型辨识结构 (ky ;误差准则(1)输出误差(2)...
  • 系统辨识神经网络

    2016-05-19 08:45:12
    系统辨识神经网络,simulink仿真模型,仿真代码
  • 人工神经网络具有并行处理能力、自学习能力、自适应能力和以任意精度逼 近任意非线性函数的特点,在模式...本文就神经网络在模式识别与系统辨识方面的应用展开研究,提出了几种 较新的系统模型辨识和模型参数辨识方法。
  • 研究了利用前向神经网络对混沌光学系统进行混沌加速系统辨识的可能性。计算机数值仿真发现,利用三层前向神经网络混沌光学系统辨识器,在基于混沌动力学角度的修正BP算法(混沌加速BP算法)支持下可克服由常规BP算法...
  • 这个例子显示了在高斯白噪声作用下,使用人工神经网络(ANN)对2DOF系统进行系统辨识神经网络由以下几层组成:-输入层:4个节点。-隐藏层,-输出层
  • 基于经典最小二乘法和BP神经网络算法的系统辨识,内含MATLAB算法实例
  • (1)不要求建立实际系统辨识格式,即可以省去选择模型这一步,因为神经网络本质已作为一种辨识模型,其可调参数反映在网络内部的权值上。 (2)可以对本质非线性系统进行辨识。而且是通过在网络外部拟合系统的...
  • 利用BP神经网络进行非线性系统辨识详细MATLAB代码,详情可参考文章:https://blog.csdn.net/didi_ya/article/details/117520138
  • 为克服基于前馈神经网络的非线性时变系统辨识算法存在需预先估计系统输入输出滞后阶数 的缺陷,提出一种基于回归神经网络的非线性时变系统的辨识算法。 针对现有的回归网络学习算法大多 采用梯度算法, 收敛...
  • 提出有限区间连续时变非线性系统建模与辨识的一种神经网络方法。它允许网络权值是时变的,以迭代学习方法调整权值,进行网络训练。借助于重复运行过程,不计逼近误差,迭代学习算法能够使得网络辨识误差在整个时间...
  • 一些关于利用神经网络来对非线性系统进行辨识的文献,大部分都是以MATLAB为工具,希望对大家有帮助
  • 模糊系统神经网络由于具有逼近任意连续非线性映射的特性而广泛应用于系统辨识和控制,但是传统的模糊神经网络是一种静态映射,不适用于动态系统辨识,而现实工程中的控制对象反映的是系统的动态行为.为了提高动态...
  • MATLAB的神经网络模式识别与系统辨识方法研究
  • 这个例子显示了在高斯白噪声作用下,使用人工神经网络(ANN)对2DOF系统进行系统辨识。 This example file shows system identifcation using artificial neural network (ANN) of 2DOF system subjected to ...

    这个例子显示了在高斯白噪声作用下,使用人工神经网络(ANN)对2DOF系统进行系统辨识

    This example file shows system identifcation using artificial neural network (ANN) of 2DOF system subjected to gaussian white noise. 

    神经网络由以下几层组成:

    -输入层:4个节点。

    The neural network consist of the following layers: 

    -Input layer: 4 nodes. 2 for the force at the current step and 2 for the displacement at the previous step 

    -隐藏层

    -Hidden layer: 2 nodes for two inner states because there are 2 modes for 2DOF system 

    -输出层

    -Output layer: 2 nodes for the displacement

    获取代码

    展开全文
  • 下面将利用实例进行介绍利用BP神经网络进行非线性系统辨识。 目录一、实例介绍二、流程介绍三、程序结构3.1 输入数据(训练数据和测试数据)3.2 BP神经网络的建立与训练3.3 BP神经网络测试四、运行结果 一、实例介绍...

    前面几篇文章已经详细介绍了系统辨识的基本原理、方法以及系统辨识工具箱的基本使用。下面将利用实例进行介绍利用BP神经网络进行非线性系统辨识。

    一、实例介绍

    利用BP网络对以下非线性系统模型进行辨识。
    y(k+1)=y(k)(2y(k1)+1)1+y2(k)+y2(k1)+u(k)y(k+1)=\frac{y(k)(2y(k-1)+1)}{1+y^2(k)+y^2(k-1)}+u(k)

    二、基本流程

    1. 网络训练。首先利用u(k)=sin(2πk/3)+1/3sin(2πk/6)u(k)=sin(2*π*k/3)+1/3*sin(2*π*k/6),产生样本点500,输入到上述系统,产生y(k), 用于训练BP网络;
    2. 网络测试。利用u(k)=sin(2πk/4)+1/5sin(2πk/7)u(k)=sin(2*π*k/4)+1/5*sin(2*π*k/7), 产生测试点200,输入到上述系统,产生y(k), 检验BP神经网络网络建模效果。

    三、程序设计

    题目中的非线性系统可以写成下式:
    y(k+1)=f()+u(k)y(k+1)=f(·)+u(k)f()=y(k)(2y(k1)+1)1+y2(k)+y2(k1)f(·)=\frac{y(k)(2y(k-1)+1)}{1+y^2(k)+y^2(k-1)}
    利用BP神经网络对非线性部分f(·)进行辨识,其网络结构如下图所示。各层神经元数目为2-8-1,输入数据为y(k-1)和y(k-2),输出数据为y(k)。
    在这里插入图片描述

    图1 辨识非线性系统的BP网络结构

    3.1 输入数据(训练数据和测试数据)

    输入数据部分代码如下:

    %训练数据集
    u_1=0;y_1=0;y_2=0;
    for k=1:500 %使用100个样本点训练数据
        U(k)=sin(2*pi*k/3)+1/3*sin(2*pi*k/6);
        T(k) =y_1(k) * (2*y_2(k) + 1) / (1+ y_1(k)^2 + y_2(k)^2);  %非线性系统输出(目标值)
        Y(k) = u_1(k) + T(k);  %非线性系统输出,用于更新Y(k)
          
        
        %更新
        if k<500
            u_1(k+1)=U(k);    %u_1(k)——u(k) 
            y_2(k+1)=y_1(k);  %y_2(k)——y(k-1y_1(k+1)=Y(k);    %y_1(k)——y(k)
        end
    end
    X=[y_1;y_2];%神经网络输入神经元数目
    %绘制p-Y图像
    p=1:500;
    figure(1),plot(p,Y,'-')
    
    save('traindata.mat','X','T');%保存训练数据
    clearvars -except X T ;  %清除其余变量,仅保留训练数据和标签
    
    %测试数据集
    u_1=0;y_1=0;y_2=0;
    for k=1:1:200   %使用200个样本点测试数据  
        Uc(k)=sin(2*pi/4*k) + 1/5*sin(2*pi/7*k);   %新的测试函数
        Tc(k)=y_1(k) * (2*y_2(k) + 1) / (1+ y_1(k)^2 + y_2(k)^2);   %非线性系统输出,用于更新y_1
        Yc(k)= u_1(k) + Tc(k);
        %更新
        if k<200
            u_1(k+1) = Uc(k);  
            y_2(k+1) = y_1(k);  
            y_1(k+1) = Yc(k);       
        end
    end 
    Xc=[y_1;y_2];
    save('testdata','Xc','Tc','Uc');  %保存测试数据        
    clearvars -except Xc Tc Uc X T;  %清除其余变量,仅保留测试数据和标签
    

    原始数据图像:
    在这里插入图片描述

    图2 待辨识数据图像

    当然,也可为了避免组合后出现零向量,加上一个很小的数,以提高识别精确率,其代码如下:

    y_1(1)=0.0001;  y_1(2)=0; 
    y_2(1)=0;  y_2(2)=0.0001;  y_2(3)=0; %为避免组合后出现零向量,加上一个很小的数
    

    3.2 BP神经网络的建立与训练

    BP神经网络初始化代码如下:

    Hid_num=8;%隐含层神经元
    [R,Q]= size(X);   %2*500
    [S,~]= size(T);   %1*500
    [Sc,Qc]= size(Tc);%1*200
    %神经元初始偏置
    val_iw =rands(Hid_num,R);  %隐含层神经元的初始权值
    val_b1 =rands(Hid_num,1);  %隐含层神经元的初始偏置
    val_lw =rands(S,Hid_num);  %输出层神经元的初始权值
    val_b2 =rands(S,1);  %输出层神经元的初始偏置
    
    net =newff(X,T,Hid_num,{'tansig','purelin'},'traingdx');
    net.trainparam.show =50;
    net.trainParam.max_fail = 50;%设置Validation Checks为50
    net.trainparam.lr =0.05;       %学习率
    net.trainparam.lr_inc=1.25;
    net.trainparam.epochs=10000;
    net.trainparam.goal=0.0001;    %均方误差
    %初始权值和偏置
    net.iw{1,1}=val_iw;
    net.lw{2,1}=val_lw;
    net.b{1}=val_b1;
    net.b{2}=val_b2;
    
    [net,tr] =train(net,X,T);      %训练网络  
    

    3.3 BP神经网络测试

    最后是BP神经网络测试:

    A=sim(net,X);  %测试训练网络
    E=T-A;  %训练误差
    error = sumsqr(E)/(S*Q)  %测试结果的的MSE
    A1=sim(net,Xc);  %测试测试网络
    TTc=A1+Uc; %测试输出
    E1=Tc-A1;  %测试误差
    error_c = sumsqr(E1)/(Sc*Qc)  %测试结果的的MSE
    
    figure(2);
    plot(Tc+Uc,'r');%真实输出
    hold on;
    plot(TTc,'b');
    legend('期望输出','实际输出');
    xlabel('test smaple');ylabel('output')
    
    figure(3);
    plot(E1);
    xlabel('test sample');ylabel('error')
    axis([0 200 -1 1])
    

    四、运行结果

    BP神经网络训练过程及网络性能图像如下:
    在这里插入图片描述

    图3 BP神经网络训练过程

    在这里插入图片描述

    图4 网络性能图像

    使用200个新的测试点进行测试,得到测试网络输出和误差结果分别如下图5,图6所示。从图中可以看出,相对训练数据而言,测试数据的辨识误差稍微变大,在±0.06范围内,拟合效果还算不错。

    在这里插入图片描述

    图5 利用BP神经网络辨识的期望输出与实际输出对比

    在这里插入图片描述

    图6 利用BP神经网络辨识的测试误差

    完整代码如下:https://download.csdn.net/download/didi_ya/19362215


    BP神经网络非线性系统辨识与模型参考自适应控制器设计相关资料可参考:https://download.csdn.net/download/didi_ya/19362278

    如果对你有所帮助,记得点个赞哟~

    展开全文
  • 神经网络辨识系统

    千次阅读 2012-05-02 18:30:13
    legend('系统输出','系统辨识'); % clc;close all;clear; % % y(1)= 0; % % for k=1:100 % u(k)= sin(2*pi*k/25)+sin(2*pi*k/10); % f(k)= u(k).^3; % y(k+1)= y(k)/(1+y(k).^2)+f(k); % end % % P= [u(1:100);...
    clc;close all;clear;
    
    y(1)= 0;
    k=1;
    u(k)= sin(2*pi*k/250);
    f(k)= 0.6*sin(pi*u(k))+0.3*sin(3*pi*u(k))+0.1*sin(5*pi*u(k));
    y(k+1)= 0.3*y(k)+f(k);
    
    for k=2:100
        u(k)= sin(2*pi*k/250);
        f(k)= 0.6*sin(pi*u(k))+0.3*sin(3*pi*u(k))+0.1*sin(5*pi*u(k));
        y(k+1)= 0.3*y(k)+0.6*y(k-1)+f(k); 
    end
    
    P= [u(2:100);y(2:100);y(1:99)];
    T= [y(3:101)];
    net= newff(minmax(P),[20,20,1],{'tansig','tansig','purelin'},'trainlm','learngdm','msereg');
    [net,tr] = train(net,P,T);
    
    Q= [u(2:100);y(2:100);y(1:99)];
    nety= sim(net,Q);
    plot(1:99,y(1:99),'b',3:101,nety(1:99),'r');
    legend('系统输出','系统辨识');
    
    
    % clc;close all;clear;
    % 
    % y(1)= 0;
    % 
    % for k=1:100
    %     u(k)= sin(2*pi*k/25)+sin(2*pi*k/10);
    %     f(k)= u(k).^3;
    %     y(k+1)= y(k)/(1+y(k).^2)+f(k);
    % end
    % 
    % P= [u(1:100);y(1:100)];
    % T= [y(2:101)];
    % net= newff(minmax(P),[20,20,1],{'tansig','tansig','purelin'},'trainlm','learngdm','msereg');
    % [net,tr] = train(net,P,T);
    % 
    % % z= zeros(1,100);
    % Q= [u(1:100);y(1:100)];
    % nety= sim(net,Q);
    % figure;
    % plot(1:100,y(1:100),'b',2:101,nety(1:100),'r');
    % legend('系统输出','系统辨识');
    
    
    
    

    展开全文
  • 提出一种 T2 S 模型的模糊神经网络, 在通常BP 算法的基础上, 引进混沌机制来训练模糊神经 网络的权值参数。将混沌BP 算法应用于非线性系统建模, 以求获得全局意义下的最优逼近。仿真研究 说明了其有效性和...
  • 内容包括:实例,文档分析,设计过程和MATLAB仿真程序。首先利用BP网络对以下非线性系统进行辨识,然后利用模型参考自适应方法,设计NNMARC控制器
  • 针对两足机器人连续离散混合动力系统中的辨识问题,提出了一种基于动态模糊神经网络(DFNN)和改进的径向基函数神经网络(RBFNN)的期望最大化聚类算法的联合辨识方法。 首先,我们应用改进的RBFNN来识别两足机器人...
  • 对于有限区间连续时变非线性系统神经网络建模与辨识,借助于重复运行过程,以迭代学习算法调整权值,进行网络训练.不计逼近误差,提出的学习算法能够使得辨识误差在整个区间上渐近收敛于零.为处理非零但有界的逼近误差...
  • 用BP神经网络进行系统辨识的红外图像超分辨力复原方法 ,张楠,金伟其,由于受到光学系统衍射限和像元尺寸的影响,红外热像仪获取图像的分辨力不高,难以满足实际应用的更高要求。超分辨力图像复原算法
  • 上一篇介绍了利用BP神经网络进行非线性系统辨识,本文将介绍一下利用BP神经网络进行状态空间辨识。 目录一、实例介绍二、基本流程2.1 模型变换,分离出非线性函数2.2 利用BP神经网络进行辨识2.3 神经网络测试2.4 ...

    上一篇介绍了利用BP神经网络进行非线性系统辨识,本文将介绍一下利用BP神经网络进行状态空间辨识。

    一、实例介绍

    考虑某雷达天线仰角控制系统,通过改变直流电机电流可以控制天线臂角度Φ\Phi,系统模型如下:
    (x1˙x2˙)=(x29.81sinx12x2)+(01)u\left( \begin{array}{lcr} \dot{x_1} \\ \dot{x_2} \\ \end{array} \right)= \left( \begin{array}{lcr} x_2 \\ 9.81sinx_1-2x_2 \end{array} \right)+ \left( \begin{array}{lcr} 0 \\ 1 \end{array} \right)u
    此处x1x_1是角位移,x2x_2是角速度,试利用BP神经网络模型辨识此非线性系统,并比较效果。

    二、基本流程

    2.1 模型变换,分离出非线性函数

    这样做一方面是为了控制方便,将线性环节和非线性环节分离,另一方面也是为了更好地利用神经网络逼近非线性函数的特性,使其不干扰线性缓解。根据反馈线性化思想,取系统的参考模型为:
    (x1˙x2˙)=(x29x16x2)+(09)r\left( \begin{array}{lcr} \dot{x_1} \\ \dot{x_2} \\ \end{array} \right)= \left( \begin{array}{lcr} x_2 \\ -9x_1-6x_2 \end{array} \right)+ \left( \begin{array}{lcr} 0 \\ 9 \end{array} \right)r
    可以得到系统的非线性反馈环节:f(X)=9.81sinx12x2f(X)=9.81sinx_1-2x_2
    相应的系统的控制规律为:u=9r[9,6]Xf(X)u=9r-[9,6]X-f(X),其中r为设定值参考输入。

    2.2 利用BP神经网络进行辨识

    分离出系统的非线性环节以后,就可以利用神经网络对其进行逼近了。由系统的模型可知,所要设计的神经网络具有两个输入x1x_1x2x_2。网络设计目的是能够使其产生逼近函数f(x)f(x)的非线性输出,所以输出层只有一个输出神经元。隐含层设置为两层。其代码如下:

    %% I.建立数据集
    %系统状态变量初始化
    x1=[rands(1,300)*pi,rands(1,100)*pi];
    x2=[rands(1,300)*pi,rands(1,100)*pi];
    P=[x1;x2];
    dt=0.05;%离散化时间间隔
    T=x2+dt*(9.81*sin(x1)-2*x2);%期望输出
    [R,~]=size(P);%2*400
    %第一层神经元数目
    S1=10;
    %第二层神经元数目
    [S2,~]=size(T);%1*400
    %输入层
    % pr=[0.7,1.05;0.95,1.04];
    pr=minmax(P);
    
    %% II.BP神经元网络进行训练
    net=newff(pr,[S1 S2],{'tansig','purelin'},'trainlm');
    xx1=(1:300)/100;%0.01:3
    xx2=zeros(1,300);
    xx=[xx1;xx2];
    y=xx2+dt*(9.81*sin(xx1)-2*xx2);
    net.trainparam.epochs =500;%训练次数
    net.trainparam.goal =0;%训练精度
    net.trainParam.min_grad = 1e-10;%最小梯度要求
    net.trainParam.max_fail=10;%最大失败次数
    [net,tr]=train(net,xx,y);%进行训练
    %绘制训练精度迭代图像
    plotperf(tr,net.trainParam.goal);
    grid
    

    在上面的代码中,我们采用包含两个隐含层的BP神经网络,第一层神经元数目为10,第二层神经元数目为1。同时取神经网络训练次数为500,要求训练精度目标为0,最小梯度要求为1e-10,最大失败次数为10,此时训练过程及训练轨迹如下图所示。

    在这里插入图片描述

    图1 BP神经网络训练过程

    在这里插入图片描述

    图2 BP神经网络训练轨迹

    2.3 神经网络测试

    从上图可以发现,训练500次后训练精度达到1.41596e-11。可以预测,在这样的训练精度下,该神经网络对系统非线性环节的逼近一定是非常好的。下面通过一定的数据验证。代码如下:

    %% 数据验证 
    xx1=(1:30)/10;%0.1:3
    xx2=zeros(1,30);
    xx=[xx1;xx2];
    y=xx2+dt*(9.81*sin(xx1)-2*xx2);
    %模型仿真
    y2=sim(net,xx);
    %真实输出与训练输出
    figure(1);plot(xx,y,'*',xx,y2);
    title('neural network approximation');
    xlabel('input');ylabel('output');
    grid on;
    

    此时系统的仿真曲线如图4所示。

    在这里插入图片描述

    图3 期望输出与真实输出比较

    图中蓝色“*”号是期望输出,红色实线是神经网络的预测输出。可以看出,两条轨迹几乎完全重合,可以认为此时的神经网络已经几乎实线目标功能。事实上,前面已经给出了训练精度为e-11数量级,在这样的精度下肉眼是很难判断两条曲线之间的差别的。

    2.4 利用simulink进行仿真比较

    有了训练好的神经网络模型之后,就可以利用simulink评价其控制效果。首先在simulink下搭建原系统的方框图如图4所示。该方框图中包括三个“Sum”求和元件,两个“State Space”系统状态空间描述元件、一个“Matrix Gain”矩阵增益元件和一个“Mux”多路开关元件。
    在这里插入图片描述

    图4 非线性系统仿真方框图

    将上图中的两个“Fcn”函数元件去掉,加入一个“MATLAB Fcn”函数元件,在该元件设置对话框中填入代码:

    y=sim(net,u)
    

    得到如图五所示的方框图。
    在这里插入图片描述

    图5 BP神经网络系统仿真方框图

    对比这两幅阶跃响应曲线,可以看出曲线的形状和变化规律都基本一致,仅在细微的地方有所差别(注意两幅曲线的坐标刻度不完全一致)。这说明利用BP神经网络进行控制的效果是可以满意的。

    完整代码可以参考:https://download.csdn.net/download/didi_ya/19796326

    三、总结

    本文详细介绍了利用BP神经网络进行状态空间辨识的一个应用案例,给出了完整的MATLAB解法。实际运行了上述代码的读者会发现,利用包含BP神经网络的方框图进行仿真比包含非线性环节的方框图仿真慢得多。这是因为每步仿真都要调用还神经网络,而神经网络的节点较多,对于计算机来说,显然不如简单的正弦函数计算简便。当然,相对于控制效果来说,这点开销是可以忍受的。

    总之,神经网络的核心就是利用简单的节点和复杂的拓扑结构逼近任意阶次的非线性函数。在控制领域,尤其是时延和非线性程度较高的流程工业控制问题中,利用神经网络进行控制也是当前的热点之一。

    参考:《MATLAB控制工程工具箱技术手册》

    展开全文
  • 这个例子显示了在高斯白噪声作用下,使用人工神经网络(ANN)对2DOF系统进行系统辨识。This example file shows system identifcat...
  • 从理论上分析了神经网络辨识系统的可行性,提出了一种运用神经网络参数估计对开关磁阻电机驱动系统进行辨识的方法,并应用这种方法对系统进行了仿真分析,从理论和仿真结果均证明了这种基于神经网络辨识方法应用于...
  • 对于有限区间连续时变非线性系统神经网络建模与辨认,纠正重复运行过程,以迭代学习算法调整权值,进行网络训练。不计逼近误差,提出的学习算法能够识别误差在整个区间上渐近收敛于零。为处理非零但有界的逼近误差...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,447
精华内容 1,378
关键字:

神经网络系统辨识