模糊控制详细讲解实例

合集下载

模糊控制案例001

模糊控制案例001

10) 11) 12) 13) 14) 15) 16) 17) 18) 19)
If E=Z and EC=PB or PS then U=PS If E=Z and EC=Z then U=Z If E=NS and EC=NB or NS then U=Z If E=NS and EC=Z or PS then U=PS If E=NS and EC=PB then U=PM If E=NM and EC=NB then U=PS If E=NM and EC=Z or NS then U=PM If E=NB and EC=NS or NB then U=PM If E=NM and EC=PB or PS then U=PB If E=NB and EC=Z or PS or PB then U=PB
以不是,甚至可以不是一个整数,经变
换后,是基本论域上的元素。
• 模糊控制的特点 所谓的模糊控制,既不是指被控制的 对象是模糊的,也不是模糊控制器是不确 定的,模糊控制有着自己的一套精确的理 论和算法。所谓的模糊是指在表示知识, 概念上的模糊性。虽然模糊控制器的算法 是通过模糊语言描述的,但它所完成的是 一项完全确定性的工作。
表4 模糊控制规则表格
E Ai
U Ck EC Bj
A1 PB
NM C6 R2 NB C7
A2 PM
NS C5 R4 NM C6 R5 NB C7 R3
A3 PS
Z C4 R6 NS C5 R7 NM C6 R6
A4 Z
PS C3 R10 Z C4 R11 NS C5 R9
A5 NS
PM C2 R14 PS C3 R13 Z C4 R12
A6 NM
PB C1 R18 PM C2 R16 PS C3 R15

模糊控制应用实例

模糊控制应用实例

模糊控制应用实例模糊控制是一种基于模糊逻辑的控制方法,它能够处理模糊的输入和输出,使得控制系统具有更好的鲁棒性和适应性。

下面将介绍一个模糊控制的应用实例。

某工厂的生产线上有一台机器人,它需要根据生产线上的物品进行分类和分拣。

由于生产线上的物品形状、颜色、大小等特征存在一定的模糊性,传统的控制方法很难实现准确的分类和分拣。

因此,工厂决定采用模糊控制方法来解决这个问题。

首先,需要对机器人的控制系统进行建模。

假设机器人的控制系统包括三个输入变量和一个输出变量。

其中,三个输入变量分别为物品的大小、颜色和形状,输出变量为机器人的动作,包括分类和分拣两种动作。

接下来,需要确定输入变量和输出变量的模糊集合和模糊规则。

假设物品的大小、颜色和形状分别属于三个模糊集合:小、中、大;红、绿、蓝;圆、方、三角。

输出变量也分别属于两个模糊集合:分类、分拣。

根据这些模糊集合,可以确定一些模糊规则,例如:如果物品大小为小且颜色为红且形状为圆,则机器人动作为分类;如果物品大小为中且颜色为绿且形状为方,则机器人动作为分拣;如果物品大小为大且颜色为蓝且形状为三角,则机器人动作为分类。

最后,需要进行模糊推理和模糊控制。

当机器人接收到一个物品时,它会根据物品的大小、颜色和形状,将它们映射到对应的模糊集合中。

然后,根据模糊规则进行模糊推理,得到机器人的动作。

最后,根据机器人的动作,控制机器人进行分类或分拣。

通过模糊控制方法,机器人可以更准确地分类和分拣物品,提高生产效率和质量。

同时,模糊控制方法还具有较好的鲁棒性和适应性,能够应对物品特征的变化和噪声的干扰。

总之,模糊控制是一种有效的控制方法,它能够处理模糊的输入和输出,使得控制系统具有更好的鲁棒性和适应性。

在工业生产、交通运输、医疗健康等领域都有广泛的应用。

模糊控制程序实例

模糊控制程序实例

5.2.2 .6 模糊控制器设计实例1 、单输入模糊控制器的设计【例 5.12 】已知某汽温控制系统结构如图 5.10 所示,采用喷水减温进行控制。

