模糊控制规则表生成程序

合集下载

模糊控制规则表生成程序

模糊控制规则表生成程序

模糊控制规则表生成程序%偏差E的赋值表E=[1.0 0.8 0.7 0.4 0.1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.2 0.7 1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.1 0.3 0.7 1.0 0.7 0.2 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.1 0.6 1.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 1.0 0.6 0.1 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.2 0.7 1.0 0.7 0.3 0.1 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.2 0.7 1.0 0.7 0.30.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.4 0.7 0.81.0];%偏差变换率EC的赋值表Ec=[1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.3 0.7 1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.3 0.7 1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.3 0.7 1.0 0.7 0.3 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.3 0.7 1.0 0.7 0.3 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.7 1.0 0.7 0.30.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.71.0];%输出U的赋值表u=[1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.3 0.7 1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.3 0.7 1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.3 0.7 1.0 0.7 0.3 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.3 0.7 1.0 0.7 0.3 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.7 1.0 0.7 0.30.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.7 1.0];%推理语言规则表gz=[ 1 1 1 1 2 4 41 1 1 12 4 42 2 2 2 4 5 52 23456 62 23456 63 34 6 6 6 64 4 6 7 7 7 74 4 6 7 7 7 7 ];i=1;for gzh=1:8for gzl=1:7a=E(gzh,:); %取E 的赋值表的莫一行,并赋值给aa=a'; %a 取专置b=Ec(gzl,:); %取Ec 的赋值表的莫一行,并赋值给b% T E Ec •for m=1:13for n=1:13if a(m,1)>=b(1,n)r(m,n)=b(1,n);elser(m,n)=a(m,1);endendend% 把T E Ec •得到的矩阵变为行向量k=1;for m=1:13for n=1:13Ei_Eci(1,k)=r(m,n);k=k+1;endendEi_Eci=Ei_Eci'; %把刚才得到的行向量变为列向量,方便与U 的行向量相乘m=gz(gzh,gzl); %取U 的某一行U=u(m,:);%T E Ec U •⨯for m=1:169for n=1:13if Ei_Eci(m,1)>=U(1,n)Rii(m,n)=U(1,n);elseRii(m,n)= Ei_Eci(m,1);endendend%得到一条规则的Ri ,并且把Ri 变成行向量,以方便程序实现1n i R Ri ==U k=1;for m=1:169for n=1:13Ri(i,k)=Rii(m,n);k=k+1;endendi=i+1;endend%1n i R Ri==URi=Ri';for m=1:2197for n=1:i-1if Ri(m,1)>=Ri(m,n)Ri(m,1)=Ri(m,1);elseRi(m,1)=Ri(m,n);endendend%得到Rk=1;for m=1:169for n=1:13R(m,n)=Ri(k,1);k=k+1;endend%()[()()]U k E k Ec k R =⨯oaa=[0 0 0 0 0 0 0 0 0 0 0 0 0 ]; %对E ,Ec 采用单点集 for j=1:13bbb=[0 0 0 0 0 0 0 0 0 0 0 0 0 ];aa(1,ii)=1;bbb(1,j)=1;a=aa';b=bbb;k=1;%()()E k Ec k ⨯for m=1:13for n=1:13if a(m,1)>=b(1,n)d(1,k)=b(1,n);k=k+1;elsed(1,k)=a(m,1);k=k+1;endendend%[()()]E k Ec k R ⨯ofor m=1:13for n=1:169if d(1,n)>=R(n,m)g(1,n)=R(n,m);elseg(1,n)=d(1,n);endendfor n=1:169if g(1,1)>=g(1,n)g(1,1)=g(1,1);elseg(1,1)=g(1,n);endendf(j,m)=g(1,1);end%利用加权平均法得到ui=-6;z=0;k=0;z=f(j,m)*i+z;k=f(j,m)+k;i=i+1;endbb=z/k;u(ii,j)=bb; %u为控制表的矩阵endend附录二实验二控制规则表。

模糊控制程序实例

模糊控制程序实例

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 所示。

pid模糊控制规则表

pid模糊控制规则表

pid模糊控制规则表PID模糊控制规则表。

一、PID控制简介。

PID(比例 - 积分 - 微分)控制是一种广泛应用于工业控制等领域的反馈控制算法。

它通过比例项(P)、积分项(I)和微分项(D)对系统的误差进行调节,以达到稳定控制的目的。

(一)比例项(P)比例项的作用是根据当前误差的大小成比例地调整控制量。

例如,在温度控制系统中,如果设定温度为50°C,当前温度为40°C,误差为10°C,比例系数为2,则比例项产生的控制量调整为20(假设控制量与调整量数值上相等关系以便理解)。

比例系数越大,系统对误差的响应就越迅速,但可能会导致系统超调。

(二)积分项(I)积分项用于消除系统的稳态误差。

它对误差进行积分,随着时间的积累,即使误差很小,积分项也会持续调整控制量,直到误差为零。

如果积分项的系数过大,可能会使系统响应变慢,甚至出现积分饱和现象。

(三)微分项(D)微分项根据误差的变化率来调整控制量。

当误差变化迅速时,微分项能够提前预测系统的趋势,起到阻尼的作用,抑制系统的超调。

但是,微分项对噪声比较敏感,因为噪声会导致误差变化率的剧烈波动。

二、模糊控制概述。

模糊控制是一种基于模糊逻辑的控制方法。

它不需要精确的数学模型,而是基于人类的经验和知识来构建控制规则。

模糊控制将输入的精确量模糊化,根据模糊规则进行推理,最后再将模糊输出清晰化得到实际的控制量。

(一)模糊化。

在模糊控制中,首先要将输入量(如误差、误差变化率等)进行模糊化。

例如,对于误差这个输入量,我们可以定义几个模糊集合,如“负大(NB)”、“负小(NS)”、“零(ZO)”、“正小(PS)”、“正大(PB)”。

根据输入量的实际数值,确定其属于每个模糊集合的隶属度。

(二)模糊规则推理。

模糊规则是模糊控制的核心。

例如,有这样一条模糊规则:“如果误差为正大(PB)且误差变化率为正小(PS),那么控制量为正大(PB)”。

根据输入量的模糊化结果,通过多条这样的模糊规则进行推理,得到模糊输出。

计算机控制系统第5章模糊控制课件

计算机控制系统第5章模糊控制课件

与其隶属
度 A(xi ) 之间的对应关系;“+”也不表示“求和”,而是表示
模糊集合在论域上的整体。
2024/8/6
5
2.几种典型的隶属函数 (1)高斯型隶属函数
( xc)2
f (x; ,c) e 2 2
2024/8/6
6
(2)S形隶属函数
f
(x;
a,
c)
1
1 ea(xc)
2024/8/6
7
(3)梯形隶属函数
第一节 模糊控制系统
一、模糊控制系统的组成
模糊控制系统的结构与一般计算机控制系统基本相似, 通常由模糊控制器、输入输出接口、广义被控对象和测量装 置四个部分组成。
基本模糊控制器
给定值 +
e
-
输 入 量


糊 化
e~



糊 u~


反 模 糊 化 处

输 出 量

u
D/A
A/D
传感器
被控对象
执行机构
所谓论域就是被考虑客体所有元素的集合。在模糊控制系
统中,把模糊控制器的输入变量偏差 e 及其变化率 ec 的实际范
围称为这些变量的基本论域。基本论域内的量为精确量,需要 对它们进行量化处理。
在实际控制系统中,需要通过所谓量化因子进行量化处理, 实现论域变换。量化因子的定义为:
ke
2n be ae
kec
a,
b)
1 2( 2(b
x b
x
a a
)2 )2
ba
0
xa
a a
x b
a x
2
b

Matlab-的-Fuzzy-工具箱实现模糊控制(rulelist的确定)

Matlab-的-Fuzzy-工具箱实现模糊控制(rulelist的确定)

引用如何在MATLAB下把模糊推理系统转化为查询表(原创)Matlab 2009-12-26 22:05:01 阅读161 评论0 字号:大中小订阅引用foundy的如何在MATLAB下把模糊推理系统转化为查询表(原创)李会先摘要:该文论述了将MATLAB下调试成功的模糊逻辑转换为查询表的一种技巧,这种技巧不直接使用MATLAB的矩阵计算方法,操作者多数情况下只需点击鼠标就可完成任务,效率比较高,该方法使用MATLAB下的系统测试工具,收集构造查询表所需的数据资料,文中以MATLAB中的水位模糊控制演示模型为例,把该系统的模糊控制推理模块用在其基础上生成的查询表代替后再进行水位控制仿真,控制效果与模糊推理模块在线推理控制是一致的。

