模糊控制详细讲解实例
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、速度控制算法:
首先定义速度偏差-50 km/h ≤e (k )≤50km/h ,-20≤ec (i )= e (k )- e (k-1)≤20,阀值e swith =10km/h
设计思想:油门控制采用增量式PID 控制算法,刹车控制采用模糊控制算法,最后通过选择规则进行选择控制量输入。 选择规则:
e (k )<0 ① e (k )>- e swith and throttlr_1≠0 选择油门控制
② 否则:先将油门控制量置0,再选择刹车控制 0 刹车控制:刹车采用模糊控制算法 1.确定模糊语言变量 e 基本论域取[-50,50],ec 基本论域取[-20,20],刹车控制量输出u 基本论域取[-30,30],这里我将这三个变量按照下面的公式进行离散化: )]2(2[b a x a b n y +--= 其中,],[b a x ∈,n 为离散度。 E 、ec 和u 均取离散度n=3,离散化后得到三个量的语言值论域分别为: E=EC=U={-3,-2,-1,0,1,2,3} 其对应语言值为{ NB,NM,NS,ZO, PS,PM,PB } 2.确定隶属度函数 E/EC 和U 取相同的隶属度函数即: E EC U (,5,1)(,3,2,0)(,3,1,1)u (,2,0,2)(,1,1,3)(,0,2,3)(,1,5)g x trig x trig x trig x trig x trig x g x ∧∧--⎧⎪--⎪ ⎪--⎪ =-⎨⎪-⎪ ⎪⎪ ⎩ 说明:边界选择钟形隶属度函数,中间选用三角形隶属度函数,图像略 实际EC 和E 输入值若超出论域范围,则取相应的端点值。 3.模糊控制规则 由隶属度函数可以得到语言值隶属度(通过图像直接可以看出)如下表: 表1:E/EC 和 3.模糊推理 由模糊规则表3可以知道输入E 与EC 和输出U 的模糊关系,这里我取两个例子做模糊推理如下: if (E is NB) and (EC is NM) then (U is PB) 那么他的模糊关系子矩阵为: 1211U EC E R R R R ⨯⨯= 其中,711)0,,0,5.0,1(0⨯== P R E ,即表1中NB 对应行向量,同理可以得到, 712)0,,0,5.0,1,0(1⨯== P R EC , 711)0,,0,5.0,1(0⨯== P R U 7 72 10000000000005.05.00005.010)0,,0,5.0,1,0()0,,0,5.0,1(⨯⎥⎥⎥⎥⎥⎥⎦⎤ ⎢⎢⎢ ⎢⎢ ⎢⎣⎡=⨯=⨯ T EC E R R 49121)0,,0,5.0,5.0,0,0,0,0,0,5.0,1,0(⨯= EC E R 7 491211000000005.05.00005.0100000 )0,,0,5.0,1()0,,5.0,1,0(⨯⎥⎥⎥⎥⎥ ⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=⨯=⨯= T U EC E R R R if (E is NVB or NB) and (EC is NVB) then (U is PVB) 1112U EC E R R R R ⨯⨯= 结果略 按此法可得到27个关系子矩阵,对所有子矩阵取并集得到模糊关系矩阵如下: )27,,2,1(21 ==i R R R R i 由R 可以得到模拟量输出为: ()U E EC R =⨯ 4.去模糊化 由上面得到的模拟量输出为1×7的模糊向量,每一行的行元素(u (z ij ))对应相应的离散变量z j ,则可通过加权平均法公式解模糊: )21,,2,1() ()(210 21 0 === ∑∑==j i z u z z u u i ij i j ij 从而得到实际刹车控制量的精确值u 。 油门控制: 油门控制采用增量式PID 控制,即: )2()1()2()()()1()(-+---++++-=k e k k e k k k e k k k k u k u d d p d i p 只需要设置p k 、 i k 、d k 三个参数即可输出油门控制量。 二、程序实现及参数调节 clear all %************************模糊算法 %/*********隶属度向量 *****% P0=[1,0.5,0,0,0,0,0];%*********NB P1=[0,1,0.5,0,0,0,0];%*********NM P2=[0,0.5,1,0.5,0,0,0];%*********NS P3=[0,0,0.5,1,0.5,0,0];%*********ZO P4=[0,0,0,0.5,1,0.5,0];%*********PS P5=[0,0,0,0,0.5,1,0];%*********PM P6=[0,0,0,0,0,0.5,1];%*********PB %***********语言值 *****% NB=-3;NM=-2;NS=-1;ZO=0;PS=1;PM=2;PB=3; %/*********模糊规则表*****% Pg=[PB PB PM PM PS ZO ZO; PB PM PM PS ZO ZO NS; PM PM PS PS ZO NS NS; PM PS PS ZO ZO NS NM; PS PS ZO ZO ZO NS NM; PS ZO ZO ZO NS NM NB; ZO ZO ZO NS NM NM NB]; %/*********根据规则表计算模糊关系矩阵*****% R1_=dikaer(xbing(P0,P1),7,P0,7); R1_=reshape(R1_,1,49);