当前位置: 首页 > news >正文

【智能控制】实验,基于MATLAB的模糊推理系统设计,模糊控制系统设计

关注作者了解更多

我的其他CSDN专栏

过程控制系统

工程测试技术

虚拟仪器技术

可编程控制器

工业现场总线

数字图像处理

智能控制

传感器技术

嵌入式系统

复变函数与积分变换

单片机原理

线性代数

大学物理

热工与工程流体力学

数字信号处理

光电融合集成电路技术

电路原理

模拟电子技术

高等数学

概率论与数理统计

数据结构

C语言

模式识别原理

自动控制原理

数字电子技术

关注作者了解更多

资料来源于网络,如有侵权请联系编者

目录

基于MATLAB的模糊推理系统设计

模糊逻辑工具箱的介绍

1.  FIS编辑器:

2. 隶属函数编辑器

3. 模糊规则编辑器

4. 模糊规则观察器

5. 输出曲面观测器

(二)小费模糊推理系统设计

(三)水箱液位模糊控制系统设计

模糊控制系统设计

(一)模糊控制器设计

1. 模糊集合及论域的定义

2. 模糊控制规则设计

3. 建立仿真模型

(二)分析模糊控制隶属度函数对控制效果的影响

(三)系统参数对控制效果的影响


基于MATLAB的模糊推理系统设计

模糊逻辑工具箱的介绍

模糊逻辑工具箱提供的图形用户界面(GUI)工具有五个:模糊推理系统(FIS)编辑器;隶属函数编辑器;模糊规则编辑器;模糊规则观察器;输出曲面观察器。

1.  FIS编辑器:

Matlab的FIS界面如图1所示。FIS处理系统有多少个输入变量输出变量名称是什么模糊算子“与”(min,prod乘积,custom自定义),“或”(max大,probor 概率统计方法,custom),推理方法(min,prod,custom),聚类方法(max,probor,sum,custom),解模糊的方法(centroid质心法,bisector中位线法,middle of maximum,largest of maximum,smallest of maximum)。

推理的类型有mamdani和sugeno 推理。

1 模糊推理系统(FIS)界面

  Mamdani推理:一种在模糊控制中普遍使用的方法,它本质上仍然是一种合成推理方法,只不过对模糊蕴涵关系取不同的形式而已。Mamdani型推理从每个规则的结果中得到的模糊集通过聚类运算后得到结果模糊集,被反模糊化后得到系统输出。

2. 隶属函数编辑器

   确定各个变量的论域和显示范围(左下角编辑区内),如图2所示。定义每个变量的模糊集的名称和个数(Edit菜单中Add MFs),以及每个模糊变量的隶属函数类型和参数(点击变量的隶属函数曲线后在右下角编辑区内修改)。隶属函数的类型有:trimf,trapmf,gbellmf, gaussmf,gauss2mf,sigmf,dsigmf,psigmf,pimf,smf,zmf

3. 模糊规则编辑器

   完成了对变量的命名,隶属函数也有了适当的形状和名字,就可以编辑模糊规则。选择连接关系(and 或者or),权重,在编辑器左边选择一个输入变量,并选择它的语言值,然后在编辑器右边的输出变量中选择一个输出变量,并选中它的语言值,然后将这种联系添加到模糊规则中。

   Options/Format 下可以选择模糊规则不同的格式,默认的是verbose(模糊规则的详细格式),还有symbolic(符号格式),indexed(高度压缩格式)

4. 模糊规则观察器

    模糊规则观察器的功能是可以令用户观察模糊推理图,并观察模糊推理系统的行为是否与预期的一样。可以观察到输入变量(默认色是黄色)和输出变量(默认色是蓝色)如何应用在模糊规则中;反模糊化的数值是多少。

5. 输出曲面观测器

模糊规则观察器非常详细的显示了在某一个时刻的计算。如果看到模糊推理系统的全部输出曲面,即与整个输入区间相对应的输出区间,就要打开输出曲面观测器。View/view surface

小费模糊推理系统设计

1. 在MATLAB的命令窗口输入fuzzy命令,打开模糊逻辑工具箱的图形用户界面窗口,新建一个Madmdani模糊推理系统

2. 增加一个输入变量,在弹出的窗口中选择Edit→Add Variable→input;在name中更改input1为“service”,input2为“food”,output为“tip”,建立了一个两输入单输出模糊推理系统框架。

 

3. 双击变量图标进行模糊化模块设计:

(1)打开Membership Function Editor窗口,在Range和Display Range中设置隶属函数图的取值范围,将两个输入变量的论域均设为[0,10],输出论域为[0,30]。

