当前位置: 首页 > 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]…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言&#xff1a; 双亲委派机制对于面试这块来说非常重要&#xff0c;在实际开发中也是经常遇见需要打破双亲委派的需求&#xff0c;今天我们一起来探索一下什么是双亲委派机制&#xff0c;在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言&#xff1a; 类加载器 1. …...

安卓基础(Java 和 Gradle 版本)

1. 设置项目的 JDK 版本 方法1&#xff1a;通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分&#xff0c;设置 Gradle JDK 方法2&#xff1a;通过 Settings File → Settings... (或 CtrlAltS)…...