神经网络实验目的

合集下载

神经网络 实验报告

神经网络 实验报告

神经网络实验报告神经网络实验报告引言:神经网络是一种模仿人脑神经元网络结构和功能的计算模型,它通过学习和训练来实现模式识别、分类和预测等任务。

本次实验旨在探索神经网络的基本原理和应用,并通过实践验证其效果。

一、神经网络的基本原理1.1 神经元模型神经元是神经网络的基本单元,它接收来自其他神经元的输入信号,并通过激活函数进行处理后输出。

我们采用的是Sigmoid函数作为激活函数,它能够将输入信号映射到0到1之间的值。

1.2 神经网络结构神经网络由输入层、隐藏层和输出层组成。

输入层接收外部输入的数据,隐藏层用于处理和提取特征,输出层给出最终的预测结果。

隐藏层的数量和每层神经元的数量是根据具体问题而定的。

1.3 反向传播算法反向传播算法是神经网络中最常用的训练算法,它通过计算误差和调整权重来不断优化网络的预测能力。

具体而言,它首先进行前向传播计算得到预测结果,然后计算误差,并通过链式法则将误差反向传播到每个神经元,最后根据误差调整权重。

二、实验设计2.1 数据集选择本次实验选择了一个手写数字识别的数据集,其中包含了大量的手写数字图片和对应的标签。

这个数据集是一个经典的机器学习数据集,可以用来评估神经网络的分类能力。

2.2 神经网络参数设置为了探究神经网络的性能和泛化能力,我们设置了不同的参数组合进行实验。

主要包括隐藏层数量、每层神经元数量、学习率和训练轮数等。

2.3 实验步骤首先,我们将数据集进行预处理,包括数据归一化和标签编码等。

然后,将数据集划分为训练集和测试集,用于训练和评估网络的性能。

接下来,根据不同的参数组合构建神经网络,并使用反向传播算法进行训练。

最后,通过测试集评估网络的分类准确率和损失函数值。

三、实验结果与分析3.1 参数优化我们通过对不同参数组合的实验进行比较,找到了在手写数字识别任务上表现最好的参数组合。

具体而言,我们发现增加隐藏层数量和神经元数量可以提高网络的分类准确率,但同时也会增加训练时间。

7基于神经网络的模式识别实验要求

7基于神经网络的模式识别实验要求

实验七基于神经网络的模式识别实验一、实验目的理解BP神经网络和离散Hopfield神经网络的结构和原理,掌握反向传播学习算法对神经元的训练过程,了解反向传播公式。

通过构建BP网络和离散Hopfield 网络模式识别实例,熟悉前馈网络和反馈网络的原理及结构。

二、实验原理BP学习算法是通过反向学习过程使误差最小,其算法过程从输出节点开始,反向地向第一隐含层(即最接近输入层的隐含层)传播由总误差引起的权值修正。

BP 网络不仅含有输入节点和输出节点,而且含有一层或多层隐(层)节点。

输入信号先向前传递到隐节点,经过作用后,再把隐节点的输出信息传递到输出节点,最后给出输出结果。

离散Hopfield神经网络的联想记忆过程分为学习和联想两个阶段。

在给定样本的条件下,按照Hebb学习规则调整连接权值,使得存储的样本成为网络的稳定状态,这就是学习阶段。

联想是指在连接权值不变的情况下,输入部分不全或者受了干扰的信息,最终网络输出某个稳定状态。

三、实验条件Matlab 7.X 的神经网络工具箱:在Matlab 7.X 的命令窗口输入nntool,然后在键盘上输入Enter键,即可打开神经网络工具箱。

四、实验内容1.针对教材P243例8.1,设计一个BP网络结构模型(63-6-9),并以教材图8.5 为训练样本数据,图8.6为测试数据。

(1)运行train_data.m和test_data.m文件,然后从Matlab工作空间导入(Import)训练样本数据(inputdata10,outputdata10)和测试数据(testinputdata,testoutputdata),其次新建一个神经网络(New Network),选择参数如下表1,给出BP神经网络结构图。