(2)选择Edit→Add MFs→numbers of MFs 中选择模糊集个数

通过增加隶属度函数来进行模糊空间划分。

输入变量service划分为三个模糊集:更改mf1~mf3的参数,分别命名为poorgoodexcellent,隶属度函数均为高斯函数( 'gaussmf'),参数分别为[1.5 0][1.5 5][1.5 10]

    输入变量food划分为两个模糊集:ranciddelicious,隶属度函数均为梯形函数('trapmf '),参数分别为[0 0 1 3][7 9 10 10]

  输出变量tip划分为三个模糊集:cheapaveragegenerous,隶属度函数均为三角形函数('trimf'),参数分别为[0 5 10][10 15 20][20 25 30]

4. 设置模糊规则:打开Rule Editor窗口,通过选择添加三条模糊规则:

 if (service is poor) or (food is rancid) then (tip is cheap)

 if (service is good) then (tip is average)

 if (service is excellent) or (food is delicious) then (tip is generous)

三条规则的权重均为1

5. 模糊推理参数均使用默认值,通过曲面观察器(View→Surface)查看小费模糊推理的输入输出关系曲面。通过规则观察器(View→Rules)查看对具体输入的模糊推理及输出情况,输入各种不同的数据,查看模糊推理情况及输出数据。

6. 增加规则,查看曲面的变化、推理输出的变化。

水箱液位模糊控制系统设计

  

1. 打开模糊工具箱的图形用户界面窗口,新建一个Madmdani模糊推理系统。

2. 增加一个输入变量,将输入变量命名为levelrate,输出变量为valve,这样建立了一个两输入单输出模糊推理系统,保存为tank.fis

3. 设计模糊化模块:将输入变量rate的论域设为[-0.1,0.1],另外两个变量采用论域[-1,1]

通过增加隶属度函数来进行模糊空间划分。

输入变量level划分为三个模糊集:highokaylow,隶属度函数均为高斯函数,参数分别为[0.3  -1][0.3  0][0.3  1]

输入变量rate划分为三个模糊集:negativenonepositive,隶属度函数均为高斯函数,参数分别为[0.03  -0.1][0.03  0][0.03  0.1]

输出变量valve划分为五个模糊集:close_fastclose_slowno_changeopen_slowopen_fast,隶属度函数均为三角形函数,参数分别为[-1  -0.9  -0.8][-0.6  -0.5  -0.4] [-0.1  0  0.1][0.2  0.3  0.4][0.8  0.9  1]

4. 设置模糊规则:打开Rule Editor窗口,通过选择添加三条模糊规则:

if (level is okay) then (valve is no_change)

if (level is low) then (valve is open_fast)

if (level is high) then (valve is close_fast)

if (level is okay) and (rate is positive) then (valve is close_slow)

if (level is okay) and (rate is negative) then (valve is poen_slow)

五条的权重均为1

5. 通过曲面观察器(Surface Viewer)查看水箱液位模糊推理的输入输出关系曲面。通过规则观察器(Rule Viewer)查看对具体输入的模糊推理及输出情况。

模糊控制系统设计

(一)模糊控制器设计

   

1. 模糊集合及论域的定义

选定误差E和误差变化EC作为模糊控制器的输入(二维模糊控制器),控制量U作为模糊控制器的输出。EECU的模糊集定义如下:

E、ECU的模糊集均为{NB, NM, NS, O, PS, PM, PB}

E和EC的论域为{-6、-5、-4、-3、-2、-1、0、1、2、3、4、5、6}

U的论域为{-7、-6、-5、-4、-3、-2、-1、0、1、2、3、4、5、6、7}

上述3个模糊集合都选取了7个元素,主要目的是着眼于提高稳态精度。E、EC和U的隶属度函数图形如图所示:

2. 模糊控制规则设计

表1 模糊控制规则

U   E

EC

NB

NM

NS

0

PS

PM

PB

NB

PS

PS

PS

PS

PM

PB

PB

NM

NS

PS

PS

PS

PM

PM

PB

NS

NM

NS

0

0

PS

PM

PM

0

NB

NM

NS

0

PS

PM

PM

PS

NB

NM

NS

0

0

PS

PM

PM

NB

NB

NM

NS

NS

PS

PS

PB

NB

NB

NM

NS

NS

NS

PS

    

(要输入49条,真心心累)

  进行模糊控制仿真时,首先要将FIS发送到Matlab工作空间(workspace)中,用FIS窗口下File/Export/to workspace实现,用户建立一个工作空间变量名(例如fuzzy control),这个变量将FIS系统作为Matlab的一个结构进行工作。仿真时,打开fuzzy logic controller输入FIS变量名,就可以进行仿真了。

