[智能控制]实验指导书

《智能控制》实验指导书

河北工业大学

控制科学与工程学院

2013.09

实验一 基于MATLAB的模糊推理系统设计

一、 实验目的

要求在掌握模糊控制器基本工作原理和设计方法的基础上,熟悉MALAB的模糊控制工具箱,能针对实际问题设计模糊控制器,建立模糊控制系统,训练学生综合运用计算机来解决一些实际问题的能力。

二、 实验要求

1. 熟练掌握基于MATLAB的模糊推理系统设计;

2. 设计小费模糊推理系统;

3. 设计水箱液位模糊控制系统。

三、 实验内容

(一)模糊逻辑工具箱的介绍

模糊逻辑工具箱提供的图形用户界面(GUI)工具有五个:模糊推理系统(FIS)编辑器;隶属函数编辑器;模糊规则编辑器;模糊规则观察器;输出曲面观察器。

1. FIS编辑器:

Matlab的FIS界面如图1所示。FIS处理系统有多少个输入变量,输出变量,名称是什么,模糊算子“与”(min,prod乘积,custom自定义),“或”(max大,probor 概率统计方法,custom),推理方法(min,prod,custom),聚类方法(max,probor,sum,custom),解模糊的方法(centroid质心法,bisector中位线法,middle of maximum,largest of maximum,smallest of maximum)。

推理的类型有mamdani和sugeno 推理。

图1 模糊推理系统(FIS)界面

Mamdani推理:一种在模糊控制中普遍使用的方法,它本质上仍然是一种合成推理方法,

只不过对模糊蕴涵关系取不同的形式而已。Mamdani型推理从每个规则的结果中得到的模糊集通过聚类运算后得到结果模糊集,被反模糊化后得到系统输出。

Sugeon型推理:其中每个规则的结果是输入的线性组合,而输出是结果的加权线性组合。

2. 隶属函数编辑器

确定各个变量的论域和显示范围(左下角编辑区内),如图2所示。定义每个变量的模糊集的名称和个数(Edit菜单中Add MFs),以及每个模糊变量的隶属函数类型和参数(点击变量的隶属函数曲线后在右下角编辑区内修改)。隶属函数的类型有:trimf,trapmf,gbellmf, gaussmf,gauss2mf,sigmf,dsigmf,psigmf,pimf,smf,zmf。

图2 隶属函数编辑器

3. 模糊规则编辑器

完成了对变量的命名,隶属函数也有了适当的形状和名字,就可以编辑模糊规则。选择连接关系(and 或者or),权重,在编辑器左边选择一个输入变量,并选择它的语言值,然后在编辑器右边的输出变量中选择一个输出变量,并选中它的语言值,然后将这种联系添加到模糊规则中。

Options/Format 下可以选择模糊规则不同的格式,默认的是verbose(模糊规则的详细格式),还有symbolic(符号格式),indexed(高度压缩格式)

4. 模糊规则观察器

模糊规则观察器的功能是可以令用户观察模糊推理图,并观察模糊推理系统的行为是否与预期的一样。可以观察到输入变量(默认色是黄色)和输出变量(默认色是蓝色)如何应用在模糊规则中;反模糊化的数值是多少。

5. 输出曲面观测器

模糊规则观察器非常详细的显示了在某一个时刻的计算。如果看到模糊推理系统的全部输出曲面,即与整个输入区间相对应的输出区间,就要打开输出曲面观测器。View/view surface

(二)小费模糊推理系统设计

1. 在MATLAB的命令窗口输入fuzzy命令,打开模糊逻辑工具箱的图形用户界面窗口,新建一个Madmdani模糊推理系统。

2. 增加一个输入变量,在弹出的窗口中选择Edit→Add Variable→input;在name中更改input1为“service”,input2为“food”,output为“tip”,建立了一个两输入单输出模糊推理系统框架。

3. 双击变量图标进行模糊化模块设计:

(1)打开Membership Function Editor窗口,在Range和Display Range中设置隶属函数图的取值范围,将两个输入变量的论域均设为[0,10],输出论域为[0,30]。

(2)选择Edit→Add MFs→numbers of MFs 中选择模糊集个数

通过增加隶属度函数来进行模糊空间划分。

输入变量service划分为三个模糊集:更改mf1~mf3的参数,分别命名为poor、good和excellent,隶属度函数均为高斯函数( 'gaussmf'),参数分别为[1.5 0]、[1.5 5]和[1.5 10]。

输入变量food划分为两个模糊集:rancid和delicious,隶属度函数均为梯形函数('trapmf '),参数分别为[0 0 1 3]和[7 9 10 10]。

输出变量tip划分为三个模糊集:cheap、average和generous,隶属度函数均为三角形函数('trimf'),参数分别为[0 5 10]、[10 15 20]和[20 25 30]。

4. 设置模糊规则:打开Rule Editor窗口,通过选择添加三条模糊规则:

① if (service is poor) or (food is rancid) then (tip is cheap)

② if (service is good) then (tip is average)

③ if (service is excellent) or (food is delicious) then (tip is generous)

三条规则的权重均为1。

5. 模糊推理参数均使用默认值,通过曲面观察器(View→Surface)查看小费模糊推理的输入输出关系曲面。通过规则观察器(View→Rules)查看对具体输入的模糊推理及输出情况,输入各种不同的数据,查看模糊推理情况及输出数据。