表1 BP网络结构模型的各项参数设置Network Name(神经网络名称)nn10_1Network Type(神经网络类型)Feed-forward backprop(前馈反向传播)Input ranges(输入信息范围)来自训练样本的输入数据(inputdata10)Training function(训练函数)TRAINGD(梯度下降BP算法)Performance function(性能函数)MSE(均方误差)Number of layers(神经网络层数)2Layer1(第1层)的Number ofneurons (神经元个数)6Layer1(第1层)的TransferFunction (传递函数)LOGSIG(S型函数)Layer2(第2层)的Number ofneurons (神经元个数)9Layer2(第2层)的TransferFunction (传递函数)LOGSIG(S型函数)(2)输入训练样本数据(inputdata10,outputdata10),随机初始化连接权(Initialize Weights),然后进行训练(Train),训练参数设置如表2所示,并观察训练目标值变化曲线图,最后把BP神经网络训练成功后(即误差不再变化后)的误差值填入表3。

实验七基于神经网络的模式识别实验

实验七基于神经网络的模式识别实验

实验七基于神经网络的模式识别实验一、实验目的利用神经网络实现模式识别,并验证其性能。

掌握基于神经网络的模式识别方法。

二、实验原理1.神经网络神经网络是一种模仿生物神经系统的计算模型,它由大量的神经元节点相互连接而成。

在模式识别中,我们一般采用多层前向神经网络进行模式的训练和识别。

2.神经网络的训练过程神经网络的训练过程可以分为两步:前向传播和反向传播。

前向传播是指将输入样本通过网络的各个层传递到输出层,并计算输出结果。

反向传播是指根据输出结果和目标结果之间的误差,将误差反向传播到网络的各个层,并根据误差调整网络中的权值。

3.模式识别对于模式识别问题,我们首先需要将输入模式转化为特征向量,然后通过神经网络来训练这些特征向量,并将其与已知类别的模式进行比较,从而进行模式的识别。

三、实验步骤1.数据准备选择适当的模式识别数据集,例如手写数字识别的MNIST数据集,将其分为训练集和测试集。

2.特征提取对于每个输入模式,我们需要将其转化为一个特征向量。

可以使用各种特征提取方法,例如像素值,轮廓等。

3.神经网络设计设计合适的神经网络结构,包括输入层、隐藏层和输出层,并确定各层的神经元数目。

4.神经网络训练使用训练集对神经网络进行训练,包括前向传播和反向传播过程。

可以使用各种优化算法,例如梯度下降法。

5.模式识别使用测试集对训练好的神经网络进行测试和验证,计算识别的准确率和性能指标。

6.性能评估根据得到的结果,评估神经网络的性能,并分析可能的改进方法。

四、实验结果通过实验我们可以得到神经网络模式识别的准确率和性能指标,例如精确度、召回率和F1-score等。

五、实验总结在本次实验中,我们利用神经网络实现了模式识别,并验证了其性能。

通过实验,我们可以掌握基于神经网络的模式识别方法,了解神经网络的训练和识别过程,以及模式识别中的特征提取方法。

实验结果表明,神经网络在模式识别问题中具有较好的性能,并且可以根据需要进行改进和优化。

人工神经网络实验报告

人工神经网络实验报告

人工神经网络实验报告
本实验旨在探索人工神经网络在模式识别和分类任务中的应用效果。

实验设置包括构建神经网络模型、数据预处理、训练网络以及评估网
络性能等步骤。

首先,我们选择了一个经典的手写数字识别任务作为实验对象。


数据集包含了大量手写数字的灰度图片,我们的目标是通过构建人工
神经网络模型来实现对这些数字的自动识别。

数据预处理阶段包括了对输入特征的标准化处理、数据集的划分以
及对标签的独热编码等操作。

通过对原始数据进行预处理,可以更好
地训练神经网络模型,提高模型的泛化能力。

接着,我们构建了一个多层感知机神经网络模型,包括输入层、隐
藏层和输出层。

通过选择合适的激活函数、损失函数以及优化算法,
我们逐步训练网络,并不断调整模型参数,使得模型在训练集上达到
较高的准确率。

在模型训练完成后,我们对网络性能进行了评估。

通过在测试集上
进行预测,计算模型的准确率、精确率、召回率以及F1-score等指标,来全面评估人工神经网络在手写数字识别任务上的表现。

实验结果表明,我们构建的人工神经网络模型在手写数字识别任务
中表现出色,准确率高达95%以上,具有较高的识别准确性和泛化能力。