3. 建立仿真模型

在MATLAB的simulink仿真环境中建立模糊控制系统的方框图如图4所示。系统所选用的参数Saturation、Saturation1、Saturation2的范围分别为[-6 6]、[-6 6]、[-7 7],Transport Delay=2s。

通过调试得到PID模糊控制的参数:Gain1=0.6,Gain=2.1,Gain2=0.11。

(手动在simulink上搭建)

4. 仿真结果

系统的阶跃响应曲线如图5所示,其中上方的曲线代表系统的阶跃响应,下方的曲线是系统的模糊控制量的变化。

(停止时间设100s就行)

分析模糊控制隶属度函数对控制效果的影响

如下图所示改变模糊控制器中的隶属度函数为梯形隶属函数。

图6  E的隶属度函数

图7   EC的隶属度函数

图8   U的隶属度函数

  

记录此时系统的阶跃响应曲线,分析梯形隶属度函数和三角形隶属度函数对控制效果的影响,撰写实验报告

系统参数对控制效果的影响

改变系统参数进行仿真,记录系统的阶跃响应曲线,依次分析以下三种情况对控制效果的影响,撰写实验报告。

K=25

K=30

K=35

相关文章:

【智能控制】实验,基于MATLAB的模糊推理系统设计,模糊控制系统设计

关注作者了解更多 我的其他CSDN专栏 过程控制系统 工程测试技术 虚拟仪器技术 可编程控制器 工业现场总线 数字图像处理 智能控制 传感器技术 嵌入式系统 复变函数与积分变换 单片机原理 线性代数 大学物理 热工与工程流体力学 数字信号处理 光电融合集成电路…...

前端跳转路由的时候,清掉缓存

清除路由缓存的方法 ‌使用 $router.push() 方法‌:在跳转路由时,可以通过传递一个包含 replace: true 属性的对象来实现清除路由缓存。例如: this.$router.push({ path: "/new-route", replace: true }); ‌使用 $router.replace…...

基于 LlamaFactory 的 LoRA 微调模型支持 vllm 批量推理的实现

背景 LlamaFactory 的 LoRA 微调功能非常便捷,微调后的模型,没有直接支持 vllm 推理,故导致推理速度不够快。 LlamaFactory 目前支持通过 VLLM API 进行部署,调用 API 时的响应速度,仍然没有vllm批量推理的速度快。 …...

【赵渝强老师】PostgreSQL的物理存储结构

PostgreSQL在执行initdb的数据库集群初始化时会指定一个目录。该目录通过环境变量$PGDATA来表示。当数据库集群初始化完成后,会在这个目录生成相关的子目录以及一些文件。这些生成的文件就是PostgreSQL的物理存储结构中的文件。如下图所示。 如上图所示&#xff0c…...

智能探针技术:实现可视、可知、可诊的主动网络运维策略

网络维护的重要性 网络运维是确保网络系统稳定、高效、安全运行的关键活动。在当今这个高度依赖信息技术的时代,网络运维的重要性不仅体现在技术层面,更关乎到企业运营的方方面面。网络运维具有保障网络的稳定性、提升网络运维性能、降低企业运营成本等…...

CTF-PWN: 全保护下格式化字符串利用 [第一届“吾杯”网络安全技能大赛 如果能重来] 赛后学习(不会)

通过网盘分享的文件:如果能重来.zip 链接: https://pan.baidu.com/s/1XKIJx32nWVcSpKiWFQGpYA?pwd1111 提取码: 1111 --来自百度网盘超级会员v2的分享漏洞分析 格式化字符串漏洞,在printf(format); __int64 sub_13D7() {char format[56]; // [rsp10h] [rbp-40h]…...

debian 11 虚拟机环境搭建过坑记录

目录 安装过程系统配置修改 sudoers 文件网络配置换源安装桌面mount nfs 挂载安装复制功能tab 无法补全其他安装 软件配置eclipse 配置git 配置老虚拟机硬盘挂载 参考 原来去 debian 官网下载了一个最新的 debian 12,安装后出现包依赖问题,搞了半天&…...

MYSQL 什么是内连接 外连接 左连接 右连接?及适用场景

在 SQL 中,连接(JOIN)是用于组合来自两个或更多表的行的一种方法。根据连接的方式不同,可以分为几种类型的连接:内连接(INNER JOIN)、外连接(OUTER JOIN)、左连接&#x…...

利用Ubuntu批量下载modis图像(New)

