智能控制课后仿真Word文档下载推荐.docx

上传人:b****1 文档编号:1019961 上传时间:2023-04-30 格式:DOCX 页数:17 大小:716.19KB
下载 相关 举报
智能控制课后仿真Word文档下载推荐.docx_第1页
第1页 / 共17页
智能控制课后仿真Word文档下载推荐.docx_第2页
第2页 / 共17页
智能控制课后仿真Word文档下载推荐.docx_第3页
第3页 / 共17页
智能控制课后仿真Word文档下载推荐.docx_第4页
第4页 / 共17页
智能控制课后仿真Word文档下载推荐.docx_第5页
第5页 / 共17页
智能控制课后仿真Word文档下载推荐.docx_第6页
第6页 / 共17页
智能控制课后仿真Word文档下载推荐.docx_第7页
第7页 / 共17页
智能控制课后仿真Word文档下载推荐.docx_第8页
第8页 / 共17页
智能控制课后仿真Word文档下载推荐.docx_第9页
第9页 / 共17页
智能控制课后仿真Word文档下载推荐.docx_第10页
第10页 / 共17页
智能控制课后仿真Word文档下载推荐.docx_第11页
第11页 / 共17页
智能控制课后仿真Word文档下载推荐.docx_第12页
第12页 / 共17页
智能控制课后仿真Word文档下载推荐.docx_第13页
第13页 / 共17页
智能控制课后仿真Word文档下载推荐.docx_第14页
第14页 / 共17页
智能控制课后仿真Word文档下载推荐.docx_第15页
第15页 / 共17页
智能控制课后仿真Word文档下载推荐.docx_第16页
第16页 / 共17页
智能控制课后仿真Word文档下载推荐.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

智能控制课后仿真Word文档下载推荐.docx

《智能控制课后仿真Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《智能控制课后仿真Word文档下载推荐.docx(17页珍藏版)》请在冰点文库上搜索。

智能控制课后仿真Word文档下载推荐.docx

y_1=0;

y_2=0;

%设定初值,y_1是第(k-1)步系统对象输出量

x=[0,0,0]'

;

%设定误差x1误差导数x2误差积分x3变量初值

x2_1=0;

%设定误差导数x2_1的初值

kp=0.6;

%设定比例环节系数

ki=0.03;

%设定积分环节系数

kd=0.01;

%设定微分环节系数

error_1=0;

%设定误差error_1的初值

fork=1:

1:

5000%for循环开始,k从1变化到500,每步的增量为1

time(k)=k*ts;

%仿真时长[0.0010.5]s

r(k)=1.0;

%TracingStepSignal系统输入信号

u(k)=kp*x

(1)+kd*x

(2)+ki*x(3);

%PIDControllerPID控制器

%Expertcontrolrule

%Rule1:

Unclosedcontrolrule规则1:

开环控制

ifabs(x

(1))>

0.8%if循环开始,产生式规则,if...then...;

误差的绝对值大于

u(k)=0.45;

%控制器输出量等于

elseifabs(x

(1))>

0.40

u(k)=0.40;

0.20

u(k)=0.12;

0.01

u(k)=0.10;

end%if循环结束

%Rule2规则2

ifx

(1)*x

(2)>

0|(x

(2)==0)%if循环开始,如果误差增大或不变

=0.05%内嵌if循环开始,如果误差绝对值大于

u(k)=u_1+2*kp*x

(1);

%控制器输出量施加较强控制

else%否则

u(k)=u_1+0.4*kp*x

(1);

%控制器输出量施加一般控制

end%内嵌if循环结束

%Rule3规则3

if(x

(1)*x

(2)<

0&

x

(2)*x2_1>

0)|(x

(1)==0)%if循环开始,如果误差减小或消除

u(k)=u(k);

%控制器输出量不变

%Rule4规则4

ifx

(1)*x

(2)<

x

(2)*x2_1<

0%if循环开始,如果误差处于极值状态

u(k)=u_1+2*kp*error_1;

u(k)=u_1+0.6*kp*error_1;

%Rule5:

IntegrationseparationPIcontrol规则5;

运用PI控制来消除误差

ifabs(x

(1))<

=0.001%if循环开始如果误差绝对值小于(很小)

u(k)=0.5*x

(1)+0.010*x(3);

%控制器输出量用比例和积分输出

%Restrictingtheoutputofcontroller对控制输出设限

ifu(k)>

=10

u(k)=10;

%设控制器输出量上限值

end

ifu(k)<

=-10

u(k)=-10;

%设控制器输出量下限值

%LinearmodelZ变化后系统的线性模型

y(k)=-den

(2)*y_1-den(3)*y_2+num

(1)*u(k)+num

(2)*u_1+num(3)*u_2;

error(k)=r(k)-y(k);

%系统误差error的表达式,等于系统输入减去输出

%--------Returnofparameters--------%每步计算时的参数更新

u_2=u_1;

u_1=u(k);

%u(k)代替u_1

y_2=y_1;

y_1=y(k);

%y(k)代替y_1

x

(1)=error(k);

%CalculatingP赋误差error值于x1

x2_1=x

(2);

%赋值前步计算时的误差导数X2的值等于X2_1

x

(2)=(error(k)-error_1)/ts;

%CalculatingD求误差导数x2,用于下一步的计算

x(3)=x(3)+error(k)*ts;

%CalculatingI求误差积分x3

error_1=error(k);

%赋误差error值于error_1

end%for循环结束,整个仿真时长计算全部结束

figure

(1);

%图形1