关键词:模糊控制;查询表;MATLAB;Simulink; 系统测试Abstract:This article discuss a skill that make a translation from fuzzy logic system to Lookup Table in Matlab,It doesn't use matrix computing, user need only to drag and draw the mouse completing this task,It's a efficiency method which to collect data for Lookup Table construction from a fuzzy controller by SystemTest Toolbox in Matlab,in the article,I will discuss the skill by a demo which is the Water Level Control in Tank in the Fuzzy logic Toolbox,at last,I simulate the Water Control in Tank instead of the Fuzzy Controller with the Lookup Table which I have constructed,the test results is verywell.Keywords: Fuzzy Logic, Matlab,Simulink,Lookup Table,SystemTest1. 引言在MATLAB/Simulink下,构建模糊逻辑系统模型和调试其推理规则都是很方便的[3][4],我们当然不希望在MATLAB下的仿真工作仅仅用于仿真目的,如果实际产品设计能继承仿真的工作成果,将事半功倍。

模糊控制实验图表

模糊控制实验图表

模糊控制实验图表
08000416
张骥
1C_Domain_1/work1
连续域,无噪声,位置式
1.1Figue 1:无模糊控制器,系统开环工作
1.2Figure 2/flc1:单输入单输出,3个语言变量,3个控制规则
1.3Figure 3/flc2:单输入单输出,7个语言变量,7个控制规则
1.4Figure 4/flc3:双输入单输出,3个语言变量,9个控制规则
1.5Figure 5/flc4:双输入单输出,7个语言变量,49个控制规则2C_Domain_1/work2
连续域,有噪声,位置式
噪声作用于FLC输出控制量,形式阶跃,幅度-5,作用时间20s
2.1Figue 1:无模糊控制器,系统开环工作
2.2Figure 2/flc1:单输入单输出,3个语言变量,3个控制规则
2.3Figure 3/flc2:单输入单输出,7个语言变量,7个控制规则
2.4Figure 4/flc3:双输入单输出,3个语言变量,9个控制规则
2.5Figure 5/flc4:双输入单输出,7个语言变量,49个控制规则3C_Domain_2/work3
连续域,无噪声,增量式
3.1Figue 1:无模糊控制器,系统开环工作
3.2Figure 2/flc5:单输入单输出,3个语言变量,3个控制规则
3.3Figure 3/flc6:单输入单输出,7个语言变量,7个控制规则
3.4Figure 4/flc7:双输入单输出,3个语言变量,9个控制规则
3.5Figure 5/flc8:双输入单输出,7个语言变量,49个控制规则4D_Domain/dflc
离散域,无噪声,位置式
各控制系统静态和动态性能一览表。

用MATLAB编写模糊控制表计算程序

用MATLAB编写模糊控制表计算程序

clc;clear;E = [1,0.8,0.7,0.4,0.1,0,0,0,0,0,0,0,0;0.2,0.7,1,0.7,0.3,0,0,0,0,0,0,0,0;0,0.1,0.3,0.7,1,0.7,0.2,0,0,0,0,0,0;0,0,0,0,0.1,0.6,1,0,0,0,0,0,0;0,0,0,0,0,0,1,0.6,0.1,0,0,0,0;0,0,0,0,0,0,0.2,0.7,1,0.7,0.3,0.1,0;0,0,0,0,0,0,0,0,0.2,0.7,1,0.7,0.3;0,0,0,0,0,0,0,0,0.1,0.4,0.7,0.8,1]%%8*13 EC =[1,0.7,0.3,0,0,0,0,0,0,0,0,0,0;0.3,0.7,1,0.7,0.3,0,0,0,0,0,0,0,0;0,0,0.3,0.7,1,0.7,0.3,0,0,0,0,0,0;0,0,0,0,0.3,0.7,1,0.7,0.3,0,0,0,0;0,0,0,0,0,0,0.3,0.7,1,0.7,0.3,0,0;0,0,0,0,0,0,0,0,0.3,0.7,1,0.7,0.3;0,0,0,0,0,0,0,0,0,0,0.3,0.7,1]%%7*13U=[1,0.7,0.3,0,0,0,0,0,0,0,0,0,0;0.3,0.7,1,0.7,0.3,0,0,0,0,0,0,0,0;0,0,0.3,0.7,1,0.7,0.3,0,0,0,0,0,0;0,0,0,0,0.3,0.7,1,0.7,0.3,0,0,0,0;0,0,0,0,0,0,0.3,0.7,1,0.7,0.3,0,0;0,0,0,0,0,0,0,0,0.3,0.7,1,0.7,0.3;0,0,0,0,0,0,0,0,0,0,0.3,0.7,1]%%7*13rulelist= [1,1,1,1,2,4,4;1,1,1,1,2,4,4;2,2,2,2,4,5,5;2,2,3,4,5,6,6;2,2,3,4,5,6,6;3,3,4,6,6,6,6;4,4,6,7,7,7,7;4,4,6,7,7,7,7]%%8*7for iii=1:13 %偏差E的模糊值控制for jjj=1:13 %偏差率EC的模糊值控制for ii=1:8 %偏差E的模糊规则控制for jj=1:7 %偏差变化率EC的模糊规则控制A_rulelist = rulelist(ii,jj); %查模糊规则表%******计算C1A'************A = E(ii,:); %取A'C_A = U(A_rulelist,:); %取Cifor i=1:13 %求R1Afor j=1:13if(A(i) > C_A(1,j))Ra(i,j) = C_A(1,j);elseRa(i,j) = A(i);endendendAA = zeros(1,13); %取AA=A' 如AA=[1,0,0,0,0,0,0,0,0,0,0,0,0]; %AA(1,iii) = E(ii,iii);AA(1,iii) = 1;for i=1:13 %先取小for j=1:13if(AA(j) > Ra(j,i))A_qux(j,i) = Ra(j,i);elseA_qux(j,i) = AA(j);endendendfor i=1:13 %再取大,,,求和CiAmax = A_qux(1,i);for j=1:13if(max < A_qux(j,i))max = A_qux(j,i);endendCiA(i) = max;end%********CiA计算完毕*********%*******计算CiB'*************B = EC(jj,:); %取B' ???C_B = U(A_rulelist,:); %取Ci ??? for i=1:13 %求R1Bfor j=1:13if(B(1,i) > C_B(1,j))Rb(i,j) = C_B(1,j);elseRb(i,j) = B(1,i);endendendBB = zeros(1,13); %取BB=B' 如BB=[1,0,0,0,0,0,0,0,0,0,0,0,0]; %BB(1,jjj) = EC(jj,jjj);BB(1,jjj) = 1;for i=1:13 %先取小for j=1:13if(BB(j) > Rb(j,i))B_qux(j,i) = Rb(j,i);elseB_qux(j,i) = BB(j);endendendfor i=1:13 %再取大,,,求和CiAmax = B_qux(1,i);for j=1:13if(max < B_qux(j,i))max = B_qux(j,i);endendend%*******计算CiB'完毕****%*******计算C1'=CiA'交CiB'*********for i=1:13if CiA(i) > CiB(i)Ci(i) = CiB(i);elseCi(i) = CiA(i);endend%*******计算C1'完毕************C((ii-1)*7+jj,:) = Ci; % 将Ci存到数组C中,C是56*13的数组endend%根据式Ui=C'=C1'并C2'并……并C56'for i=1:13max = C(1,i);for j=1:56max = C(j,i);endendUi(i) = max;end%用重心法进行解模糊运算,并映射为实际的控制量sum_fenz = 0;sum_fenm = 0;for i=1:13sum_fenz = sum_fenz + (i-7)*Ui(i);sum_fenm = sum_fenm + Ui(i);endcore = sum_fenz/sum_fenm;U_control(iii,jjj) = core;endendU_control = round(U_control.*10000)/10000; %对控制量保留小数点后两位。

模糊控制器的查询表的实例计算过程

模糊控制器的查询表的实例计算过程

用模糊控制实现水箱水温的恒温控制。

水箱由底部的电阻性电热元件加热,由电动搅拌器实现均温.设控制的目标温度为25ºC,以实测温度T与目标温度R之差,即误差e=T-R,以及误差变化率ec为输入,以固态继电器通电时间的变化量u(以一个控制周期内的占空比表示,控制电加热器的功率)为输出.设e的基本论域为[-5,5] ºC,其语言变量E的论域为[-5,5];ec的基本论域为[-1,1] ºC/s,其语言变量EC的论域为[—5,5];控制量u的基本论域为[—5,5]单位,其语言变量U的论域为[—5,5]。

E、EC和U都选5个语言值{NB,NM,NS,Z,PS,PM,PB},各语言值的隶属函数采用三角函数,其分布可用表1和表2表示,控制规则如表3所示。

要求:1、画出模糊控制程序流程图;2、计算出模糊控制器的查询表,写出必要的计算步骤。

表1 语言变量E、EC的赋值表表2 语言变量U的赋值表解:步骤:1)输入输出语言变量的选择。