由于最近modis原来批量下载的代码不再直接给出,因此,再次梳理如何利用Ubuntu下载modis数据。 之前的下载代码为十分长,现在只给出一部分,需要自己再补充另一部分。之前的为: 感谢郭师兄的指导(https://blo…...

【Springboot】@Autowired和@Resource的区别

【Springboot】Autowired和Resource的区别 【一】定义【1】Autowired【2】Resource 【二】区别【1】包含的属性不同【2】Autowired默认按byType自动装配,而Resource默认byName自动装配【3】注解应用的地方不同【4】出处不同【5】装配顺序不用(1&#xff…...

UIE与ERNIE-Layout:智能视频问答任务初探

内容来自百度飞桨ai社区UIE与ERNIE-Layout:智能视频问答任务初探: 如有侵权,请联系删除 1 环境准备 In [2] # 安装依赖库 !pip install paddlenlp --upgrade !pip install paddleocr --upgrade !pip install paddlespeech --upgrade In …...

数据结构:树

树的基本定义: 树是一种数据结构,它是由n(n>1)个有限节点组成一个具有层次关系的集合。把它叫做 “树” 是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点: …...

docker 怎么启动nginx

在Docker中启动Nginx容器是一个简单的过程。以下是启动Nginx容器的步骤: 拉取Nginx镜像: 首先,你需要从Docker Hub拉取Nginx的官方镜像。使用以下命令: docker pull nginx运行Nginx容器: 使用docker run命令来启动一个…...

【智商检测——DP】

题目 代码 #include <bits/stdc.h> using namespace std; const int N 1e510, M 110; int f[N][M]; int main() {int n, k;cin >> n >> k;for(int i 1; i < n; i){int x;cin >> x;f[i][0] __gcd(f[i-1][0], x);for(int j 1; j < min(i, k)…...

YOLOv11改进,YOLOv11添加SAConv可切换空洞卷积,二次创新C3k2结构

摘要 作者提出的技术结合了递归特征金字塔和可切换空洞卷积,通过强化多尺度特征学习和自适应的空洞卷积,显著提升了目标检测的效果。 理论介绍 空洞卷积(Atrous Convolution)是一种可以在卷积操作中插入“空洞”来扩大感受野的技术,更有效地捕捉到图像中的大范围上下文…...

使用R语言优雅的获取任意区域的POI,道路,河流等数据

POI是“Polnt of Information”的缩写&#xff0c;中文可以翻译为“信息点”。是地图上任何非地理意义的有意义的点&#xff0c;如商店&#xff0c;酒吧&#xff0c;加油站&#xff0c;医院&#xff0c;车站等。POI&#xff0c;道路网&#xff0c;河流等是我们日常研究中经常需…...

【设计模式】工厂方法模式 在java中的应用

文章目录 1. 引言工厂方法模式的定义 2. 工厂方法模式的核心概念工厂方法模式的目的和原理与其他创建型模式的比较&#xff08;如简单工厂和抽象工厂&#xff09; 3. Java中工厂方法模式的实现基本的工厂方法模式结构示例代码&#xff1a;创建不同类型的日志记录器 4. 工厂方法…...

Pytest框架学习20--conftest.py

conftest.py作用 正常情况下&#xff0c;如果多个py文件之间需要共享数据&#xff0c;如一个变量&#xff0c;或者调用一个方法 需要先在一个新文件中编写函数等&#xff0c;然后在使用的文件中导入&#xff0c;然后使用 pytest中定义个conftest.py来实现数据&#xff0c;参…...

【面试开放题】挫折、问题、擅长、应用技能

1. 项目中遇到的最大挫折是什么&#xff1f;你是如何应对的&#xff1f; 解答思路&#xff1a; 这个问题通常考察你的问题解决能力、抗压能力和团队协作精神。回答时&#xff0c;可以从以下几个角度展开&#xff1a; 问题背景&#xff1a; 描述项目中遇到的具体挑战。是技术难…...

CTF-PWN: 全保护下格式化字符串利用 [第一届“吾杯”网络安全技能大赛 如果能重来] 赛后学习(没思路了)

通过网盘分享的文件&#xff1a;如果能重来.zip 链接: https://pan.baidu.com/s/1XKIJx32nWVcSpKiWFQGpYA?pwd1111 提取码: 1111 --来自百度网盘超级会员v2的分享漏洞分析 格式化字符串漏洞,在printf(format); __int64 sub_13D7() {char format[56]; // [rsp10h] [rbp-40h]…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文&#xff5c;魏琳华 编&#xff5c;王一粟 一场大会&#xff0c;聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中&#xff0c;汇集了学界、创业公司和大厂等三方的热门选手&#xff0c;关于多模态的集中讨论达到了前所未有的热度。其中&#xff0c;…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...