模糊控制系统的构成与与常规的反馈控制系统的主要区别在于控制器主要是由模糊化,模糊推理机和精确化三个功能模块和知识库(包括数据库和规则库)构成的。具体实现过程如下所示:

(1)预处理:

  输入数据往往是通过测量设备测量得到的一个具体数据,预处理就是在它们进入控制器前对这些数据进行分类,或性质程度的定义。预处理过程也是量化过程,它是在离散空间中把输入数据划分为若干个数字级别。例如,假设一个反馈误差为 4.5,误差空间是(-5,-4…4,5),量化器会使它靠近离它最近的级别,四舍五入到 5。称量化器量化的比例为量化因子。量化过程是个削减数据量的方法,但是如果量化过于粗糙,控制器会振荡甚至失去平衡。

(2)模糊化

  在进行模糊化时,需要确定模糊集论域中语言变量各值所对应的模糊子集的隶属度函数。隶属度函数一般是根据操作者的经验初步确定,在调试开发甚至控制器运行中需不断修正和优化,以满足控制的要求。隶属度函数的形状很多,但是影响模糊控制器性能的关键因素是各模糊集覆盖论域的情况,而隶属函数的形状在达到控制要求方面并无大的差别,为使数学表达和运算简单,一般选用三角形、梯形隶属函数。但隶属函数的幅宽大小对性能影响较大,隶属函数形状较陡时,引起的输出变化较剧烈,控制的灵敏度高;隶属函数形状平缓时,引起的输出变化较缓慢,对系统的稳定性好。因此,在选择隶属函数时,一般在偏差较小或接近于零附近时,采用形状较陡的隶属函数;而在偏差较大的区域采用形状平缓的隶属函数,以使系统具有良好的鲁棒性。而且在实际工作中,不应出现三个隶属函数相交的状态。一般,任何两个模糊子集的交集的最大隶属度中的最大值取为 0.4~0.8 之间。另外,隶属函数的位置分布对控制性能也有一定的影响,当函数在整个论域平均分布时,控制效果并不好,因此,一般将零固定,其它模糊子集向零集靠拢,以达到较好的控制效果。

(3)设计控制规则表   

  规则的条件和结论中要用到一些变量,控制器用来解决多输入多输出和单输入单输出问题,传统的单输入单输出问题是基于误差 E 调节控制信号,有时也需要误差的变化速度还有累积误差,但是我们也称之为单输入单输出系统,因为从原则上讲,这三个量都来源于对误差的测量。简单地说,我们的控制对象如果是围绕着一个标准值被调节,我们的陈述及研究仅限于单输入单输出系统而言。 

  规则格式:基本上,一个模糊语言控制器都包含 LIWKHQ 形式的规则,但也有其他规则格式。在多数系统中,规则以这样的形式展现: 

  if A is NB and B is NB, then c is NB (2-11)   

  式中 Zero,Pos,Nag——模糊集的标签: Z、PB 、 NM ——表示零点,正大和负中

(4)推理机

  规则只反应了控制信号是误差和误差变化率等量通过了计算得到的。而推理决策才是模糊控制的核心,它利用知识库中的信息和模糊运算方式,模拟人的推理决策的思想方法,在一定的输入条件下激活相应的控制规则给出适当的模糊控制输出。 

  这一部分可以通过设计不同推理算法的软件在计算机上来实现,也可以采用专门设计的模糊推理硬件集成电路芯片来实现。由于基于模糊推理的硬件集成电路价格一般比较高,目前多数模糊控制器采用软件在计算机上实现。

(5)精确化

  通过模糊化推理得到的结果是一个模糊量,是一组具有多个隶属度值的模糊向量。而控制系统执行的输出信号是一个确定的量值,因此,在模糊控制应用中,必须将控制器的模糊输出量转化成一个确定值,即进行精确化过程。常用的精确化方法有两种,即最大隶属度法和重心法。对于最大隶属度法,若输出量模糊集合的隶属度函数只有一个峰值,则取隶属度函数的最大值为精确值,选取模糊子集中隶属度最大的元素作为控制量。若输出模糊向量中有多个最大值,一般取这些元素的平均值作为控制量。最大隶属度法的优点是计算简单,但由于该法利用的信息量较少,会引起一定的控制偏差,一般应用于控制精度要求不高的场合。 

  重心法是取模糊隶属度函数曲线与横坐标围成面积的中心为模糊推理输出的精确值,对于有 N个输出量化级数的离散域情况有: 

  这里 xi是离散空间里不同的点,i(xi) 是它在隶属函数中的隶属度,表达式可以理解为在设定隶属集中的重心。对于连续的情况,可以把作和替换成积分来算。计算量相对高些,但算法相对精确,因此也是最常用的算法之一。 

  最大隶属度法,这种方法最简单,只要在推理结论的模糊集合中取隶属度最大的那个元素作为输出量即可。这种方法不考虑隶属函数的形状。 

(6) 后处理 

  系统控制输出值只是相对的,并不是实际控制量,相对控制量与实际工程所需值有个比例关系,再后处理过程中,要乘上这个输出比例因子,并赋予有实际意义的单位像是电压、米、公斤等,例如(-2,2)表示电压(-10 V,10V)。

  以上就是模糊控制算法的主要内容。模糊控制算法最大的特点是不必完全通晓一个系统的数学模型,就可以实现控制效果。所以对于数学模型难以确定的系统而言有很大的优势,但是由于模糊控制算法中不存在积分项,所以控制结果容易产生静差。为了消除这一个缺陷,我们可以将模糊控制算法和PID算法结合起来,从而得到参数自整定模糊PID算法。

  参数自整定模糊PID算法的框图如下所示:

  

  具体实现措施就是先设定PID控制器的初值(具体的数值可以引用上学期的调试结果),然后在根据模糊规则得到相应的调节值,然后相加即得到最终的PID参数。

        Kp = Kp' + Qp * △Kp (Kp' : 初值  Qp: 比例系数 △Kp : 模糊规则得到的Kp调节值)

        Ki = Ki' + Qi * △Ki

        Kd = Kd' + Qd * △Kd

  以上就是参数自整定模糊PID算法的理论全部内容。