输入变量选为实测温度T与目标温度R之差,即误差e,及误差变化率ec;输出语言变量选固态继电器通电时间的变化量u,故模糊控制系统为双输入—单输出的基本模糊控制器.2)建立各语言变量的赋值表。

设误差e的基本论域为[-5,5].C,输入变量E的论域为[-5,—4,-3,—2,-1,0,1,2,3,4,5],误差的量化因子为ke=5/5=1。

语言变量E选取5个语言值:PB PS ZE NS NB。

表1为语言变量E、EC的赋值表,表2为语言变量U的赋值表,,,,表1语言变量E、EC的赋值表表2 语言变量U的赋值表3)建立模糊控制规则表,总结控制策略,得出一组由25条模糊条件语句构成的控制规则,据此建立模糊控制规则表,如表3所示.表中行与列交叉处的每个元素及其所在列的第一行元素和所在行的第一列元素,对应于一个形式为”if E and EC then U”的模糊语句,根据该模糊语句可得相应的模糊关系i R ,则总控制规则的总模糊关系为251=i i R U R =。

基于MATLAB生成模糊控制规则离线查询表

基于MATLAB生成模糊控制规则离线查询表

0 引言模糊控制隶属于智能控制,是一种基于规则的近似推理的非线性智能控制。

如果说,传统的控制方式需要被控对象精确的数学模型,而模糊控制则是以人类智能活动的角度为基础实施控制,因此,在实际中,传统控制方法无能为力的非线性场合,模糊控制却能起到很好的控制作用。

因此,实际应用中,由于系统复杂、很难建立精确数学模型的非线性系统,模糊控制已经成为一种最有效的控制方法。

模糊控制规则表是模糊控制的核心,其描述的是输入的偏差、偏差变化量与控制的输出之间的对应关系,采用手工计算方式,量大且费时;采用在线计算方式,往往又影响系统被控对象的实时控制效果。

因此,在应用模糊控制时,首先针对输入的不同组合,采用离线计算方式算出相应的控制输出量,构成模糊控制规则查询表,实际控制时再将模糊控制规则查询表嵌入在各种控制平台,如单片机、PLC 等,实现离线计算、在线查表,这样,一方面减少了模糊控制的在线运算量,同时又实现了模糊控制的实时控制效果。

实际应用中发现,对模糊控制规则表的生成,在离散论域分档较少的条件下,多采用手工计算,而在离散论域分档较多的条件下,手工计算量太大,用MATLAB 软件编程实现,对MATLAB 软件的编程能力要求又较高,因此,本文以二维温度模糊控制规则查询表的生成为例来说明如何简单有效的利用MATLAB 软件生成模糊控制规则离线查询表。

1 实例分析应用MATLAB2014a 软件说明生成模糊规则离线查询表的过程。

设二维温度模糊控制器[1 2]的输入为温度偏差E 和温度偏差变化率EC,输出为温控器输出电压U。

模糊控制器模型见图1。

2 模糊控制规则离线查询表生成步骤[34 5](1)利用模糊逻辑控制工具箱生成温度模糊推理系统在MATLAB2014a 命令窗口中输入fuzzy 打开模糊控制工具箱,编辑输入输出变量的隶属度函数和模糊控制规则,然后将模糊推理系统保存为mytest.fis。

设温度偏差E、偏差变化率EC 和温控器输出电压U 的模糊论域为[-6 6],三者的语言变量赋值均为{NB,NM,NS,Z,PS,PM,PB},各语言值的隶属函数均采用三角函数,如图2所示,并根据温度模糊控制规则表1逐条添加模糊控制规则,清晰化采用加权平均法。

北航智能控制模糊控制作业

北航智能控制模糊控制作业

模糊控制查询表的MATLAB实现北京航空航天大学机械工程及自动化学院(北京 100191)一作业要求以双输入—单输出系统为例,画出模糊控制算法程序流程图,计算出模糊控制器的查询表。

假设控制器输入为误差e和误差变化率ec,输出为控制量u,其基本论域分别为[e min,e max],[ec min,ec max],[u min,u max],对应的语言变量E、EC和U的论域为{-6,-5,…,-1,0,1,…,5,6},E、EC和U都选7个语言值{NB,NM,NS,Z,PS,PM,PB},各语言值的隶属函数采用三角函数,其分布可用表1-1表示,控制规则如表1-2所示。

注意:u的去模糊化要采用与你的学号ID的奇偶性对应的方法,设ID=奇数者用最大隶属度法,ID=偶数者用重心法;要有计算查询表时的必要计算步骤,不能只给出最后结果。

表1-1 语言变量E、EC和U的赋值表表1-2 模糊控制规则表二 模糊控制查询表和控制算法流程图2.1 模糊控制查询表(1)模糊控制算法一般双输入—单输出模糊控制器的控制规则可写成条件语句:if and E=B then U=C ,i=1,2,,;1,2,,;i j ijE A n j n =∆= 式子中,、B 、C i j ijA 为定义在误差、误差变化率和控制量论域X 、Y 、Z 、上的模糊集合。

上述条件可以用一个模糊关系R 描述,即1()T ij iji jRA B C ≠=⨯⨯ R 的隶属度函数为:,1,1(,,)()()(),,,i n j m i j iji j Rx y z A x B y C z x X y Y z Z =====∨∧∧∈∈∈ 当误差及误差变化分别取模糊集、B A时,控制器输出的变化量U 根据模糊推理合成规则可得:2T U=(A B )R ⨯ U 的隶属度函数为:x Xy YU(z)=A(x)B(y)R(x,y,z)∈∈∨∧∧(2)模糊算法选择模糊推理用Mamdani 推理方法,输出信息的模糊判别用最大隶属度法。

模糊控制5

模糊控制5

则取数据am、bm、ym和模糊量NB、PS、NS。 4、用每一组数据的最大隶属度相关的模糊量生成 一条控制规则 对于第m组数据 ( am ,bm , ym ) ,则有;
2013年8月12日
if
A NB and B PS then Y NS 15
5、进行控制规则取舍
对于输入有两个语言值,每个语言值只取5个模糊 量的情况,它们的控制规则最多只含有5×5即25 条。而输入输出数据有100组时,会产生100条控 制规则。显然,有的规则是不合理或重复的。 求每条规则的强度。对第m条规则,其强度为:
模糊控制规则是根据人的思维方式对一个被控系 统执行控制而总结出来的带有模糊性的控制规则。 两种基本方法: 1、根据人对被控对象系统的实际操作求取控制规则 (1) 依据专家经验生成控制规则 (2) 对系统执行手动控制生成控制规则 2、根据对象的特点通过数学处理求取控制规则 (1) 根据被控对象的模糊模型生成控制规则 (2) 根据学习算法生成控制规则
NB (ai ), NS (ai ), Z (ai ), PS (ai ), PB (ai );
NB (bi ), NS (bi ), Z (bi ), PS (bi ), PB (bi );
NB ( yi ), NS ( yi ), Z ( yi ), PS ( yi ), PB ( yi );
其中: i 1,2,, p
2013年8月12日
j 1,2,, q
4
一个模糊控制系统,其控制规则基可以以条件语 句集来表示,也可以用控制规则表来表示。 对于模糊控制系统,考虑输入的偏差e取5个模糊 量,分别是负大(NB)、负小(NS)、零(Z)、正小( PS)、正大(PB)。 同时考虑输入的偏差变化率 e 取5个模糊量,即 负大(NB)、负小(NS)、零(Z)、正小(PS)、正大 (PB)。

模糊PID控制原理与设计步骤

模糊PID控制原理与设计步骤

3.1 模糊PID 控制原理与设计步骤模糊PID 控制器以误差e 和误差变化率e c 作为控制器的输入量,输入量经模糊化与模糊推理之后得出模糊控制器的输出值,PID 控制器根据模糊控制的输出值对自身参数进行调节。

本文所用模糊PID 控制器的原理图如图3.1所示图3.1 自适应模糊PID 控制结构图Fig.3.1 The structure of adaptive fuzzyPID control system3.1.1 PID 控制器性能分析在PID 控制环节,离散PID 控制算法为10()()kdp k i jk k j K u k K e K Te e e T(3.1)为便于控制模型的搭建,由式(3.1)进行z 变换得PID 控制环节的传递函数为(1)()1i d pK Tz K z G z K z Tz(3.2)其中,K p 、K i 、K d 分别为比例、积分与微分系数,T 为系统采样时间。

PID 控制器参数K p ,K i ,K d 共同作用于被控系统,它们各自对系统的响应速度、超调量、稳定性及稳态精度等性能的影响分别为:比例系数K p :使控制系统快速动作,减小系统误差。

K p 较大时,系统能快速响应,但K p 过大时会产生超调,甚至破坏系统的稳定性;K p 过小时,会减弱控制器动作幅度,调节时间增长,使系统响应变得不理想。