这进一步验证了人工神经网络在模式识别任务中的强大潜力,展
示了其在实际应用中的广阔前景。

总之,本次实验通过人工神经网络的构建和训练,成功实现了对手写数字的自动识别,为人工智能技术在图像识别领域的应用提供了有力支持。

希望通过本实验的研究,可以进一步推动人工神经网络技术的发展,为实现人工智能的智能化应用做出更大的贡献。

实训神经网络实验报告

实训神经网络实验报告

一、实验背景随着人工智能技术的飞速发展,神经网络作为一种强大的机器学习模型,在各个领域得到了广泛应用。

为了更好地理解神经网络的原理和应用,我们进行了一系列的实训实验。

本报告将详细记录实验过程、结果和分析。

二、实验目的1. 理解神经网络的原理和结构。

2. 掌握神经网络的训练和测试方法。

3. 分析不同神经网络模型在特定任务上的性能差异。

三、实验内容1. 实验一:BP神经网络(1)实验目的:掌握BP神经网络的原理和实现方法,并在手写数字识别任务上应用。

(2)实验内容:- 使用Python编程实现BP神经网络。

- 使用MNIST数据集进行手写数字识别。

- 分析不同学习率、隐层神经元个数对网络性能的影响。

(3)实验结果:- 在MNIST数据集上,网络在训练集上的准确率达到98%以上。

- 通过调整学习率和隐层神经元个数,可以进一步提高网络性能。

2. 实验二:卷积神经网络(CNN)(1)实验目的:掌握CNN的原理和实现方法,并在图像分类任务上应用。

(2)实验内容:- 使用Python编程实现CNN。

- 使用CIFAR-10数据集进行图像分类。

- 分析不同卷积核大小、池化层大小对网络性能的影响。

(3)实验结果:- 在CIFAR-10数据集上,网络在训练集上的准确率达到80%以上。

- 通过调整卷积核大小和池化层大小,可以进一步提高网络性能。

3. 实验三:循环神经网络(RNN)(1)实验目的:掌握RNN的原理和实现方法,并在时间序列预测任务上应用。

(2)实验内容:- 使用Python编程实现RNN。

- 使用Stock数据集进行时间序列预测。

- 分析不同隐层神经元个数、学习率对网络性能的影响。

(3)实验结果:- 在Stock数据集上,网络在训练集上的预测准确率达到80%以上。

- 通过调整隐层神经元个数和学习率,可以进一步提高网络性能。

四、实验分析1. BP神经网络:BP神经网络是一种前向传播和反向传播相结合的神经网络,适用于回归和分类问题。

神经网络的BP算法实验报告

神经网络的BP算法实验报告

计算智能基础实验报告实验名称:BP神经网络算法实验班级名称:341521班专业:探测制导与控制技术姓名:***学号:********一、 实验目的1)编程实现BP 神经网络算法;2)探究BP 算法中学习因子算法收敛趋势、收敛速度之间的关系;3)修改训练后BP 神经网络部分连接权值,分析连接权值修改前和修改后对相同测试样本测试结果,理解神经网络分布存储等特点。

二、 实验要求按照下面的要求操作,然后分析不同操作后网络输出结果。

1)可修改学习因子2)可任意指定隐单元层数3)可任意指定输入层、隐含层、输出层的单元数4)可指定最大允许误差ε5)可输入学习样本(增加样本)6)可存储训练后的网络各神经元之间的连接权值矩阵;7)修改训练后的BP 神经网络部分连接权值,分析连接权值修改前和修改后对相同测试样本测试结果 。

三、 实验原理1BP 神经网络算法的基本思想误差逆传播(back propagation, BP)算法是一种计算单个权值变化引起网络性能变化的较为简单的方法。

由于BP 算法过程包含从输出节点开始,反向地向第一隐含层(即最接近输入层的隐含层)传播由总误差引起的权值修正,所以称为“反向传播”。

BP 神经网络是有教师指导训练方式的多层前馈网络,其基本思想是:从网络输入节点输入的样本信号向前传播,经隐含层节点和输出层节点处的非线性函数作用后,从输出节点获得输出。