设计单输入模糊控制器,观察定值扰动和内部扰动的控制效果。

图 5.10 单回路模糊控制系统按表 5-2 确定模糊变量 E 、 U 的隶属函数,按表 5-3 确定模糊控制规则,选择温度偏差 e 、控制量 u 的实际论域:,则可得到该系统的单输入模糊控制的仿真程序如 FC_SI_main.m 所示,仿真结果如图 5.11 所示。

设温度偏差 e 、控制量 u 的实际论域:,选择 e 、 u 的等级量论域为量化因子。

选择模糊词集为 { NB,NS,ZO,PS,PB } ,根据人的控制经验,确定等级量 E , U 的隶属函数曲线如图 5-8 所示。

根据隶属函数曲线可以得到模糊变量 E 、 U 的赋值表如表 5-3 所示。

图5-8 E ,U 的隶属函数曲线表 5-3 模糊变量 E 、 U 的赋值表( μ )-3 -2 -1 0 1 2 3 等级量μE 、 UPB 0 0 0 0 0 0.5 1 PS 0 0 0 0 1 0.5 0 ZO 0 0 0.5 1 0.5 0 0 NS 0 0.5 1 0 0 0 0 NB 1 0.5 0 0 0 0 0依据人手动控制的一般经验,可以总结出一些控制规则,例如:若误差 E 为 O ,说明温度接近希望值,喷水阀保持不动;若误差 E 为正,说明温度低于希望值,应该减少喷水;若误差 E 为负,说明温度高于希望值,应该增加喷水。

若采用数学符号描述,可总结如下模糊控制规则:若 E 负大,则 U 正大;若 E 负小,则 U 正小;若 E 为零,则 U 为零;若 E 正小,则 U 负小;若 E 正大,则 U 负大。

写成模糊推理句 :if E =NB then U =PBif E =NS then U =PSif E=ZO then U=ZOif E =PS then U =NSif E =PB then U =NB由上述的控制规则可得到模糊控制规则表,如表 5-4 所示。

模糊控制实例

模糊控制实例

x2 2 x5 A1 ( x ) 3 , 8 x 5 x 8 3
y 5 B1 ( y ) 3 11 y 3 z 1 C1 ( z ) 3 7 z 3 5 y 8 , 8 y 11
计算机控制算法
属函数 C ( z ) 为:
(1)以连续型重心法作为解模糊化机构:首先找出
因此
z 1 1 z 3 3 2 3 z 5 3 7 z C ( z ) 5 z 6 3 1 6 z 8 3 9 z 8 z9 3 3 z 1 52 67 z 81 99 z zdz zdz zdz zdz zdz 1 3 5 6 8 3 3 3 3 3 z 3 z 1 52 67 z 81 99 z dz dz dz dz 1 3 3 3 5 3 6 3 8 3 dz 28 16 49 28 25 18 3 18 6 18 2 4 1 2 1 3 3 2 3 6 4.7
{负大,负中,负小,负零,正零,正小,正中,正大}
{NB,NM,NS,NO,PO,PS,PM,PB}
第3章
计算机控制算法
2.变量的模糊化
基本论域:某个变量变化的实际范围 误差的基本论域为 [ xe , xe ] 误差变化的基本论域为[ xc , xc ] 输出变量的基本论域为[ yu , yu ]
变量的模糊子集论域 {n, n 1,
,0,
, n 1, n}
基本论域到模糊子集论域的转换公式
2n a b y x ba 2
模糊化就是将清晰的某个输入变量按隶属度转换到与 之相对应的模糊量的过程。
第3章
计算机控制算法

模糊控制应用示例讲解

模糊控制应用示例讲解