转载:http://www.cnblogs.com/qifengle/p/5212270.html

自整定模糊PID算法的理论的更多相关文章

  1. PID控制器开发笔记之十二:模糊PID控制器的实现

    在现实控制中,被控系统并非是线性时不变的,往往需要动态调整PID的参数,而模糊控制正好能够满足这一需求,所以在接下来的这一节我们将讨论模糊PID控制器的相关问题.模糊PID控制器是将模糊算法与PID控 ...

  2. PID控制算法的c语言实现十二 模糊PID的参数整定

    这几天一直在考虑如何能够把这一节的内容说清楚,对于PID而言应用并没有多大难度,按照基本的算法设计思路和成熟的参数整定方法,就算是没有经过特殊训练和培训的人,也能够在较短的时间内容学会使用PID算法. ...

  3. 线性控制原理——PID算法应用

    使用控制系统(PID)控制被控对象 PID控制的三要素:控制器,被控对象,反馈器.控制器就是一个数学模型,就PID来说,等同于PID算法.是对反馈量的一个处理与输出.通俗的说就是对于每个被控的量,我的 ...

  4. PID控制算法的C语言实现十 专家PID与模糊PID的C语言实现

    本节是PID控制算法的C语言实现系列的最后一节,前面8节中,已经分别从PID的实现到深入的过程进行了一个简要的讲解,从前面的讲解中不难看出,PID的控制思想非常简单,其主要问题点和难点在于比例.积分. ...

  5. PID算法知识点博文收藏记录

    https://blog.csdn.net/Uncle_GUO/article/details/51367764 https://blog.csdn.net/HandsomeHong/article/ ...

  6. PID算法原理 一图看懂PID的三个参数

    找了好久这一篇算是很容易看懂的了  推荐给大家   写的十分清楚   原文作者DF创客社区virtualwiz LZ以前有个小小的理想,就是让手边的MCU自己"思考"起来,写出真正 ...

  7. PID算法笔记2

    总所周知,PID算法是个很经典的东西.而做自平衡小车,飞行器PID是一个必须翻过的坎.因此本节我们来好好讲解一下PID,根据我在学习中的体会,力求通俗易懂.并举出PID的形象例子来帮助理解PID.一. ...

  8. PID控制算法的C语言实现一 PID算法原理

    本系列是转载............. 全部的程序有一个共同点:就是我没认真去调pid的参数 在工业应用中PID及其衍生算法是应用最广泛的算法之一,是当之无愧的万能算法,如果能够熟练掌握PID算法的设 ...

  9. 模糊聚类算法(FCM)

    伴随着模糊集理论的形成.发展和深化,RusPini率先提出模糊划分的概念.以此为起点和基础,模糊聚类理论和方法迅速蓬勃发展起来.针对不同的应用,人们提出了很多模糊聚类算法,比较典型的有基于相似性关系和 ...

随机推荐

  1. django基础知识之Response对象

    HttpResponse对象 在django.http模块中定义了HttpResponse对象的API HttpRequest对象由Django自动创建,HttpResponse对象由程序员创建 不调 ...

  2. selenium定位不到元素

    selenium定位不到元素时,网上大部分查到都是iFrame的切换问题,然后是多窗口.句柄的处理问题, 在初学是遇到定位不到元素,一直在找上面的问题,发现都不是上面的问题, 后来才发现是页面刷新的问 ...

  3. Python-匿名函数(lambda),map()

    1. map() 描述 map() 会根据提供的函数对指定序列做映射. 第一个参数 function 以第二个参数序列中的每一个元素调用 function 函数,返回一个map对象. 语法 map() ...

  4. [转] docker save与docker export的区别

    [From]http://cnodejs.org/topic/59a2304f7aeedce818249eeb 很久没有写博客了,坟头草都长了老高了.写博客要靠惯性,一旦停下来时间长了,就很难再坚持下 ...

  5. m3m4加载器的优化版m3m4-v1.1

    m3m4加载器的优化版m3m4-v1.1 /* //1.以$开头的模块名,表示服务,服务只会执行一次,它可以有自己的方法.比如cookie就是一个服务 //例如:console.log("r ...

  6. CAPL编程实现诊断刷写,车联网FOTA流程自动化测试(代码篇)

    原创内容,转载请注明出处   接上篇,本文主要讲CAPL编程详细实现,软件环境CANoe  11.0 一.Simulation Setup 1.建模之前,首先创建一个.DBC文件.如果不会,可以用一个 ...

  7. vm12下Centos6的javaweb环境搭建

    配置linux的javaweb环境之前: 1.在windows安装xshell(非必需,但是推荐) 2.在linux安装Linux与windows文件传输工具RZSZ[root@192 ~]# yum ...

  8. js 替换中间四位手机号为 *

    replace(/(\d{})\d{}(\d{})/, '$1****$2')

  9. Python编程:基础学习常见错误整理

    # Python学习之错误整理: # 错误一:# TypeError: cannot concatenate 'str' and 'int' objects# 不能连接str和int对象age = 2 ...

  10. linux 输出 之 nl 命令

    1.命令格式:nl [选项]... [文件]... 2.命令参数: -b  :指定行号指定的方式,主要有两种: -b a :表示不论是否为空行,也同样列出行号(类似 cat -n): -b t :如果 ...