若在输出节点得不到样本的期望输出,则建立样本的网络输出与其期望输出的误差信号,并将此误差信号沿原连接路径逆向传播,去逐层修改网络的权值和节点处阈值,这种信号正向传播与误差信号逆向传播修改权值和阈值的过程反复进行,直训练样本集的网络输出误差满足一定精度要求为止。

2 BP 神经网络算法步骤和流程BP 神经网络步骤和流程如下:1) 初始化,给各连接权{},{}ij jt W V 及阈值{},{}j t θγ赋予(-1,1)间的随机值;2) 随机选取一学习模式对1212(,),(,,)k k k k k k k n k n A a a a Y y y y ==提供给网络;3) 计算隐含层各单元的输入、输出;1n j ij i j i s w a θ==⋅-∑,()1,2,,j j b f s j p ==4) 计算输出层各单元的输入、输出;1t t jt j t j l V b γ==⋅-∑,()1,2,,t t c f l t q ==5) 计算输出层各单元的一般化误差;()(1)1,2,,k k t t tt t t d y c c c t q =-⋅-=6) 计算中间层各单元的一般化误差;1[](1)1,2,,q kk jt jt j j t e d V b b j p ==⋅⋅-=∑7) 修正中间层至输出层连接权值和输出层各单元阈值;(1)()k jt jt t j V iter V iter d b α+=+⋅⋅(1)()k t t t iter iter d γγα+=+⋅8) 修正输入层至中间层连接权值和中间层各单元阈值;(1)()kk ij ij j i W iter W iter e a β+=+⋅⋅(1)()kj j j iter iter e θθβ+=+⋅9) 随机选取下一个学习模式对提供给网络,返回步骤3),直至全部m 个模式训练完毕;10) 重新从m 个学习模式对中随机选取一个模式对,返回步骤3),直至网络全局误差函数E 小于预先设定的一个极小值,即网络收敛;或者,当训练次数大于预先设定值,强制网络停止学习(网络可能无法收敛)。

神经网络_实验报告

神经网络_实验报告

一、实验目的与要求1. 掌握神经网络的原理和基本结构;2. 学会使用Python实现神经网络模型;3. 利用神经网络对手写字符进行识别。

二、实验内容与方法1. 实验背景随着深度学习技术的不断发展,神经网络在各个领域得到了广泛应用。

在手写字符识别领域,神经网络具有较好的识别效果。

本实验旨在通过实现神经网络模型,对手写字符进行识别。

2. 神经网络原理神经网络是一种模拟人脑神经元结构的计算模型,由多个神经元组成。

每个神经元接收来自前一个神经元的输入,通过激活函数处理后,输出给下一个神经元。

神经网络通过学习大量样本,能够自动提取特征并进行分类。

3. 实验方法本实验采用Python编程语言,使用TensorFlow框架实现神经网络模型。

具体步骤如下:(1)数据预处理:从公开数据集中获取手写字符数据,对数据进行归一化处理,并将其分为训练集和测试集。

(2)构建神经网络模型:设计网络结构,包括输入层、隐藏层和输出层。

输入层用于接收输入数据,隐藏层用于提取特征,输出层用于输出分类结果。

(3)训练神经网络:使用训练集对神经网络进行训练,调整网络参数,使模型能够准确识别手写字符。

(4)测试神经网络:使用测试集对训练好的神经网络进行测试,评估模型的识别效果。

三、实验步骤与过程1. 数据预处理(1)从公开数据集中获取手写字符数据,如MNIST数据集;(2)对数据进行归一化处理,将像素值缩放到[0, 1]区间;(3)将数据分为训练集和测试集,比例约为8:2。

2. 构建神经网络模型(1)输入层:输入层节点数与数据维度相同,本实验中为28×28=784;(2)隐藏层:设计一个隐藏层,节点数为128;(3)输出层:输出层节点数为10,对应10个类别。

3. 训练神经网络(1)定义损失函数:均方误差(MSE);(2)选择优化算法:随机梯度下降(SGD);(3)设置学习率:0.001;(4)训练次数:10000;(5)在训练过程中,每100次迭代输出一次训练损失和准确率。

机能学实验报告神经

机能学实验报告神经

机能学实验报告神经1. 简介神经是机能学领域中的重要研究对象,其结构和功能对于理解和模拟生物系统的大脑功能至关重要。

神经具有高度复杂的网络连接和信号处理能力,通过传递信息来实现身体各个部分的协调运作。