0.4
0.2
0
-3
-2
NS
ZR
PS
-1
0
1
PB
2
u3
e de NB NS ZR PS PB
模糊推理规则
NB NS ZR PS PB
PB PB PS PS ZR PB PS PS ZR ZR PS PS ZR ZR NS PS ZR ZR NS NS ZR ZR NS NS NB
模糊控制系统设计
% Example 3.8 % 典型二阶系统的模糊控制 % %被控系统建模 num=20; den=[1.6,4.4,1]; [a1,b,c,d]=tf2ss(num,den); x=[0;0];
第5次课
例1:工业工程控制
例2:典型二阶环节 的模糊控 制
例1: 工业过程
例1: 某一工业过程要根据测量的温度 (t)和压力(p)来确定阀门开启的角
度: f (t, P) 这种关系很难用数
学模型精确描述。实际中由有经验的操 作员完成,因此通常可设计模糊控制器 取而代之。
输入输出变量的论域
0
0
0.5
1
1.5
2
2.5 压力 3
阀门开启角度的模糊隶属度 函数
“负” “零” “正”
1 0.8 0.6 0.4 0.2
0 -10 -8 -6 -4 -2 0 2 4 6 8 10
角度增量
隶属度函数
模糊推理规则库
模糊推理规则有3条:
If 温度“冷” and 压力“高”,则阀门角 度增量为“正”
If 温度“热” and 压力“高”,则阀门角 度增量为“负”
If 压力“正常”,则阀门角度增量为“零 ”

模糊控制算法实例解析(含代码)

模糊控制算法实例解析(含代码)

模糊控制算法实例解析(含代码)
首先来看一个实例,控制进水阀S1和出水阀S2,使水箱水位保持在目标水位O处。

按照日常操作经验,有以下规则:
1、若当前水位高于目标水位,则向外排水,差值越大,排水越快;
2、若当前水位低于目标水位,则向内注水,差值越大,注水越快;
3、若当前水位和目标水位相差很小,则保持排水速度和注水速度相等。

下面来设计一个模糊控制器
1、选择观测量和控制量
一般选择偏差e,即目标水位和当前水位的差值作为观察量,选取阀门开度u为控制量。

2、输入量和输出量的模糊化
将偏差e划分为5个模糊集,负大(NB)、负小(NS)、零(ZO)、正小(PS)、正大(PB),e为负表示当前水位低于目标水位,e 为正表示当前水位高于目标水位。

设定e的取值范围为[-3,3],隶属度函数如下。

偏差e对应的模糊表如下:隶属度
变化等级-3 -2
-1
1
2
3模糊集
PB 0 0 0 0 0 0.5
1PS 0
0 0.5 1 0.5 0ZO
0 0.5 1 0.5 0
0NS
0 0.5 1 0.5 0
0NB
0.5 0 0 0 0 0。

模糊控制应用实例

模糊控制应用实例1. 引言模糊控制是一种基于模糊逻辑的控制方法,它能够处理不确定性和模糊性问题。

本文将介绍模糊控制的应用实例,包括模糊控制在机器人导航、温度控制和交通信号灯控制等方面的应用。

2. 模糊控制在机器人导航中的应用2.1 模糊控制器设计在机器人导航中,模糊控制可以用于控制机器人的运动路径。

首先,需要设计一个模糊控制器,该控制器包括输入和输出变量以及一组模糊规则。

输入变量可以是机器人与障碍物的距离、机器人当前的角度等。

输出变量通常是机器人的速度和转向角度。

2.2 模糊控制器实现在机器人导航中,可以使用传感器来获取机器人与障碍物的距离和机器人当前的角度。

这些信息可以作为输入变量输入到模糊控制器中。

模糊控制器根据一组模糊规则来计算机器人的速度和转向角度,然后将其作为输出变量输出给机器人的控制系统。

2.3 模糊控制器优势相比于传统的控制方法,模糊控制在机器人导航中具有一定的优势。

首先,模糊控制能够处理不确定性和模糊性问题,使得机器人能够更好地适应复杂的环境。

其次,模糊控制可以通过调整模糊规则和输入变量的权重来优化机器人的导航性能。

最后,模糊控制可以很容易地与其他控制方法结合使用,以实现更高级的导航功能。