积分系数K i :系统进入稳态阶段时会消除系统误差。

K i 较大时,系统稳态误差会很快变小,但在系统初始响应阶段K i 较大时,会使控制器产生积分饱和,从而破坏系统的稳定性;K i 过小时,难以消除系统的稳态误差,不能确保较高的调节精度。

微分系数K d:提高系统的动态响应性能,会在系统响应过程中对偏差的变化进行提前预测,从而抑制偏差的变化。

K d过大时,会使系统响应作用减弱,从而使调节时间增长,而且会降低系统的抗干扰性能。

PID控制参数的调节必须考虑不同时刻它们各自对系统性能的影响及相互之间的互联关系。

模糊控制算法c程序

模糊控制算法c程序

由于项目需要,需要模糊控制算法,之前此类知识为0,经过半个多月的研究,终于有的小进展。

开始想从强大的互联网上搜点c代码来研究下,结果搜遍所有搜索引擎都搜不到,以下本人从修改的模糊控制代码,经过自己修改后可在vc6.0,运行!输入e表示输出误差,ec表示误差变化率,经过测试具有很好的控制效果,对于非线性系统和数学模型难以建立的系统来说有更好的控制效果!现将其公开供大家学习研究!#include <stdio.h>#include"math.h"#define PMAX 100#define PMIN -100#define DMAX 100#define DMIN -100#define FMAX 100 /*语言值的满幅值*/int PFF[4]={0,12,24,48};/*输入量D语言值特征点*/int DFF[4]={0,16,32,64};/*输出量U语言值特征点*/int UFF[7]={0,15,30,45,60,75,90};/*采用了调整因子的规则表,大误差时偏重误差,小误差时偏重误差变化*//*a0=0.3,a1=0.55,a2=0.74,a3=0.89 */int rule[7][7]={//误差变化率-3,-2,-1, 0, 1, 2, 3 // 误差{-6,-6,-6,-5,-5,-5,-4,}, // -3{-5,-4,-4,-3,-2,-2,-1,}, // -2{-4,-3,-2,-1, 0, 1, 2,}, // -1{-4,-3,-1, 0, 1, 3, 4,}, // 0{-2,-1, 0, 1, 2, 3, 4,}, // 1{ 1, 2, 2, 3, 4, 4, 5,}, // 2{ 4, 5, 5, 5, 6, 6, 6}}; // 3/**********************************************************/int Fuzzy(int P,int D) /*模糊运算引擎*/{int U; /*偏差,偏差微分以及输出值的精确量*/unsigned int PF[2],DF[2],UF[4]; /*偏差,偏差微分以及输出值的隶属度*/ int Pn,Dn,Un[4];long temp1,temp2;/*隶属度的确定*//*根据PD的指定语言值获得有效隶属度*/if(P>-PFF[3] && P<PFF[3]){if(P<=-PFF[2]){Pn=-2;PF[0]=FMAX*((float)(-PFF[2]-P)/(PFF[3]-PFF[2]));}else if(P<=-PFF[1]){Pn=-1;PF[0]=FMAX*((float)(-PFF[1]-P)/(PFF[2]-PFF[1]));}else if(P<=PFF[0]){Pn=0;PF[0]=FMAX*((float)(-PFF[0]-P)/(PFF[1]-PFF[0]));}else if(P<=PFF[1]){Pn=1; PF[0]=FMAX*((float)(PFF[1]-P)/(PFF[1]-PFF[0]));}else if(P<=PFF[2]){Pn=2; PF[0]=FMAX*((float)(PFF[2]-P)/(PFF[2]-PFF[1]));}else if(P<=PFF[3]){Pn=3; PF[0]=FMAX*((float)(PFF[3]-P)/(PFF[3]-PFF[2]));}}else if(P<=-PFF[3]){Pn=-2; PF[0]=FMAX;}else if(P>=PFF[3]){Pn=3; PF[0]=0;}PF[1]=FMAX-PF[0];if(D>-DFF[3] && D<DFF[3]){if(D<=-DFF[2]){Dn=-2;DF[0]=FMAX*((float)(-DFF[2]-D)/(DFF[3]-DFF[2])); }else if(D<=-DFF[1]){Dn=-1;DF[0]=FMAX*((float)(-DFF[1]-D)/(DFF[2]-DFF[1]));}else if(D<=DFF[0]){Dn=0;DF[0]=FMAX*((float)(-DFF[0]-D)/(DFF[1]-DFF[0]));}else if(D<=DFF[1]){Dn=1;DF[0]=FMAX*((float)(DFF[1]-D)/(DFF[1]-DFF[0]));}else if(D<=DFF[2]){Dn=2; DF[0]=FMAX*((float)(DFF[2]-D)/(DFF[2]-DFF[1])); }else if(D<=DFF[3]){Dn=3; DF[0]=FMAX*((float)(DFF[3]-D)/(DFF[3]-DFF[2])); }}else if(D<=-DFF[3]){Dn=-2;DF[0]=FMAX;else if(D>=DFF[3]){Dn=3;DF[0]=0;}DF[1]=FMAX-DF[0];/*使用误差围优化后的规则表rule[7][7]*//*输出值使用13个隶属函数,中心值由UFF[7]指定*/ /*一般都是四个规则有效*/Un[0]=rule[Pn-1+3][Dn-1+3];Un[1]=rule[Pn+3][Dn-1+3];Un[2]=rule[Pn-1+3][Dn+3];Un[3]=rule[Pn+3][Dn+3];if(PF[0]<=DF[0])UF[0]=PF[0];elseUF[0]=DF[0];if(PF[1]<=DF[0])UF[1]=PF[1];elseUF[1]=DF[0];if(PF[0]<=DF[1])UF[2]=PF[0];elseUF[2]=DF[1];if(PF[1]<=DF[1])UF[3]=PF[1];elseUF[3]=DF[1];/*同隶属函数输出语言值求大*/if(Un[0]==Un[1]){if(UF[0]>UF[1])UF[1]=0;elseUF[0]=0;if(Un[0]==Un[2]){if(UF[0]>UF[2])UF[2]=0;elseUF[0]=0;}if(Un[0]==Un[3]){if(UF[0]>UF[3])UF[3]=0;elseUF[0]=0;}if(Un[1]==Un[2]){if(UF[1]>UF[2])UF[2]=0;elseUF[1]=0;}if(Un[1]==Un[3]){if(UF[1]>UF[3])UF[3]=0;elseUF[1]=0;}if(Un[2]==Un[3]){if(UF[2]>UF[3])UF[3]=0;elseUF[2]=0;}/*重心法反模糊*//*Un[]原值为输出隶属函数标号,转换为隶属函数值*/ if(Un[0]>=0)Un[0]=UFF[Un[0]];elseUn[0]=-UFF[-Un[0]];if(Un[1]>=0)Un[1]=UFF[Un[1]];elseUn[1]=-UFF[-Un[1]];if(Un[2]>=0)Un[2]=UFF[Un[2]];elseUn[2]=-UFF[-Un[2]];if(Un[3]>=0)Un[3]=UFF[Un[3]];elseUn[3]=-UFF[-Un[3]];temp1=UF[0]*Un[0]+UF[1]*Un[1]+UF[2]*Un[2]+UF[3]*Un[3]; temp2=UF[0]+UF[1]+UF[2]+UF[3];U=temp1/temp2;return U;}void main(){int a=0,e,ec;/*int nowpoint,p1,p2=1;FILE *in,*out;in=fopen("in.txt","r");out=fopen("out.txt","w");*///while(!feof(in))while(1){//fscanf(in,"%d",&nowpoint);//p1=nowpoint;//e=0-nowpoint;//ec= p1-p2;printf("请输入e:");scanf("%d",&e);printf("请输入ec:");scanf("%d",&ec);a=Fuzzy(e,ec);//fprintf(out,"%d ",a);//printf("%d: ",p1);printf("e: %d ec: %d ",e,ec);printf("a: %d \n",a); //p2=p1;}//fclose(in);//fclose(out);}。

【精品】模糊控制规则表生成程序

【精品】模糊控制规则表生成程序