在本实验中,我们将探索神经的结构、功能和模拟方法。

2. 实验目的- 了解神经的基本结构和功能- 学习使用模拟方法模拟神经网络的行为- 观察神经网络在不同条件下的变化3. 实验方法3.1 神经结构观察我们使用显微镜观察了小鼠大脑神经组织的切片样本。

通过标记和显微观察,我们观察到了神经元、突触和胶质细胞等组织结构,并学习了它们的形态特征和相互关系。

3.2 神经信号模拟为了模拟神经信号的传递过程,我们使用MATLAB软件进行了仿真。

我们以一个简化的神经网络为例,包括三个神经元和两个突触连接。

通过设定神经元之间的连接强度和突触传递的时间延迟等参数,我们模拟了神经信号在神经元网络中的传递过程。

3.3 神经网络行为观察我们对模拟的神经网络进行了不同条件下的观察和分析。

通过改变神经元之间的连接强度、时间延迟和输入信号频率等参数,我们观察到了神经网络的不同行为模式,如稳定状态、振荡状态和混沌状态等。

4. 实验结果4.1 神经结构观察结果通过显微观察,我们得到了小鼠大脑神经组织的高清图像。

我们观察到了神经元的形态特征,包括细胞体、树突和轴突等部分。

我们还观察到了突触的连接情况,以及胶质细胞的分布。

这些观察结果为后续神经信号模拟提供了基础。

4.2 神经信号模拟结果通过MATLAB仿真,我们成功模拟了神经信号的传递过程。

我们设定了神经元之间的连接强度为0.7、时间延迟为0.5秒,以及输入信号频率为5Hz。

在这些参数设置下,神经信号有序地从一个神经元传递到另一个神经元,并实现了信息的传递和处理。

4.3 神经网络行为观察结果我们通过改变参数设置,观察了神经网络的不同行为模式。

当连接强度过低或时间延迟过长时,神经网络处于稳定状态,神经信号传递较为缓慢。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、实验目的:1. 了解常规PID 控制器和常规模糊控制器; 2. 设计出常规PID 控制器和常规模糊控制器; 3. 通过实验比较两种控制器的控制效果; 二、常规PID 控制器的实验原理和实验步骤:1. 常规PID 的基本原理在控制系统中,调节器常用的控制规律是PID 控制。

常规PID 控制系统结构框图如图1所示。

图1 PID 控制系统框图PID 调节器是一种线性调节器,它根据给定值r(t)与实际输出值c(t)构成的控制偏差:e(t)=r(t)-c(t)将偏差的比例(P )、积分(I )、微分(D )、通过线性组合构成控制量,对控制对象进行控制。

在模拟调节系统中PID 控制算法的模拟表达式为(1):1()()[()()]t p dide t u t k e t e t dt T T dt=++⎰(1)式中:u(t)——调节器执行机构的输出信号 Kp ——比例系数 Ti ——积分时间Td ——微分时间为了用计算机实现(1)式,必须将其离散化,离散化后其增量型控制式为: 110112201[]nn n n p n k s dn n n n k ise e u k e e T T u a e a e a e T T -----==++=+-+∑式中:012(1)2(1)s d p isd p s ppsT T a k T T T a k T T a k T =++=+=Ts 为采样周期。

2.PID 的控制的作用及特点PID 调节器各校正环节的作用是这样的: (1) 比例环节(P ):即时成比例地反应控制系统的偏差信号e(t),偏差一旦产生,调节器立即产生控制作用以减小偏差。

(2)积分环节(I ):主要用于消除静差,提高系统的无关度,Ti 积分时间常数越小,积分作用越强。

(3)微分环节(D ):能反应偏差信号的变化均势(变化速率),并能在偏差信号的值变得太大之前,在系统中引入一肯效的早期修正信号,从而加快系统的动作速度,减小调节时间。

PID 调节的主要特点是:结构灵活,不仅可以用常规的PID 调节,而且可根据系统要求,采用各种PID 的变种,如PI ,PD 控制,不完全微分控制,积分分离式PID 控制等。

3. 简单介绍二种PID 的参数整定方法(1) Zieler-Nichols 最早提出了PID 参数整定方法,即Z-N 。

