您好,欢迎来到小侦探旅游网。
搜索
您的当前位置:首页智能控制作业

智能控制作业

来源:小侦探旅游网
实验一:模糊控制在MATLAB中的实现

一、实验要求

4.228假定被控对象的传递函数为:G 2s0.5s21.s8.456

设计一模糊控制器,查看其阶跃响应。

二、实验原理

1、根据系统实际情况,选择e,de和u的论域

e range : [-1 1] de range: [-0.1 0.1] u range: [0 2]

2、e,de和u语言变量的选取

e 7个:NB,NM,NS,NZ,PZ,PS,PM,PB de 7个:NB,NM,NS,Z,PS,PM,PB U 7个:NB,NM,NS,Z,PS,PM,PB

3、模糊规则确定

4、隐含和推理方法的制定

隐含采用mamdani方法: max-min 推理方法:min

去模糊方法:重心法。

选择隶属函数的形式:三角型

三、实验步骤

1、在命令窗口中键入fuzzy,然后回车,出现如下图所示的画面

2、增加输入变量:edit---add variable----input,修改对应名称

2

3、修改各变量参数:双击e,修改属性:remove all MFs---add MFs

4、添加模糊规则

3

可以用view rules菜单命令查看模糊控制器的规则:

也可以用view surf 菜单命令查看模糊控制器的输出量

5、保存文件,命名为mhkz.fis,并导出到工作空间: file---export---to workspace

4

6、仿真

1)在MATLAB输入simulink,新建mdl文件,拖入要使用的仪器:

2)连接仿真电路,并修改相应参数:

3)仿真结果显示:

5

系统输出:

误差及其变化率:

模糊控制器输出:

6

实验二:BP算法实现函数拟合

一、 实验要求

设计BP网络对y=x^2进行拟合

二、 实验原理

BP算法的基本思想是,学习过程由信号的正向传播与误差的反向传播两个过程组成。正向传播时,输入样本从输入层传人,经各隐层逐层处理后,传向输出层。若输出层的实际输出与期望的输出(教师信号)不符,则转入误差的反向传播阶段。误差反传是将输出误差以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此误差信号即作为修正各单元权值的依据。这种信号正向传播与误差反向传播的各层权值调整过程,是周而复始地进行的。权值不断调整的过程,也就是网络的学习训练过程。此过程一直进行到网络输出的误差减少到可接受的程度,或进行到预先设定的学习次数为止。

三层BP网络拓扑结构:

7

8

BP算法实现步骤:

1)初始化

2)输入训练样本对,计算各层输出 3)计算网络输出误差

4)计算各层误差信号 5)调整各层权值

6)检查是否对所有样本完成一次轮训

7)检查网络总误差是否达到精度要求满足,满足则训练结束;不满足,则返回步骤2)

9

三、 实验过程

(一) 基于matlab的BP算法编程如下:(采用二级网络)

%BP网络(自适应调节学习率) tic%记录运行时间 clear

h=10; %隐层数量 v=rand(1,h); %隐层权矩阵 w=rand(h,1); %输出层权矩阵 wo=rand(1,1); %初始化阈值 vo=rand(1,h);

a=0.9; %初始学习率 pre=0.005; %精度控制 loop=50000; %最大循环次数 n=50; %样本数量 delta=2/n;%步长

x=zeros(1,n); %输入初始化 y=zeros(1,n); %期望输出初始化 yout=zeros(1,n); %拟合输出初始化 yhid=zeros(1,h); %隐层输出初始化 count=1; %循环次数

er2=0;aa=1.05;bb=0.95;%改进:自适应调节学习率 %训练

while countx(p)=(p-1)*delta-1; y(p)=x(p)^2;

yhid=zeros(1,h); %隐层输出 for j=1:h

net_j=v(1,j)*x(p)-vo(1,j);

yhid(1,j)=1/(1+exp(-net_j)); end

net=yhid*w-wo;

o=1/(1+exp(-net));yout(p)=o; %系统输出 e=0.5*(y(p)-o).^2 ; %输出误差 sum=sum+e;

errout=(y(p)-o)*(1-o)*o; %输出层误差信号 errhid=zeros(1,h); for j=1:h

errhid(1,j)=w(j,1)*errout*(1-yhid(1,j))*yhid(1,j); %隐层误差信号 end

10

for j=1:h

w(j,1)=w(j,1)+a*errout*yhid(1,j); %输出层权值调整 end

wo=wo-a*errout; for j=1:h

v(1,j)=v(1,j)+a*errhid(1,j)*x(p); %隐层权值调整 vo(1,j)=vo(1,j)-a*errhid(1,j); end end

Erme=sqrt(sum/n);%网络输出误差 if Erme>er2 a=a*bb; else a=a*aa; end er2=Erme; if Erme

count=count+1; end

m=-1:0.01:1; n=m.^2;

plot(m,n,x,yout,'o');title('y=x^2(实线为真实值,o为预测值)'); disp('训练总次数:');disp(count); disp('调整后v矩阵为');disp(v); disp('调整后vo矩阵为');disp(vo); disp('调整后w矩阵为');disp(w) ; disp('调整后wo矩阵为');disp(wo); disp('误差为:');disp( Erme); toc

结果如下:

训练总次数:9119 调整后v矩阵为

[0.9669 4.1590 4.3175 0.3756 9.84 -11.6092 0.2308 0. 4.9600 -11.7960] 调整后vo矩阵为

[0.3161 -2.1235 0.6143 1.4462 10.8663 1.83 1.6958 1.8756 -2.5236 12.9151] 调整后w矩阵为

[-0.0657 -2.4265 9.29 -0.1743 10.6686 4.5318 -0.2691 0.3957 -3.0933 10.5088] 调整后wo矩阵为 3.2323 误差为:0.0050

Elapsed time is 20.810410 seconds.

11

y=x2(实线为真实值,o为拟合值)10.90.80.70.60.50.40.30.20.10-1-0.8-0.6-0.4-0.200.20.40.60.81

实验分析:修改隐层节点数,运行结果相关数据如下:

隐层节点数 训练总次数 运行时间/秒 误差 5 6 7 8 9 10 15 50000 15373 10207 19792 10440 9936 13747 86.519260 26.507811 18.048257 35.341025 19.008462 20.287849 25.993279 0.0057 0.0050 0.0050 0.0050 0.0050 0.0050 0.0050 可以看出,从运行时间和误差两方面考率,隐层节点数选择7为最佳。

12

(二) 基于matlab神经网络工具箱编程如下:

结果如下:训练8次达到要求精度9.e-06

y=x2(其中实现为真实值,o为拟合值)10.90.80.70.60.50.40.30.20.10-1-0.8-0.6-0.4-0.200.20.40.60.8113

14

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- xiaozhentang.com 版权所有 湘ICP备2023022495号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务