【关键字】精品模糊控制规则表生成程序%偏差E的赋值表E=[1.0 0.8 0.7 0.4 0.1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.2 0.7 1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.1 0.3 0.7 1.0 0.7 0.2 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.1 0.6 1.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 1.0 0.6 0.1 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.2 0.7 1.0 0.7 0.3 0.1 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.2 0.7 1.0 0.7 0.30.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.4 0.7 0.81.0];%偏差变换率EC的赋值表Ec=[1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.3 0.7 1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.3 0.7 1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.3 0.7 1.0 0.7 0.3 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.3 0.7 1.0 0.7 0.3 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.7 1.0 0.7 0.30.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.71.0];%输出U的赋值表u=[1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.3 0.7 1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.3 0.7 1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.3 0.7 1.0 0.7 0.3 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.3 0.7 1.0 0.7 0.3 0.00.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.7 1.0 0.7 0.30.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.7 1.0];%推理语言规则表gz=[ 1 1 1 1 2 4 41 1 1 12 4 42 2 2 2 4 5 52 23456 62 23456 63 34 6 6 6 64 4 6 7 7 7 74 4 6 7 7 7 7 ];i=1;for gzh=1:8for gzl=1:7a=E(gzh,:); %取E 的赋值表的莫一行,并赋值给aa=a'; %a 取专置b=Ec(gzl,:); %取Ec 的赋值表的莫一行,并赋值给b% TE Ec •for m=1:13for n=1:13if a(m,1)>=b(1,n)r(m,n)=b(1,n);elser(m,n)=a(m,1);endendend % 把T E Ec •得到的矩阵变为行向量k=1;for m=1:13for n=1:13Ei_Eci(1,k)=r(m,n);k=k+1;endendEi_Eci=Ei_Eci'; %把刚才得到的行向量变为列向量,方便与U 的行向量相乘m=gz(gzh,gzl); %取U 的某一行U=u(m,:);%T E Ec U •⨯for m=1:169for n=1:13if Ei_Eci(m,1)>=U(1,n)Rii(m,n)=U(1,n);elseRii(m,n)= Ei_Eci(m,1);endendend%得到一条规则的Ri ,并且把Ri 变成行向量,以方便程序实现1ni R Ri ==k=1;for m=1:169for n=1:13Ri(i,k)=Rii(m,n);k=k+1;endendi=i+1;endend%1ni R Ri ==Ri=Ri';for m=1:2197for n=1:i-1if Ri(m,1)>=Ri(m,n)Ri(m,1)=Ri(m,1);elseRi(m,1)=Ri(m,n);endendend%得到Rk=1;for m=1:169for n=1:13R(m,n)=Ri(k,1);k=k+1;endend%()[()()]U k E k Ec k R =⨯aa=[0 0 0 0 0 0 0 0 0 0 0 0 0 ]; %对E ,Ec 采用单点集 for j=1:13bbb=[0 0 0 0 0 0 0 0 0 0 0 0 0 ];aa(1,ii)=1;bbb(1,j)=1;a=aa';b=bbb;k=1;%()()E k Ec k ⨯for m=1:13for n=1:13if a(m,1)>=b(1,n)d(1,k)=b(1,n);k=k+1;elsed(1,k)=a(m,1);k=k+1;endendend%[()()]E k Ec k R ⨯for m=1:13for n=1:169if d(1,n)>=R(n,m)g(1,n)=R(n,m);elseg(1,n)=d(1,n);endendfor n=1:169if g(1,1)>=g(1,n)g(1,1)=g(1,1);elseg(1,1)=g(1,n);endendf(j,m)=g(1,1);end%利用加权平均法得到ui=-6;z=0;k=0;z=f(j,m)*i+z;k=f(j,m)+k;i=i+1;endbb=z/k;u(ii,j)=bb; %u为控制表的矩阵endend附录二实验二控制规则表此文档是由网络收集并进行重新排版整理.word可编辑版本!。

matlab计算模糊控制规则表

matlab计算模糊控制规则表

程序运行结果:输出量的模糊集合表U_control =Columns 1 through 8-5.3500 -5.2353 -5.3500 -5.2353 -5.3500 -5.2353 -4.6923 -4.2581-5.0000 -4.9474 -5.0000 -4.9474 -5.0000 -4.9474 -3.8571 -3.7143-4.6923 -4.5217 -4.6923 -4.5217 -4.6923 -4.5217 -3.0526 -2.9302-4.2581 -4.2581 -4.2581 -4.2581 -4.2581 -4.2581 -2.9302 -2.2909-4.0000 -4.0000 -3.7812 -3.7586 -3.4706 -3.4194 -2.4318 -1.7925-4.0000 -4.0000 -3.3636 -3.0769 -2.4667 -2.1176 -1.5000 -1.0476-3.5882 -3.5484 -2.9250 -2.6000 -0.9600 -0.5094 0 0.5094-2.9231 -2.9231 -2.3333 -1.9057 -0.2632 1.0476 1.5000 2.1176-1.8056 -1.7879 -0.5652 -0.3137 0.4400 1.7925 2.4318 3.4194-1.0000 -1.0000 0.2453 0.9385 1.4211 2.2909 2.9302 4.2581-0.5833 -0.6364 0.6875 1.4211 1.9375 2.9302 3.0526 4.5217-0.2333 -0.2414 1.1190 1.7925 2.3571 3.7143 3.8571 4.94740 0 1.2857 2.0000 2.7143 4.2581 4.6923 5.2353Columns 9 through 13-2.7143 -2.0000 -1.2857 0 0-2.3571 -1.7925 -1.1190 0.2414 0.2333-1.9375 -1.4211 -0.6875 0.6364 0.5833-1.4211 -0.9385 -0.2453 1.0000 1.0000-0.4400 -0.0364 0.1600 1.6000 1.63160.2632 1.9057 2.3333 2.9231 2.92310.9600 2.6000 2.9250 3.5484 3.58822.46673.0769 3.36364.0000 4.00003.4706 3.7586 3.78134.0000 4.00004.2581 4.2581 4.2581 4.2581 4.25814.6923 4.5217 4.6923 4.5217 4.69235.0000 4.9474 5.0000 4.9474 5.00005.3500 5.2353 5.3500 5.2353 5.3500Matlab程序:%作业:计算模糊控制规则表clc;clear;%偏差E的隶属函数表E = [1,0.8,0.7,0.4,0.1,0,0,0,0,0,0,0,0;0.2,0.7,1,0.7,0.3,0,0,0,0,0,0,0,0;0,0.1,0.3,0.7,1,0.7,0.2,0,0,0,0,0,0;0,0,0,0,0.1,0.6,1,0,0,0,0,0,0;0,0,0,0,0,0,1,0.6,0.1,0,0,0,0;0,0,0,0,0,0,0.2,0.7,1,0.7,0.3,0.1,0;0,0,0,0,0,0,0,0,0.2,0.7,1,0.7,0.3;0,0,0,0,0,0,0,0,0.1,0.4,0.7,0.8,1] %8*13的矩阵%偏差E变化率EC的隶属函数表EC =[1,0.7,0.3,0,0,0,0,0,0,0,0,0,0;0.3,0.7,1,0.7,0.3,0,0,0,0,0,0,0,0;0,0,0.3,0.7,1,0.7,0.3,0,0,0,0,0,0;0,0,0,0,0.3,0.7,1,0.7,0.3,0,0,0,0;0,0,0,0,0,0,0.3,0.7,1,0.7,0.3,0,0;0,0,0,0,0,0,0,0,0.3,0.7,1,0.7,0.3;0,0,0,0,0,0,0,0,0,0,0.3,0.7,1] %7*13的矩阵%控制量U的隶属函数表,与偏差变化率隶属函数相同U=[1,0.7,0.3,0,0,0,0,0,0,0,0,0,0;0.3,0.7,1,0.7,0.3,0,0,0,0,0,0,0,0;0,0,0.3,0.7,1,0.7,0.3,0,0,0,0,0,0;0,0,0,0,0.3,0.7,1,0.7,0.3,0,0,0,0;0,0,0,0,0,0,0.3,0.7,1,0.7,0.3,0,0;0,0,0,0,0,0,0,0,0.3,0.7,1,0.7,0.3;0,0,0,0,0,0,0,0,0,0,0.3,0.7,1] %7*13的矩阵%控制规则表,E的模糊分割数为8,EC的模糊分割数为7,包含最大可能的规则数为7*8=56rulelist= [1,1,1,1,2,4,4;1,1,1,1,2,4,4;2,2,2,2,4,5,5;2,2,3,4,5,6,6;2,2,3,4,5,6,6;3,3,4,6,6,6,6;4,4,6,7,7,7,7;4,4,6,7,7,7,7] %8*7的矩阵%********计算模糊控制规则表************for iii=1:13for jjj=1:13for ii=1:8for jj=1:7A_rulelist = rulelist(ii,jj); %模糊控制规则简表对应输出语言值%******计算CiA'************A = E(ii,:); %取Ai'C_A = U(A_rulelist,:); %取Ci' %*****RiA=Ai'与Ci‘对应取小的值,RiA为13*13矩阵*******for i=1:13for j=1:13if(A(i) > C_A(1,j))Ra(i,j) = C_A(1,j);elseRa(i,j) = A(i);endendendAA = zeros(1,13); %取AA=A'AA(1,iii) = 1;for i=1:13 %先取小,C'iA=Ai'。

模糊pid控制规则表

模糊pid控制规则表

