R语言-模糊逻辑控制
4.1模糊逻辑控制
一种采用模糊集合理论的控制技术,
将模糊数学应用于控制系统,也是一种非线性的智能控制系统。
采用IF条件判断语句和THEN结果语句的方式呈现,其中条件判断语句是利用人的常识判断对控制对象进行控制。
因此,所谓的模糊逻辑控制就是利用人的知识能力,模糊的进行系统控制的方法。
4.2控制系统的架构
4.2.1变量的定义
定义模糊化变量的函数:
FIS <<-addVar (FIS, varType, varName, varBounds)
FIS:模糊推论系统的名称,必须提供
varType:变量类型,必须指定是输入input还是输出output
varName:完整的变量名称
varBounds:变量值域区间,如:1:10
4.2.2输入与输出模糊化
模糊化输出一般采用最小法则
在R中可定义多种隶属函数,以便将变量模糊化
函数:高斯gaussMF/ 梯形trapMF/ 三角形triMF ( mfName, x, mfParams )
mfName:隶属函数名称字符串
x:隶属函数矢量区间
mfParams:若为gaussMF,输入的参数必须是三个数值的矢量,
其中c(1.5,0,1)中的三个数字代表标准差、平均数和最大值。
例:
Input1:
MF1=gaussMF(“low”,0,c(1.5,0,1)) [low/middle/high]
MF2…
MF3…
Input2:
MF4=trapMF(“few”,0:10,c(0,0,1,3,1)) [few/many]
MF5…
Output1:
MF6=triMF(“middle”,0:30,c(10,15,20,1)) [low/middle/high]
MF7…
MF8…
4.2.3逻辑知识库
又称模糊规则库,一般形式为“IF…and…then…”
在R中可定义模糊规则库,函数为addRule
例:FIS=addRule(FIS,c(3,1,1,1,2))
3,1,1分别代表input1中的MF3,input2的MF5,output1的MF6
第四个数代表权重,一般设定为1,
第五个数代表1=AND,2=OR
4.2.4逻辑判断
模仿人类采用模糊的概念进行判断,
应用之前的模糊规则库和模糊推理得到模糊逻辑控制结果信号
4.2.5解模糊
将推论结果的模糊值转化为明确的控制信号数值,
函数:evalFIS(data,FIS)
data:推论结果的模糊值
FIS:模糊推论系统名称
4.3实例-对教学质量的评价:
注意,这里强调的是数据分析,这些数据怎么来的此处不做解释。
代码:
#求出各层次判断矩阵的权重值
#专家判断矩阵目标层
a=c(1,5,3,1/3, 1/5,1,1/3,1/7, 1/3,3,1,1/5, 3,7,5,1)
a=matrix(a, ncol=4, byrow=T)
ev=eigen(a)
lamda=ev$values[1] #取出数组第一个值
cil=(lamda-4)/3
crl=cil/0.9
w1=ev$vectors[,1]/sum(ev$vectors[,1])
#准则层1 教学内容
b1=c(1,3/5,3/7,3, 5/3,1,5/7,5, 7/3,7/5,1,7, 1/3,1/5,1/7,1)
b1=matrix(b1, ncol=4, byrow=T)
ev=eigen(b1)
lamda=ev$values[1]
ci21=(lamda-4)/3
cr21=ci21/0.9
cr21
w21=ev$vectors[,1]/sum(ev$vectors[,1])
#准则层2 教学态度
b2=c(1,7/5,7,7/3, 5/7,1,5,5/3, 1/7,1/5,1,1/3, 3/7,3/5,3,1)
b2=matrix(b2, ncol=4, byrow=T)
ev=eigen(b2)
lamda=ev$values[1]
ci22=(lamda-4)/3
cr22=ci22/0.9
cr22
w22=ev$vectors[,1]/sum(ev$vectors[,1])
#准则层3 教学方法
b3=c(1,5/3,5,5/7, 3/5,1,3,3/7, 1/5,1/3,1,1/7, 7/5,7/3,7/1,1)
b3=matrix(b3, ncol=4, byrow=T)
ev=eigen(b3)
lamda=ev$values[1]
ci23=(lamda-4)/3
cr23=ci23/0.9
cr23
w23=ev$vectors[,1]/sum(ev$vectors[,1])
#准则层4 教学效果
b4=c(1,5,5/3,5/7, 1/5,1,1/3,1/7, 3/5,3/1,1,3/7, 7/5,7,7/3,1)
b4=matrix(b4, ncol=4, byrow=T)
ev=eigen(b4)
lamda=ev$values[1]
ci24=(lamda-4)/3
cr24=ci24/0.9
cr24
w24=ev$vectors[,1]/sum(ev$vectors[,1])
----------以上代码若有不懂的,请移步本人的另一篇文章《R语言-层次分析法--AHP》-------
-----------------以下数据仍是需要自己调查计算出来的-----------------
由上面的表格得到下面的矩阵。
代码:
#运用模糊隶属度矩阵R/K与各层次判断矩阵权重W,求模糊评价
#下述r1,r2,r3,r4为隶属度矩阵,数字为500名大学生问卷在优良中可差五等级比例%
r1=c(0.146,0.500,0.192,0.146,0.016,0.442,0.320,0.080,0.098,0.060,0.220,0.674,0.088,0.012,0.006, 0.374,0.296,0.210,0.080,0.040)
r1=matrix(r1, ncol=5, byrow=T)
r2=c(0.420,0.322,0.154,0.090,0.014,0.394,0.526,0.068,0.006,0.006,0.314,0.286,0.290,0.060,0.050, 0.210,0.414,0.178,0.108,0.090)
r2=matrix(r2, ncol=5, byrow=T)
r3=c(0.338,0.412,0.130,0.100,0.020,0.366,0.296,0.186,0.140,0.012,0.290,0.318,0.174,0.118,0.100, 0.356,0.370,0.150,0.120,0.004)
r3=matrix(r3, ncol=5, byrow=T)
r4=c(0.260,0.404,0.238,0.060,0.038,0.288,0.464,0.118,0.080,0.050,0.288,0.268,0.240,0.100,0.104, 0.226,0.376,0.162,0.210,0.026)
r4=matrix(r4, ncol=5, byrow=T)
#教学质量单因素一级模糊评价k1,k2,k3,k4
k1=w21%*%r1
k2=w22%*%r2
k3=w23%*%r3
k4=w24%*%r4
#教学质量综合二级评价p
k=c(k1,k2,k3,k4)
k=matrix(k, ncol=5, byrow=T)
#k为一级模糊评价矩阵
#我们最终想得到的是二级模糊综合评估
#即用矩阵K和前面求得的判断矩阵的权重w,做矩阵相乘
p=w1%*%k
--------------------------------以上便是全部代码-----------------------------------------------------------
----------------------下面我给出最后二级模糊综合评估的结果,教大家如何分析结果-----------------------
分析:
27.83%为优,40.72%为良,16.68%为中,11.12%为可,3.65%为差。
大小比较:40.72%>27.83%>16.68%>11.12%>3.65%
所以综合评价结果为“良”。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
【还不知道要怎么用改数据的看下面这个例子】
除去教学效果,即不需要r4了,也就不需要计算w24了。
修改后代码:
#专家判断矩阵目标层
a=c(1,5,3, 1/5,1,1/3, 1/3,3,1)
a=matrix(a, ncol=3, byrow=T)
ev=eigen(a)
#取出数组第一个值
lamda=ev$values[1]
cil=(lamda-3)/3
crl=cil/0.58
w1=ev$vectors[,1]/sum(ev$vectors[,1])
#准则层1 教学内容
b1=c(1,3/5,3/7, 5/3,1,5/7, 7/3,7/5,1)
b1=matrix(b1, ncol=3, byrow=T)
ev=eigen(b1)
lamda=ev$values[1]
ci21=(lamda-3)/3
cr21=ci21/0.58
cr21
w21=ev$vectors[,1]/sum(ev$vectors[,1])
#准则层2 教学态度
b2=c(1,7/5,7, 5/7,1,5, 1/7,1/5,1)
b2=matrix(b2, ncol=3, byrow=T)
ev=eigen(b2)
lamda=ev$values[1]
ci22=(lamda-3)/3
cr22=ci22/0.58
cr22
w22=ev$vectors[,1]/sum(ev$vectors[,1])
#准则层3 教学方法
b3=c(1,5/3,5, 3/5,1,3, 1/5,1/3,1)
b3=matrix(b3, ncol=3, byrow=T)
ev=eigen(b3)
lamda=ev$values[1]
ci23=(lamda-3)/3
cr23=ci23/0.58
cr23
w23=ev$vectors[,1]/sum(ev$vectors[,1])
#底下 r1,r2,r3为隶属度矩阵,数字为500名大学生问卷在优良中可差五等级比例%
r1=c(0.146,0.500,0.192,0.146,0.016,0.442,0.320,0.080,0.098,0.060,0.220,0.674,0.088,0.012,0.006, 0.374,0.296,0.210,0.080,0.040)
r1=matrix(r1, ncol=5, byrow=T)
r2=c(0.420,0.322,0.154,0.090,0.014,0.394,0.526,0.068,0.006,0.006,0.314,0.286,0.290,0.060,0.050, 0.210,0.414,0.178,0.108,0.090)
r2=matrix(r2, ncol=5, byrow=T)
r3=c(0.338,0.412,0.130,0.100,0.020,0.366,0.296,0.186,0.140,0.012,0.290,0.318,0.174,0.118,0.100, 0.356,0.370,0.150,0.120,0.004)
r3=matrix(r3, ncol=5, byrow=T)
#教学质量单因素一级模糊评价k1,k2,k3
k1=w21%*%r1
k2=w22%*%r2
k3=w23%*%r3
#教学质量综合二级评价p
k=c(k1,k2,k3)
k=matrix(k, ncol=5, byrow=T)
p=w1%*%k
R语言-模糊逻辑控制相关推荐
- R语言【逻辑控制】【数学运算】
目录 一.逻辑运算符 二.布尔运算符 索引及其相关内容 三.数学运算符 二次函数 三角函数 极坐标 以e为底的指数函数 对数函数 四.矩阵相关运算 1.向量的内积 2.向量的外积 3.矩阵的转置 4. ...
- R 语言中的高级图像处理包
最新的 magick 包是为能够在 R 中更现代化.简单化高质量图像处理而进行的一次努力.该包封装了目前最强大的开源图片处理库 ImageMagick STL . ImageMagick 库具有大量功 ...
- R语言笔记3:提取R对象的子集
R语言基础系列前情提要: 1数据类型(向量.数组.矩阵. 列表和数据框) 2读写数据所需的主要函数.与外部环境交互 Subsetting R Objects 取子集的三种基本方法 [ :"单 ...
- 《R语言实战》读书笔记--第一章 R语言介绍
1.典型的数据分析过程可以总结为一下图形: 注意,在模型建立和验证的过程中,可能需要重新进行数据清理和模型建立. 2.R语言一般用 <- 作为赋值运算符,一般不用 = ,原因待考证.用-> ...
- R语言爬取imdb电影海报
提前声明,这不是一个好的例子,所以不要向我学习.让我先冷静一下! OK,开始,今天我们开始从下面链接爬虫. http://www.imdb.com/search/title?count=100& ...
- python和r语言比较_Python和R语言之分析对比 - 数据分析
在Python中调用R或在R中调用Python,为什么是"和"而不是"或"? 在互联网中,关于"R和Python"的文章,排名前十的搜索结果 ...
- r语言 rgl 强制过程中_一个R语言中操纵矢量空间数据的标准化工具—sf
注: 本文是R语言sf包的核心开发者和维护者--来自德国明斯特大学的地理信息学教授:Edzer Pebesma 的一篇关于sf包的简介,发表于2018年7月的R语言期刊,主要讲述了sf的定位.功能. ...
- 1071svm函数 r语言_R语言机器学习之核心包e1071 - 数据分析
R语言有很多包可以做机器学习(Machine Learning)的任务.机器学习的任务主要有有监督的学习方式和无监督的学习方式. 有监督学习:在正确结果指导下的学习方式,若是正确结果是定性的,属于分类 ...
- r语言regexpr函数_R语言学习笔记-文本挖掘之字符处理(1)
在挖掘分析的过程当中对字符串的处理是极为重要的,且出现也较为频繁,R语言作为当前最为流行的开源数据分析和可视化平台,虽然文本的处理并不是它的强项, 但是R语言还是包含大量的字符串操作工具,本章着重整理 ...
最新文章
- 利用正高Dolphin智能广告监测系统做好违法广告监测
- 调整ViewState的位置,让你的asp.net页面对搜索引擎更友好
- 第一篇博客,用以规划我的编程人生
- kernel panic 和 kernel Oops
- JPA 2 | 获取联接以及我们是否应该使用它们
- 论文浅尝 - AAAI2020 | 基于知识图谱进行对话目标规划的开放域对话生成技术
- nginx php 协同工作,nginx和php之间工作原理
- Jquery中AJAX的应用
- CS229 Lecture 17
- 热炉法则:规章制度面前人人平等 | 每天成就更大成功
- js基础知识总结大全
- Win10如何将语言栏移回右下角
- SAP-MM-PA精解分析系列之供应商(02)-账户组解析
- 什么叫wipe,安卓用户如何去wipe?
- c语言中switch0,C语言switch0.ppt
- vscode怎样新建项目和文件
- 核芯显卡和集成显卡、独立显卡的区别是什么
- ec12编码器电路图_光电编码器电路图.DOC
- 关于移动端token解决方案
- 软考中级系统集成项目管理工程师自学好不好过?
热门文章
- h5微信内跳转ios商店报错
- 一篇文章教你修改软件版权
- 测试测控软件,测控软件技术
- 螺旋天线有方向性吗_新型谐振式螺旋天线的工作原理、关键技术及实验结果
- E: 无法下载 https://download.docker.com/linux/ubuntu/dists/Xenial/stable/binary-amd64/Packages 404 Not
- 第一篇文章~~~~~~~~~~~~~~
- 双边网格学习、Bilateral Learning
- PS中合并图层的快捷键?
- JAVAFX实现多媒体播放器
- 红色警报核弹大爆炸,恐怖!铃声 红色警报核弹大爆炸,恐怖!手...