模糊PID(自适应模糊PID、fuzzy PID)的基本原理及应用举例 by 研三笔记

本文详细介绍了模糊PID控制的原理,包括模糊化、模糊推理、清晰化过程,以及如何利用MATLAB模糊控制工具箱设计模糊控制器。通过实例说明了如何根据传感器数据调整PID参数,实现自适应控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

1 控制框图

在这里插入图片描述

2 概述

  • 模糊控制PID又叫模糊自适应PID,因为三个PID参数能够实时调整。

  • 模糊PID控制,即利用模糊逻辑并根据一定的模糊规则对PID的参数进行实时的优化,以克服传统PID参数无法实时调整PID参数的缺点。

  • 模糊PID控制包括:

    • 模糊化
    • 确定模糊规则(模糊推力)
    • 解模糊(清晰化)
  • 例如,小车通过传感器采集赛道信息,确定当前距赛道中线的偏差E以及当前偏差和上次偏差的变化ec,根据给定的模糊规则进行模糊推理,最后对模糊参数进行解模糊,输出PID控制参数。

3 基本原理

模糊控制器主要由三个模块组成:模糊化,模糊推理,清晰化。
在这里插入图片描述

3.1 一些基本的概念、定义

  • 模糊量: 如 E、EC。
  • 论域(上下限):-240~240。
  • 划分区间:-240 ~ -180;-180 ~ -120 ;-120 ~ -60;-60 ~ 0;0 ~ 60;60 ~ 120;120 ~ 180;
    180 ~ 240。
  • 录属度:录属于某个模糊子集的录属度,程度。
  • 模糊子集:
    负大NB(Negative Big)
    负中NM(NegativeMedium)
    负小NS(NegativeSmall)
    零ZE或ZO(Zero)
    正小PS(PositiveSmall)
    正中PM(PositiveMedium)
    正大PB(Positive Big)
  • 录属度函数:用于求解录属度,有线性的、非线性的。

3.2 模糊化

实质:根据录属度函数求取录属度。可以拆分成以下3个部分来理解:

  1. 把-180,-120,-60,0,60,120,180分别用NB,NM,NS,ZO,PS,PM,PB表示。
  2. 例如,当E = 170时,此时的E属于PM和PB之间,而此时的E也会对应2(或1)个隶属度。E隶属于PM(120)的百分比为(180 - 170) / (180 - 120) = 1 / 6 ,而同理隶属于PB(180)的百分比为(170 - 120) / (180 - 120) = 5 / 6 。意思就是120到180进行线性分割了,E离PM和PB哪个更近,则隶属于哪个就更大(当输出值E大于180(PB)时,则隶属度为1,隶属度值为PB,即E完全隶属于PB,同理当E小于 - 180 (NB)时也一样)。同理也可以对EC进行模糊化。
  3. 那么E分别隶属于模糊子集NB,NM,NS,ZO,PS,PM,PB的各个录属度都可以求出。

3.3 模糊推理

实质:根据模糊规则表求取输出值U的隶属度。即根据模糊控制规则进行模糊推理,并决策出模糊输出量。
首先要确定模糊规则,即专家经验。对于我们这个二维控制结构以及相应的输入模糊集,我们可以制定49条模糊控制规则(一般来说,这些规则都是现成的,很多教科书上都有)。
我们假设为E的两个隶属度值为PM、PB;
假设E属于PM的隶属度为a,则属于PB的隶属度为(1 - a);
再假设EC的两个隶属度值为NB、NM;
假设EC属于NM的隶属度为b,则属于NB的隶属度为(1 - b);
根据模糊规则表,当E隶属于PM且EC隶属于NB时,可知输出值U隶属于ZO。
此时输出值U隶属于ZO的录属度为 a *( 1 - b ),其他同理。
在这里插入图片描述
根据上表的求解规则,可以求得输出值U隶属于各个模糊子集的录属度为:
录属于ZO的隶属度为: a * b + a * ( 1 - b ) + ( 1 - a ) * ( 1 - b ) ;
录属于NS的隶属度为 : ( 1 - a ) * b 。
如下圈出部分:
在这里插入图片描述

3.4 清晰化(解模糊、反模糊化)

对于输出值,我们同样采用给予隶属度的办法。例如,我们把输出值假设为[1000,1400](即舵机的摆角值范围)的区间同样划分为八个部分,即7个模糊子集NB_U,NM_U,NS_U,ZO_U,PS_U,PM_U,PB_U。根据上一步所得出的结论,我们就可以用隶属度乘以相应的隶属值算出输出值的解,即 (a * b + a * ( 1 - b ) + ( 1 - a ) * ( 1 - b ) ) * ZO_U + ( 1 - a ) * b * NS_U。到此为止,整个模糊过程就结束了。
对输出模糊量的解模糊:模糊控制器的输出量是一个模糊集合,通过反模糊化方法判决出一个确切的精确量,反模糊化方法很多,我们这里选取重心法。
在这里插入图片描述

3.5 模糊PID