模糊pid控制规则表引言在控制系统中,PID(比例、积分、微分)控制器是一种常用的控制器,用于调节和稳定系统的输出。

PID控制器根据误差信号的大小和变化率来调节系统的输入,以使系统的输出接近期望值。

然而,有些情况下,系统的模型未知或难以建模,这就需要采用模糊PID控制来处理。

什么是模糊PID控制模糊PID控制是一种基于模糊逻辑的控制方法,它将模糊逻辑与PID控制器相结合,以解决模型不确定或难以建模的问题。

模糊PID控制器通过将输入和输出变量模糊化,将模糊规则与PID控制器相结合,实现对系统的控制。

模糊PID控制规则表的设计模糊PID控制规则表是模糊PID控制器的核心部分,它定义了模糊逻辑和PID控制器之间的映射关系。

规则表由一系列模糊规则组成,每个模糊规则定义了一个输入模糊集合和输出模糊集合之间的映射关系。

输入模糊集合输入模糊集合是将输入变量模糊化后得到的模糊集合,它用来描述输入变量的状态。

输入模糊集合通常由一组模糊集合函数构成,每个模糊集合函数表示输入变量在某个状态下的隶属度。

例如,对于温度控制系统,输入变量可以是温度,输入模糊集合可以包括“冷”、“温暖”和“热”等模糊集合函数。

输出模糊集合输出模糊集合是将输出变量模糊化后得到的模糊集合,它用来描述输出变量的状态。

输出模糊集合通常由一组模糊集合函数构成,每个模糊集合函数表示输出变量在某个状态下的隶属度。

例如,对于温度控制系统,输出变量可以是加热功率,输出模糊集合可以包括“低”、“中”和“高”等模糊集合函数。

模糊规则模糊规则定义了输入模糊集合和输出模糊集合之间的映射关系。

每个模糊规则由一个条件部分和一个结论部分组成。

条件部分由若干输入模糊集合的组合构成,结论部分由一个输出模糊集合表示。

例如,对于温度控制系统,一个模糊规则可以是:“如果温度冷且温度变化率大,则加热功率高”。

模糊PID控制规则表的设计步骤设计模糊PID控制规则表的一般步骤如下:1.确定输入变量和输出变量,以及它们的模糊集合。

模糊PID控制温控系统的设计C语言程序代码

模糊PID控制温控系统的设计C语言程序代码

