您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 2015年西华大学智能控制实验指导书
智能控制技术基础实验指导书西华大学王富治编西华大学机械工程与自动化学院实验一:模糊推理仿真与模糊PID控制器设计一、实验目的:1、掌握Matlab模糊工具箱的应用。2、掌握基本模糊推理系统编辑器的应用。3、掌握Simulink模糊控制系统仿真方法。4、掌握控制系统的模糊控制器设计方法。二、实验设备1、PC机2、Matlab软件三、实验内容完成教材p.61之4-4的上机内容。四、实验步骤:1、参考如下simulink仿真程序,完成教材p.60之4-4(1)。说明:1)PIDcontroller模块可通过如下方法得到:直接从现成的MATLAB例子中复制PIDcontroller,可在MATLAB命令窗口输入sltank,其中就有一个PIDcontroller,直接复制即可;2)延时环节可用TransportDelay,延时环节e-0.5s串联;3)修改PIDcontroller的参数,记录输出波形,起码记录2组。2、根据教材上matlab程序chap4_2,以及如下simulink程序,完成教材p.60之4-4(2)。说明:1)参考chap4_2.m,根据如下控制规则表,完成常规模糊控制器设计(修改chap4_2程序),其他不变,修改后程序运行后生成一名为“fuzzf.fis”文件2)注意教材P.64的语句:a2=readfis(‘fuzzf’);3)双击simulink图的“Fuzzylogiccontroller”,输入a2.4)运行simulink程序,记录仿真结果3、对教材4-4(3),参考教材程序Fuzzy_PID.m其中PID调整规则可参考教材P.48的整定规则。注:带延时环节的传递函数格式为:Sys=tf([],[],’inputdelay”,#);五、思考题:1、说明仿真程序中如下函数的意义:Addvaraddmf,addrule,setfis等函数的作用;2、分析rulelist矩阵各行各列的含义,并以其中某一行为例(比如:12111),说明其表达了什么控制规则?3、画出模糊自适应PID原理框图,并说明模糊自适应整定PID控制的基本原理。实验二BP网络实验一实验目的:1、掌握Matlab神经网络工具箱的应用。2、了解基本BP算法;3、认识多层前馈神经网络的函数逼近能力;4、了解BP网络在PID参数整定中的作用。二、实验设备1、PC机2、Matlab软件三实验内容1、参考教材程序chap7_1,完成教材p.142之7-2之利用BP网络来进行非线性逼近:y(k)=(u(k-1)-0.9y(k-1))/(1+y(k-1)2)。设计Matlab程序,给出基于BP网络函数逼近的实验结果2参考教材程序chap7_2,完成教材p.141之7-1之利用BP网络来进行模式识别。四思考题:1)当BP网络用于函数逼近时,输出层神经元的数目为多少?输入层神经元的数目又为多少?2)推导BP网络权值学习过程,理解并记忆。实验三基于遗传算法的函数优化实验。一实验目的:1、掌握Matlab遗传算法工具箱的应用。2、了解基本遗传算法;3、了解遗传算法在函数优化中的应用。二、实验设备1、PC机2、Matlab软件三实验内容1、遗传算法工具箱介绍。见附录。2、根据遗传算法工具箱,求取如下函数的极值。max()21.5sin(4)3.012.1fxxxx对x要求精确到小数点后4位。要求,改变最大遗传代数,记录每次遗传迭代后的结果。MATLAB遗传算法工具箱——gatbx1工具箱的安装:将gatbx遗传算法工具箱导入到matlab的搜索路径中。2gatbx常用函数说明1.函数bs2rvphen=bs2rv(chrom,fieldD)根据译码矩阵fieldD将二进制串矩阵chorm转换成实值向量,返回矩阵包含对应的种群表现型。fieldD=[len;lb;ub;code;scale;lbin;ubin]len:指明chorm中每个变量(基因)的二进制编码的长度,满足sum(len)==size(chorm,2)lb和ub:分别指明每个变量使用的上下边界code:指明每个变量的编码方式,1为标准二进制编码,0为格雷编码scale:指明每个变量的是否使用对数或算术刻度,1是对数刻度,0为算术刻度lbin和ubin:指明表示范围总是否包含每个边界,1表示包含,0不包含比如:fieldD=[5697%len0-5-19%lb1001020%ub0111%code0101%scale1110%lbin0100]%ubin表示chrom的每个个体(染色体)的编码规则为:共有4个变量(即每个染色体有4个基因),第1个基因体是使用5位标准二进制编码,上下边界为[010],只包含上边界的算术刻度第2个基因体是使用6位格雷二进制编码,上下边界为[-50],包含上下边界的对数刻度2.crtbasebasevec=crtbase(lind,base)产生向量的元素对应染色体每个基因的基数(每个变量的范围)lind:每个染色体的基因(变量)个数,sum(lind)==变量个数,且length(lind)=length(base)base:对应每个基因的基数比如:basevec=crtbase([2342],[1020158])结果为:basevec=[10102020201515151588]上面表示创建有2+3+4+2=11个基因(变量)的染色体(个体)前两的变量的取值为0-9,接着三个0-19,还有四个0-14,最后两个0-7由上面可以看出basevec其实可使用matlab的其它简单命令创建,因此很少用到它,一般使用rep。再强调一下,简单一点说basevec其实就是每个变量的基数(取值范围)3.crtbp[newchrom,newlind,newbasevec]=crtbp(nind,lind,basevec)创建离散随机初始种群,经常和crtbase一起使用basevec:其实就是上面创建的basevec向量nind:种群中染色体(个体)的数量lind:变量的个数,即lind=length(basevec)注意在basevec给出时,lind可以省略,但要是basevec没有给出,则lind必须给,此时默认创建取值为0-1的种群比如:basevec=crtbase([3,2],[8,5])chrom1=crtbp(3,5)%创建一个有3个个体,5个变量的初始种群chrom2=crtbp(4,5,basevec)%4*5的种群,等效chrom2=crtbp(4,basevec)结果为:basevec=[88855]chrom1=[010001101010110]chrom2=[65704713423710466443]----------------------------------------前三个函数一般只是在离散编码中使用----------------------------------------------4.crtrpchrom=crtrp(nind,fieldDR)创建由任意个体组成的实值随机原始种群nind:种群中个体数量fieldDR:是一个2*nvar的二维矩阵,表示每个变量的取值上下限比如:创建一个含有3个个体,4个变量的随机种群fieldDR=[-100-50-30-20100503020];chrom=crtrp(3,fieldDR)chrom=[40.23-17.1728.0015.3882.2613.2518.52-9.09-90.20-13.257.899.25]5.migrate[chrom,objv]=migrate(chrom,subpop,migopt,objv)完成当前种群的子种群间的迁移,并返回迁移后的种群subpop:子种群的数量migopt:migopt(1)个体迁移率,默认0.2migopt(2)迁移方式,0为均匀迁移,1为适应度的迁移,默认0migopt(3)迁移种群结构,0为完全网状,1为临近结构,2为环状,默认0objv:为目标函数值列向量,当migopt(2)=1是必须给出6.mutatenewchorm=mutate(mutfun,oldchrom,fieldDR,mutopt,sunbpop)执行种群变异mutfun:变异函数fieldDR:变量的取值范围,实值型时为2*nvar的二维矩阵,离散型时为1*nvar向量mutopt:mutopt(1)变异率,实值型默认1/nvar,离散型默认0.7/lindmutopt(2)压缩变异的范围,取值范围为[01],默认1(不可压缩),注意当为离散型时不需要给出7.rankingfinnv=ranking(objv,rfun,subpop)按照个体的目标值objv由小到大的顺序对它们进行排序,并返回一包含个体适应度值的fitnv的列向量rfun:rfun(2)指定排序方法,0为线性,1为非线性,默认0rfun(1)指定压差,当rfun(2)=0时,取值为[12],默认为2,当rfun(2)=1时,取值为[1length(objv)-2]另外还可以length(objv)=length(rfun),此时它则包含对每一行的适应度值计算至于scaling一般使用很少,这里就不介绍了8.recombinnewchrom=recombine(recfun,oldchrom,recopt,subpop)执行基因重组recfun:变异函数recopt:重组交叉率9.reins[newchrom,newobjvch]=reins(chrom,selch,subpop,insopt,objvch,objvsel)完成插入子代到当前种群,用子代代替父代并返回结构种群,本函数属于选择函数,但是为了恢复种群数量,必须要有,它没有与select重复oldchrom:父代种群selch:子代种群insopt:insopt(1)指明选择方法,0为均匀选择,1为基于适应度的选择insopt(2)重插入的比率,在[01],默认1objvch:是chrom的目标值(基于适应度的选择,该参数必须有)objvsel:是selch中个体目标值(基于适应度的选择,该参数必须有)10.selectselch=select(selfun,chrom,fitnv,ggap,subpop)从种群chrom中选择优良个体selfun:选择函数fitnv:列向量,chrom的个体适应度值ggap:代沟率,默认1.0计算目标函数---选择---重组(交叉)---变异---计算目标函数---重插入目标函数共有20个变量,边界均为[0512],我们生成500个个体nind=500;nvar=20;lb=0;ub=521;使用二进制编码,每个使用20位二进制表示preci=20;fieldD=rep([preci;lb;ub;1;0;1;1],[1,nvar]);chorm=crtbp(nind,nvar*preci)objv=objfun(bs2rv(chrom,fieldD))使用实值编码fieldDR=rep([lb;ub],[1,nvar]);chorm=crtrp(nind,fieldDR);objv=objfun(chrom)创建整数编码basevec=crtbase(nvar,ub+1);%或者使用%basevec=rep(ub+1,[1,nvar]);chrom=crtbp(nind,basevec);objv=objfun(chrom)二、遗传算法应用举例:下面通过具体的例子,介绍如何利用遗传算法工具箱中的相关函数编写MATLAB程序,解决实际问题。例一元函数优化问题计算下面函数的最大值:()sin(10)2.0[1,2]fxxxx下面为一元函数优化问题的MATLAB代码:figure(1);fplot('variable.*sin(10*pi*variable)+2.0',[-1,2]);%画出函数曲线%定义遗传算法参
本文标题:2015年西华大学智能控制实验指导书
链接地址:https://www.777doc.com/doc-2914565 .html