模糊控制规则表生成程序
模糊控制的实现具体过程强势吐血推荐ppt课件
双击
Mfedit Ruleedit
Mfedit
4
输出模糊变量图形框
双击
基本属性包括:
1. 模糊集合合成运算(连接词的运算) min(最小法) ① and prod(乘积法)
5
② or
ቤተ መጻሕፍቲ ባይዱ
max(最大法) prober(概率法)
prober(a,b)=a+b-ab
6
2. 蕴涵计算(Implication)
模糊推理输入输出曲面视图Surfview (Surface)
1
2
⑴ 模糊推理系统编辑器Fuzzy 处理最顶层构建问题,例如输入输出变量的数目、变量名等 激活(进入)方法:命令窗口(command window)执行 Fuzzy命令。
激活模糊推理系统系统编辑器 :
3
基本属性
输入模糊变量图形框 组成 模糊规则图形框
12
③ 函数gaussmf 功能:建立高斯型隶属度函数。
格式:y=gaussmf(x,[sig c])
其中:参数x指定变量论域范围,参数c决定了函数的中心 点,sig决定了函数曲线的宽度σ 。 高斯函数的表达式为: y e 例: x=0:0.1:10; y=gaussmf(x, [2 5]); plot(x,y) xlable(‘gaussmf,P=[2 5]’)
15
2、模糊逻辑系统输入输出变量及隶属度函数的添加 ①函数addvar 功能:向模糊推理系统中添加语言变量。 格式:a=addvar(a, varType, varName, varBounds) 说明:参数列表中,a为模糊推理系统对应的矩阵变量名, varType用于指定语言变量的类型为字符型(如‘input’ 或‘output’); varName用于指定语言变量的名; varBounds用于指定语言变量的论域范围。 注意:对于添加到同一个模糊推理系统的语言变量,按 先后顺序自动编号,编号从1开始,逐渐递增。对于分属 于输入与输出的不同语言变量则独立地分别编号。 例:a=newfis(‘tipper’); //创建并返回一个新的FIS系统 a=addvar(a,’input’,’service’,[0 10]); getfis(a,’input’,1) //取得FIS的部分或全部属性
fuzzy_control模糊控制算法
模糊逻辑跟踪控制
模糊控制的基本原理框图如下:
图1 模糊控制的基本原理框图
模糊控制器是模糊控制系统的核心,一个模糊控制系统的性能优劣主要取决于模糊控制器的结构、所采用的模糊控制规则、合成推理算法,以及模糊决策的方法等因素。
文本对应的程序,采用单变量二维模糊控制器,输入分别是 误差和误差的倒数,输出为控制量。
其中基模糊控制器结构如图2所示,模糊规则表如表1所示。
de dt
图2模糊控制器结构
表1 模糊规则表
在本仿真程序中,被控对象为:5
3245.235*10()+87.35 1.047*10G s s s s
=+
采样时间为1ms ,采用z 变换进行离散化,经过z 变换后的离散化对象为:
()(2)(1)(3)(2)(4)(3)(2)(1) (3)(2)(4)(3)
yout k den yout k den yout k den yout k num u k num u k num u k =------+-+-+-
其中,反模糊化采用“Centroid”方法,方波响应及控制器输出结果如图3和图4所示:。
模糊控制表推导过程
模糊控制表推导过程Company Document number:WUUT-WUUY-WBBGB-BWYTT-1982GT一、模糊划分及模糊化对于偏差e的模糊划分取NB、NS、ZE、PS、PB五个模糊量,并且在相邻的模糊量中,存在如下关系:1)、本模糊量的隶属度最大的元素,是相邻模糊量的隶属度为0的元素。
2)、模糊量的形状是等腰三角形。
3)、论域为[-X,X].二、论域变换1、偏差e的论域变换偏差e的论域是[-X,X],欲把它变换成离散论域[-3,-2,-1,0,1,2,3],则有量化因子qe:qe=6/2X=3/X显然,对于元素-X、-2X/3、-X/3、0、X/3、2X/3、X,则有相应的离散论域元素ei:e1=qe*(-X-0)=-3e2=qe*(-2X/3-0)=-2e3=qe*(-X/3-0)=-1e4=qe*(0-0)=0e5=qe*(X/3-0)=1e6=qe*(2X/3-0)= 2e7=qe*(X-0)=31、偏差变化率de的论域变换偏差变化率de的论域是[-Y,Y],欲把它变换成离散论域[-3,-2,-1,0,1,2,3],则有量化因子qde:qde=6/2Y=3/Y显然,对于元素-Y、-2Y/3、-Y/3、0、Y/3、2Y/3、Y,则有相应的离散论域元素dei:de1=qde*(-Y-0)=-3de2=qde*(-2Y/3-0)=-2de3=qde*(-Y/3-0)=-1de4=qde*(0-0)=0de5=qde*(Y/3-0)=1de6=qde*(2Y/3-0)= 2de7=qde*(Y-0)=32、控制量C的论域变换偏差C的论域是[-W,W],欲把它变换成离散论域[-3,-2,-1,0,1,2,3],则有量化因子qC:qC=6/2W=3/W显然,对于元素-W、-2W/3、-W/3、0、W/3、2W/3、W,则有相应的离散论域元素Ci:C1=qC*(-W-0)=-3C2=qC*(-2W/3-0)=-2C3=qC*(-W/3-0)=-1C4=qC*(0-0)=0C5=qC*(W/3-0)=1C6=qC*(2W/3-0)= 2C7=qC*(W-0)=3定义的模糊集(名称),确定隶属度:[PB PS ZE NS NB]模糊集的隶属度函数表三、给出模糊控制规则表:if e is NB,and de is PB,then C is PB.if e is NB,and de is PS,then C is PB.if e is NB,and de is ZE,then C is PB.if e is NB,and de is NS,then C is PB.if e is NS,and de is ZE,then C is PS.if e is NS,and de is PS,then C is PS.if e is NS,and de is PB,then C is PS.if e is ZE,and de isZE,then C is ZE.if e is ZE,and de is PS,then C is NS.if e is ZE,and de is PB,then C is NB根据这些控制规则,可以列出对应的控制规则表如下:四、求取模糊控制表由于偏差e的离散论域有7个元素{-3,-2,-1,0,1,2,3},而偏差变化率de的离散论域也有7个元素{-3,-2,-1,0,1,2,3},在输入时,e或de的精确值都会量化到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
模糊PID控制器程序详解
a=addmf(a,'output',1,'NS','trimf',[-0.3,-0.1,0.1]);
a=addmf(a,'output',1,'Z','trimf',[-0.2,0,0.2]);
a=addmf(a,'output',1,'PS','trimf',[-0.1,0.1,0.3]);
a=addmf(a,'output',1,'PM','trimf',[0,0.2,0.3]);
a=addmf(a,'output',1,'PB','smf',[0.1,0.3]);
设定输出Ki的范围,隶属度函数
[num,den]=tfdata(dsys,'v');
u_1=0.0;
u_2=0.0;
u_3=0.0;
y_1=0;
y_2=0;
y_3=0;
x=[0,0,0]';
error_1=0;
e_1=0.0;
ec_1=0.0;
kp0=0.40;
6 5 2 6 5 1 1;
6 6 2 7 5 1 1;
6 7 1 7 7 1 1;
7 1 4 4 7 1 1;
7 2 4 4 6 1 1;
7 3 2 5 6 1 1;
a=addmf(a,'output',3,'PS','trimf',[-1,1,3]);
模糊控制响应表自动生成软件的设计及应用
在实际中一个模糊控制器的控制效果好坏 度值 ,其它类似 …。 是需要 经过实际中多次实验调试的 , 并根 1 . 2模糊集合直积 ( 笛卡尔乘积 )的定义 据调试结果修改相应 的控制规则表 。 我们 对于模 糊集 合 和 的直 积 ×B,
l Ov. I0] .01 v I2 2 I l
0. 7
=
““4 ) ix I
^ Leabharlann “ l) V Hg ) x x {
^ ^
ma( ㈤ , “n ) x “. l、 x 表示X 对模糊集 合A的隶属程
0 0 0
^ ^
^
8 。 = 0
I ^ 6 v 0 ^0 ) ( 1 07v O ^ l ( 0 ) ( 2 0 ^ ) ( 2 0 ) 01 3 4 l ^ ) ( 9 、 ( 8 0 ) ( 9 O ) (8 0 V 0 , 3 0 ^ v0 ^ I 0 6 O) 7 4
68
『8 0] . 8 170 0 0 0】 =0 l5 , , . l 2 9 6 .【
1 1.I 0
△ T=C ,其中 i 1 2 i = 1 ,…m, 3 = ,…n 是 误差 , 是误 差的语言变量值; A. △ P 是误差变化率 ,曰 是误差变化率的语言
维普资讯
家电科技 I h a plne eho g i pac cnl y C nA i T o
模糊控制响应表自动生成
黼 磷蚋 政獭 勘峨
软件的设计及应用
%羁 鹄鼹 骰豫 ≮ | 4| 《 《 臻 鞔* % 。 : 。 -
0 6 0 0 7V 04 3 06 07
I 【 知 道, 每次计算模糊控制规则响应表的过 其中子集 称 为 到 的模糊关系 ,并且 2模糊控制|法
模糊控制实验图表
模糊控制实验图表
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
离散域,无噪声,位置式
各控制系统静态和动态性能一览表。
2018-模糊规则表-word范文模板 (11页)
本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==模糊规则表篇一:模糊控制表推导过程一、模糊划分及模糊化对于偏差e的模糊划分取NB、NS、ZE、PS、PB五个模糊量,并且在相邻的模糊量中,存在如下关系:1)、本模糊量的隶属度最大的元素,是相邻模糊量的隶属度为0的元素。
2)、模糊量的形状是等腰三角形。
3)、论域为[-X,X].-X-2X/3 -X/30X/3 2X/3 X图1 隶属函数图象二、论域变换1、偏差e的论域变换偏差e的论域是[-X,X],欲把它变换成离散论域[-3,-2,-1,0,1,2,3],则有量化因子qe: qe=6/2X=3/X显然,对于元素-X、-2X/3、-X/3、0、X/3、2X/3、X,则有相应的离散论域元素ei: e1=qe*(-X-0)=-3 e2=qe*(-2X/3-0)=-2 e3=qe*(-X/3-0)=-1 e4=qe*(0-0)=0 e5=qe*(X/3-0)=1 e6=qe*(2X/3-0)= 2 e7=qe*(X-0)=31、偏差变化率de的论域变换偏差变化率de的论域是[-Y,Y],欲把它变换成离散论域[-3,-2,-1,0,1,2,3],则有量化因子qde: qde=6/2Y=3/Y显然,对于元素-Y、-2Y/3、-Y/3、0、Y/3、2Y/3、Y,则有相应的离散论域元素dei:de1=qde*(-Y-0)=-3 de2=qde*(-2Y/3-0)=-2 de3=qde*(-Y/3-0)=-1de4=qde*(0-0)=0 de5=qde*(Y/3-0)=1 de6=qde*(2Y/3-0)= 2 de7=qde*(Y-0)=3 2、控制量C的论域变换偏差C的论域是[-W,W],欲把它变换成离散论域[-3,-2,-1,0,1,2,3],则有量化因子qC: qC=6/2W=3/W显然,对于元素-W、-2W/3、-W/3、0、W/3、2W/3、W,则有相应的离散论域元素Ci: C1=qC*(-W-0)=-3 C2=qC*(-2W/3-0)=-2 C3=qC*(-W/3-0)=-1 C4=qC*(0-0)=0 C5=qC*(W/3-0)=1 C6=qC*(2W/3-0)= 2 C7=qC*(W-0)=3定义的模糊集(名称),确定隶属度: [PBPSZE NS NB] 模糊集的隶属度函数表三、给出模糊控制规则表:if e is NB,and de is PB,then C is PB. if e is NB,and de is PS,then Cis PB. if e is NB,and de is ZE,then C is PB. if e is NB,and de is NS,then C is PB. if e is NS,and de is ZE,then C is PS. if e is NS,and de is PS,then C is PS. if e is NS,and de is PB,then C is PS. if e is ZE,and de isZE,then C is ZE. if e is ZE,and de is PS,then C is NS. if e is ZE,and de is PB,then C is NB根据这些控制规则,可以列出对应的控制规则表如下:四、求取模糊控制表由于偏差e的离散论域有7个元素{-3,-2,-1,0,1,2,3},而偏差变化率de的离散论域也有7个元素{-3,-2,-1,0,1,2,3},在输入时,e或de的精确值都会量化到5个元素之中的任何一个。
模糊控制算法流程
模糊控制算法流程一、引言模糊控制是一种基于模糊逻辑的控制方法,它可以处理一些复杂或不确定的系统。
模糊控制算法的流程是指在进行模糊控制设计时所遵循的一系列步骤和流程。
本文将介绍模糊控制算法的流程,并对其各个步骤进行详细说明。
二、问题定义在进行模糊控制算法设计之前,首先需要明确控制的目标和问题定义。
这包括确定输入和输出变量、规定控制的目标和要求等。
通过明确问题定义,可以为后续的模糊控制算法设计提供准确的依据。
三、建立模糊规则库模糊规则库是模糊控制的核心部分,它由一系列模糊规则组成。
每条模糊规则包含若干模糊条件和一个模糊结论。
建立模糊规则库的过程包括确定模糊变量的语言项、设定模糊集合以及确定模糊规则的形式。
通过合理地建立模糊规则库,可以使模糊控制系统能够更好地适应实际问题。
四、模糊推理模糊推理是指根据已建立的模糊规则库,将模糊输入通过模糊规则进行推理,得到模糊输出的过程。
模糊推理的方法主要有模糊综合法、模糊匹配法等。
在进行模糊推理时,需要将模糊输入通过模糊规则库进行匹配,得到模糊输出的隶属度。
五、模糊化和去模糊化模糊化和去模糊化是模糊控制算法中的重要步骤。
模糊化是将模糊输出的隶属度转化为真实的输出值的过程,而去模糊化则是将模糊输入转化为模糊输出的隶属度的过程。
常用的模糊化方法有最大隶属度法、平均隶属度法等,常用的去模糊化方法有中心法、面积法等。
六、仿真和验证在完成模糊控制算法的设计后,需要进行仿真和验证。
通过建立仿真模型,将设计的模糊控制算法应用于实际问题,验证其控制效果和性能。
通过仿真和验证,可以进一步优化和改进模糊控制算法,提高其在实际问题中的应用效果。
七、应用和总结模糊控制算法在实际问题中具有广泛的应用价值。
通过合理地设计和应用模糊控制算法,可以解决一些复杂或不确定的控制问题。
然而,在实际应用中,还需要根据具体问题的特点进行进一步的改进和优化。
因此,模糊控制算法的应用和总结是一个不断完善和提高的过程。
模糊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程序
由于项目需要,需要模糊控制算法,之前此类知识为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);}。
模糊控制规则表
模糊控制规则表什么是模糊控制规则表模糊控制规则表是模糊控制系统中的关键组成部分之一。
它定义了输入变量和输出变量之间的模糊关系,并通过一系列规则来描述输入和输出之间的映射关系。
模糊控制规则表的设计和优化对于模糊控制系统的性能至关重要。
模糊控制规则表的结构模糊控制规则表由多个规则组成,每个规则包含一个条件部分和一个结论部分。
条件部分用于描述输入变量的模糊集合,结论部分用于描述输出变量的模糊集合。
模糊控制规则表的结构可以用以下形式表示:IF <条件1> AND <条件2> AND ... THEN <结论>其中,条件和结论可以使用模糊集合的标签或模糊数值表示。
模糊控制规则表的设计方法模糊控制规则表的设计方法可以分为基于经验和基于模型两种。
基于经验的设计方法基于经验的设计方法是通过专家的经验和直觉来确定模糊控制规则表的内容。
专家可以根据自己的知识和经验,提供一些规则,并根据系统的响应进行调整和优化。
这种方法的优点是简单易行,但缺点是需要依赖专家的经验,且无法保证获得最优的控制效果。
基于模型的设计方法基于模型的设计方法是通过数学模型和系统辨识技术来确定模糊控制规则表的内容。
首先需要建立系统的数学模型,然后通过系统辨识技术从实验数据中提取模型的参数。
接下来,可以使用模型来生成一些基本规则,并根据系统的性能指标进行优化。
这种方法的优点是可以自动化地生成规则,并且可以通过优化算法来获得最优的控制效果。
模糊控制规则表的优化方法模糊控制规则表的优化方法可以分为两类:规则剪裁和规则生成。
规则剪裁规则剪裁是指通过删除一些不必要或冗余的规则来简化规则表。
可以使用以下方法进行规则剪裁:1.删除冲突规则:如果存在两个规则的条件部分完全相同,但结论部分不同,则可以删除其中一个规则。
2.删除冗余规则:如果存在一个规则的条件部分可以被其他规则的条件部分包含,则可以删除这个规则。
3.合并相似规则:如果存在多个规则的条件部分相似,但结论部分不同,则可以合并这些规则。
模糊控制表推导过程
一、模糊划分及模糊化对于偏差 e 的模糊划分取 NB 、 NS 、 ZE 、 PS 、 PB 五个模糊量,并且在相邻的模糊量中,存在如下关系:1 )、本模糊量的隶属度最大的元素,是相邻模糊量的隶属度为 0 的元素。
2 )、模糊量的形状是等腰三角形。
3 )、论域为 [-X,X].下图是隶属函数图象NB NS 1 ZE PS PB-X -2X/3 -X/3 0 X/3 2X/3 X图 1 隶属函数图象二、论域变换1、偏差 e 的论域变换偏差 e 的论域是 [-X,X], 欲把它变换成离散论域 [-3,-2,-1,0,1,2,3], 则有量化因子 qe:qe=6/2X=3/X显然,对于元素 -X 、 -2X/3 、 -X/3 、 0 、 X/3 、 2X/3 、 X, 则有相应的离散论域元素 ei:e1=qe*(-X-0)=-3e3=qe*(-X/3-0)=-1e4=qe*(0-0)=0e5=qe*(X/3-0)=1e6=qe*(2X/3-0)= 2e7=qe*(X-0)=31、偏差变化率 de 的论域变换偏差变化率 de 的论域是 [-Y,Y], 欲把它变换成离散论域 [-3,-2,-1,0,1,2,3], 则有量化因子 qde:qde=6/2Y=3/Y显然,对于元素 -Y 、 -2Y/3 、 -Y/3 、 0 、 Y/3 、 2Y/3 、 Y, 则有相应的离散论域元素 dei:de1=qde*(-Y-0)=-3de2=qde*(-2Y/3-0)=-2de3=qde*(-Y/3-0)=-1de4=qde*(0-0)=0de5=qde*(Y/3-0)=1de6=qde*(2Y/3-0)= 2de7=qde*(Y-0)=32、控制量 C 的论域变换偏差 C 的论域是 [-W,W], 欲把它变换成离散论域 [-3,-2,-1,0,1,2,3], 则有量化因子 qC:qC=6/2W=3/W显然,对于元素 -W 、 -2W/3 、 -W/3 、 0 、 W/3 、 2W/3 、 W, 则有相应的离散论域元素 Ci:C1=qC*(-W-0)=-3C2=qC*(-2W/3-0)=-2C3=qC*(-W/3-0)=-1C4=qC*(0-0)=0C5=qC*(W/3-0)=1C7=qC*(W-0)=3定义的模糊集(名称),确定隶属度:[PB PS ZE NS NB]模糊集的隶属度函数表e -X- -2X/3 -2X/3- -X/3 -X/3- 0 0 0 - X/3 X/3- 2X/3 2X/3- X de -Y- -2Y/3 -2Y/3- -Y/3 -Y/3- 0 0 0 - Y/3 Y/3- 2Y/3 2Y/3- YC -W- -2W/3 -2W/3- -W/3-W/3-0 0 -W/3W/3-2W/32W/3-W量化等级-3 -2 -1 0 1 23模糊集相关的隶属度函数PB 0 0 0 0 0 0.2 1 PS 0 0 0 0 0.6 0.6 0 ZE 0 0 0.2 1 0.2 0 0 NS 0 0.6 0.6 0 0 0 0 NB 1 0.2 0 0 0 0 0三、给出模糊控制规则表:if e is NB,and de is PB,then C is PB.if e is NB,and de is PS,then C is PB.if e is NB,and de is ZE,then C is PB.if e is NB,and de is NS,then C is PB.if e is NS,and de is ZE,then C is PS.if e is NS,and de is PS,then C is PS.if e is NS,and de is PB,then C is PS.if e is ZE,and de isZE,then C is ZE.if e is ZE,and de is PS,then C is NS.if e is ZE,and de is PB,then C is NB根据这些控制规则,可以列出对应的控制规则表如下:UNB NS ZE PS PBEDENB PB PB PS NBNS PB PS PS ZE NBZE PB PS ZE NS NBPS PB ZE NS NS NBPB PB NS NB NB四、求取模糊控制表由于偏差 e 的离散论域有 7 个元素 {-3,-2,-1,0,1,2,3}, 而偏差变化率 de 的离散论域也有 7 个元素 {-3,-2,-1,0,1,2,3}, 在输入时, e 或 de 的精确值都会量化到 5 个元素之中的任何一个。
模糊控制规则表设计
模糊控制规则表设计
模糊控制规则表是一种基于模糊逻辑的控制方法,它可以用来处理那
些难以用传统控制方法处理的问题。
在模糊控制规则表设计中,需要
考虑多个因素,包括输入变量、输出变量、模糊集合、模糊逻辑运算
和规则表等。
首先,输入变量是指影响系统行为的变量,如温度、湿度、压力等。
在模糊控制规则表设计中,需要对这些变量进行模糊化处理,将其转
化为模糊集合。
模糊集合是由一组隶属度函数组成的集合,用来描述
输入变量的模糊程度。
其次,输出变量是指控制系统的输出,如控制阀门的开度、电机的转
速等。
在模糊控制规则表设计中,需要将输出变量也进行模糊化处理,将其转化为模糊集合。
模糊集合的隶属度函数描述了输出变量的模糊
程度。
接下来,模糊逻辑运算是指在模糊控制规则表中使用的逻辑运算,包
括模糊与、模糊或、模糊非等。
这些运算用来将模糊集合进行组合,
得到模糊控制规则表中的模糊规则。
最后,规则表是模糊控制规则表设计中最重要的部分。
规则表由一系
列模糊规则组成,每个模糊规则包括若干个输入变量和一个输出变量。
每个输入变量都有一个对应的模糊集合,而输出变量也有一个对应的
模糊集合。
模糊规则的作用是将输入变量的模糊集合映射到输出变量
的模糊集合,从而实现控制系统的控制。
在模糊控制规则表设计中,需要考虑多个因素,包括输入变量、输出
变量、模糊集合、模糊逻辑运算和规则表等。
通过合理的设计,可以
实现对复杂系统的控制,提高系统的性能和稳定性。
【精品】模糊控制规则表生成程序
【关键字】精品模糊控制规则表生成程序%偏差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可编辑版本!。
模糊控制程序实例
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 所示。
用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; %对控制量保留小数点后两位。
C语言实现模糊控制算法
if(XU[0]<=YU[0])//规则前提的可信度取小运算
ZU[0]=XU[0]; else
标题文本预设
ZU[0]=YU[0];
if(XU[1]<=YU[0])//规则前提的可信度取小运算
ZU[1]=XU[1];
else
ZU[1]=YU[0];
if(XU[0]<=YU[1])//规则前提的可信度取小运算
C语言实现模糊控制算法
C语言实现模糊控制算法--以洗衣机的模糊控制为例
模糊控制器结构
选用两输入单输出模糊控制器。控制器的输入为衣物的泥污和油污,输出
为洗涤时间。
标题文本预设
此部分内容作为文字排版占位显示
定义输入、输出模糊集
(建议使用主题字体)
泥污的模糊集表示为:SD(泥污少)、MD(泥污中)、LD(泥污多); 油污的模糊集表示为:NG(油污少)、MG(油污中)、LG(油污多); 洗涤时间的模糊集为: VS(很短)、S(短)、M(中)、L(长)、VL(很长)。
此部分内容作为文字排版占位显示 (建议使用主题字体)
C语言实现模糊控制算法--以洗衣机的模糊控制为例
重心法反模糊
for(i=0;i<4;i++) ZUmax[i]=ZU[i];
for(j=0;j<3;j++)//冒泡法排序 从小到大排 for(i=0;i<3-j;i++) if(ZUmax[i]>=ZUmax[i+1]) { Zij=ZUmax[i]; ZUmax[i]=ZUmax[i+1]; ZUmax[i+1]=Zij; }
油污Y
MG
0
min(3/5,μM(z)) min(1/5,μL(z))
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
模糊控制规则表生成程序
%偏差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.0
0.2 0.7 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.1 0.3 0.7 1.0 0.7 0.2 0.0 0.0 0.0 0.0 0.0 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.0
0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.6 0.1 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.2 0.7 1.0 0.7 0.3 0.1 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.2 0.7 1.0 0.7 0.3
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.4 0.7 0.8
1.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.0
0.3 0.7 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.0 0.3 0.7 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.0 0.3 0.7 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.0 0.3 0.7 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.0 0.3 0.7 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.0 0.3 0.7
1.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.0
0.3 0.7 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.0 0.3 0.7 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.0 0.3 0.7 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.0 0.3 0.7 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.0 0.3 0.7 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.0 0.3 0.7 1.0];
%推理语言规则表
gz=[ 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 ];
i=1;
for gzh=1:8
for gzl=1:7
a=E(gzh,:); %取E 的赋值表的莫一行,并赋值给a
a=a'; %a 取专置
b=Ec(gzl,:); %取Ec 的赋值表的莫一行,并赋值给b
% T E Ec •
for m=1:13
for n=1:13
if a(m,1)>=b(1,n)
r(m,n)=b(1,n);
else
r(m,n)=a(m,1);
end
end
end
% 把T E Ec •得到的矩阵变为行向量
k=1;
for m=1:13
for n=1:13
Ei_Eci(1,k)=r(m,n);
k=k+1;
end
end
Ei_Eci=Ei_Eci'; %把刚才得到的行向量变为列向量,方便与U 的行向量相乘
m=gz(gzh,gzl); %取U 的某一行
U=u(m,:);
%T E Ec U •⨯
for m=1:169
for n=1:13
if Ei_Eci(m,1)>=U(1,n)
Rii(m,n)=U(1,n);
else
Rii(m,n)= Ei_Eci(m,1);
end
end
end
%得到一条规则的Ri ,并且把Ri 变成行向量,以方便程序实现1n i R Ri ==U k=1;
for m=1:169
for n=1:13
Ri(i,k)=Rii(m,n);
k=k+1;
end
end
i=i+1;
end
end
%1n i R Ri
==U
Ri=Ri';
for m=1:2197
for n=1:i-1
if Ri(m,1)>=Ri(m,n)
Ri(m,1)=Ri(m,1);
else
Ri(m,1)=Ri(m,n);
end
end
end
%得到R
k=1;
for m=1:169
for n=1:13
R(m,n)=Ri(k,1);
k=k+1;
end
end
%()[()()]U k E k Ec k R =⨯o
aa=[0 0 0 0 0 0 0 0 0 0 0 0 0 ]; %对E ,Ec 采用单点集 for j=1:13
bbb=[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:13
for n=1:13
if a(m,1)>=b(1,n)
d(1,k)=b(1,n);
k=k+1;
else
d(1,k)=a(m,1);
k=k+1;
end
end
end
%[()()]E k Ec k R ⨯o
for m=1:13
for n=1:169
if d(1,n)>=R(n,m)
g(1,n)=R(n,m);
else
g(1,n)=d(1,n);
end
end
for n=1:169
if g(1,1)>=g(1,n)
g(1,1)=g(1,1);
else
g(1,1)=g(1,n);
end
end
f(j,m)=g(1,1);
end
%利用加权平均法得到u
i=-6;z=0;k=0;
z=f(j,m)*i+z;
k=f(j,m)+k;
i=i+1;
end
bb=z/k;
u(ii,j)=bb; %u为控制表的矩阵end
end
附录二实验二控制规则表。