模糊PID控制温控系统仿真设计C程序代码#in clude<reg52.h>#defi ne uchar un sig ned char#defi ne uint un sig ned int#defi ne PULSE 200#defi ne number 0.035 sbit SDO = P2A0;sbit SDI = P2A1;sbit CS = P2A2;sbit CLK =卩2八3;sbit EOC = P2A4;sbit RS = P2A5;sbit RW = P2A6;sbit EN = P2A7;sbit KEY仁 P3A0;sbit KEY2=卩3八1;sbit KEY3=卩3八2;sbit KEY4=卩3八3;sbit KEY5=卩3八4;sbit IN1 = P3A5;sbit IN2 = P3A6;sbit ENA = P3A7;uchar flag;uchar flag_start;float S_temp=60.0;float P_temp=20.0;float Kp;float Ki;float Kd;float Err=0.0;float Last_Err=0.0;float D_Err=0.0;float Sum_Err=0.0;float U=0.0;/******************************函数功能:延时******************************/ void delay_ms(uchar z) { _uchar i;uchar j;for(i=z; i>0;i--)for(j=360;j>0;j--);}void delay_us(uchar z){ _uchar i;for(i=z; i>0;i--);} void LCD_WriteData(uchar Dat){RS = 1;P1 = Dat; delay_us(10);EN = 1;delay_us(10);EN = 0;}void LCD_WriteCOM(uchar com){ _RS = 0;P1 = com;delay_us(10);EN = 1;delay_us(10);EN = 0;} void Show_Num(uchar x,uchar y,uchar n, float num) { _uchar a[3];uchar i;uint Temp;Temp=(i nt)num;for(i=0;i <n ;i++){a[i] = Temp%10;Temp = Temp/10;}if(y%2 == 1)LCD_WriteCOM(0x80+x);elseLCD_WriteCOM(0x80+0x40+x);for(i=n;i>0;i--)LCD_WriteData(a[i-1]+0x30);}void Show_Ki(uchar num _Ki){ 一一uchar Temp; num_Ki=Ki*100; Temp=(uchar)num _Ki; Show_Num(10,2,1,Temp%10);Temp=Temp/10;Show_Num(9,2,1,Temp%10);Temp=Temp/10;Show_Num(7,2,1,Temp);} _void Show_char(uchar x,uchar y,uchar ch) { _if(y%2 == 1)LCD_WriteCOM(0x80+x);elseLCD_WriteCOM(0x80+0x40+x);LCD_WriteData(ch);} _ void LCD」ni t(void){ _RW = 0;EN = 0;LCD_WriteCOM(0x38);LCD_WriteCOM(0x0c);LCD_WriteCOM(0x06);LCD_WriteCOM(0x01); }/***********************************函数功能:显示函数************************************void LCD_display(void){ _Show_char(1,1,T); delay_us(10);Show_char(0,1, P);delay_us(1O);Show_char(1,1,T);delay_us(1O);Show_char(2,1,':');delay_us(1O);Show_Num(3,1,3,P_temp);delay_us(1O);Show_char(10,1,'S');delay_us(10);Show_char(11,1,T);delay_us(10);Show_char(12,1,':');delay_us(10);Show_Num(13,1,3,S_temp);delay_us(10);Show_char(0,2, P);delay_us(10);Show_char(1,2,':');delay_us(10);Show_Num(2,2,2,Kp);delay_us(10);Show_char(5,2,T);delay_us(10);Show_char(6,2,':');delay_us(10);Show_char(8,2,'.');delay_us(10);Show_Ki(Ki);delay_us(10);Show_char(12,2,'D');delay_us(10);Show_char(13,2,':');delay_us(10);Show_Num(14,2,2,Kd); delay_us(10);} _/************************************ 函数功能:定时器2初始化*************************************/ void Timer2」ni t(){ _RCAP2H =(65536-300)/256;RCAP2L =(65536-300)%256;TH2 = RCAP2H;TL2 = RCAP2L;ET2 = 1;TR2 = 1;EA = 1;}/************************************* 函数功能:键盘扫描,调整设置温度****************************************/ void key_sca n(v oid){ _if(KEY1==0){delay_ms(1);if(KEY1==0){S_temp=S_temp+1; if(S_temp>=200)S_temp=200;while(!KEY1);}}if(KEY2==0){delay_ms(1);if(KEY2==0){if(S_temp>0) S_temp=S_temp-1;else if(S_temp<=0)S_temp=0;while(!KEY2);}}if(KEY3==0){ delay_ms(1); if(KEY3==0) {if(S_temp<=190)S_temp=S_temp+10;while(!KEY3);} if(KEY4==0){ delay_ms(1); if(KEY4==0) {if(S_temp>=10) S_temp=S_temp-10;while(!KEY4);}} if(KEY5==0){ delay_ms(1); if(KEY5==0) { flag_start=1; while(!KEY5);}}} /************************************函数功能:PID的计算**********************************/void PID_Calculate(){ _Err = S_temp - P_temp; Sum_Err += Err; D_Err = Err - Last_Err; Last_Err = Err; U=Kp*Err+Ki*Sum_Err+Kd*D_Err; U=( in t)U;if(U>=0){ if(U>=200) U=200;flag=1;}else{U=-U;if(U>=200)U=200;flag=0;WORD 整理版{}} /***********************************************函数功能:PID 参数Kp 的计算************************************************/float fuzzy_kp(float e, float ec) 〃e,ec 表示误差,误差变化率 { _float Kp_calcu;uchar nu m,pe,pec;float code eRule[7]={-3.0,-2.0,-1.0,0.0,1.0,2.0,3.0}; 〃误差 E 的模糊论域float code ecRule[7]={-3.0,-2.0,-1.0,0.0,1.0,2.0,3.0}; //误差变化率 EC 的模糊论域222,2,1,2,2,1,1,1,1,1,1,1,1,1,0,1,0,1,1,0,0,1,0,0,1,0,0,1,0,1,0,0,2,3,3,3,3,3,3,3};/*****误差E 隶属函数描述*****/if(e<eRule[0]){eFuzzy[0] =1.0;pe = 0;}else if(eRule[0]<=e && e<eRule[1]){eFuzzy[0] = (eRule[1]-e)/(eRule[1]-eRule[0]); pe = 0;}else if(eRule[1]<=e && e<eRule[2]){eFuzzy[0] = (eRule[2] -e)/(eRule[2]-eRule[1]); pe = 1;}else if(eRule[2]<=e && e<eRule[3])eFuzzy[O] = (eRule[3] -e)/(eRule[3]-eRule[2]); pe = 2;}float eFuzzy[2]={0.0,0.0};float ecFuzzy[2]={0.0,0.0}; float code kpRule[4]={0.0,8.0,16.0,24.0}; float KpFuzzy[4]={0.0,0.0,0.0,0.0}; in t code KpRule[7][7]= {3,3,3,3,3,3,3,//隶属于误差E 的隶属程度 //隶属于误差变化率EC 的隶属程度 //Kp 的模糊子集//隶属于Kp 的隶属程度 //Kp 的模糊控制表else if(eRule[3]v=e && e<eRule[4]){ eFuzzy[0] = (eRule[4]-e)/(eRule[4]-eRule[3]); pe = 3;}else if(eRule[4]<=e && e<eRule[5]){eFuzzy[0] = (eRule [ 5]-e)/(eRule[5]-eRule[4]); pe = 4;}else if(eRule[5]<=e && e<eRule[6]){eFuzzy[0] = (eRule[6]-e)/(eRule[6]-eRule [5]); pe = 5;}else{eFuzzy[0] =0.0;pe =5;}eFuzzy[1] =1.0 - eFuzzy[0];/*****误差变化率EC隶属函数描述*****/ if(ec<ecRule[0]){ecFuzzy[0] =1.0;pec = 0;}else if(ecRule[0]v=ec && ec<ecRule[1]){ecFuzzy[0] = (ecRule[1] - ec)/(ecRule[1]-ecRule[0]); pec = 0 ; }else if(ecRule[1]<=ec && ec<ecRule[2]){ecFuzzy[0] = (ecRule[2] - ec)/(ecRule[2]-ecRule[1]); pec = 1; }else if(ecRule[2]v=ec && ec<ecRule[3]){ecFuzzy[0] = (ecRule[3] - ec)/(ecRule[3]-ecRule[2]); pec = 2 ;else if(ecRule[3]v=ec && ec<ecRule[4]){ ecFuzzy[O] = (ecRule[4]-ec)/(ecRule[4]-ecRule[3]); pec=3;}else if(ecRule[4]<=ec && ec<ecRule[5]){ ecFuzzy[0] = (ecRule [5]-ec)/(ecRule[5]-ecRule[4]); pec=4;}else if(ecRule [5] <=ec && ec<ecRule [ 6]){ ecFuzzy[0] = (ecRule [6]-ec)/(ecRule[6]-ecRule [ 5]); pec=5;}else{ ecFuzzy[0] =0.0; pec = 5;ecFuzzy[1] = 1.0 - ecFuzzy[0];查询模糊规则表*********/num =KpRule[pe][pec];KpFuzzy [num] += eFuzzy[0]*ecFuzzy[0]; num =KpRule[pe][pec+1];KpFuzzy [num] += eFuzzy[0]*ecFuzzy[1]; num =KpRule[pe+1][pec];KpFuzzy [num] += eFuzzy[1]*ecFuzzy[0];num =KpRule[pe+1][pec+1];KpFuzzy [num] += eFuzzy[1]*ecFuzzy[1];/********* 加权平均法解模糊Kp_calcu=KpFuzzy[0]*kpRule[0]+KpFuzzy[1]*kpRule[1]+KpFuzzy[2]*kpRule[ 2]+KpFuzzy[3]*kpRule[3];return(Kp_calcu);}/***********************************************函数功能:PID参数Ki的计算float fuzzy_ki(float e, float ec){ _float Ki_calcu;uchar nu m,pe,pec;float code eRule[7]={-3.0,-2.0,-1.0,0.0,1.0,2.0,3.0};float code ecRule[7]={-3.0,-2.0,-1.0,0.0,1.0,2.0,3.0};float eFuzzy[2]={0.0,0.0};float ecFuzzy[2]={0.0,0.0};float code kiRule[4]={0.00,0.01,0.02,0.03};float KiFuzzy[4]={0.0,0.0,0.0,0.0};in t code KiRule[7][7]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,WORD整理版{0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 2,0,0,0,0,0,1, 3,333,3,3,3};/*****误差隶属函数描述*****/if(e<eRule[0]){eFuzzy[0] =1.0;pe = 0;}else if(eRule[0]<=e && e<eRule[1]){eFuzzy[0] = (eRule[1]-e)/(eRule[1]-eRule[0]); pe = 0; }else if(eRule[1]<=e && e<eRule[2]){eFuzzy[0] = (eRule[2] -e)/(eRule[2]-eRule[1]); pe = 1; }else if(eRule[2]<=e && e<eRule[3]){eFuzzy[0] = (eRule[3] -e)/(eRule[3]-eRule[2]); pe = 2; }else if(eRule[3]<=e && e<eRule[4]){ eFuzzy[0] = (eRule[4]-e)/(eRule[4]-eRule[3]); pe = 3;}else if(eRule[4]<=e && e<eRule[5]){eFuzzy[0] = (eRule [ 5]-e)/(eRule[5]-eRule[4]); pe = 4; }else if(eRule[5]<=e && e<eRule[6])eFuzzy[O] = (eRule[6]-e)/(eRule[6]-eRule [5]); pe = 5; }else{eFuzzy[O] =0.0;pe =5;}eFuzzy[1] =1.0 - eFuzzy[0];/*****误差变化隶属函数描述*****/if(ec<ecRule[0]){ecFuzzy[0] =1.0;pec = 0;WORD整理版}else if(ecRule[0]<=ec && ec<ecRule[1]){ecFuzzy[0] = (ecRule[1] - ec)/(ecRule[1]-ecRule[0]); pec = 0 ; }else if(ecRule[1]<=ec && ec<ecRule[2]){ecFuzzy[0] = (ecRule[2] - ec)/(ecRule[2]-ecRule[1]); pec = 1; }else if(ecRule[2]v=ec && ec<ecRule[3]){ecFuzzy[0] = (ecRule[3] - ec)/(ecRule[3]-ecRule[2]); pec = 2 ; }else if(ecRule[3]<=ec && ec<ecRule[4]){ ecFuzzy[0] = (ecRule[4]-ec)/(ecRule[4]-ecRule[3]); pec=3;}else if(ecRule[4]<=ec && ec<ecRule[5]){ ecFuzzy[0] = (ecRule [5]-ec)/(ecRule[5]-ecRule[4]); pec=4;}else if(ecRule [5] <=ec && ec<ecRule [ 6]){ ecFuzzy[0] = (ecRule [6]-ec)/(ecRule[6]-ecRule [ 5]); pec=5;}else{WORD整理版{ecFuzzy[O] =0.0; pec = 5;ecFuzzy[1] = 1.0 - ecFuzzy[O];/*********** 查询模糊规则表num =KiRule[pe][pec];KiFuzzy [num] += eFuzzy[0]*ecFuzzy[0]; num =KiRule[pe][pec+1];KiFuzzy[ num] += eFuzzy[0]*ecFuzzy[1]; num =KiRule[pe+1][pec];KiFuzzy[ num] += eFuzzy[1]*ecFuzzy[0];num =KiRule[pe+1][pec+1];KiFuzzy[ num] += eFuzzy[1]*ecFuzzy[1];/******** 加权平均法解模糊Ki_calcu=KiFuzzy[0]*kiRule[0]+KiFuzzy[1]*kiRule[1]+KiFuzzy[2]*kiRule[2] +KiFuzzy[3]*kiRule[3];return(Ki_calcu);} _/***********************************************函数功能:PID参数Kd的计算float fuzzy_kd(float e, float ec){ _float Kd_calcu;uchar nu m,pe,pec;float code eRule[7]={-3.0,-2.0,-1.0,0.0,1.0,2.0,3.0};float code ecRule[7]={-3.0,-2.0,-1.0,0.0,1.0,2.0,3.0};float eFuzzy[2]={0.0,0.0};float ecFuzzy[2]={0.0,0.0};float code kdRule[4]={0.0,1.0,2.0,3.0};float KdFuzzy[4]={0.0,0.0,0.0,0.0};in t code KdRule[7][7]={3,3,3,2,2,22222,1,1,1,1,1,1,2,1,1,2,1,1,1,0,1,0,1,1,1,1,0,0,0,1,1,2,2,1,0 ,1,1,1,3,3,3,3,2,3,2};/*****误差隶属函数描述*****/if(e<eRule[0])WORD整理版{eFuzzy[O] =1.0; pe = 0;}else if(eRule[O]v=e && e<eRule[1]){eFuzzy[0] = (eRule[1]-e)/(eRule[1]-eRule[0]); pe = 0; }else if(eRule[1]<=e && e<eRule[2]){eFuzzy[0] = (eRule[2] -e)/(eRule[2]-eRule[1]); pe = 1; }else if(eRule[2]<=e && e<eRule[3]){eFuzzy[0] = (eRule[3] -e)/(eRule[3]-eRule[2]); pe = 2; }else if(eRule[3]<=e && e<eRule[4]){ eFuzzy[0] = (eRule[4]-e)/(eRule[4]-eRule[3]); pe = 3;}else if(eRule[4]<=e && e<eRule[5]){eFuzzy[0] = (eRule [ 5]-e)/(eRule[5]-eRule[4]); pe = 4; }else if(eRule[5]<=e && e<eRule[6]){eFuzzy[0] = (eRule[6]-e)/(eRule[6]-eRule [5]); pe = 5; }else{eFuzzy[0] =0.0;pe =5;}eFuzzy[1] =1.0 - eFuzzy[0];/*****误差变化隶属函数描述*****/if(ec<ecRule[0])ecFuzzy[0] =1.0;pec = 0;}else if(ecRule[O]v=ec && ec<ecRule[1]){ecFuzzy[O] = (ecRule[1] - ec)/(ecRule[1]-ecRule[0]); pec = 0 ;}else if(ecRule[1]<=ec && ec<ecRule[2]){ecFuzzy[0] = (ecRule[2] - ec)/(ecRule[2]-ecRule[1]); pec = 1;}else if(ecRule[2]v=ec && ec<ecRule[3]){ecFuzzy[0] = (ecRule[3] - ec)/(ecRule[3]-ecRule[2]); pec = 2 ;}else if(ecRule[3]<=ec && ec<ecRule[4]){ ecFuzzy[0] = (ecRule[4]-ec)/(ecRule[4]-ecRule[3]); pec=3;}else if(ecRule[4]<=ec && ec<ecRule[5]){ ecFuzzy[0] = (ecRule [5]-ec)/(ecRule[5]-ecRule[4]); pec=4;}else if(ecRule [5] <=ec && ec<ecRule [ 6]){ ecFuzzy[0] = (ecRule [6]-ec)/(ecRule[6]-ecRule [ 5]); pec=5;}else{ecFuzzy[0] =0.0;pec}ecFuzzy[1] =/*********** =1.0 - ecFuzzy[0];查询模糊规则表*************/num =KdRule[pe][pec];KdFuzzy[ num] += eFuzzy[0]*ecFuzzy[0]; num =KdRule[pe][pec+1];KdFuzzy [num] += eFuzzy[0]*ecFuzzy[1];num =KdRule[pe+1][pec];KdFuzzy [num] += eFuzzy[1]*ecFuzzy[0]; num =KdRule[pe+1][pec+1];KdFuzzy [num] += eFuzzy[1]*ecFuzzy[1];Kd_calcu=KdFuzzy[0]*kdRule[0]+KdFuzzy[1]*kdRule[1]+KdFuzzy[2]*kdRule[ 2]+KdFuzzy[3]*kdRule[3];return(Kd_calcu);} _/*****************************************函数功能:AD将采集到的温度进行转化********************************************/uin t read_tlc2543(uchar port)加权平均法解模糊********/{ _static uchar PORT = 0;uchar Temp,i,k=0;uint AD_value=0;Temp = port;CS = 1;CLK = 0;Temp<<=4;CS = 0;while(1){for(i=0;i<8;i++){CLK = 0;if(Temp&0x80)SDI = 1;elseSDI = 0;AD_value<<=1;if(SDO)AD_value |= 0x01;CLK = 1;Temp<<=1;}for(i=8;i<12;i++){CLK = 0;AD_value<<=1;if(SDO)AD_value |= 0x01;delay_us(10);CLK = 1;}CLK = 0;CS = 1;if(PORT == port)break;else{Temp = port; Temp<<=4; delay_us(10);CS = 0;AD_value = 0;} _ k++;if(k>2){PORT = port;}} returnAD_value;} _float AD_deal(void){ _ui nt AD_value;float temp;AD_value = read_tlc2543(0x00); temp = AD_value* nu mber; return temp; }主函数********void ma in (void){uchar AD_value=0; flag=0;flag_start=0;ENA=1;IN1=0;IN2=0;LCD」ni t(); LCD_display();Timer2_I ni t();while(1){ if(flag_start==0) { _key_sca n();Show_Num(13,1,3,S_temp);Show_Num(3,1,3,P_temp); else if(flag_start==1) {P_temp=AD_deal();Show_Num(3,1,3,P_temp);PID_Calculate();Kp=fuzzy_kp(Err/5,D_Err);Ki=fuzzy_ki(Err/5,D_Err);Kd=fuzzy_kd(Err/5,D_Err);Show_Num(2,2,2,Kp);Show_Ki(Ki);Show_Num(14,2,2,Kd);key_sca n();Show_Num(13,1,3,S_temp);}}} void timer2() in terrupt 5 {static uchar nu m1=0; TF2 = 0;nu m1++;if(n um1<=U){if(flag==1) {IN1 = 0;IN2 = 1;}else {IN1 = 1;IN2 = 0;}}elseENA=0;if(nu m1>PULSE) {num仁0;ENA=1;} } //E量化因子5定时器2中断************* */。