3. 模糊控制在温度控制中的应用3.1 温度控制系统在温度控制中,模糊控制可以用于调节加热器或制冷器的功率,以维持目标温度。

温度控制系统通常包括一个温度传感器、一个控制器和一个执行器。

温度传感器用于测量当前的温度,控制器根据温度的变化来调整执行器的功率。

3.2 模糊控制器设计在温度控制中,需要设计一个模糊控制器来根据当前的温度误差和误差变化率来调整执行器的功率。

模糊控制器的输入变量可以是温度误差和误差变化率,输出变量可以是执行器的功率。

通过选择适当的模糊规则和调整输入变量的权重,可以实现温度的稳定控制。

3.3 模糊控制器实现在温度控制中,可以使用一个模糊控制器来计算执行器的功率。

模糊控制器根据一组模糊规则来决定执行器的功率大小,然后将其输出给执行器。

计算机控制系统 第五章 模糊控制


三、模糊控制器的结构 模糊控制器的输入变量一般选为偏差及其变化率,输出变 量通常为作用于被控对象的控制量。输入变量的个数称为模糊 控制器的维数,根据输入变量的个数不同,模糊控制器一般有 三种结构,如图5-2所示。
e
模糊控制器
u
e
de dt
ec
模糊控制器
u
(a) 一维模糊控制器
e
de dt
ec
模糊控制器
(2)S形隶属函数
f ( x; a, c)
1 1 e a ( x c )
图5-4 S形隶属函数
(3)梯形隶属函数
f ( x; a, b, c, d ) xa a x b b x c c x d dx
模糊控制器的控制规律是由计算机的程序实现的,具体步 骤如下: (1)根据本次采样值得到模糊控制器的输入量,并进行输入 量化处理; (2)量化后的变量进行模糊化处理,得到模糊量; (3)根据输入的模糊量及模糊控制规则,按模糊推理合成规 则计算控制量(输出的模糊量); (4)对得到的模糊输出量进行反模糊化处理,得到控制量的 精确量,并进行输出量化处理,得到实际控制量。
X Y

A ( x) B ( y )
( x, y )
(2)模糊蕴含积运算
~ ~ ~ ~ ~ Rp A B A B
X Y

A ( x) B ( y )
( x, y )
利用MATLAB软件中的模糊控制工具箱可以方便的完 成上述运算。
3.模糊推理 模糊推理就是利用某种模糊推理算法和模糊规则进行 推理,得出最终的控制量。模糊推理算法与模糊规则直接相 关。它的复杂性依赖于模糊规则语句中模糊集合隶属函数的 确定。选择一些简单的又能反映模糊推理结果的隶属函数可 以大大简化模糊推理的计算过程。 (1)广义前向推理(GMP): 对于GMP推理,

模糊pid控制实例

模糊pid控制实例以下是一个模糊PID控制的简单实例:假设我们要控制一台电机的转速,目标是使电机转速尽可能稳定在设定值附近。

根据模糊PID控制器的工作原理,我们可以进行以下步骤:1. 设定目标值和初始设定值:设定电机转速的目标值,例如1000转/分钟。

同时设置初始的PID参数。

- 设定值(SP,Set Point)= 1000 RPM- 比例增益 (Kp) = 1- 积分时间(Ti) = 1- 微分时间(Td) = 0.12. 测量电机转速:使用传感器或编码器来测量电机当前的转速,得到当前的反馈值。

3. 模糊控制规则建立:基于当前误差(设定值减去反馈值)和误差的变化率,建立一组模糊逻辑规则,例如: - 如果误差为"NB"并且误差变化率为"PB",则输出为"NB"。

- 如果误差为"NB"并且误差变化率为"NM",则输出为"NM"。

- ...4. 模糊推理和模糊输出:根据模糊逻辑规则,进行模糊推理,即将当前的误差和误差变化率映射到模糊输出的隶属度值上。

5. 解模糊:将模糊输出映射回具体的控制量,例如根据模糊输出计算PID控制器的输出量。