plot(time,r,'

b'

time,y,'

r'

%画图,以时间为横坐标,分别画出系统输入、输出随时间的变化曲线

xlabel('

time(s)'

ylabel('

r,y'

%标注坐标

figure

(2);

%图形2

plot(time,r-y,'

%画r-y,即误差随时间的变化曲线

error'

专家PID控制MATLAB仿真程序过程及结果:

1.在MATLAB编辑环境下编写专家PID控制仿真程序

2.编译运行程序后

Figure1:

PID控制阶跃响应曲线

Figure2:

误差响应随时间变化曲线

题目3-4:

如果

,则

现已知

,利用模糊推理公式(3.27)和(3.28)求

,并采用MATLAB进行仿真。

模糊推理MATLAB仿真程序清单:

%关闭所有界面图形?

A=[1;

0.5];

%输入各元素在A中的隶属度

B=[0.1,0.5,1];

%输入各元素在B中的隶属度

C=[0.2,1];

%输入各元素在C中的隶属度

%CompoundofAandB%合成A和B

fori=1:

2%A矩阵的行数取值i

forj=1:

3%B矩阵的列数取值j

AB(i,j)=min(A(i),B(j));

%实现A,B的“与”关系

end

%TransfertoColumn%转换列向量

T1=[];

%定义转置矩阵T1

2%AB矩阵的行数取值i

T1=[T1;

AB(i,:

)'

];

%转置AB矩阵

%GetfuzzyR%确立模糊关系矩阵R

6%R矩阵列数取值i

2%R矩阵行数取值j

R(i,j)=min(T1(i),C(j));

%确定模糊关系矩阵R

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

A1=[0.8,0.1];

%输入各元素在A1中的隶属度

B1=[0.5,0.2,0];

%输入各元素在B1中的隶属度

2%A1矩阵的行数取值i

3%B1矩阵的行数取值j

AB1(i,j)=min(A1(i),B1(j));

%实现A1和B1的“与”关系

%TransfertoRow%转换行向量

T2=[];

%定义转置矩阵T2

2%AB1矩阵的行数取值i

T2=[T2,AB1(i,:

)];

%扩展A1B1矩阵

%GetoutputC1%确定输出

6%转置矩阵T2列数取值

2%模糊矩阵R行数取值

D(i,j)=min(T2(i),R(i,j));

C1(j)=max(D(:

j));

%输出C1矩阵

模糊推理MATLAB仿真程序过程及结果:

1.在MATLAB编辑环境下编写模糊推理仿真程序

AB与关系:

转置矩阵T1:

模糊矩阵R:

A1B1与关系:

转置矩阵T2:

输出矩阵C1:

题目4-3:

已知某一炉温控制系统,要求温度保持在600℃恒定。

针对该控制系统有以下控制经验:

(1)若炉温低于600℃,则升压;

低得越多升压越高。

(2)若炉温高于600℃,则降压;

高得越多降压越低。

(3)若炉温等于600℃,则保持电压不变。

设模糊控制器为一维控制器,输入语言变量为误差,输出为控制电压。

输入、输出变量的量化等级为7级,取5个模糊集。

试设计隶属度函数误差变化划分表、控制电压变化划分表和模糊控制规则表。

解:

输入(e)以及输出(u)分为5个模糊集:

NB、NS、ZO、PS、PB。

输入变量(e)以及输出变量(u)分为7个等级:

-3、-2、-1、0、+1、+2、+3。

炉温变化e划分表

隶属度

变化等级

-3

-2

-1

1

2

3

PB

0.5

PS

ZO

NS

NB

控制电压变化划分表

模糊控制规则表

若(IF)

NBe

NSe

ZOe

PSe

PBe

则(THEN)

NBu

NSu

ZOu

PSu

PBu

炉温模糊控制MATLAB仿真程序清单:

%FuzzyControlforfurnacetemperature

a=newfis('

fuzz_temperature'

%模糊炉温

a=addvar(a,'

input'

'

e'

[-3,3]);

%Parametere输入参数e的取值范围

a=addmf(a,'

1,'

NB'

zmf'

[-3,-1]);

NS'

trimf'

[-3,-1,1]);

Z'

[-2,0,2]);

PS'

[-1,1,3]);

PB'

smf'

[1,3]);

output'

u'

%Parameteru输出参数u的取值范围

[-3,-2,1]);

[-1,2,3]);

rulelist=[1111;

%Edit?

rule?

base编辑规则库

2211;

3311;

4411;

5511];

a=addrule(a,rulelist);

a1=setfis(a,'

DefuzzMethod'

mom'

%Defuzzy

writefis(a1,'

temperature'

%Savetofuzzyfile"

temperature.fis"

保存模糊文件"

a2=readfis('

plotfis(a2);

%画图

plotmf(a,'

1);

figure(3);

%图形3

flag=1;

%设标志位1

ifflag==1%如果标志位为1

showrule(a)%Showfuzzyrulebase显示模糊规则库

ruleview('

%DynamicSimulation动态模拟

end%结束

disp('

-------------------------------------------------------'

fuzzy?

controller?

table:

e=[-3,+3],u=[-3,+3]'

7

e(i)=i-4;

Ulist(i)=evalfis([e(i)],a2);

Ulist=round(Ulist)

e=-3;

%Error出错

u=evalfis([e],a2)%Usingfuzzyinference利用模糊推理

炉温模糊控制MATLAB仿真程序过程及结果:

1.在MATLAB编辑环境下编写炉温模糊控制仿真程序

Figure3:

炉温规则查看器:

调整输入变量可得到不同的输出

仿真心得:

通过这次课后仿真,让我对专家控制、模糊控制有了更进一步的理解,同时也对MATLAB这个重要的专业工具的使用更加熟练。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2