模糊控制查询表的MATLAB实现

模糊控制查询表的MATLAB实现

模糊控制查询表的MATLAB 实现叶高文(厦门海洋职业技术学院,福建厦门361012)MATLAB realization of Fuzzy Control Query Table在运用模糊控制技术进行工业控制时,为了减少在线计算量,节省内存,提高PLC 等控制器的运行效率,通常根据隶属度函数和模糊控制规则表离线计算对应的模糊控制表,并将该表置于PLC 等控制器中,供实时控制时使用。

在实时控制过程中,根据模糊量化后的偏差值e 和偏差变化率ec 直接查询控制表以获得模糊控制输出量,再转换为精确输出控制量。

在实际的控制过程中由于微分作用的效果不是很明显,故很多实际情况中只采用PI 控制。

本文论述的对象是常用PLC 的模糊PI 控制。

不是PLC 的系统,可将积分时间转换为积分系数。

1模糊PI 控制模型说明本文提供一个实际工业控制的模糊查询表的MATLAB 实现过程,模糊PI 模型如图1。

图1模糊PI 控制器模型如图1,模糊控制器的输入量采用实际被控制量与给定量的偏差e 和偏差变化率ec ,参数整定机构采用增量型调整原理,输出为比例系数增量ΔK P 和积分时间增量ΔTi ,再经式K P =K P0+ΔK P 和式T I =T I0+ΔTi 计算得到PI 控制器的比例系数KP 和积分时间值TI 。

2模型输入输出模糊控制规则表2.1定义输入输出变量的隶属度矢量表一般情况下,输入量偏差e 和偏差变化率△e 以及输出变量ΔKP 和ΔTi 的离散论域都设定为13个量化等级邀-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6妖。

为方便MATLAB 编程,对相关的变量选择进行一些改变。

原先的输入变量偏差e 和偏差变化率ec 的量化等级邀-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6妖改写为邀1,2,3,4,5,6,7,8,9,10,11,12,13妖。

而输出变量ΔKP 和ΔTi 得量化等级保持为邀-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6妖。

过程控制汇总的木模糊控制

过程控制汇总的木模糊控制
• Zadeh表示法
A(u1 ) A(u2 ) A(un ) A (9.1) u1 u2 un
上式中 A ,为论域

U u1, u2 ,, un 上的模糊集合。
10
9 模糊控制
• 向量表示法式(9.1)还可简单地表示为
• 序偶表示法式(9.1)的序偶形式为
A ( A(u1), A(u2 ),, A(un ))
9 模糊控制
est
1
9 模糊控制
本章学习内容
9.1 9.2 9.3 9.4 9.5 9.6 概 述 模糊集合的基本概念 模糊关系 模糊推理 模糊控制器原理及设计 工业电阻炉温度模糊控制系统
2
9 模糊控制
9.1 概述 模糊的基本感念
模糊——指客观事物彼此间的差异在中间过渡 时,界限不分明。比如,我们说“天气热”, 那么气温到底多少度才算“热”?显然,没有明 确的界限,这种概念称之为模糊概念。1965年, 美国自动控制理论专家L.A.Zadeh首次提出了模 糊集合的概念,创立了模糊数学。1974年,英 国的Mamdani首先把模糊理论用于工业控制,从 此,模糊控制理论及模糊控制系统的应用迅速 发展。
(15 x 25) ( x 25)
A( x)
8
9 模糊控制
我们研究年龄为30岁和28岁的人(=30和=28) 对于年青人的隶属度。
【解】
A(30) = 0.5 A(28) =0.74
9
9 模糊控制
模糊集合的表示
当模糊集合中的元素为有限个时,模糊集合 可表示为 令 论域 U u1, u2 ,, un
C A B
23
9 模糊控制
【例9.7】学生甲、乙、丙参加艺术五项全能比赛, 各项均以20分为满分。比赛结果如表9. 1所示
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档