它是令控制器如式(2)根据对象(一阶惯性加纯迟延,如式(3))的阶跃响应曲线,获取对象时间常数T ,增益K ,及纯迟延时间τ,再利用相应的经验公式求得。

此法简单易行,但参数还需进一步调整。

通过改进,推出了广义Z-N 法,大大提高了参数整定质量。

Z-N 法一般用于手工计算和设置控制器初值。

1()(1)c p di G s k T s T s=++(2) 0()1s e Sk G s T τ-=+ (3)2()[(,)]n n J t e t dt θθ∞=⎰(4) 这是由Atherton 提出的最优整定方法,它以式(4)为最优控制指标。

其中(,)e t θ为调节器入口偏差e=R-Y ;n 根据需要取值,按/T τ来搜索一组p k ,i T ,d T 的取值,并使n J 为最小,此时的控制器参数为优。

(2) 庄敏霞与Atherton 针对各种指标函数得出了最优PID 参数指定的算法,考虑下面给出的指标通式: 2()[(,)]n n J t e t dt θθ∞=⎰(5) 式中e(t)——进入PID 控制器的误差信号。

根据设定点信号的最优自整定算法,对式(5)中给出的最优指标,着重考虑3种情况,即: n=0,简记为ISE 准则; n=1,简记为ISTE 准则;n=2,简记为2IST E 准则。

已知的数学模型为式子:1()1sP G s eT s τ-=+11.()bp pa k kT τ=, 22()pi pT T a b T τ=+ , 33()d p pT a T b T τ=4. 针对模型0.51()101sG s es -=+两种方法的整定结果为:(1)Z-N 法:24p k = 1i T = 0.25d T =1()240.25G s s s=++(3) ISTE 法:9.99()15.40.34G s s s=++5. 经过零阶保持器Z 变换离散化被控对象变为:561()0.0050.005()10.99Y z zzU z z---+=-()0.99(1)0.05(5)0.005y k y k u k u k =---+- 所以程序为: clear all;close all;%增量式PID 控制; ts=0.1; %采样时间;G=tf([1],[10,1],'inputdelay',0.5);Gd=c2d(G ,ts,'zoh');[num,den]=tfdata(Gd,'v'); %tfdata 直接以行向量的形式返回分子与分母系数;u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;u_6=0;u_7=0; y_1=0;y_2=0;e_1=0;e_2=0;%kp=15.4;Ti=9.99;Td=0.34; %% ISTE 法求出的PID 参数 kp=24;Ti=1;Td=0.25; %%Z-N 法求出的PID 参数 ki=kp*ts/Ti;kd=kp*Td/ts;A=kp*(1+ts/Ti+Td/ts); B=-kp*(1+2*Td/ts); C=kp*Td/ts; for k=1:1:3000 t(k)=k*ts; r(k)=30;y1(k)=0.995*y_1+0.00995*u_7;y(k)=0.99*y_1+0.005*u_6+0.005*u_5;e(k)=r(k)-y(k);u(k)=A*e(k)+B*e_1+C*e_2;u(k)=u_1+u(k);u_7=u_6;u_6=u_5;u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k); y_2=y_1;y_1=y(k); e_2=e_1;e_1=e(k); end figure(1);plot(t,y)hold on得出曲线分别为ISTE 法和Z-N 法:三、模糊PID 控制的实验原理和实验步骤1. 模糊PID 控制器的结构本文以误差e 和ec 作为输入,以满足不同时刻和e 和ec 对PID 参数的自整定要求。

控制器的结构如图2所示。

图2 模糊控制器结构图将系统误差e 和误差变化率ec 变化范围定义为模糊集上的论域。

即e,ec=[-3,3],其中模糊子集为e,ec={NB,M,NS,ZO,PS,PM,PB},子集中元素分别代表负大,负中,负小,零,正小,正中,正大。

根据Kp,Ki,Kd3个参数模糊规则表构造一个两输入(e,ec )三输出(,,)p i d k k k ∆∆∆模糊控制器。

2. 模糊PID 控制器的设计模糊控制规则是用于修正PID 参数的,模糊控制规则则根据过程的阶跃响应情况来考虑求取。

规则如表1所示。

表1 模糊控制规则表根据上述模糊控制规则,采用如下的PID 参数调节规则,如表2、表3、表4、所示,其中每个表格的第一行表示误差变化量ec 的模糊集合,第一列表示误差e 的模糊集合。