6. 更新PID参数:根据误差的变化和模糊输出的结果来更新PID控制器的参数,例如根据误差的大小和变化率来调整PID参数,以使控制更加精确。

7. 反馈控制:将PID控制器的输出量应用于电机,调整电机的转速。

8. 循环控制:循环执行上述步骤,不断更新PID参数和反馈控制,使得电机转速尽可能稳定在设定值附近。

需要注意的是,以上是一个简单的示例,实际的模糊PID控制根据具体的应用情况和系统特点会有所差异。

参数的选择和模糊规则的建立都需要根据具体的控制对象进行优化和调整。

此外,在实际应用中,还需要考虑到系统的鲁棒性、性能指标等因素。

模糊控制详细讲解实例

一、速度控制算法: 首先定义速度偏差-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<e (k ) 先选择刹车控制,再选择油门控制 e (k )=0 直接跳出选择刹车控制:刹车采用模糊控制算法1.确定模糊语言变量 e 基本论域取[-50,50],ec 基本论域取[-20,20],刹车控制量输出u 基本论域取[-30,30],这里我将这三个变量按照下面的公式进行离散化:)]2(2[ba x ab 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 和U3.模糊推理由模糊规则表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 U77210000000000005.05.00005.010)0,,0,5.0,1,0()0,,0,5.0,1(⨯⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=⨯=⨯TEC E R R 49121)0,,0,5.0,5.0,0,0,0,0,0,5.0,1,0(⨯= EC E R7491211000000005.05.00005.0100000)0,,0,5.0,1()0,,5.0,1,0(⨯⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=⨯=⨯= TU EC E R R Rif (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()()(210210 ===∑∑==j i zu z zu u i iji jij从而得到实际刹车控制量的精确值u 。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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<e (k ) 先选择刹车控制,再选择油门控制 e (k )=0 直接跳出选择刹车控制:刹车采用模糊控制算法1.确定模糊语言变量 e 基本论域取[-50,50],ec 基本论域取[-20,20],刹车控制量输出u 基本论域取[-30,30],这里我将这三个变量按照下面的公式进行离散化:)]2(2[ba x ab 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 U7721000000000005.05.00005.010)0,,0,5.0,1,0()0,,0,5.0,1(⨯⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=⨯=⨯ΛM M M M M M ΛΛΛΛΛTEC E R R49121)0,,0,5.0,5.0,0,0,0,0,0,5.0,1,0(⨯=ΛEC E R7491211000000005.05.00005.0100000)0,,0,5.0,1()0,,5.0,1,0(⨯⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=⨯=⨯=ΛM ΛM M M M ΛΛΛΛΛTU EC E R R Rif (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ΛY ΛY Y ==i R R R R i由R 可以得到模拟量输出为:()U E EC R =⨯o4.去模糊化由上面得到的模拟量输出为1×7的模糊向量,每一行的行元素(u (z ij ))对应相应的离散变量z j ,则可通过加权平均法公式解模糊:)21,,2,1()()(210210Λ===∑∑==j i zu z zu u i iji jij从而得到实际刹车控制量的精确值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);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);R11_=dikaer(xbing(P0,P1),7,P4,7); 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);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);R18_=dikaer(xbing(P5,P6),7,P0,7);R18_=reshape(R18_,1,49);R18=dikaer(R18_,49,P3,7);R19_=dikaer(xbing(P4,P5),7,P1,7);R19_=reshape(R19_,1,49);R19=dikaer(R19_,49,P3,7);R20_=dikaer(P6,7,xbing(P1,P2),7);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);R22_=dikaer(P5,7,xbing(P23,P4),7);R22_=reshape(R22_,1,49);R22=dikaer(R22_,49,P2,7);R23_=dikaer(P6,7,xbing(P3,P4),7);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);R26_=dikaer(P6,7,xbing(P6,P5),7);R26_=reshape(R26_,1,49);R26=dikaer(R26_,49,P0,7);R27_=dikaer(xbing(P4,P5),7,P6,7);R27_=reshape(R27_,1,49);R27=dikaer(R27_,49,P1,7);m=[R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,R13,R14,R15,R16,R17,R18,R19,R20,R21,R22,R 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;Eswith=10;throttle_1=0;brake_1=0;x=[0 0 0];ts=0.001;sys=tf(1,[1,2,1],'inputdelay',0.5);dsys=c2d(sys,ts,'zoh');[num,den]=tfdata(dsys,'v');for k=1:1:40000%****************控制系统time(k)=k*ts;if(k<25000)vd(k)=40;elsevd(k)=0;endy(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2; e=vd(k)-y(k);ec=e-e_1;u_3=u_2;u_2=u_1;u_1=u;y_2=y_1;y_1=y(k);x(1)=e;x(2)=(e-e_1)/ts;x(3)=x(3)+e*ts;%*******************************油门PID控制kp=0.42;Ti=30;Td=0.0018;ki=kp*ts/Ti;kd=kp*Td/ts;dthrottle=kp*x(1)+kd*x(2)+ki*x(3);throttle=u_1+dthrottle;if(throttle>2000)throttle=2000;end%****************************刹车控制%/********压缩输入变量*****%E=lisan(-50,50,3,e);EC=lisan(-20,20,3,ec);%/*********计算实际输入变量隶属度向量*****%E_R(1)=lbell(E,1,4,-3);E_R(2)=trig(E,-3,-2,0);E_R(3)=trig(E,-3,-1,1);E_R(4)=trig(E,-2,0,2);E_R(5)=trig(E,-1,1,3);E_R(6)=trig(E,0,2,3);E_R(7)=rbell(E,1,4,3);EC_R(1)=lbell(EC,1,4,-3);EC_R(2)=trig(EC,-3,-2,0);EC_R(3)=trig(EC,-3,-1,1);EC_R(4)=trig(EC,-2,0,2);EC_R(5)=trig(EC,-1,1,3);EC_R(6)=trig(EC,0,2,3);EC_R(7)=rbell(EC,1,4,3);%/*********模糊推理过程*****%U_R1=dikaer(E_R,7,EC_R,7);U_R1=reshape(U_R1,1,49);U_R2=jdikaer(U_R1,49,R,7);U_R=max(U_R2);u_L=mean(U_R);%/*********去模糊化*****%brake=-flisan(-150,150,3,u_L);e_2=e_1;e_1=e;%/************************选择规则if (e<0)if ((e>-Eswith)||(throttle_1~=0)) if(throttle<=throttle_1)throttle_1=throttle;u=throttle;Q(k)=u;W(k)=0;elsethrottle=0;throttle_1=throttle;u=throttle;Q(k)=u;W(k)=0;endelseif(throttle_1==0)brake_1=brake;u=brake;W(k)=u;Q(k)=0;elsethrottle=0;throttle_1=throttle;u=throttle;Q(k)=u;W(k)=0;endendelseif(e~=0)if(brake_1==0)throttle_1=throttle;u=throttle;Q(k)=u;W(k)=0;elsebrake=0;brake_1=brake;u=brake;endelseu=0;W(k)=0;Q(k)=0;endend%********************»-ͼÊä³öÁ¿¶¨ÒåM(k)=u;%******************************迟滞环节if (time(k)<=0.5)u=0;elseu=M(k-0.5/ts);endend%**********画图figure(1);plot(time,vd,'r',time,y,'k','linewidth',2); xlabel('time(s)');ylabel('vd,y');legend('ÆÚÍû','ʵ¼Ê');figure(2);plot(time,Q,'r','linewidth',2);xlabel('time(s)');ylabel('u');figure(3);plot(time,W,'r','linewidth',2);xlabel('time(s)');ylabel('u');figure(4);plot(time,N,'b');xlabel('time£¨s£©');ylabel('e');程序说明:仿真分加速和加速两个阶段,加速阶段主要应用油门控制,加速阶段主要由刹车控制。

相关文档
最新文档