我们已经知道了整个模糊的过程,但上述的输出值只有一个输出,并没有实现PID。因此我们可以先对E和EC进行模糊化,然后分别根据不同的逻辑模糊子集、录属度函数、模糊规则表求得输出值kp、ki和kd的录属度,然后反模糊化求得kp、ki和kd。再将kp、ki和kd套入PID公式。
即将u分别为Ki、Kd、Kp求取各自的录属度,然后清晰化。

3.6 使用.fis文件

simulink中使用fis文件,首先加入fuzzy模块,然后写入模糊文件,注意应用格式加单引号: ‘fuzzpid.fis’
或者,现在命令空间中运行:
fis = readfis(‘fuzzpid.fis’)
然后 block中田fis 。
在这里插入图片描述

4 利用matlab模糊控制工具箱设计模糊控制器

matlab版本:matlab2010b。
步骤:

  1. 在matlab命令窗口中输入 fuzzy ,打开模糊控制工具箱。
  2. 确定输入、输出量。
    Edit -> Add Variable -> Input
    在这里插入图片描述
    查看规则编辑器和曲面观测器(view/rules view/surface):
    在这里插入图片描述
    在这里插入图片描述
    待续…

参考资料

【1】https://blog.csdn.net/qingfengxd1/article/details/88023414
【2】https://blog.csdn.net/qq_43907537/article/details/105258484




在这里插入图片描述

点赞、收藏、关注哟!
### 回答1: 在接口测试中,依赖登录状态的接口需要先进行登录操作,获取登录后的token或session等信息,然后将这些信息作为请求参数传递给需要测试的接口。测试时需要验证登录状态是否正确,以及接口返回的数据是否符合预期。同时,还需要测试登录状态失效后的接口返回情况,以保证系统的安全性和稳定性。 ### 回答2: 在接口测试中,当涉及到需要登录状态的接口时,需要特别注意测试。因为这些接口需要保证在正确的登录状态下才能正确地进行操作和返回结果。下面是一些应该考虑到的测试步骤: 1.确定登录状态对接口的影响 在测试依赖登录状态的接口之前,需要明确登录状态对接口的影响。为此,我们应该在测试计划中提供详细的用例。测试人员应该体面地覆盖所有目标结果,并特别注意测试通过不同用户角色的接口,以确保在不同用户角色的登录状态下接口行为的正确性。 2.独立测试登录接口 在测试依赖登录状态的接口之前,需要先独立测试登录接口。如果登录接口出现问题,那么依赖登录状态的接口肯定无法工作。在这种情况下,测试团队必须确保登录接口能够正常的执行和返回预期结果。 3.操纵缓存和Cookies 测试通过操纵缓存和Cookies模拟操作会话失效情况,从而测试依赖登录状态的接口。例如,通过删除或修改Cookies或缓存数据以模拟过期会话,以确保接口的行为和状态正确响应。同时,测试也可以操作在同一时间内的多个会话,以确保会话和管理的正确性。 4.模拟登录和注销场景 测试人员可以通过不同的方式模拟登录和注销场景。例如,测试可以通过模拟重复登录或同时存在多个登录会话的情况来测试接口的准确性,并且在随后的注销场景中,测试可以验证是否安全注销了会话,并且没有留下敏感信息在会话中。 5.模拟会话超时 在实际使用过程中,会话超时是常见的场景之一。测试人员需要模拟会话超时的场景,并且确认接口的响应是否正确。 总之,测试依赖于登录状态的接口是非常重要的。确保正确地测试会话管理,行为和状态会有助于提高整个应用程序的质量,达到用户的期望。 ### 回答3: 在进行接口测试中,遇到依赖登录状态的接口,需要采取一些特殊的测试方法,以确保测试结果的准确性和全面性。以下是一些测试建议: 1. 准备测试数据 登录状态的接口测试需要有一定的测试数据,包括登录用户名和密码。测试数据可以通过手动创建,或者通过自动化测试工具创建。 2. 保持登录状态 在进行接口测试时,需要保持登录状态才能执行后续操作。可以使用手动方式登录,或者通过代码自动化登录,并将登录状态保存下来。 3. 测试正常登录和非法登录的情况 接口测试时需要测试正常登录和非法登录的情况,以确保系统能够正确处理这些情况。正常登录需要输入正确的用户名和密码,而非法登录则需要输入不存在的用户名或错误的密码。 4. 测试登录状态失效的情况 在接口测试中,需要模拟登录状态失效的情况,以确保系统能够正确处理这种情况。可以通过手动方式注销登录,或者在代码中设置登录状态失效。 5. 测试重复登录的情况 有些系统可能不允许用户重复登录,需要测试这种情况。可以通过手动方式和代码自动化方式测试。 6. 针对特定用户测试 如果是针对特定用户进行接口测试,需要使用特定用户的账号进行测试,确保测试结果具有代表性。 综上所述,接口测试中依赖登录状态的接口测试,需要考虑多种情况,依据不同情况采取不同的测试方法,这样才能保证测试结果的准确性和完整性。同时,可以通过自动化测试工具执行测试,提高测试效率和一致性。
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值