模糊控制常见错误

上传人:z**** 文档编号:126082201 上传时间:2022-07-27 格式:DOC 页数:8 大小:591KB
返回 下载 相关 举报
模糊控制常见错误_第1页
第1页 / 共8页
模糊控制常见错误_第2页
第2页 / 共8页
模糊控制常见错误_第3页
第3页 / 共8页
亲,该文档总共8页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
4步教你学会使用matlab模糊控制工具箱2011-04-27 17:31289人阅读评论(0)收藏举报原帖地址:Matlab模糊控制工具箱为模糊控制器的设计提供了一种非常便捷的途径,通过 它我们不需要进行复杂的模糊化、模糊推理及反模糊化运算,只需要设定相应参 数,就可以很快得到我们所需要的控制器,而且修改也非常方便。下面将根据模 糊控制器设计步骤,一步步利用Matlab工具箱设计模糊控制器。首先我们在Mat lab的命令窗口(command window)中输入fuzzy,回车就 会出来这样一个窗口。下面我们都是在这样一个窗口中进行模糊控制器的设计。1. 确定模糊控制器结构:即根据具体的系统确定输入、输出量。这里我们可以选取标准的二维控制结构,即输入为误差e和误差变化ec, 输出为控制量u。注意这里的变量还都是精确量。相应的模糊量为E,EC和U, 我们可以选择增加输入(Add Variable)来实现双入单出控制结构。2输入输出变量的模糊化:即把输入输出的精确量转化为对应语言变量的模糊 集合。首先我们要确定描述输入输出变量语言值的模糊子集,如NB, NM, NS, ZO, PS, PM,PB,并设置输入输出变量的论域,例如我们可以设置误差E (此时为 模糊量)、误差变化EC、控制量U的论域均为-3, -2, -1,0,1,2,3;然 后我们为模糊语言变量选取相应的隶属度函数。在模糊控制工具箱中,我们在Member Function Edit中即可完成这些步骤。 首先我们打开Member Function Edit窗口.1&1mf2a.5eru “剖廿桃FurtctiQft |發冰 on MF m?r:ijE|roijDisptsy RartgSAllECtrimf00.10.2D:3 酹 0.5D.60.7D.3D.9input vsriaHeE1FIS VariablesMamsNameParamt| QIOO.4;rJ Mfivbership Fimct i.cin EirEitar ; IJnt it Ledkfembership funzdiori plotsP*&t 心前怪然后分别对输入输出变量定义论域范围,添加隶属函数,以E为例,设置论 域范围为-3 3,添加隶属函数的个数为7.然后根据设计要求分别对这些隶属函数进行修改,包括对应的语言变量,隶 属函数类型。3.模糊推理决策算法设计:即根据模糊控制规则进行模糊推理,并决策出模糊 输出量。首先要确定模糊规则,即专家经验。对于我们这个二维控制结构以及相应的 输入模糊集,我们可以制定49条模糊控制规则(一般来说,这些规则都是现成 的,很多教科书上都有),如图。2 lt(EisNB)and(ECrsNM then (U isPEJjl3 H IE NBldfdEC isNSl ihen (U 旌 FM4 lf(EiENB)end(ECisZ)lhen|Ui3R.d)1l5 lHEijNBjand(ECisPSilhen JU isPSlUJ6 11 IE iiNB)and(E匚 is FM it U *s已(117.11 (E is NB)andEC isPSI then 1U isZ1fi.and (EC 栋朗then (U 鑲PE)9 ifiiWland (EC s KMjthen 皿 i汗时10. IftE is NM)and (EC 處 NS1 ihen tU is FM11. If fE is NM1 and (EC isZl Ihcn fU PSI Hlv-ConneOiiQfi 亠JWeight:| F and1Defeie MeAddruteCharge nie严 I;LFlS Name: fu7w1制定完之后,会形成一个模糊控制规则矩阵,然后根据模糊输入量按照相应 的模糊推理算法完成计算,并决策出模糊输出量。4对输出模糊量的解模糊:模糊控制器的输出量是一个模糊集合,通过反模糊 化方法判决出一个确切的精确量,凡模糊化方法很多,我们这里选取重心法。And methodminOr methodmax1ImplicationminJAggregationmaxViTT 1Defuzzification.centroid5然后Export to disk,即可得到一个.fis文件,这就是你所设计的模糊控制器。MATLAB功能强大,很多同学用其做控制算法的仿真但是其中的fuzzy logic controller刚开始用常常容易出错常见报错:1、MinMax blocks do not accept boolean signals. The input signal(s) of block mkkzql/ Subsystem/Fuzzy Logic Controller with Ruleviewer/Fuzzy Logic Controller/FIS Wizard/Def uzzification1/Max (COA) must be one of the MATLAB uint8, uint16, uint32, int8, in t16, int32, single, or double data types2、An error occurred while propagating data type boolean from block mkkzq1/Subsyst em/Fuzzy Logic Controller with Ruleviewer/Fuzzy Logic Controller/FIS Wizard/Defuzzifica tion1/Zero Strength (COA), output port 1。以下是解决方案:1、fis编辑器(MATLAB的command window中键入fuzzy打开)中,建立好规则后,file-export-t o workspace2、对于7.0 版本,simulink模型窗口菜单中,Simulation-Configuration Parameters-Implement logic signals as boolean data前面默认的勾选去掉3、而对于 6.5 及以前版本,则是在 SIMULATION -SIMULATION PARAMETERS-ADVANCED 中耳将 b oolean logic signals选为off,强烈推荐用这个用FIS (Mamdani)设计完模糊控制器之后,连接到控制系统中进行仿真,每次 总出现这两个错误:1) Block error Max(coa): MinMax blocks do not accep tbooleansignals.2) block error Zero strength(coa):An error occurred while propagating data ty pebooleanfrom block. ,out por t 1解决方案:在simulink parameter中,找到advance选项卡,把第一二个选项设为off。 matlab/simulink模糊控制器应用实例前面我们已经利用模糊控制工具箱设计好了一个模糊控制器(假定我们存为 fuzzyl.fis),下面我们检验一下,看看我们的控制器到底怎么样。以一个简单 的电机控制为例,我们在Simulink中建立了它的模糊控制系统如下:在用这个控制器之前,需要用readfis指令将fuzzyl.fis加载到matlab 的工作空间,比如我们用这样的指令:myFLC二readfis (fuzzyl.fis);就 创建了一个叫myFLC的结构体到工作空间,并在fuzzy logic controller中参 数设为:myFLC。可以看到,在模糊控制器的输入和输出均有一个比例系数,我们叫它量化因 子,它反映的是模糊论域范围与实际范围之间的比例关系,例如,模糊控制器输 入输出的论域范围均为-3, 3,而实际误差的范围是-10, 10,误差变化率范 围是-100, 100,控制量的范围是-24, 24,那么我们就可以算出量化因子分 别为0.3, 0.03, 8。量化因子的选取对于模糊控制器的控制效果有很大的影响, 因此要根据实际情况认真选取哦。好,现在我们可以设定仿真步长,比如定步长的10ms,就可以运行了。运行后,产生这样一个错误:MinMax blocks do not accept boolean signals. The input signal(s) of block test_fuzzy/Fuzzy Logic Controller/FIS Wizard/Defuzzification1 /Max (COA) mus t be one of the MATLAB uint 8, uint16, uint 32, i nt 8, int16, int 32, single, or double data ty pes我想很多朋友做模糊控制的时候都会遇到这个情况。没关系,这里提供两个 解决办法:1. 直接在Defuzzification1这个模块中的那个比较环节后加入数据类型转 换模块,将boolean转化为double型,或者双击那个比较模块,选中show add itional parameters,将输出数据类型改为 specify via dialog,然后选 uint (8)即可;但是在仿真之后,又会发现很多地方都存在这个问题,因此你不得不 一个一个去修改,如果你不怕累的话。2. 第二个方法是最简单的,直接在simulation parameters-advanced将 boolean logic signals选为off,强烈推荐你用这个。好了,这些都解决了,我们就可以仿真了,例如给个方波信号,可以得到仿 真曲线如下10.52.53command
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 模板表格


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!