6. 增加规则,查看曲面的变化、推理输出的变化。

(三)水箱液位模糊控制系统设计

1. 打开模糊工具箱的图形用户界面窗口,新建一个Madmdani模糊推理系统。

2. 增加一个输入变量,将输入变量命名为level、rate,输出变量为valve,这样建立了一个两输入单输出模糊推理系统,保存为tank.fis。

3. 设计模糊化模块:将输入变量rate的论域设为[-0.1,0.1],另外两个变量采用论域[-1,1]。 通过增加隶属度函数来进行模糊空间划分。

输入变量level划分为三个模糊集:high、okay和low,隶属度函数均为高斯函数,参数分别为[0.3 -1]、[0.3 0]和[0.3 1];

输入变量rate划分为三个模糊集:negative、none和positive,隶属度函数均为高斯函数,参数分别为[0.03 -0.1]、[0.03 0]和[0.03 0.1];

输出变量valve划分为五个模糊集:close_fast、close_slow、no_change、open_slow和open_fast,隶属度函数均为三角形函数,参数分别为[-1 -0.9 -0.8]、[-0.6 -0.5 -0.4]、 [-0.1 0 0.1]、[0.2 0.3 0.4]和[0.8 0.9 1]。

4. 设置模糊规则:打开Rule Editor窗口,通过选择添加三条模糊规则:

①if (level is okay) then (valve is no_change)

②if (level is low) then (valve is open_fast)

③if (level is high) then (valve is close_fast)

④if (level is okay) and (rate is positive) then (valve is close_slow)

⑤if (level is okay) and (rate is negative) then (valve is poen_slow)

五条的权重均为1。

5. 通过曲面观察器(Surface Viewer)查看水箱液位模糊推理的输入输出关系曲面。通过规则观察器(Rule Viewer)查看对具体输入的模糊推理及输出情况。

实验二 模糊控制系统设计

一、 实验目的

利用Matlab软件实现模糊控制系统仿真实验,了解模糊控制的基本原理及实现过程,比较模糊控制和传统PID控制的性能差异。

二、 实验要求

1. 设计一个二维模糊控制器控制一个二阶被控对象,传递函数为

Ke-τds

G(s)=(1+Tf1s)(1+Tf2s)其中各参数分别为K=30,Tf1=10,Tf2=2。

2. 采用模糊控制算法,设计出能跟踪给定输入的模糊控制器,对被控系统进行仿真,绘制出系统的阶跃响应曲线。

3. 改变模糊控制器中模糊变量的隶属度函数,分析隶属度函数和模糊控制规则对模糊控制效果的影响,比较那种情况下的控制效果较好。

4. 改变系统的参数,了解模糊控制在系统参数发生变化时的控制效果,并与PID控制器作用下系统参数发生变化时的控制效果进行比较,思考模糊控制相对于传统控制的优点。

三、 实验内容

(一)模糊控制器设计

1. 模糊集合及论域的定义

选定误差E和误差变化EC作为模糊控制器的输入(二维模糊控制器),控制量U作为模糊控制器的输出。E、EC及U的模糊集定义如下:

E、EC和U的模糊集均为{NB, NM, NS, O, PS, PM, PB}

E和EC的论域为{-6、-5、-4、-3、-2、-1、0、1、2、3、4、5、6}

U的论域为{-7、-6、-5、-4、-3、-2、-1、0、1、2、3、4、5、6、7}

上述3个模糊集合都选取了7个元素,主要目的是着眼于提高稳态精度。E、EC和U的隶属度函数图形如图所示:

图1 E的隶属度函数

图2 C的隶属度函数

图3 U的隶属度函数

2. 模糊控制规则设计 表1 模糊控制规则

进行模糊控制仿真时,首先要将FIS发送到Matlab工作空间(workspace)中,用FIS窗口下File/Export/to workspace实现,用户建立一个工作空间变量名(例如fuzzy control),这个变量将FIS系统作为Matlab的一个结构进行工作。仿真时,打开fuzzy logic controller,输入FIS变量名,就可以进行仿真了。

3. 建立仿真模型

在MATLAB的simulink仿真环境中建立模糊控制系统的方框图,如图4所示。系统所选用的参数Saturation、Saturation1、Saturation2的范围分别为[-6 6]、[-6 6]、[-7 7],Transport Delay=2s。

通过调试得到PID模糊控制的参数:Gain1=0.6,Gain=2.1,Gain2=0.11。

图4 模糊控制仿真模型

4. 仿真结果

系统的阶跃响应曲线如图5所示,其中上方的曲线代表系统的阶跃响应,下方的曲线是系统的模糊控制量的变化。

图5 阶跃输入的响应曲线图

(二)分析模糊控制隶属度函数对控制效果的影响

如下图所示改变模糊控制器中的隶属度函数为梯形隶属函数。

图6 E的隶属度函数

图7 EC的隶属度函数

图8 U的隶属度函数

记录此时系统的阶跃响应曲线,分析梯形隶属度函数和三角形隶属度函数对控制效果的影响,撰写实验报告。

(三)系统参数对控制效果的影响

改变系统参数进行仿真,记录系统的阶跃响应曲线,依次分析以下三种情况对控制效果的影响,撰写实验报告。

