智能控制理论及应用(实验指导书)实验一模糊控制的理论基础实验实验目的:学习隶属函数编程;模糊矩阵合成运算编程;模糊推理运算编程。
1隶属函数编程学习P39 例2-12 (以下为例程)完成思考题P80 2-2 写出W及V两个模糊集的隶属函数,并绘出“非常老,很老,比较老,有点老”的四个隶属度函数仿真后的曲线。
%Membership function for old Peopleclear all;close all;for k=1:1:1001x(k)=(k-1)*0.10;if x(k)>=0&x(k)<50y(k)=0;elsey(k)=1/(1+(1/((x(k)-50)/5)^2));endendplot(x,y,'k');xlabel('X Years');ylabel('Degree of membership');2 模糊矩阵合成仿真程序学习P31例2-10,仿真程序如下。
完成思考题P81 2-5,并对比手算结果。
clear all;close all;A=[0.2,0.8;0.6,0.1];B=[0.5,0.7;0.1,0];%Compound of A and Bfor i=1:2for j=1:2AB(i,j)=max(min(A(i,:),B(:,j)'))endend3 模糊推理仿真程序学习P47 例2-16,仿真程序如下。
完成思考题2-9,并对比手算结果。
clear allclose alla=[1;0.5]b=[0.1;0.5;1]c=[0.2;1]for i=1:2for j=1:3ab(i,j)=min(a(i),b(j));%求出Dendendt1=[];for i=1:2t1=[t1;ab(i,:)'];end%准备好DT;for i=1:6for j=1:2r(i,j)=min(t1(i),c(j));endend%求出Ra1=[0.8;0.1]b1=[0.5;0.2;0]for i=1:2for j=1:3ab1(i,j)=min(a1(i),b1(j)); %求出D1 endendt2=[];for i=1:2t2=[t2;ab1(i,:)'];endfor i=1:6for j=1:2d(i,j)=min(t2(i),r(i,j));c1(j)=max(d(:,j));endend实验二 自动小车沿直线行进模糊控制系统仿真矿区除尘一直是煤矿生产的重要工作,这既是生产环境的要求也是对工作人员身体健康的保证。
采用自动行进的洒水车进行除尘工作是矿区除尘的主要发展方向。
模糊控制技术对于不确定系统具有良好的控制效果,所以引入模糊控制算法对矿区洒水车进行自动控制是解决道路凹凸影响的有效途径。
洒水车行进轨迹一定的时候,洒水车相对预定轨迹的误差如图1所示。
可以取其中两个量表示误差。
一个是洒水车行进方向与预定轨迹的夹角θ,一个是洒水车中心点到预定轨迹的距离d 。
显然,当洒水车平稳行进的时候夹角θ和距离d 将一直保持为0。
但是当路面凹凸不平时,洒水车在行进路线上就会产生一定的偏移。
对洒水车的控制就是控制这两个偏移量,使得洒水车在出现偏移后能自动调整方向回到预期轨迹上来。
图1 洒水车行进中的误差1 模糊控制器的设计采用夹角θ和距离d 作为输入,洒水车导向轮与车体偏转角α作为输出量。
以在预定道路右向为正,左向为负。
由于路面不平带来的洒水车偏移一般都不大,设定夹角θ的范围是-6º~6º,距离d 的范围是-1.2m ~1.2m ,偏转角α的范围是-30º~30º,每个变量论域均包括NB 、NM 、NS 、Z 、PS 、PM 、PB 七个模糊子集。
三个变量的隶属度函数如图2所示,模糊控制规则如表1所示。
(a) (b)(c )图2隶属度函数(a)夹角θ (b)距离d (c)偏转角α表1模糊控制规则dNB NM NS Z PS PM PBθNB PB PB PB PB PM PS Z NM PB PB PM PM PS Z Z NS PB PM PM PS Z Z NS Z PM PS PS Z NS NS NM PS PS Z Z NS NM NM NB PM Z Z NS NM NM NB NB PB Z NS NM NB NB NB NB2 仿真程序如下fisb=readfis('fisb'); %从磁盘中加载模糊推理系统函数;kk=1000;ww=0.0001;xx=1:kk;x=zeros(kk,1);yy=x;nowxita=x;x(1)=-0.8;%d的初值nowxita(1)=-6; %xita的初值y=1;step0=0.1;jj=zeros(2,1);while y<kkif abs(x(y))<ww&abs(nowxita(y))<wwalf=0;elsealf=evalfis([x(y) nowxita(y)],fisb) ;endpi0=2*asin(1);if -ww<alf&alf<wwif -ww<nowxita(y)&nowxita(y)<wwx(y+1)=x(y);nowxita(y+1)=nowxita(y);yy(y+1)=yy(y)+step0;elsex(y+1)=step0*cos(pi0*(90-nowxita(y)-alf)/180)+x(y);nowxita(y+1)=nowxita(y)+alf;yy(y+1)=yy(y)+step0*sin(pi0*(90-nowxita(y)-alf)/180);endelsealf0=pi0*alf/180;rr=7.5*tan(pi0*6/180)/tan(alf0);beita=step0*360/(2*pi0*rr);nowxita(y+1)=nowxita(y)+beita;beitaa=beita*pi0/180;xx0=rr*(1-cos(beitaa));yy0=rr*sin(beitaa);rr0=(xx0^2+yy0^2)^0.5;beita0=acos(xx0/rr0);beita0=beita0*180/pi0;beita1=beita0-nowxita(y);beita2=beita1*pi0/180;x(y+1)=x(y)+rr0*cos(beita2);yy(y+1)=yy(y)+rr0*sin(beita2);endy=y+1;if (jj(1)==0)if (abs(x(y))<0.1)jj(1)=yy(y);endendif (jj(2)==0)if (abs(x(y))<0.05)jj(2)=yy(y);endendendfigure(1)plot(yy,x,'r')hold onfigure(2);plot(yy,nowxita);jj表2 不同初始位置仿真结果初始d初始θ0.1m处洒水车行进距离(m)0.05m处洒水车行进距离(m)-0.2 -5º10.4984 17.8982-0.2 5º 4.1980 11.6978-0.6 -4º20.0704 27.5702-0.6 4º14.6869 22.1867-0.8 -6º18.3797 25.7795-0.8 6º16.6772 24.1770-1.0 -1º19.9709 27.4707-1.0 1º19.8710 27.37093 小结针对矿区道路凹凸不平导致洒水车行进产生偏移的现象,提出了除尘洒水车行进模糊控制算法,仿真结果表明该方法对于洒水车突然出现的偏移可在较短距离内自动调整线路,恢复预期行驶路线。
这将为矿区除尘洒水车的行进控制提供理论基础。
实验三神经网络---感知机实验内容:1)看懂《教学辅导材料》中实现“与”功能的程序2)编写能实现“或”功能的感知机程序,要求:a) 给出完整的程序,并对重要的函数及语句给于解释说明,程序中要用语句画出训练误差图,分类图等b) 在实验报告中,画出设计的网络的结构图(几层,几个神经元等),并在图中标出训练好的权值阈值。
附件:(程序)%建立一个感知机网络,使其能够完成“或”的功能%感知机神经网络学习阶段%自编程,没用mat工具箱err_goal=0.001;lr=0.9;max_expoch=10000;X=[0 0 1 1;0 1 0 1];T=[0 1 1 1];[M,N]=size(X);[L,N]=size(T);Wij=rand(L,M);y=0;b=rand(L);for epoch=1:max_expochNETi=Wij*X;for j=1:Nfor i=1:Lif(NETi(i,j)>=b(i))y(i,j)=1;elsey(i,j)=0;endendendE=(T-y);EE=0;for j=1:NEE=EE+abs(E(j));endif(EE<err_goal) break;endWij=Wij+lr*E*X';b=b+sqrt(EE);endepoch,Wij,b%第二阶段工作期,验证网络X1=X;NETi=Wij*X1;[M,N]=size(X1);for j=1:Nfor i=1:Lif(NETi(i,j)>=b(i))y(i,j)=1;elsey(i,j)=0;endendendy%直接利用matlab 工具箱(initp trainp simup)clear allNNTW ARN OFFp=[0 0 1 1 ;0 1 0 1]t=[0 1 1 1][w1,b1]=initp(p,t)[w1,b1,epoches,errors]=trainp(w1,b1,p,t,[-1]);% %%%%%%%%%%%计算完毕figure(2);ploterr(errors)a1=simup(p,w1,b1);%%%%%%中间隐层的输出a1e=t-a1;k=1:1:4;figure(3);plot(k,e)实验四神经网络----双层感知机实验内容:1)用双层感知机实现“异或”功能2)编写程序,设计网络,实现下面功能:四个变量:x1,x2 ,x3 ,x4正常状态:x i(i=1……4)四个变量均正常轻微故障:只有一个变量不正常(故障)严重故障:有任何两个变量不正常禁止使用:任何三个变量不正常设计网络能实现,对任意给定,网络能判断出目前系统处于何种故障状态。