基于Matlab工具箱的神经网络设计
- 格式:ppt
- 大小:243.00 KB
- 文档页数:17
MATLAB 图形用户界面功能:——作者:强哥1573:2017-09-01 nnstart - 神经网络启动GUInctool - 神经网络分类工具nftool - 神经网络的拟合工具nntraintool - 神经网络的训练工具nprtool - 神经网络模式识别工具ntstool - NFTool神经网络时间序列的工具nntool - 神经网络工具箱的图形用户界面。
查看- 查看一个神经网络。
网络的建立功能。
cascadeforwardnet - 串级,前馈神经网络。
competlayer - 竞争神经层。
distdelaynet - 分布时滞的神经网络。
elmannet - Elman神经网络。
feedforwardnet - 前馈神经网络。
fitnet - 函数拟合神经网络。
layrecnet - 分层递归神经网络。
linearlayer - 线性神经层。
lvqnet - 学习矢量量化(LVQ)神经网络。
narnet - 非线性自结合的时间序列网络。
narxnet - 非线性自结合的时间序列与外部输入网络。
newgrnn - 设计一个广义回归神经网络。
newhop - 建立经常性的Hopfield网络。
newlind - 设计一个线性层。
newpnn - 设计概率神经网络。
newrb - 径向基网络设计。
newrbe - 设计一个确切的径向基网络。
patternnet - 神经网络模式识别。
感知- 感知。
selforgmap - 自组织特征映射。
timedelaynet - 时滞神经网络。
利用网络。
网络- 创建一个自定义神经网络。
SIM卡- 模拟一个神经网络。
初始化- 初始化一个神经网络。
适应- 允许一个神经网络来适应。
火车- 火车的神经网络。
DISP键- 显示一个神经网络的属性。
显示- 显示的名称和神经网络属性adddelay - 添加延迟神经网络的反应。
closeloop - 神经网络的开放反馈转换到关闭反馈回路。
在MATLAB中使用卷积神经网络的方法近年来,深度学习技术飞速发展,卷积神经网络(Convolutional Neural Network,CNN)已成为计算机视觉领域的主流模型。
CNN通过模拟人脑视觉系统的工作原理,可实现图像识别、目标检测、图像分割等任务。
而在实际应用中,MATLAB作为一款专业的数值计算软件,提供了强大的工具箱和函数库,使得使用卷积神经网络变得更加简便。
一、MATLAB中的CNN工具箱介绍MATLAB中的Deep Learning Toolbox提供了用于设计、训练和部署深度学习模型的功能。
在CNN方面,Deep Learning Toolbox提供了一系列用于构建卷积神经网络的函数和类。
其中,最常用的是convnet系列函数,可以用于创建并配置具有不同层结构的CNN模型。
此外,Deep Learning Toolbox还提供了用于图像数据增强、特征提取、预训练网络等功能,极大地方便了用户进行卷积神经网络实验和应用。
二、创建卷积神经网络模型在MATLAB中,创建卷积神经网络模型一般需要以下步骤:1. 导入数据集:将图像数据集导入MATLAB环境中。
可以使用ImageDatastore类来管理图像数据集,方便读取和处理数据。
2. 数据预处理:对导入的图像数据进行预处理,常见的预处理操作包括图像归一化、随机翻转、旋转等,以增强模型的鲁棒性。
3. 定义网络结构:使用convnet系列函数来定义卷积神经网络的结构。
可以通过添加卷积层、池化层和全连接层来构建自己需要的网络结构。
4. 配置网络参数:通过设置网络参数,如卷积核大小、卷积步长、池化大小等,来进一步调整网络结构和性能。
5. 训练网络:使用训练数据集对卷积神经网络进行训练。
可以选择不同的训练算法和优化器,如随机梯度下降(Stochastic Gradient Descent,SGD)和Adam。
6. 评估模型:使用独立的测试数据集对训练好的模型进行评估,计算准确率、精确率、召回率等指标,以评估模型的性能。
如何进行MATLAB神经网络的训练和预测【第一章】MATLAB神经网络的基础知识神经网络是一种模拟人类神经系统运行方式的计算模型,它通过模拟人类的感知、学习和决策过程,可以对复杂的问题进行处理和求解。
在实际应用中,MATLAB是一个常用的工具来进行神经网络的训练和预测。
本章将介绍MATLAB 神经网络的基础知识,包括神经网络的原理、MATLAB的神经网络工具箱以及神经网络训练和预测的一般步骤。
1.1 神经网络的原理神经网络由神经元(neuron)组成,每个神经元接收多个输入并产生一个输出。
神经网络的基本单元是感知器(perceptron),它由权重、偏置和激活函数组成。
权重决定了输入对输出的影响程度,偏置用于调整输出的偏移量,激活函数用于处理神经元的输出。
通过调整权重和偏置,神经网络可以学习和适应不同的输入输出模式。
常见的神经网络包括前馈神经网络(feedforward neural network)、循环神经网络(recurrent neural network)和卷积神经网络(convolutional neural network)。
前馈神经网络是最基本的神经网络类型,信息只能在网络中的一个方向流动,即从输入层到输出层。
循环神经网络具有反馈连接,可以记忆之前的状态信息,适用于序列数据的处理。
卷积神经网络则主要用于图像和语音等二维数据的处理。
1.2 MATLAB神经网络工具箱MATLAB提供了一个神经网络工具箱(Neural Network Toolbox),用于设计、训练和模拟神经网络。
该工具箱包括多种神经网络类型、各种激活函数、训练算法和性能函数等各种功能模块。
使用MATLAB神经网络工具箱可以方便地进行神经网络的建模和仿真。
在MATLAB神经网络工具箱中,神经网络被表示为一个网络对象(network object)。
网络对象由一系列图层(layer)组成,每个图层由若干个神经元组成。
网络对象还包括连接权重矩阵、偏置向量和训练参数等属性。
如何利用Matlab进行神经网络训练神经网络训练是机器学习领域中不可或缺的一环,而Matlab作为一种功能强大的数值计算和科学研究工具,提供了丰富的神经网络训练相关函数和工具箱,为我们提供了便利。
本文将介绍如何利用Matlab进行神经网络训练,从基础概念到具体实现的技巧,希望能够给读者一些启发和指导。
一、神经网络概述神经网络是一种由神经元和连接它们的权重构成的模型,其模拟了人类大脑的信息处理方式。
在神经网络中,神经元接收来自输入层或其他神经元的输入,并通过激活函数计算输出。
神经元之间的连接权重决定了信号在网络中的传递和加权。
二、神经网络的训练神经网络的训练是通过调整连接权重,使得网络对给定输入能够产生期望的输出。
训练的目标是最小化网络的误差,并提高网络的泛化能力。
在神经网络训练中,最常用的方法是反向传播算法(Backpropagation),即基于链式法则计算误差对连接权重的偏导数,并利用梯度下降算法进行权重的更新。
三、Matlab中的神经网络工具箱Matlab提供了用于神经网络建模和训练的专用工具箱,包括网络创建与配置、数据预处理、训练算法、性能评估等功能。
在开始使用神经网络工具箱前,需要先安装并加载工具箱,可以通过运行命令"neural network toolbox"进行加载。
四、神经网络的建模和配置在利用Matlab进行神经网络训练前,首先需要对网络进行建模和配置。
首先确定网络的拓扑结构,包括输入层、隐藏层和输出层的神经元数量和连接方式。
可以使用Matlab提供的"feedforwardnet"函数创建前馈神经网络,或者"patternnet"函数创建模式识别神经网络。
然后,需要对网络的参数进行配置,包括激活函数、训练算法、训练参数等。
Matlab提供了多种激活函数和训练算法的选择,可以根据具体任务的需求进行调整。
例如,可以使用sigmoid或ReLU激活函数,可以使用反向传播、Levenberg-Marquardt等训练算法。
MATLAB神经网络43个案例分析简介神经网络(Neural Network)是一种模拟人类神经元行为的计算模型,它通过对大量输入数据进行训练,学习到输入和输出之间的复杂关系。
MATLAB是一个强大的数学计算工具,具有丰富的神经网络函数和工具箱,可以用于神经网络的设计、训练和应用。
本文将介绍43个使用MATLAB进行神经网络分析的案例,主要包括神经网络的基本概念、神经网络模型的建立、参数的调整和优化等方面。
二级标题1: 基本概念在开始具体的案例分析之前,首先理解神经网络的基本概念是非常重要的。
三级标题1: 神经元神经网络的基本单元是神经元(Neuron),它模拟了生物神经元的工作原理。
神经元接收多个输入信号,并通过一个激活函数产生输出信号。
常用的激活函数包括Sigmoid函数、ReLU函数等。
三级标题2: 神经网络的结构神经网络由多层神经元组成,通常包括输入层、隐藏层和输出层。
输入层接收外部输入,隐藏层用于处理中间信息,输出层产生最终的输出。
三级标题3: 前向传播和反向传播神经网络的训练过程主要包括前向传播和反向传播两个步骤。
前向传播是通过输入数据按照网络结构进行计算,得到输出结果。
反向传播是根据输出结果与真实结果之间的误差,通过调整网络参数来提高模型性能。
二级标题2: 案例分析三级标题4: 案例1: 图像分类本案例通过使用神经网络和MATLAB工具箱,对手写数字图像进行分类。
首先,将图像数据转化为向量形式,并通过网络进行训练。
然后,将训练好的网络用于分类未知图像,并评估分类性能。
三级标题5: 案例2: 时序预测本案例使用神经网络来预测时间序列数据。
通过对历史数据进行训练,建立时序模型,并利用该模型来预测未来的数据。
通过调整网络结构和参数,提高预测准确性。
三级标题6: 案例3: 异常检测本案例利用神经网络进行异常检测。
通过对正常数据进行训练,建立正常模型,并使用该模型检测异常数据。
通过调整网络的灵敏度和阈值,提高异常检测的性能。
Matlab神经网络工具箱2010-7-21今天学的是BP神经网络,首先看的是一个关于非线性函数逼近的例子,最后得出一个心得:在使用newff函数生成一个新的网络时,神经元的层数和每一层的神经元数会对结果造成不小的影响,一般都采用[n,1]的建立方法,其中n为隐层的神经元数,1为输出层的神经元数。
然后是做了一个识别系统,算是一个较大的神经网络,具体的代码解释和分析如下:[alphabet,targets]=prprob;[R,Q]=size(alphabet);[S2,Q]=size(targets);S1=10;[R,Q]=size(alphabet);[S2,Q]=size(targets);P=alphabet;net=newff(minmax(P),[S1,S2],{'logsig','logsig'},'traingdx');net.LW{2,1}=net.LW{2,1}*0.01;net.b{2}=net.b{2}+0.01;其中的proprob是matlab自带的一个生成字母表布尔值的函数。
可以具体查看。
T=targets;net.performFcn='sse';net.trainParam.goal=0.1;net.trainParam.show=20;net.trainParam.epochs=5000;net.trainParam.mc=0.95;[net,tr]=train(net,P,T)接下来首先进行无噪声训练。
netn.trainParam.goal=0.6;netn.trainParam.epochs=300;T=[targets targets targets targets];for pass=1:10P=[alphabet,alphabet,(alphabet+randn(R,Q)*0.1),(alphabet+randn(R,Q)*0.2) ];[netn,tr]=train(net,P,T);end接下来是有噪声训练,采用随机数生成影响输入矩阵的方式。
使用Matlab进行神经网络优化问题求解的方法一、引言在当今信息时代,神经网络已经成为解决复杂问题的重要工具。
随着计算能力的提升,神经网络优化问题的求解变得越来越重要。
而Matlab作为一种强大的科学计算软件,能够提供丰富的工具和函数来解决神经网络优化问题。
本文将介绍如何使用Matlab来解决神经网络优化问题。
二、神经网络优化问题的建模在使用Matlab解决神经网络优化问题之前,首先需要对问题进行建模。
通常来说,神经网络优化问题可以分为两类:单目标优化问题和多目标优化问题。
单目标优化问题是指希望优化网络的某个特定输出,常见的问题有回归问题和分类问题。
而多目标优化问题则是希望在多个指标上获得最优解,常见的问题有多目标分类和多目标回归问题。
在建模过程中,需要确定网络的结构和参数。
神经网络的结构通常由输入层、隐藏层和输出层组成。
输入层接受原始数据,隐藏层进行特征提取,输出层给出最终的结果。
而参数则包括权重和偏置,这些参数需要进行调整以达到最优解。
三、使用Matlab解决单目标优化问题1. 数据准备在解决单目标优化问题之前,首先需要准备好数据集。
数据集应该包含输入值和对应的目标值。
2. 网络训练使用Matlab的神经网络工具箱,可以方便地进行网络训练。
首先,需要创建一个神经网络对象,并设置好网络的结构和参数。
然后,使用训练函数对网络进行训练,常见的训练函数有Levenberg-Marquardt算法和梯度下降算法。
通过训练函数,可以不断调整网络的权重和偏置,直到达到最优解。
3. 网络评估训练完网络后,需要对网络进行评估。
可以使用测试数据集来评估网络的性能,通常采用预测误差、准确率等指标来评估网络的表现。
四、使用Matlab解决多目标优化问题解决多目标优化问题与解决单目标优化问题的方法类似,只是目标变成了多个。
可以使用多种方法来解决多目标优化问题,如加权法、约束法和分级法等。
1. 加权法加权法是一种常用的解决多目标优化问题的方法。
MATLAB技术神经网络拟合导言:神经网络是一种重要的机器学习技术,具有强大的模式识别和函数拟合能力。
MATLAB作为一种专业的科学计算软件,提供了丰富的工具箱和功能,用于设计和实现神经网络模型。
本文将介绍MATLAB技术在神经网络拟合方面的应用,以及相关的算法原理和实践案例。
一、神经网络概述神经网络是受到人类神经系统启发的一种计算模型,可以通过构建具有多个神经元层的网络结构来实现模式识别和函数拟合。
每个神经元通过权重和激活函数来计算输入信号的输出,多个神经元按照特定的连接方式形成网络。
神经网络的训练过程可以通过调整权重和激活函数的参数来优化模型的性能。
二、MATLAB神经网络工具箱MATLAB提供了神经网络工具箱,用于方便地设计和实现神经网络模型。
工具箱包含了各种神经网络算法和函数,支持多种拓扑结构和学习算法,提供了丰富的可视化和调试工具。
通过使用神经网络工具箱,用户可以快速构建自己的神经网络模型,并进行训练和测试。
三、神经网络拟合问题神经网络拟合是指通过神经网络模型来逼近某个未知函数的过程。
这种拟合方法可以应用于多个领域,如数据挖掘、金融预测、图像处理等。
在MATLAB中,可以通过使用神经网络工具箱中的函数和工具来解决各种拟合问题。
1. 函数拟合问题函数拟合是神经网络最常见的应用之一。
给定一组输入输出的样本数据,神经网络可以通过训练来拟合出输入和输出之间的关系。
MATLAB提供了fitnet函数,可以用于构建并训练一个前馈神经网络,并实现函数拟合。
例如,我们可以使用MATLAB生成一组正弦函数的样本数据,然后通过神经网络进行拟合。
首先,我们创建一个包含若干样本点的数据集,并将其划分为训练集和测试集。
然后,使用fitnet函数选择合适的网络结构和训练参数,并利用训练集对神经网络进行训练。
最后,使用测试集评估神经网络的拟合效果。
2. 数据挖掘问题数据挖掘是指从大量数据中提取有用信息的过程。
神经网络可以应用于数据挖掘问题,例如模式识别、分类、聚类等。
第19卷第3期贵州大学学报(自然科学版)V ol.19N o.3 2002年 8月Journal of G uizhou University(Natural Science)Aug.2002文章编号 1000-5269(2002)03-00232-08应用Matlab设计人工神经元网络控制系统Ξ高 峰 卢尚琼 于芹芬(浙江林学院现代教育技术中心,浙江临安 311300)摘 要 在简要介绍Matlab513软件的基础上,结合它的神经网络工具箱,阐述了在Matlab软件中利用神经元网络工具箱(Neural Netw ork T oolbox)和Simulink平台建立人工神经元网络模型以及实现人工神经元网络控制系统的设计、仿真和动态性能分析的方法,并以倒立摆控制系统为例进行了仿真研究.文中的具体实例表明,在人工神经元网络及其应用研究中使用Matlab可以提高研究效率,快速实现研究构想,有助于科学研究工作的开展.关键词 Matlab,人工神经元网络,控制系统,仿真中图分类号 TP273+14 文献标识码 A 1 引言人工神经元网络控制的基本思想是从仿生学的角度,模拟人脑神经系统的运作方式,使机器具有人脑那样的感知、学习和推理能力.对控制科学而言,神经网络有以下一些特点[1][2]:①神经网络是本质的非线性系统,能够充分逼近任意复杂的非线性关系;②具有高度的自适应和自组织性,能够学习和适应严重不确定性系统的动态特性;③系统信息等势分布存储在网络的各神经元及其连接权中,故有很强的鲁棒性和容错能力;④信息的并行处理方式使得快速进行大量的运算成为可能.因此,神经网络在解决高度非线性和严重不确定性系统的控制方面有巨大潜力.目前,在神经网络控制领域已经有成功的应用实例,它也成为智能控制发展的重要方向之一,为解决复杂的非线性、不确定、不确知系统的控制问题开辟了一条新的途径.在设计人工神经元网络控制系统的过程中,往往要进行大量的数学计算,其中包括矩阵运算.这些运算一般来说难以用手工精确和快捷地进行,而要借助计算机编制相应的程序做近似计算.目前流行用Basic、F ortran、C和C++语言编制计算程序,这既需要对有关算法有深刻的了解,还需要熟练地掌握所用语言的语法及编程技巧.对多数科学工作者而言,同时具备这两方面技能有一定困难.通常,编制程序也是繁杂的,不仅消耗人力与物力,而且影响工作进程和效率.为克服上述困能,有必要为工程技术人员提供一种集人工神经元网络控制系统设计、仿真和分析功能于一体的计算机可视化辅助工具.Ξ收稿日期:2001-05-16项目来源:浙江林学院科学研究发展基金资助项目(浙林院科[2000]11号)作者简介:高峰(1969-)男,讲师,硕士.研究方向:控制理论及其应用、人工神经元网络及其应用、计算仿真与辅助设计等.Matlab 513由MathW oks 公司1999年春推出(MathW orks 公司在2000年10月推出了Mat 2lab 610版本,本文的某些叙述在那里将会有些变化),是一套功能十分强大的工程计算和数据分析软件,它主要由五个部分组成[3]:Matlab 语言、Matlab 工作环境、Matlab 图形系统、Mat 2lab 数学函数库以及Matlab 应用程序界面(API ).它将科学计算、数据可视化、交互式程序设计、以及非线性动态系统的建模和仿真等诸多强大的功能集成在一个易于使用的视窗环境之中,为科学研究、工程设计以及必须进行有效数值计算的众多学科领域提供了一种简捷高效的编程与开发环境,借助于这种环境,任何复杂计算问题及其解的描述都非常符合人们的逻辑思维方式和数学表达习惯,并在很大程度上摆脱了传统非交互式程序设计语言(如C 、F ortran 等)的编程模式,为自然科学和工程设计诸多领域全面解决复杂数值计算问题以及C AD 研究等提供了综合解决方案.在设计研究单位和工业部门,Matlab 被认作进行高效研究、开发的首选软件工具;在国际学术界,Matlab 已经被确认为准确、可靠的科学计算标准软件.在诸多国际一流学术刊物上(尤其是信息科学刊物),都可以看到Matlab 的应用.2 神经网络工具箱与人工神经元网络设计由于Matlab 数值计算函数库内容的基础性和通用性,使得Matlab 软件具有很强的开放性和适应性.在保持内核不变的条件下,Mablab 针对不同的应用学科推出相应的工具箱(toolbox ),神经网络工具箱就是Matlab 环境下所开发出来的许多工具箱之一.它是以人工神经网络理论为基础,用Matlab 语言构造出典型神经元网络的激活函数(传递函数),如:S 型、线型、竞争层、饱和线形等激活函数,使设计者对所选定网络输出的计算,变成对激活函数的调用;另外,根据各种典型的修正网络权值的规则,加上网络的训练过程,用Matlab 编写出各种网络权值训练的子程序.网络的设计者则可以根据自己的需要去调用工具箱中有关神经元网络的设计与训练的子程序,使自己能够从繁琐的编程中解脱出来,集中精力去思考问题和解决问题,从而提高效率和解题质量[4].首先,Matlab 神经网络工具箱包含了许多进行了人工神经元网络设计和分析的函数,有关这些函数的使用可以通过help 命令得到,即在Matlab 的命令窗(C ommand Window )输入命令help nnet ,就可以获得神经网络工具箱的全部函数及其相应的功能说明.其次,Matlab 神经网络工具箱几乎完整地概括了现有的神经网络的新成果,所涉及的网络模模型有:感知器、自适应线性网络、反向传播网络、径向基函数网络、自组织网络以及反馈网络等,对于各种网络模型,神经网络工具箱集成了多种学习算法,为用户提供了极大的方便.最后,交互式的模型输入与仿真环境Simulink 工具箱是Matlab 软件的扩展,主要用于动态系统的仿真.它是Windows 中提供了建立系统模型所需的大部分类型模块,用户只需要用鼠标选择所需模块在模型窗口上“画出”模型(双击任何模块,即可打开该功能块来完成参数的设定),然后利用鼠标将它们连接起来,就可以构成一个系统的框图描述,亦即得到该系统的Simulink 描述.建立起系统模型后,用户可通过选择仿真菜单(simulationmenu ),设置仿真控制参数,启动仿真过程,然后通过输出Scope (示波器)观察系统的仿真结果.可以使用两种方法获得人工神经网络Simulink 描述[5],第一种方法是利用基于Matlab 513的神经网络工具箱提供的一组Simulink 模块直接建立人工神经元网络系统的系统模型;另一种方法是利用・332・第3期高 峰:应用Matlab 设计人工神经元网络控制系统 函数gensim 将在Matlab 环境下创立的人工神经元网络系统转化成相应的Simulink 模型.下面,我们结合实例介绍设计人工神经元网络的一般方法,在以基础上,我们研究了一个具体实例.倒立摆控制系统的仿真问题.假定我们想建立一个如图1所图示的网络模型:图1 人工神经元网络模型示意图图中T D L 是开关式延时电路(tapped delay line ).我们可以看到:(1)网络层1有1个输入向量,该输入向量有2个元素,假设它们的取值范围都是[0,10];网络层2有1个输入向量,该输入向量有5个元素,假设它们的取值范围均为[-2,2].(2)网络层1和网络层3各有一个阀值.第一个输入量同时和网络层1和网络层2相连接,第二个输入向量只和网络2相连接.(3)网络层1和网络层2的输出与网络层3的输入相连接,网络层3有一个反馈连接.(4)网络层2和网络层3的输出都是所设计网络的实际输出.另外,网络层3的实际输出将和期望向量进行比较并形成反馈回路.(5)网络层1有4个神经元,网络层2有3个神经元,网络层3只有一个神经元.(6)网络层1的激活函数是双曲正切S 形激活函数(tansig ),网络层2激活函数是对数S 形激活函数(logsig ),网络层3的激活函数是线性激活函数(purelin ).在设计这个网络之前,我们必须指定用于初始化和训练该网络的算法.假设网络层之间的连接权值和每一层的阀值采用Nguyen 2Widrow 算法(即工具箱中的函数initnw )来进行初始化,而采用Levenberg 2Marquardt 反向传播算法(即工具箱中的函数trailm )来对该网络进行训练.这样,对于给定的样本输入向量,该网络经过训练以后,网络层3的输出将匹配期望向量,而使得均方误差(mse )最小.根据以上叙述,我们给出设计该神经元网络的核心代码:net =metw ork ;%建立一个网络net 1numInputs =2;net.num Layers =3;net.biasC onnect =[1;0;1];・432・ 贵州大学学报(自然科学版)第19卷net.inputC onnect =[10;11;00];yerC onnect =[000;000;111];net.outputC onnect =[011];net.targetC onnect =[001];net.inputs{1}.range =[010;010];%输入矢量的范围net.inprts{2}.range =[-2 2;-2 2;-2 2;-2 2;-2 2];yers{1}.size =4;yers{1}.trans ferFcn =′tansig ′;%传递函数yers{1}.initFcn =′initnw ′;%初始化函数yers{2}.size =3;yers{2}.trans ferFcn =′logsig ′;yers{2}.initFcn =′intinw ′;yers{3}.initFcn =′inittnw ′;%specify the weights tap delaynet.inputWeights{2,1}.delays =[01];net.inputWeights{2,2}.delays =1;net.inputWeights{3,3}.delays =1;net.imitFcn =′initlay ′;net.performFcn =′mse ′;net.trainFcn =′trainlm ′;%训练函数net.init (net );%初化神经元网络当一个人工神经元网络被训练好以后,我们便可以转化为相应的Simulink 模型,这可以由上面提到的两种方法中的任何一种获得,如果是利用函数gensim 获得,则代码为:gensim (net ,-1);3 应用举例—基于人工神经元网络的非线性系统控制随着被控对象越来越复杂,系统体现出具有复杂的不确定性过程和非线性以及时变的特点,难于精确建模,有的虽可以建立粗略的模型,但遇到求解的困难,这势必给控制系统带来越来越高的要求.由于人工神经元网络具有一定的自学习、自适应和非线性映射能力及容错性等,神经元网络控制领域中的应用已经成为发展的必然趋势,神经元网络控制已经成为一个独立的子领域,神经元网络控制的一个显著特点是:输入到对象上的动作信号是以神经元网络为基础的控制器产生的[2].考虑一个倒立摆控制系统,如图2所示,其非线性模型可以利用如下的方程式来进行描述:d d t X 1X 2=X 29118sin x 1-2x 2+u (1)其中X 1=∞(角度∞是通过改变直流电机中的电流来进行控制的),X 2=d ∞d t (x 2表示角度速・532・第3期高 峰:应用Matlab 设计人工神经元网络控制系统 度),u 是送给电机的电流,正电流使倒立摆沿顺时针方向转换,9118sin x 1是倒立摆的重力,而-2X 2是相对于速度的阻尼作用.图2 倒立摆控制系统 图3 人工神经元网络控制器意图对于类似的非线性系统,我们可采用反馈线性化的思想进行控制[4].所谓反馈线性化,是指利用反馈的手段来消除系统中的非线性,使得闭环系统中的动力学方程是线性的.假定我们期望的闭环系统为下列线性参考模型的动力学表达式给出的响应:d d t X 2X 2=X 2-9X 1-6X 2+09r (2)其中,r 是期望输出角度.基于模型参考自适应控制,可以设计控制律:u =9r -9x 1-4X 2-9118sin x 1(3)利用(3)式就可以采用人工神经元网络来完成反馈线性化控制.为此我们首先假定非线性系统的采样周期为0105s.311 人工神经元网络控制器的结构由(3)式可知,我们的目标是要设计并训练一个人二神经元网络用作控制器,它的输出层有一个输出,该输出为施加给倒立摆的电流值,这个电流值应该能使倒立摆在下一时刻(0105s 之后)的状态与参考模型的状态完全一致.我们选择一个两层网络的神经模型结构,在网络隐含层有8个神经元,采用双曲正切激活函数;输出层取线性激活函数.网络结构图如图3所示,其中State (即倒立摆的状态)是指倒立摆的角度x 1和速度x 2,Demand 是指倒立摆的期望的角度值r.312 数据采集为了采用反向传播法进行有监督式的非线性函数逼近,必须给出训练用的输入/输出对,这可以通过对实际被控系统进行输入/输出对的实测记录方式获得数据,再采用适当的控制策略解决问题.为此首先定义函数pm odel 和plinear 以获得倒立摆系统模型和线性参考模型:x =[angle ;vel ;force ];ds =pm odel (t ,x );y =[angle ;vel ;demand ];dy =plinear (t ,y );然后,利用函数ode23分别进行仿真:[time ,X]=ode23(′pm odel ′,0,0105,x );・632・ 贵州大学学报(自然科学版)第19卷[time ,Y]=ode23(′plinear ′,0,0105,y );即可以得到与时刻time 对应的状态矩阵X 和Y.在训练神经元网络控制器之前,必须首先生成初始状态和期望的下一时刻状态的样本值,因此我们在倒立摆的工作区内定义几组不同的倒立摆角度、速度以及期望的角度值:deg2rad =pi/180;angle =[-10:40:190]3deg2rad ;vel =[-90:36:90]3deg2rad ;demand =[-180:40:180]3deg2rad ;取上面定义的所有值以及一组稳态值(速度为0时对应的角度值及角速度值),一共有318个倒立摆的状态/输入条件,摆的状态是指倒立摆角度和速度,输入是指电流:angle2=[-10:10:190]3deg2rad ;pc =[combvec (angle ,vel ,demand )angle2;…zeros (size (angle2));angle2]];然后,将381个初始状态/输入条件应用到线性参考模型上,得到下一时刻(0105s 之后)的状态,并将结果保存在某一个矩阵(例如T c )中.313 人工神经元网络控制器的初始化如图3所示,所选用的网络为一个tansig/purlin 网络,网络隐层有8个神经元,有一个输出,输出值是施加在倒立摆上的电流.利用函数new ff 可对网络进行初始化:S1=8;cnet =new ff (minmax (PC ),[S11],{′tansig ′′purelin ′});314 人工神经元网络控制器的训练首先给出倒立摆系统的神经网络控制系统的结构图,如图4所示.图4 基于神经网络的倒立摆控制系统结构图利用函数train 来训练人工神经元网络控制器(该函数采用Levenberg -Marquardt 型改进BP 算法)的核心代码为:numInputs =2;num Layers =4;tnet =netw ork (numInputs ,num Layers );[tnet ,tr ]=train (tnet ,{Pc (1:2,:);Pc (3,:)},{T c});・732・第3期高 峰:应用Matlab 设计人工神经元网络控制系统 cnet.IW{1,1}(:,1:2)=tnet.IW{1,1};cnet.IW{1,1}(:,3)=tnet.IW{1,2};cnet.b{1}=tnet.b{1};cnet.b{2}=tnet.b{2};cnet.LW{2,1}=tnet.LW{2,1};315 仿真结果及其分析现在对人工神经网络控制系统的性能进行仿真实验,并与其它采用不同控制器的仿真系统的控制效果进行对比.用于对比的控制系统为:(1)具有理想线性参考模型的控制系统;(2)具有精确非线性抵消控制器的控制系统.(3)具有神经网络控制器的控制系统;假定期望期望的倒立摆的定位在水平位置,即∞=90°.在这种情况下,重心力将驱使倒立摆臂沿顺时针方向转向地面,所以需要一定的电流来保持臂的平衡,这比使倒立摆平衡在0°或180°更加困难.线性化的被控过程,在期望平衡点∞=90°时的线性模型为:d d t X 1X 2=X 2-9118x 1-2x 2+u (4)由此线性性模型(4)式以及期望闭环参考模型(2)式可求得控制律为:u=-9x 1-4x 2+9r +10(5)系统的期望输出为倒立摆臂被保持在夹角∞=90°即水平位置上.图中的纵坐标单位为度,横坐单位为秒;期望输出用符号“+”表示,实际输出符号“-”表示.从图中可以看出它们几乎一致,这说明神经网络系统的响应是相当出色的.图5 神经网络与精确非线性对消控制器响应4 结束语由于使用Matlab 编程运算与人进行科学计算的思路和表达方式完全一致,所以不象学习其它高级语言(如Basic 、F ortran 和C 等)那样难于掌握,只要稍有编程基础,就可以掌握Matlab 的程序编写,这是Matlab 的一个显著的特点.其次,从文中的应用实例可以看出,利用・832・ 贵州大学学报(自然科学版)第19卷Matlab 及其神经元网络工具箱来建立人工神经元网络模型以及设计神经元网络控制器和神经元网络控制系统,具有简单明了、精度高、可视化强等优点,可以大大提高工作效率,快速实现科学研究中的新构想.需要指出的是,人工神经元网络在控制系统中的应用主要表现在两个领域[6]:系统辨识和系统控制.本文只是研究了应用Matlab 设计一类人工神经元网络控制系统的问题,如何利用Matlab 中的功能繁多的模型库和工具箱,进一步研究人工神经元网络在其它相关领域的应用,是作者下一步的努力方向.参考文献[1]何玉彬,李新忠.神经网络控制技术及其应用[M].北京:科学出版社,2000,11.[2]袁曾任.人工神经元网络及其应用[M].北京:清华大学出版,1999.10.[3]张志涌等.精通M AT LAB[M].北京:北京航空航天大学出版社,2000.6.[4]丛爽.面向MST LAB ,工具箱的神经网络理论与应用[M].合肥:中国科学技术大学出版社,1998.11.[6]黄文梅.杨勇,熊桂林.系统分析与仿真———M AT LAB 语言及应用[M].长沙:国防科技大学出版社,1998.9.[7]高峰,卢尚琼,于芹芬. 类非线性系统的神经网络控制的建模方法及其仿真研究[J ].计算机仿真,2002,19(1):17~19.Artifical N eural N etw ork Control SystemDesign B ased on MatabG ao Feng ,Lu Shangqiong ,Y u Qinfen(Depertment of In formation Engineering and Base Science ,Zhejiang F orestry C ollege ,Linan 311300China )Abstract On the basis of the introduction of Matlab 513and neural netw ork toolbox ,this pa 2per introduces how to create a neural netw ork m odel ,how to design ,simulate and analyze a ANN control system with Simulink platform and neural netw ork toolbox in Matlab.A simulation exam ple in this paper illustrates the advantager of the method ,which include easy designing ,high precision and g ood visual effect.It can fulfill the user ’s requirement perfectly.K ey w ords mqtlab ,artificial neural nrtw ork ,control sysyem ,simulate 1・932・第3期高 峰:应用Matlab 设计人工神经元网络控制系统 。