1. 当系统开环增益K分别取K=25,K=30和K=35时系统的阶跃响应。 2.当系统纯延时τ分别取τ=1.5s、τ=2s和τ=2.5s时系统的阶跃响应。

3.当系统惯性时间常数T f 2分别取T f 2=1,T f 2=2,T f 2=3时系统的阶跃响应。

实验三 神经网络控制系统设计

一、 实验目的

本实验要求在学生掌握神经网络基本工作原理和设计方法基础上,熟悉MALAB中的神经网络工具箱,能针对实际问题建立神经网络模型,训练学生综合运用计算机来解决一些实际问题的能力。 二、 实验要求

1. 熟悉MALAB的神经网络工具箱;

2. 用人工神经网络BP算法训练一个网络系统,使之能得到 y=sin(x),x∈(0,2π)的逼近曲线,并与期望曲线画在同一坐标纸上。 三、 实验内容

(一) BP神经网络工具箱函数 1. newff:BP神经网络参数设置函数 函数功能:构建一个BP神经网络;

函数形式:net=newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF) P:输入数据矩阵; T:输出数据矩阵; S:隐含层节点数;

TF:节点传递函数,包括硬限幅传递函数hardlim,对称硬限幅传递函数hardlims,线性传递函数purelin,正切S型传递函数tansig,对数S型传递函数logsig;

BTF:训练函数,包括梯度下降BP算法训练函数traingd,动量反传的梯度下降BP算法训练函数traingdm,动态自适应学习率的梯度下降BP算法训练函数traingda,动量反传和动态自适应学习率的梯度下降BP算法训练函数traingdx,Levenberg_Marquardt的BP算法训练函数trainlm;

BLF:网络学习函数,包括BP学习规则learngd,带动量项的BP学习规则learngdm; PF:性能分析函数,包括均值绝对误差性能分析函数mae,均方差性能分析函数mse; IPF:输入处理函数; OPF:输出处理函数; DDF:验证数据划分函数。

一般在使用中设置前面6个参数,后面4个参数采用系统默认参数。 2. train:BP神经网络训练函数

函数功能:用训练数据训练BP神经网络; 函数形式:[net,tr]=train(NET,X,T,Pi,Ai); NET:待训练网络; X:输入数据矩阵; T:输出数据矩阵; Pi:初始化输入层条件; Ai:初始化输出层条件; net:训练好的网络; tr:训练过程记录。

一般使用过程中设置前面3个参数,后面2个参数采用系统默认参数。 3. sim:BP神经网络预测函数

函数功能:用训练好的BP神经网络预测函数输出; 函数形式:y=sim(net,x); x:输入数据; y:网络预测数据。

4. 示例:采用BP算法,构建一个两层的感知机网络,激活函数均选为logsig(对数S形函数),编制如下程序进行仿真。

tic

a1=randn(1,90); a2=100*rand(1,90); y10=2*a2+3; y20=a2.^2+sin(a2); y1=y10+a1; y2=y20+a1; p=[y1;y2]; pr=minmax(p);

goal=[ones(1,90);zeros(1,90)]; plot(a2,y1,'h',a2,y2,'o')

net=newff(pr,[3,2],{'tansig','tansig'}); net.trainParam.show = 10; net.trainParam.lr = 0.05;

net.trainParam.goal = 1e-10; net.trainParam.epochs = 50000; net = train(net,p,goal); y0=sim(net,p); err0=mae(y0,goal); toc

上述程序,采用前述方法生成90个实验数据,将这些数据用于神经网络的训练,并记录程序运行时间,并对神经网络性能作出评价。

下面的程序可以生成10个新的实验数据,用来测试前面产生的神经网络性能。 b1=randn(1,10); b2=100*rand(1,10); y10=2*b2+3; y20=b2.^2+sin(b2); h1=y10+b1; h2=y20+b1; c=[h1;h2]; r=sim(net,c);

t=[ones(1,10);zeros(1,10)]; err=mae(r,t)

如下为仿真过程中得到的图像,包括每一次运算的误差,训练状态等。用测试数据分析,实现了准确的分类。

要求:

1. 观察程序执行时间和误差(err);

2. 将激活函数取为tansig(正切S形函数)后,观察仿真结果。 (二) RBF神经网络工具箱函数 1. newrb:RBF神经网络参数设置函数 函数功能:构建一个RBF神经网络; 函数形式:net=newrb(P,T,goal,sptead,MN,DF); P:输入样本向量; T:输出样本向量; Goal:网络的目标误差; Sptead:一扩展的常数; MN:神经元个数的最大值; DF:训练过程的显示频率。

该函数利用迭代方法设计径向基函数网络,每迭代一次就增加一个神经元,直到误差平方和下降到目标误差以下或神经元个数达到最大值时迭代停止。

2. sim:RBF神经网络预测函数

函数功能:用训练好的RBF神经网络预测函数输出; 函数形式:y=sim(net,x); net:训练好的网络; x:输入数据; y:网络预测数据。 (三) 仿真程序 1、BP神经网络仿真程序 clear k=1; p=[-1:0.05:1]; t=sin(k*pi*p); plot(p,t,'-') n=10;

%隐层神经元个数

%BP神经网络的构建

