智能控制技术

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

一、实验目的

熟悉模糊控制器的设计,并且掌握神经网络模型。

二、实验内容

1 已知系统的传递函数为G(s)=e-/(10s+1)。假设系统给定为阶跃值r=30,系统初始值

r(0)=0。试分别设计

(1)常规的PID 控制器;

(2)常规的模糊控制器;

(3)比较两种控制器的效果;

(4)当通过改变模糊控制器的比例因子时,系统响应有什么变化

2 编写一个利用前向传播神经网络进行字符设别的程序。设神经网络为具有一个隐含层的BP 网络,需设别的字符有三个A、I 和O,其输入为4╳4 个像素的扫描输入。

目标输出分别为A=(1,-1,-1),I=(-1,1,1),O=(-1,-1,1)。网络为16 个输入节点、3 个输出节点、9 个隐含层节点。利用所编程序完成训练后,在输入样本为X=

(1,1,1,1,1,-1,-1,1,1,1,1,1,1,1,-1,1)时,求网络输出值。

三、实验内容以及结果分析

1 (1)常规PID控制器:

利用Ziegler-Nichols整定公式整定PID调节器的初始参数

由公式可得

P=18

Ti=

Td=0

SIMULINK仿真图

设定仿真时间为10s

仿真结果

(2)模糊控制器的设定

1 在matlab命令窗口输入“fuzzy”确定模糊控制器结构:即根据具体的系统确定输入、输出量。选取二维控制结构,即输入为误差e和误差变化ec,输出为u如下图所示

2 输入输出变量的模糊化:即把输入输出的精确量转化为对应语言变量的模糊集合。首先我们要确定描述输入输出变量语言值的模糊子集,如{NB,NM,NS,ZO,PS,PM,PB},并设置输入输出变量的论域,然后我们为模糊语言变量选取相应的隶属度函数。如下图所示

3 模糊推理决策算法设计:即根据模糊控制规则进行模糊推理,并决策出模糊输出量。首先要确定模糊规则,即专家经验。如图。

制定完之后,会形成一个模糊控制规则矩阵,然后根据模糊输入量按照相应的模糊推理算法完成计算,并决策出模糊输出量。

4.对输出模糊量的解模糊:模糊控制器的输出量是一个模糊集合,通过反模糊化方法判决出一个确切的精确量,反模糊化方法很多,我们这里选取重心法。

SIMULINK仿真图

在模糊控制器的输入和输出均有一个比例系数,我们叫它量化因子,它反映的是模糊论域范围与实际范围之间的比例关系,这里模糊控制器输入的论域范围均为[-6,6],假设误差的范围是[-10,10],误差变化率范围是[-100,100],控制量的范围是[-24,24],那么我们就可以算出量化因子分别为,,8。量化因子的选取对于模糊控制器的控制效果有很大的影响,当输出量化因子调为10控制效果更好。

仿真曲线

(3)常规PID控制器和模糊控制器的比较

由仿真结果可见两种控制器对系统的各项性能指标都有了改进,常规PID还是有超调量,模糊控制器的超调量几乎为零。

2 以下程序:

A=[1 1 1 1;1 -1 -1 1;1 1 1 1;1 -1 -1 1];

I=[-1 1 -1 -1;-1 1 -1 -1;-1 1 -1 -1;-1 1 -1 -1];

O=[1 1 1 1;1 -1 -1 1;1 -1 -1 1;1 1 1 1];

X2=[1 1 1 1 1 -1 -1 1 1 1 1 1 1 1 -1 1]';

X=[A(:) I(:) O(:)];

T0=[1;-1;-1];

T1=[-1;1;1];

T2=[-1;-1;1];

T=[T0 T1 T2];

[R N1]=size(X);

[S2 N1]=size(T);

S1=10;

net=newff(minmax(X), [S1 S2], {'tansig', 'tansig'}, 'traingdx'); w={2,1};

b={1};

b={2};

y1=sim(net,X);

='sse';

[net,tr]=train(net,X,T);

w={2,1};

b={1};

b={2};

y2=sim(net,X);

net1=net;

T1=[T T T T];

for i=1:10

X1=[X X (X+randn(R,N1)* (X+randn(R,N1)*]; [net1,tr]=train(net1,X1,T1)

end

y3=sim(net1,X);

[net1,tr]=train(net1,X,T);

w={2,1};

b={1};

b={2};

y5=sim(net,X2)

程序执行结果输出

y5 =

则为网络输出值。

相关文档
最新文档