当前位置:文档之家› 基于MATLAB的模糊控制系统设计

基于MATLAB的模糊控制系统设计

实验一基于MATLAB的模糊控制系统设计1.1实验内容(1)基于MATLAB图形模糊推理系统设计,小费模糊推理系统;(2)飞机下降速度模糊推理系统设计;(3)水箱液位模糊控制系统设计及仿真运行。

1.2实验步骤1小费模糊推理系统设计(1)在MATLAB的命令窗口输入fuzzy命令,打开模糊逻辑工具箱的图形用户界面窗口,新建一个Madmdani模糊推理系统。

(2)增加一个输入变量,将输入变量命名为service、food,输出变量为tip,这样建立了一个两输入单输出模糊推理系统框架。

(3)设计模糊化模块:双击变量图标打开Membership Fgunction Editor 窗口,分别将两个输入变量的论域均设为[0,10],输出论域为[0,30]。

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

输入变量service划分为三个模糊集:poor、good和excellent,隶属度函数均为高斯函数,参数分别为[1.5 0]、[1,5 5]和[1.5 10];输入变量food划分为两个模糊集:rancid和delicious,隶属度函数均为梯形函数,参数分别为[0 0 1 3]和[7 9 10 10];输出变量tip划分为三个模糊集:cheap、average和generous,隶属度函数均为三角形函数,参数分别为[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)模糊推理参数均使用默认值,通过曲面观察器(Surface Viewer)查看小费模糊推理的输入输出关系曲面。

通过规则观察器(Rule Viewer)查看对具体输入的模糊推理及输出情况,输入各种不同的数据,查看模糊推理情况及输出数据。

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

2.飞机下降速度模糊推理系统设计(1)打开模糊推理逻辑工具箱的图形用户界面,新建一个Sugeno模糊推理系统。

(2)将输入变量命名为height,输出变量为speed,这是一个SISO模糊推理系统。

(3)设计模糊化模块:分别将输入变量的论域设为[0,10],输出论域不用修改。

模糊空间划分:输入变量height分为五个模糊集:mf1(高斯函数[0.5 0])、mf2(π函数[0.754 2.58 3.32 4.64])、mf3(π函数[3.19 4.88 5.81 7.11])、mf4(π函数[6.362 7.9 8.56 9.54])和mf5(S函数[8.664 9.83 ]);输出变量speed分为五个与输入模糊空间对应的线性函数:mf1([0.8 0.2])、 mf2([4.6 -4.5]) 、mf3([10.3 -26])、 mf4 ([16 -64])和mf5([20 -100]).(4)设置模糊规则:打开Rule Editor窗口,通过选择添加五条模糊规则:① if(height is mf1) then (speed is mf1)② if(height is mf2) then (speed is mf2)③ if(height is mf3) then (speed is mf3)④ if(height is mf4) then (speed is mf4)⑤ if(height is mf5) then (speed is mf5)五条的权重均为1.模糊推理参数均使用默认值,通过曲面观察器(Surface Viewer)查看飞机降落速度模糊推理的输入输出关系曲面。

通过规则观察器(Rule Viewer)查看对具体输入的模糊推理及输出情况,输入各种不同的数据,查看模糊推理情况及输出数据。

(6)修改规则、隶属度函数参数,查看曲线的变化,修改参数使输入输出关系曲线拟合二次曲线更好。

3水箱液位模糊控制系统设计及仿真运行(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和delicious,隶属度函数均为高斯函数,参数分别为[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)修改部分模糊推理参数:And采用乘(pord)、Or采用概率或(probor)、Implication采用乘(pord),其余均由默认值,通过曲面观察器(Surface Viewer)查看水箱液位模糊推理的输入输出关系曲面。

通过规则观察器(Rule Viewer)查看对具体输入的模糊推理及输出情况,输入各种不同的数据,查看模糊推理情况及输出数据。

实验三基于MATLAB的神经网络设计3.1实验内容(1)利用MATLAB的神经网络工具箱设计感知器实现线性两分类;(2)利用MATLAB的神经网络工具箱编程设计前馈神经网络逼近平方函数。

3.2实验步骤1.感知器实现线性分类设计(1)问题描述:已知二维平面上的六个样本点(0,0)、(1,1)、(1,3)、(3,1)、(3,3)、(5,5)。

它们的标签(目标值)为:t=[ 0 0 0 1 1 1 ]编程设计感知器,实现样本点的分类。

(2)在MATLAB中新建M文件编程:建立变量保存六个样本的二维输入值、目标值变量保存样本的目标值。

(3)利用newp建立一个两输入单输出的感知器。

(4)利用六个训练样本训练感知器。

(5)显示建立的感知器分类面,用测试样本进行分类测试。

参考程序如下:p=[0 1 1 3 3 5; 0 1 3 1 3 5];t=[0 0 0 1 1 1 ];ptest=[0 1 3 4;3 2 2 1];net=newp(minmax(p),1);[net rt]=train(net,p,t);iw1=net.IW{1}b1=net.b{1}epoch1=tr.epochperf1=tr.perfpause;plotpv(p,t);plotpc(net.iw{1},net.b{1});pause;t2=sim(net,ptest);lotpv(ptest,t2);plotpc(iw1,b1);2设计前馈神经网络逼近平方函数(1)问题描述:设计前馈神经网络在x∈[0,10]区间上逼近函数y=x²(2)在MATLAB中新建M文件编程:产生100个随机训练样本及函数值。

(3)利用newff建立一个两输入单输出两层前馈网络,隐藏五个神经元。

(4)设计训练参数,训练神经网络。

(5)对神经网络进行仿真测试,显示输出曲线。

(6)观察过拟合现象:如果采用50个隐层神经元,测试性能如何?参考程序如下:rand('state',sum(100*clock));p=10*rand(1,100);t=p.^2;Testp=0:0.1:10;net=newff([0 10],[5 1],{'tansig' 'purelin'},'trainlm');net.trainParam.epochs=50;net.trainParam.goal=0.0001;net.trainParam.show=1;net=train(net,p,t);y2=sim(net,p);plot(p,t,'r+',p,y2,'.');pause;y3=sim(net,Testp);plot(TTestp,y3,'k.');。

相关主题