net=newff(minmax(p),[n,1],{'tansig','purelin'},'trainlm'); y1=sim(net,p); figure;

%BP神经网络预测输出,

plot(p,t,'-',p,y1,'--'); % t为原正弦函数图形,y1为没有经过调整权值的图形

net.trainParam.epochs=50; %网络的迭代次数 net.trainParam.goal=0.01; %网络的误差 net=train(net,p,t); y2=sim(net,p); figure;

plot(p,t,'-',p,y1,'--',p,y2,'--'); % t为原正弦函数图形,y1为没有经过调整权值的图形,y2为经过调整权值的图形

2、RBF神经网络仿真程序 clear k=1; p=[-1:0.05:1]; t=sin(k*pi*p); plot(p,t,'-'); eg=0.01; sc=1;

%目标误差

%径向基函数的宽度

net=newrb(p,t,eg,sc); y1=sim(net,p); figure;

plot(p,t,'-',p,y1,'--'); 四、 实验报告

%RBF神经网络的构建,

% t为原正弦函数图形,y1为经过调整权值的图形

应用BP网络逼近非线性函数t=sin(x),x=[0,2*pi],学习步长l为0.1,样本集取n=20点,采用单层网络结构,隐含层中取6个单元,总学习次数取5000次,学习误差要求小于0.01,输入输出层神经元激励函数均取f(x)=x,隐含层神经元激励函数取Sigmoid函数,f(x)=1/(1+e^(-x)) ,在matlab中可以用函数logsig来表示。

参考程序: %初始化 l=0.1; n=20;

%学习步长为0.5 %输入样本数n %取6个神经元 %学习总次数

cells=6;

times=5000;

x=(linspace(0,2*pi,n));

%输入初始值

t=sin(x);

%BP网络需要学习的函数t

w1=rand(cells,1); w2=rand(1,cells); yw1=rand(cells,1); yw2=rand;

%第一层连接权系数 %第二层连接权系数 %第一层阈值

%第二层阈值

y=rand(1,n); %输出初始值 counts=1; %学习次数

%开始学习 for i=1:times

ei=0; %网络逼近初始误差平方和 for a=1:n

%对n个样本开始学习

net1=w1*x(a)-yw1; out=logsig(net1);

%net1为cells*1矩阵

%out为cells*1矩阵

net2=w2*out-yw2; y(a)=net2;

%第a个样本输出即为net2 %输出与期望间的广义误差det2

%广义误差det1

det2=t(a)-y(a);

