-
精品文档
一、速度控制算法:
首先定义速度偏差
-50 km/h
≤
e
(
k
)
p>
≤
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
(
k
)
先选择刹车控制,再选择油门控制
e
(
k
)
=0
直接跳出选择
刹车控制:
刹车采用模糊控制算法
1.
确定模糊语言变量
e
基本论域取
[-50,50]
ec
基本论域取
[-20,20
]
,
刹车控制量输出
u
基本论
域取
[-30,30]
,这里我将这三个变量按照下面的公式进行离散化:
2
n
a
?
b
y
?
[
(
x
?
)]
b
?
a
2
其中,
x
?
[
a
,
b
]
,
n
为离散度。
E
、
ec
< br>和
u
均取离散度
n=3
,离散化后得到三个量的语言值论域分别为:
E=EC=U={-3,-2,-1,0,1,2,3}
其对应语言值为
{ NB,NM,NS,ZO,
PS,PM,PB }
2.
确定隶属度函数
E/EC
和
U
取相同的隶属度
函数即:
?
g
(
x
,
?
5
,
?
1)
?
t
rig
(
x
,
?
3,
?
2,0)
?
?
trig
(
< br>x
,
?
3,
?
1,1)
?
?
< br>?
trig
(
x
,
?
2,0,
2)
?
trig
(
x
,
?
1,1,3)<
/p>
?
?
trig
(
x
,0,
2,3)
?
g
(
x
,1,5)
?
u
E
?
EC
?
U
说明:边界选择钟形隶属度函数,中间选用三角形隶属度函数,图像略
实际
EC
和
E
输入值若超出论域范围,则取相应的端点值。
3.
模糊控制规则
由隶属度函数可以得到语言值隶属度(通过图像直接可以看出)如下表:
表
1
:
E
/EC
和
U
语言值隶属度向量表
NB
NM
NS
ZO
PS
-3
1
0
0
0
0
-2
-1
0
0
1
0
0
2
0
0
0
3
0
0
0
0
P0
P1
P2
P3
P4
0.5
0
1
0.5
0
0.5
1
0
0
0.5
0
0.5
1
0
0.5
0
0.5
1
0.5
0
。
1
欢迎下载
精品文档
PM
PB
0
0
0
0
0
0
0
0
0.5
1
0
0
P5
P6
0.5
1
设置模糊规则库如下表:
表
2
:模糊规则表
U
E
—
NB
NM
NS
ZO
PS
PM
PB
NB
PB
PB
PM
PM
PS
ZO
ZO
NM
PB
PM
PM
PS
ZO
ZO
NS
NS
PM
PM
PS
PS
ZO
NS
NS
EC
ZO
PM
PS
PS
ZO
ZO
NS
NM
PS
PS
PS
ZO
ZO
ZO
NS
NM
PM
PS
ZO
ZO
ZO
NS
NM
NB
PB
ZO
ZO
ZO
NS*
NM
NM
NB
3.
模糊推理
由模糊规则表
3
可以知道输入
E
p>
与
EC
和输出
U<
/p>
的模糊关系,这里我取两个
例子做模糊推理如下:
if (E is NB) and (EC is NM)
then (U is PB)
那么他的模糊关系子矩阵为:
R
p>
1
?
R
E
1
?
R
EC
2
?
R
U
1
其中,
R
E
1
?
P
0
?
(
1
,
0
.
5
,<
/p>
0
,
?
,
0
)
1
?
7
,
即表
1
中
NB
对应行向量,同理可以得到,
R
EC
2
?
< br>P
1
?
(
0
,
1
,
0
.
5
,
0
p>
,
?
,
0
)
1
?
7
,
R
U
1
?
P
0
?
< br>(
1
,
0
.
5
,
0
,
?
,
0
)
p>
1
?
7
R
E
1
?
R
EC
2
?
0
?
0
?
T
?
(
1
,
0
.
5
,<
/p>
0
,
?
,
0
)
?
(
0
,
1
,
0
.
5
,
0
,
?
,
0
)
?
?
0<
/p>
?
?
?
?
?
0
1
0
.
5
0
?
0
.
5
0
.
5
0
?
0
?
0
0
?<
/p>
0
?
?
0
0
?
0
?
?
?
?
?
?
?
0
0
?
0
?
?
7
?
7
R<
/p>
E
1
EC
2
p>
?
(
0
,
1
,
0
.
5
,
0
,
< br>0
,
0
,
0
,
0
,
0
.
5
,
0
p>
.
5
,
0
,
?
,
0
)
1
?
49
0
0
0
?
0
?
?
0
?
1
0
.<
/p>
5
0
0
?
0
?
?
?
T
R
1
?
R
E
1
EC
< br>2
?
R
U
1
?
(
0
,
1
,
0
.
p>
5
,
?
,
0
)
?
(
1
,
0
.
< br>5
,
0
,
?
,
0
)
?
?
0
.
5
p>
0
.
5
0
0
?
0
?
?
?
?
< br>?
?
?
?
?
?
?
?
0
0
0
?
0
p>
?
?
0
?
49
?
7
if
(E
is
NVB
or
NB) and (EC is NVB) then (U
is PVB)
R
2
?
R
E
1
?
R
EC
1
?
< br>R
U
1
结果略
按此法可得到
27
个关系子矩阵,对所有子矩阵取并集得到模糊关系矩阵如
< br>下:
。
2
欢迎下载
精品文档
R
?
R
1
?
R<
/p>
2
?
?
?
R
i
(
i
?
1
,
2
,
?
,
27
< br>)
由
R
可以得到模拟量输出为:
U
?
p>
(
E
?
EC
)
o
R
4.
去模糊化
由上面得到的模拟量输出为
1
×
7<
/p>
的模糊向量,每一行的行元素(
u
(
p>
z
ij
)
)对
p>
应相应的离散变量
z
j
,则可通过加权平均法公式解模糊:
u
< br>?
?
u
(
z
i
?
0
2
1
i
?
0
21
ij
)
z
j<
/p>
(
i
?
j
?
1
,
2
,
?
,
21
)
ij
?
u
(
z
)
从而得到实际刹车控制量的精确值
u
。
油门控制:
油门控制采用增量
式
PID
控制,即:
u
(
k
)
?
u
(
k
?
1
)
?
(<
/p>
k
p
?
k
i
?
k
d
)
e
(
k
)
?
(
?
k
p
?
2
k
d
)
e
(<
/p>
k
?
1
)
?
k
d
e
(
k
?
2
)
只需要设置
k
p
、
k
i
、
p>
k
d
三个参数即可输出油门控制量。
二、程序实现及参数调节
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
P
3=[0,0,0.5,1,0.5,0,0];%*********ZO
P4=[0,0,0,0.5,1,0.5,0];%*********PS
< br>
P5=[0,0,0,0,0.5,1,0];%*********PM
p>
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];
<
/p>
%/*********
根据规则表计算模糊关系矩阵
*****%
R1_=dikaer(xbin
g(P0,P1),7,P0,7);
R1_=reshape(R1_,1,49);
。
3
欢迎下载
精品文档
R1=dikaer(R1_,49,P6,7);
R2_=dikaer(xbing(P2,P3),7,P0,7);
R2_=reshape(R2_,1,49);
R2=dikaer(R2_,49,P5,7);
R3_=dikaer(P0,7,P1,7);
R3_=reshape(R3_,1,49);
R3=dikaer(R2_,49,P6,7);
R4_=dikaer(xbing(P1,P2),7,P1,7);
R4_=reshape(R4_,1,49);
R4=dikaer(R4_,49,P5,7);
R5_=dikaer(P3,7,P1,7);
R5_=reshape(R5_,1,49);
R5=dikaer(R5_,49,P4,7);
R6_=dikaer(xbing(P0,P1),7,P2,7);
R6_=reshape(R6_,1,49);
R6=dikaer(R6_,49,P5,7);
R7_=dikaer(xbing(P2,P3),7,P2,7);
R7_=reshape(R7_,1,49);
R7=dikaer(R7_,49,P4,7);
R8_=dikaer(P0,7,P3,7);
R8_=reshape(R8_,1,49);
R8=dikaer(R8_,49,P5,7);
R9_=dikaer(xbing(P1,P2),7,P3,7);
R9_=reshape(R9_,1,49);
R9=dikaer(R9_,49,P4,7);
R10_=dikaer(P3,7,P3,7);
R10_=reshape(R10_,1,49);
R10=dikaer(R10_,49,P3,7);
p>
R11_=dikaer(xbing(P0,P1),7,P4,7);
< br>
R11_=reshape(R11_,1,49);
R11=dikaer(R11_,49,P4,7);
P45=xbing(P4,P5);
R12_=dikaer(xbing(P2,P3),7,P45,7);
R12_
=reshape(R12_,1,49);
R12=dikaer(R12_,49,P3,7);
R13_=dikaer(P0,7,P5,7);
R13_=reshape(R13_,1,49);
R13=dikaer(R13_,49,P4,7);
R14_=dikaer(P1,7,P5,7);
R14_=reshape(R14_,1,49);
R14=dikaer(R14_,49,P3,7);
P01=xbing(P0,P1);
R15_=dikaer(xbing(P01,P2),7,P6,7);
R15_
=reshape(R15_,1,49);
4
欢迎下载
。
精品文档
R15=dikaer(R15_,49,P3,7);
R16_=dikaer(P3,7,P6,7);
R16_=reshape(R16_,1,49);
R16=dikaer(R16_,49,P2,7);
R17_=dikaer(P4,7,P0,7);
R17_=reshape(R17_,1,49);
R17=dikaer(R17_,49,P4,7);
p>
R18_=dikaer(xbing(P5,P6),7,P0,7);
< br>
R18_=reshape(R18_,1,49);
R18=dikaer(R18_,49,P3,7);
p>
R19_=dikaer(xbing(P4,P5),7,P1,7);
< br>
R19_=reshape(R19_,1,49);
R19=dikaer(R19_,49,P3,7);
p>
R20_=dikaer(P6,7,xbing(P1,P2),7);
< br>
R20_=reshape(R20_,1,49);
R20=dikaer(R20_,49,P2,7);
P23=xbing(P2,P3);
R21_=dikaer(P4,7,xbing(P23,P4),7);
R21_=reshape(R21_,1,49);
R21=dikaer(R21_,49,P3,7);
p>
R22_=dikaer(P5,7,xbing(P23,P4),7);
R22_=reshape(R22_,1,49);
R22=dikaer(R22_,49,P2,7);
p>
R23_=dikaer(P6,7,xbing(P3,P4),7);
< br>
R23_=reshape(R23_,1,49);
R23=dikaer(R23_,49,P1,7);
R24_=dikaer(P4,7,P5,7);
R24_=reshape(R24_,1,49);
R24=dikaer(R24_,49,P2,7);
R25_=dikaer(P5,7,P5,7);
R25_=reshape(R25_,1,49);
R25=dikaer(R25_,49,P1,7);
p>
R26_=dikaer(P6,7,xbing(P6,P5),7);
< br>
R26_=reshape(R26_,1,49);
R26=dikaer(R26_,49,P0,7);
p>
R27_=dikaer(xbing(P4,P5),7,P6,7);
< br>
R27_=reshape(R27_,1,49);
R27=dikaer(R27_,49,P1,7);
p>
m=[R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12
,R13,R14,R15,R16,R17,R18,R19,R20,R21,R22,R
< br>23,R24,R25,R26,R27];
R=bingji(m);
%*************
初始
化参量
e=0;ec=0;y_1=0;y_2=0;u=0
;u_1=0;u_2=0;u_3=0;e_1=0;e_2=0;
。
5
欢迎下载
-
-
-
-
-
-
-
-
-
上一篇:mathematic常用操作 (自动保存的)
下一篇:英文数字大写