PID 三个参数的模糊规则库建立好以后,就可以根据模糊控制理论进行参数的自调整。

将系统误差e ,误差变化量ec ,Kp ,Ki ,Kd 的变化范围定义为模糊上的论域:e,ec={-3,-2,-1,0,1,2,3},Kp={-0.3,-0.2,-0.1,0,0.1,0.2,0.3},Ki={-0.06,-0.04, -0.02,0,0.02,0.04,0.06},Kd={-3,-2,-1,0,1,2,3}。

表2 Kp 规则调节表表3 Ki 规则调节表表4 Kd 规则调节表在模糊控制规律中,e,ec,Kp,Ki,Kd 的语言变量值取“负大”(NB )、“负中”(NM )、“负小”(NS )、“零”(ZO )、“正小”(PS )、“正中”(PM )、“正大”(PB )共7个值。

它们的隶属度函数都是三角形,并且每个值所取的范围宽度相等。

3. 针对模型为0.51()101sG s es -=+经过零阶保持器Z 变换离散化被控对象变为: 561()0.0050.005()10.99Y z zzU z z---+=-=---+-y k y k u k u k()0.99(1)0.05(5)0.005(6)程序为:%Fuzzy Tunning PID Controlclear all;close all;a=newfis('fuzzpid'); %建立一个规则库文件a=addvar(a,'input','e',[-3,3]); %参数ea=addmf(a,'input',1,'NB','zmf',[-3,-1]);a=addmf(a,'input',1,'NM','trimf',[-3,-2,0]);a=addmf(a,'input',1,'NS','trimf',[-3,-1,1]);a=addmf(a,'input',1,'Z','trimf',[-2,0,2]);a=addmf(a,'input',1,'PS','trimf',[-1,1,3]);a=addmf(a,'input',1,'PM','trimf',[0,2,3]);a=addmf(a,'input',1,'PB','smf',[1,3]);a=addvar(a,'input','ec',[-3,3]); %参数eca=addmf(a,'input',2,'NB','zmf',[-3,-1]);a=addmf(a,'input',2,'NM','trimf',[-3,-2,0]);a=addmf(a,'input',2,'NS','trimf',[-3,-1,1]);a=addmf(a,'input',2,'Z','trimf',[-2,0,2]);a=addmf(a,'input',2,'PS','trimf',[-1,1,3]);a=addmf(a,'input',2,'PM','trimf',[0,2,3]);a=addmf(a,'input',2,'PB','smf',[1,3]);a=addvar(a,'output','kp',[-0.3,0.3]); %参数kpa=addmf(a,'output',1,'NB','zmf',[-0.3,-0.1]);a=addmf(a,'output',1,'NM','trimf',[-0.3,-0.2,0]);a=addmf(a,'output',1,'NS','trimf',[-0.3,-0.1,0.1]);a=addmf(a,'output',1,'Z','trimf',[-0.2,0,0.2]);a=addmf(a,'output',1,'PS','trimf',[-0.1,0.1,0.3]);a=addmf(a,'output',1,'PM','trimf',[0,0.2,0.3]);a=addmf(a,'output',1,'PB','smf',[0.1,0.3]);a=addvar(a,'output','ki',[-0.06,0.06]); %参数kia=addmf(a,'output',2,'NB','zmf',[-0.06,-0.02]);a=addmf(a,'output',2,'NM','trimf',[-0.06,-0.04,0]);a=addmf(a,'output',2,'NS','trimf',[-0.06,-0.02,0.02]);a=addmf(a,'output',2,'Z','trimf',[-0.04,0,0.04]);a=addmf(a,'output',2,'PS','trimf',[-0.02,0.02,0.06]);a=addmf(a,'output',2,'PM','trimf',[0,0.04,0.06]);a=addmf(a,'output',2,'PB','smf',[0.02,0.06]);a=addvar(a,'output','kd',[-3,3]); %参数kd a=addmf(a,'output',3,'NB','zmf',[-3,-1]);a=addmf(a,'output',3,'NM','trimf',[-3,-2,0]);a=addmf(a,'output',3,'NS','trimf',[-3,-1,1]);a=addmf(a,'output',3,'Z','trimf',[-2,0,2]);a=addmf(a,'output',3,'PS','trimf',[-1,1,3]);a=addmf(a,'output',3,'PM','trimf',[0,2,3]);a=addmf(a,'output',3,'PB','smf',[1,3]);rulelist=[1 1 7 1 5 1 1;1 2 7 1 3 1 1;1 3 62 1 1 1;1 4 62 1 1 1;1 5 5 3 1 1 1;1 6 4 42 1 1;1 7 4 4 5 1 1;2 1 7 1 5 1 1;2 2 7 13 1 1;2 3 6 2 1 1 1;2 4 53 2 1 1;2 5 53 2 1 1;2 6 4 43 1 1;2 734 4 1 1;3 1 6 14 1 1;3 2 6 2 3 1 1;3 3 6 3 2 1 1;3 4 5 3 2 1 1;3 54 4 3 1 1;3 6 3 5 3 1 1;3 7 3 54 1 1;4 1 6 2 4 1 1;4 2 6 2 3 1 1;4 35 3 3 1 1;4 4 4 4 3 1 1;4 5 3 5 3 1 1;4 6 2 6 3 1 1;4 7 2 6 4 1 1;5 1 5 2 4 1 1;5 2 5 3 4 1 1;5 3 4 4 4 1 1;5 4 3 5 4 1 1;5 5 3 5 4 1 1;5 6 2 6 4 1 1;5 7 2 7 4 1 1;6 1 5 47 1 1;6 2 4 4 5 1 1;6 3 3 5 5 1 1;6 4 2 5 5 1 1;6 5 2 6 5 1 1;6 6 27 5 1 1;6 7 1 7 7 1 1;7 1 4 4 7 1 1;7 2 4 4 6 1 1;7 3 2 5 6 1 1;7 4 2 6 6 1 1;7 5 2 6 5 1 1;7 6 1 7 5 1 1;7 7 1 7 7 1 1];a=addrule(a,rulelist);a=setfis(a,'DefuzzMethod','mom');writefis(a,'fuzzpid');a=readfis('fuzzpid');%PID Controllerts=0.1; %采样时间;sys=tf([1],[10,1],'inputdelay',0.5); %输入被控对象模型dsys=c2d(sys,ts,'tustin'); %对被控对象离散化u_1=0.0;u_2=0.0;u_3=0.0;u_4=0.0;u_5=0.0;u_6=0.0;y_1=0;y_2=0;y_3=0;x=[0,0,0]';error_1=0;e_1=0.0;ec_1=0.0;kp0=8.6;ki0=0.12;kd0=0.95;for k=1:1:500time(k)=k*ts;rin(k)=30;%Using fuzzy inference to tunning PIDk_pid=evalfis([e_1,ec_1],a);kp(k)=kp0+k_pid(1);ki(k)=ki0+k_pid(2);kd(k)=kd0+k_pid(3);u(k)=kp(k)*x(1)+kd(k)*x(2)+ki(k)*x(3);%yout(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3+num(1)*u(k)+num(2)*u_1+num(3)*u_2+nu m(4)*u_3;yout(k)=0.99*y_1+0.005*u_6+0.005*u_5;error(k)=rin(k)-yout(k);%%%%%%%%%%%%%%Return of PID parameters%%%%%%%%%%%%%%% u_6=u_5;u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k);y_3=y_2;y_2=y_1;y_1=yout(k);x(1)=error(k); % 计算比例环节x(2)=error(k)-error_1; % 计算微分环节x(3)=x(3)+error(k); % 计算积分环节e_1=x(1);ec_1=x(2);error_2=error_1;error_1=error(k);endshowrule(a)figure(1);plot(time,rin,'b',time,yout,'r');xlabel('time(s)');ylabel('rin,yout');figure(4);plot(time,kp,'r');xlabel('time(s)');ylabel('kp');figure(5);plot(time,ki,'r');xlabel('time(s)');ylabel('ki');figure(6);plot(time,kd,'r');xlabel('time(s)');ylabel('kd');fuzzy fuzzpid.fis得出的输出曲线为:四、结论通过实验,对比实验结果可以得了如下几点:1.常规PID控制时,上升时间较短,通过ISTE整定参数的方法的调整时间相对短一些,而应用Z-N法时的调整时间相对长些,但两者的振荡较巨烈。

相关文档
最新文档