det1=((det2*(w2)').*out).*(1-out); w1=w1+det1*x(a)*l; w2=w2+(det2*out)'*l; yw1=-det1*l+yw1;

%连接权更新

yw2=-det2*l+yw2; %两层阈值更新 ei=ei+det2^2/2;

%误差平方和

e(i)=ei; end if ei

%学习要求误差小于0.01

%学习次数自加

%逼近曲线

for a=1:n net1=w1*x(a)-yw1;

out=logsig(net1);

net2=w2*out-yw2;

y(a)=net2;

end

subplot(2,1,1);

plot(x,t,x,y);

grid on;

xlabel('x');

ylabel('y=sin(x)');

title('逼近曲线');

%误差曲线

if(counts

count=1:counts;

sum=counts;

else

count=1:times;

sum=times;

end

subplot(2,1,2);

plot(count,e(1:sum));

grid on;

title('误差曲线');

xlabel('迭代次数');

ylabel('均方误差'); %利用上述学习方法输出逼近值 %绘制期望曲线与实际曲线在同一坐标纸上 %分割子图形2

- 21 -

《智能控制》实验指导书

河北工业大学

控制科学与工程学院

2013.09

实验一 基于MATLAB的模糊推理系统设计

一、 实验目的

要求在掌握模糊控制器基本工作原理和设计方法的基础上,熟悉MALAB的模糊控制工具箱,能针对实际问题设计模糊控制器,建立模糊控制系统,训练学生综合运用计算机来解决一些实际问题的能力。

二、 实验要求

1. 熟练掌握基于MATLAB的模糊推理系统设计;

2. 设计小费模糊推理系统;

3. 设计水箱液位模糊控制系统。

三、 实验内容

(一)模糊逻辑工具箱的介绍

模糊逻辑工具箱提供的图形用户界面(GUI)工具有五个:模糊推理系统(FIS)编辑器;隶属函数编辑器;模糊规则编辑器;模糊规则观察器;输出曲面观察器。

1. FIS编辑器:

Matlab的FIS界面如图1所示。FIS处理系统有多少个输入变量,输出变量,名称是什么,模糊算子“与”(min,prod乘积,custom自定义),“或”(max大,probor 概率统计方法,custom),推理方法(min,prod,custom),聚类方法(max,probor,sum,custom),解模糊的方法(centroid质心法,bisector中位线法,middle of maximum,largest of maximum,smallest of maximum)。

推理的类型有mamdani和sugeno 推理。

图1 模糊推理系统(FIS)界面

Mamdani推理:一种在模糊控制中普遍使用的方法,它本质上仍然是一种合成推理方法,

只不过对模糊蕴涵关系取不同的形式而已。Mamdani型推理从每个规则的结果中得到的模糊集通过聚类运算后得到结果模糊集,被反模糊化后得到系统输出。

Sugeon型推理:其中每个规则的结果是输入的线性组合,而输出是结果的加权线性组合。

2. 隶属函数编辑器

确定各个变量的论域和显示范围(左下角编辑区内),如图2所示。定义每个变量的模糊集的名称和个数(Edit菜单中Add MFs),以及每个模糊变量的隶属函数类型和参数(点击变量的隶属函数曲线后在右下角编辑区内修改)。隶属函数的类型有:trimf,trapmf,gbellmf, gaussmf,gauss2mf,sigmf,dsigmf,psigmf,pimf,smf,zmf。

图2 隶属函数编辑器

3. 模糊规则编辑器

完成了对变量的命名,隶属函数也有了适当的形状和名字,就可以编辑模糊规则。选择连接关系(and 或者or),权重,在编辑器左边选择一个输入变量,并选择它的语言值,然后在编辑器右边的输出变量中选择一个输出变量,并选中它的语言值,然后将这种联系添加到模糊规则中。

Options/Format 下可以选择模糊规则不同的格式,默认的是verbose(模糊规则的详细格式),还有symbolic(符号格式),indexed(高度压缩格式)

4. 模糊规则观察器

模糊规则观察器的功能是可以令用户观察模糊推理图,并观察模糊推理系统的行为是否与预期的一样。可以观察到输入变量(默认色是黄色)和输出变量(默认色是蓝色)如何应用在模糊规则中;反模糊化的数值是多少。

5. 输出曲面观测器

模糊规则观察器非常详细的显示了在某一个时刻的计算。如果看到模糊推理系统的全部输出曲面,即与整个输入区间相对应的输出区间,就要打开输出曲面观测器。View/view surface

(二)小费模糊推理系统设计

1. 在MATLAB的命令窗口输入fuzzy命令,打开模糊逻辑工具箱的图形用户界面窗口,新建一个Madmdani模糊推理系统。

2. 增加一个输入变量,在弹出的窗口中选择Edit→Add Variable→input;在name中更改input1为“service”,input2为“food”,output为“tip”,建立了一个两输入单输出模糊推理系统框架。

3. 双击变量图标进行模糊化模块设计:

(1)打开Membership Function Editor窗口,在Range和Display Range中设置隶属函数图的取值范围,将两个输入变量的论域均设为[0,10],输出论域为[0,30]。

(2)选择Edit→Add MFs→numbers of MFs 中选择模糊集个数

通过增加隶属度函数来进行模糊空间划分。

输入变量service划分为三个模糊集:更改mf1~mf3的参数,分别命名为poor、good和excellent,隶属度函数均为高斯函数( 'gaussmf'),参数分别为[1.5 0]、[1.5 5]和[1.5 10]。

输入变量food划分为两个模糊集:rancid和delicious,隶属度函数均为梯形函数('trapmf '),参数分别为[0 0 1 3]和[7 9 10 10]。

输出变量tip划分为三个模糊集:cheap、average和generous,隶属度函数均为三角形函数('trimf'),参数分别为[0 5 10]、[10 15 20]和[20 25 30]。

4. 设置模糊规则:打开Rule Editor窗口,通过选择添加三条模糊规则:

① if (service is poor) or (food is rancid) then (tip is cheap)

② if (service is good) then (tip is average)

③ if (service is excellent) or (food is delicious) then (tip is generous)

三条规则的权重均为1。

5. 模糊推理参数均使用默认值,通过曲面观察器(View→Surface)查看小费模糊推理的输入输出关系曲面。通过规则观察器(View→Rules)查看对具体输入的模糊推理及输出情况,输入各种不同的数据,查看模糊推理情况及输出数据。

6. 增加规则,查看曲面的变化、推理输出的变化。

(三)水箱液位模糊控制系统设计

1. 打开模糊工具箱的图形用户界面窗口,新建一个Madmdani模糊推理系统。

2. 增加一个输入变量,将输入变量命名为level、rate,输出变量为valve,这样建立了一个两输入单输出模糊推理系统,保存为tank.fis。

3. 设计模糊化模块:将输入变量rate的论域设为[-0.1,0.1],另外两个变量采用论域[-1,1]。 通过增加隶属度函数来进行模糊空间划分。

输入变量level划分为三个模糊集:high、okay和low,隶属度函数均为高斯函数,参数分别为[0.3 -1]、[0.3 0]和[0.3 1];

输入变量rate划分为三个模糊集:negative、none和positive,隶属度函数均为高斯函数,参数分别为[0.03 -0.1]、[0.03 0]和[0.03 0.1];

输出变量valve划分为五个模糊集:close_fast、close_slow、no_change、open_slow和open_fast,隶属度函数均为三角形函数,参数分别为[-1 -0.9 -0.8]、[-0.6 -0.5 -0.4]、 [-0.1 0 0.1]、[0.2 0.3 0.4]和[0.8 0.9 1]。

4. 设置模糊规则:打开Rule Editor窗口,通过选择添加三条模糊规则:

①if (level is okay) then (valve is no_change)

②if (level is low) then (valve is open_fast)

③if (level is high) then (valve is close_fast)

④if (level is okay) and (rate is positive) then (valve is close_slow)

⑤if (level is okay) and (rate is negative) then (valve is poen_slow)

五条的权重均为1。

5. 通过曲面观察器(Surface Viewer)查看水箱液位模糊推理的输入输出关系曲面。通过规则观察器(Rule Viewer)查看对具体输入的模糊推理及输出情况。

实验二 模糊控制系统设计

一、 实验目的

利用Matlab软件实现模糊控制系统仿真实验,了解模糊控制的基本原理及实现过程,比较模糊控制和传统PID控制的性能差异。

二、 实验要求

1. 设计一个二维模糊控制器控制一个二阶被控对象,传递函数为

Ke-τds

G(s)=(1+Tf1s)(1+Tf2s)其中各参数分别为K=30,Tf1=10,Tf2=2。

2. 采用模糊控制算法,设计出能跟踪给定输入的模糊控制器,对被控系统进行仿真,绘制出系统的阶跃响应曲线。

3. 改变模糊控制器中模糊变量的隶属度函数,分析隶属度函数和模糊控制规则对模糊控制效果的影响,比较那种情况下的控制效果较好。

4. 改变系统的参数,了解模糊控制在系统参数发生变化时的控制效果,并与PID控制器作用下系统参数发生变化时的控制效果进行比较,思考模糊控制相对于传统控制的优点。

三、 实验内容

(一)模糊控制器设计

1. 模糊集合及论域的定义

选定误差E和误差变化EC作为模糊控制器的输入(二维模糊控制器),控制量U作为模糊控制器的输出。E、EC及U的模糊集定义如下:

E、EC和U的模糊集均为{NB, NM, NS, O, PS, PM, PB}

E和EC的论域为{-6、-5、-4、-3、-2、-1、0、1、2、3、4、5、6}

U的论域为{-7、-6、-5、-4、-3、-2、-1、0、1、2、3、4、5、6、7}

上述3个模糊集合都选取了7个元素,主要目的是着眼于提高稳态精度。E、EC和U的隶属度函数图形如图所示:

图1 E的隶属度函数

图2 C的隶属度函数

图3 U的隶属度函数

2. 模糊控制规则设计 表1 模糊控制规则

进行模糊控制仿真时,首先要将FIS发送到Matlab工作空间(workspace)中,用FIS窗口下File/Export/to workspace实现,用户建立一个工作空间变量名(例如fuzzy control),这个变量将FIS系统作为Matlab的一个结构进行工作。仿真时,打开fuzzy logic controller,输入FIS变量名,就可以进行仿真了。

3. 建立仿真模型

在MATLAB的simulink仿真环境中建立模糊控制系统的方框图,如图4所示。系统所选用的参数Saturation、Saturation1、Saturation2的范围分别为[-6 6]、[-6 6]、[-7 7],Transport Delay=2s。

通过调试得到PID模糊控制的参数:Gain1=0.6,Gain=2.1,Gain2=0.11。

图4 模糊控制仿真模型

4. 仿真结果

系统的阶跃响应曲线如图5所示,其中上方的曲线代表系统的阶跃响应,下方的曲线是系统的模糊控制量的变化。

图5 阶跃输入的响应曲线图

(二)分析模糊控制隶属度函数对控制效果的影响

如下图所示改变模糊控制器中的隶属度函数为梯形隶属函数。

图6 E的隶属度函数

图7 EC的隶属度函数

图8 U的隶属度函数

记录此时系统的阶跃响应曲线,分析梯形隶属度函数和三角形隶属度函数对控制效果的影响,撰写实验报告。

(三)系统参数对控制效果的影响

改变系统参数进行仿真,记录系统的阶跃响应曲线,依次分析以下三种情况对控制效果的影响,撰写实验报告。

1. 当系统开环增益K分别取K=25,K=30和K=35时系统的阶跃响应。 2.当系统纯延时τ分别取τ=1.5s、τ=2s和τ=2.5s时系统的阶跃响应。

3.当系统惯性时间常数T f 2分别取T f 2=1,T f 2=2,T f 2=3时系统的阶跃响应。

实验三 神经网络控制系统设计

一、 实验目的

本实验要求在学生掌握神经网络基本工作原理和设计方法基础上,熟悉MALAB中的神经网络工具箱,能针对实际问题建立神经网络模型,训练学生综合运用计算机来解决一些实际问题的能力。 二、 实验要求

1. 熟悉MALAB的神经网络工具箱;

2. 用人工神经网络BP算法训练一个网络系统,使之能得到 y=sin(x),x∈(0,2π)的逼近曲线,并与期望曲线画在同一坐标纸上。 三、 实验内容

(一) BP神经网络工具箱函数 1. newff:BP神经网络参数设置函数 函数功能:构建一个BP神经网络;

函数形式:net=newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF) P:输入数据矩阵; T:输出数据矩阵; S:隐含层节点数;

TF:节点传递函数,包括硬限幅传递函数hardlim,对称硬限幅传递函数hardlims,线性传递函数purelin,正切S型传递函数tansig,对数S型传递函数logsig;

BTF:训练函数,包括梯度下降BP算法训练函数traingd,动量反传的梯度下降BP算法训练函数traingdm,动态自适应学习率的梯度下降BP算法训练函数traingda,动量反传和动态自适应学习率的梯度下降BP算法训练函数traingdx,Levenberg_Marquardt的BP算法训练函数trainlm;

BLF:网络学习函数,包括BP学习规则learngd,带动量项的BP学习规则learngdm; PF:性能分析函数,包括均值绝对误差性能分析函数mae,均方差性能分析函数mse; IPF:输入处理函数; OPF:输出处理函数; DDF:验证数据划分函数。

一般在使用中设置前面6个参数,后面4个参数采用系统默认参数。 2. train:BP神经网络训练函数

函数功能:用训练数据训练BP神经网络; 函数形式:[net,tr]=train(NET,X,T,Pi,Ai); NET:待训练网络; X:输入数据矩阵; T:输出数据矩阵; Pi:初始化输入层条件; Ai:初始化输出层条件; net:训练好的网络; tr:训练过程记录。

一般使用过程中设置前面3个参数,后面2个参数采用系统默认参数。 3. sim:BP神经网络预测函数

函数功能:用训练好的BP神经网络预测函数输出; 函数形式:y=sim(net,x); x:输入数据; y:网络预测数据。

4. 示例:采用BP算法,构建一个两层的感知机网络,激活函数均选为logsig(对数S形函数),编制如下程序进行仿真。

tic

a1=randn(1,90); a2=100*rand(1,90); y10=2*a2+3; y20=a2.^2+sin(a2); y1=y10+a1; y2=y20+a1; p=[y1;y2]; pr=minmax(p);

goal=[ones(1,90);zeros(1,90)]; plot(a2,y1,'h',a2,y2,'o')

net=newff(pr,[3,2],{'tansig','tansig'}); net.trainParam.show = 10; net.trainParam.lr = 0.05;

net.trainParam.goal = 1e-10; net.trainParam.epochs = 50000; net = train(net,p,goal); y0=sim(net,p); err0=mae(y0,goal); toc

上述程序,采用前述方法生成90个实验数据,将这些数据用于神经网络的训练,并记录程序运行时间,并对神经网络性能作出评价。

下面的程序可以生成10个新的实验数据,用来测试前面产生的神经网络性能。 b1=randn(1,10); b2=100*rand(1,10); y10=2*b2+3; y20=b2.^2+sin(b2); h1=y10+b1; h2=y20+b1; c=[h1;h2]; r=sim(net,c);

t=[ones(1,10);zeros(1,10)]; err=mae(r,t)

如下为仿真过程中得到的图像,包括每一次运算的误差,训练状态等。用测试数据分析,实现了准确的分类。

要求:

1. 观察程序执行时间和误差(err);

2. 将激活函数取为tansig(正切S形函数)后,观察仿真结果。 (二) RBF神经网络工具箱函数 1. newrb:RBF神经网络参数设置函数 函数功能:构建一个RBF神经网络; 函数形式:net=newrb(P,T,goal,sptead,MN,DF); P:输入样本向量; T:输出样本向量; Goal:网络的目标误差; Sptead:一扩展的常数; MN:神经元个数的最大值; DF:训练过程的显示频率。

该函数利用迭代方法设计径向基函数网络,每迭代一次就增加一个神经元,直到误差平方和下降到目标误差以下或神经元个数达到最大值时迭代停止。

2. sim:RBF神经网络预测函数

函数功能:用训练好的RBF神经网络预测函数输出; 函数形式:y=sim(net,x); net:训练好的网络; x:输入数据; y:网络预测数据。 (三) 仿真程序 1、BP神经网络仿真程序 clear k=1; p=[-1:0.05:1]; t=sin(k*pi*p); plot(p,t,'-') n=10;

%隐层神经元个数

%BP神经网络的构建

net=newff(minmax(p),[n,1],{'tansig','purelin'},'trainlm'); y1=sim(net,p); figure;

%BP神经网络预测输出,

plot(p,t,'-',p,y1,'--'); % t为原正弦函数图形,y1为没有经过调整权值的图形

net.trainParam.epochs=50; %网络的迭代次数 net.trainParam.goal=0.01; %网络的误差 net=train(net,p,t); y2=sim(net,p); figure;

plot(p,t,'-',p,y1,'--',p,y2,'--'); % t为原正弦函数图形,y1为没有经过调整权值的图形,y2为经过调整权值的图形

2、RBF神经网络仿真程序 clear k=1; p=[-1:0.05:1]; t=sin(k*pi*p); plot(p,t,'-'); eg=0.01; sc=1;

%目标误差

%径向基函数的宽度

net=newrb(p,t,eg,sc); y1=sim(net,p); figure;

plot(p,t,'-',p,y1,'--'); 四、 实验报告

%RBF神经网络的构建,

% t为原正弦函数图形,y1为经过调整权值的图形

应用BP网络逼近非线性函数t=sin(x),x=[0,2*pi],学习步长l为0.1,样本集取n=20点,采用单层网络结构,隐含层中取6个单元,总学习次数取5000次,学习误差要求小于0.01,输入输出层神经元激励函数均取f(x)=x,隐含层神经元激励函数取Sigmoid函数,f(x)=1/(1+e^(-x)) ,在matlab中可以用函数logsig来表示。

参考程序: %初始化 l=0.1; n=20;

%学习步长为0.5 %输入样本数n %取6个神经元 %学习总次数

cells=6;

times=5000;

x=(linspace(0,2*pi,n));

%输入初始值

t=sin(x);

%BP网络需要学习的函数t

w1=rand(cells,1); w2=rand(1,cells); yw1=rand(cells,1); yw2=rand;

%第一层连接权系数 %第二层连接权系数 %第一层阈值

%第二层阈值

y=rand(1,n); %输出初始值 counts=1; %学习次数

%开始学习 for i=1:times

ei=0; %网络逼近初始误差平方和 for a=1:n

%对n个样本开始学习

net1=w1*x(a)-yw1; out=logsig(net1);

%net1为cells*1矩阵

%out为cells*1矩阵

net2=w2*out-yw2; y(a)=net2;

%第a个样本输出即为net2 %输出与期望间的广义误差det2

%广义误差det1

det2=t(a)-y(a);

det1=((det2*(w2)').*out).*(1-out); w1=w1+det1*x(a)*l; w2=w2+(det2*out)'*l; yw1=-det1*l+yw1;

%连接权更新

yw2=-det2*l+yw2; %两层阈值更新 ei=ei+det2^2/2;

%误差平方和

e(i)=ei; end if ei

%学习要求误差小于0.01

%学习次数自加

%逼近曲线

for a=1:n net1=w1*x(a)-yw1;

out=logsig(net1);

net2=w2*out-yw2;

y(a)=net2;

end

subplot(2,1,1);

plot(x,t,x,y);

grid on;

xlabel('x');

ylabel('y=sin(x)');

title('逼近曲线');

%误差曲线

if(counts

count=1:counts;

sum=counts;

else

count=1:times;

sum=times;

end

subplot(2,1,2);

plot(count,e(1:sum));

grid on;

title('误差曲线');

xlabel('迭代次数');

ylabel('均方误差'); %利用上述学习方法输出逼近值 %绘制期望曲线与实际曲线在同一坐标纸上 %分割子图形2

- 21 -


相关文章

  • [机电系统建模与仿真]实验指导书(研究生)
  • < 机电系统建模与仿真> 实 验 指 导 书 王红茹 编 写 适用专业: 机械工程 ____________ ____________ 2015年11月 江苏科技大学机械工程学院 实验一:多闭环直流伺服系统仿真分析 实验学时:2 ...查看


  • 2014可编程控制器
  • 前 言 本实验指导书是根据求是公司开发研制并生产的QSPLC系列可编程控制模拟实验装置的相关实验内容而编写的,适用于西门子PLC. 由于QSPLC系列不同型号的实验装置的结构和面板设计均不相同,因而实验项目也有所区别.本实验指导书在编写时, ...查看


  • 测控系统原理与设计实验指导书
  • 实验一 温控系统设计实验 一.实验要求:利用实验仪上显示电路.键盘或开关电路.A/D.D/A转换电路,模拟空调恒温控制.可 以利用实验仪上的电位器模仿温度变化,制冷和加热可以控制直流电机模仿压缩机或加热器的运行.要求可以用键盘或开关设定恒温 ...查看


  • 运动控制卡应用实验---指导书(201309版本)
  • 机械设计制造及其自动化专业实验 --机电控制实验 运动控制卡应用实验 实验指导书 重庆理工大学 机械工程学院 实践教学及技能培训中心 2014年1月 学生实验守则 1.学生应按照实验教学计划和约定的时间,准时上实验课,不得迟到早退. 2.实 ...查看


  • 蓝宙电子智能创新实验室
  • 智能创新实验室建设方案 芜湖蓝宙电子科技有限公司 -飞思卡尔大学计划官方合作伙伴 版 本:Version 2.0 所 有 者:蓝宙电子 日 期:2014.03.12 目录 一. 二. 实验室介绍 . .................... ...查看


  • 实验四 频域稳定性分析
  • 武汉工程大学自动控制原理实验指导书 实验四 频域稳定性分析 一.实验目的 (1)巩固系统频域稳定性的概念: (2)利用 MA TLAB 绘制 Nyquist 图.Bode 图和 Nichols 图进行频域分析: (3)学习利用 MA TLA ...查看


  • 可编程控制器指导书(三菱)
  • 实验十四 Y/△换接启动的模拟控制 一.实验目的 用PLC 构成Y/△换接启动控制系统 二.实验内容 1.控制要求 按下启动按钮SB1, 电动机运行,U1,V1,W1亮,表示是Y 型启动,2s 后,U1,V1,W1灭,,U2,V2,W2亮表 ...查看


  • D700变频器实验指导书
  • 实验 变频器功能参数设置与操作实训 一.实验目的 了解并掌握变频器面板控制方式与参数的设置 二.变频器面板图 功能参数才有效. 四.实验步骤 1. 设定频率运行(例:在50Hz 状态下运行).操作步骤如下: (1)接通电源,显示监示显示画面 ...查看


  • 生产系统仿真实验实验指导书
  • 生产系统仿真实验 实验指导书 江思定 编写 浙江科技学院经济管理学院管理科学与工程系 2008年7月 生产系统仿真实验指导书 Instruction of production system emulation experiment 一.实 ...查看


  • 3.结果质量控制
  • 第三章结果质量控制 评审准则: 4.5.19 检验检测机构应建立和保持质量控制程序,定期参加能力验证或机构之间比对.通过分析质量控制的数据,当发现偏离预先判据时,应采取有计划的措施来纠正出现的问题,防止出现错误的结果.质量控制应有适当的方法 ...查看


热门内容