第二篇《模糊逻辑原理与编程》来讲述模糊逻辑的原理和简单C语言编程,同样也是复习以前的工作。

一、模糊逻辑基本原理

我们生活中,很多概念都无法用确定性的语言描述,多与少,高于矮,年轻与年老,这些都无法用具体的数值来进行衡量,也就是说我们生活中的很多概念都是具有模糊性的。

模糊逻辑就是来解决这些模糊性的,模糊逻辑并不把一个命题直接分为真与假,在模糊逻辑中一个命题可以被称为“部分的真”。而对于真与假的归属,可以用隶属度来进行衡量。隶属度是[0,1]之间的一个取值,用来标识一个程度。

模糊逻辑(Fuzzy Logic)是一种使用隶属度代替布尔真值的逻辑,在人工智能领域有重要的意义。

1、模糊集合

在经典的集合定义中,如果存在集合A,论域中一个元素a,要么属于A,要么不属于A,没有第三种情况。但是我们日常生活中的集合并非如此清晰,这种非此即彼的方式在描述生活中的一些问题时往往会遇到一定的问题。

1965年,Zadeh教授提出了模糊集合的概念并给出了模糊集合的定义,用来描述我们生活中遇到的一些模糊的集合。

这种方法把待考察的对象及反映它的模糊概念作为一定的模糊集合,建立适当的隶属函数,通过模糊集合的有关运算和变换,对模糊对象进行分析。模糊集合论以模糊数学为基础,研究有关非精确的现象。

给定一个论域U,那么从U到单位区间 [0,1] 的一个映射

称为U上的一个模糊集,或U的一个模糊子集

模糊集可以记为A。 映射(函数)μA(·) 或简记为A(·) 叫做模糊集A隶属函数。 对于每个xUμA(x) 叫做元素x对模糊集A隶属度

模糊集合的表示方法有很多种,其中最常用的两种是Zadeh表示法以及序对表示法

2、模糊逻辑

模糊逻辑主要有补运算、交运算、并运算、蕴含、等价等。

找到一篇关于模糊逻辑写得比较好的博客,可以直接去看吧,下面就举例来进行模糊逻辑的编程。

该博客地址为:

https://blog.csdn.net/ice_pill/article/details/72716909

二、模糊逻辑编程

模糊逻辑的编程并不困难,下面为结合具体案例进行的编程;看到模糊逻辑编程,想到了以前参加飞思卡尔比赛时,是用模糊逻辑来进行小车舵机自动控制,现在想起那段时光,自己以划水的态度,坑害了队友,自己也没有长进。

直接上案例吧:这是《计算智能》书上的例子,例3.3,自动控制系统需要根据设备内温度、设备内湿度决定设备的运转时间。输入变量是温度和湿度,输出为运转时间。温度的论域是[0,100]单位为摄氏度,有3个模糊标记:低、中、高。湿度的论域是[0%,60%],有3个模糊标记:小、中、大。运转时间论域是[0s,1000s],有3个模糊标记:短、中、长。这些模糊标记在模糊规则中被使用。

#include<stdio.h>int tem,dam;
//温度分区
double Low_temp(int a)
{double y;if(a>0&&a<25)y=-0.04*a+1;elsey=0;return y;
}double Mid_temp(int a)
{double y;if(a>0&&a<25)y=0.04*a;else if(a>=25&&a<50)y=-0.04*(a-25)+1;elsey=0;return y;
}double Higher_temp(int a)
{double y;if(a>25&&a<=50)y=0.04*(a-25);else if(a>50&&a<75)y=1-0.04*(a-50);elsey=0;return y;
}double High_temp(int a)
{double y;if(a>=50&&a<75)y=0.04*(a-50);else if(a>=75&&a<100)y=1-0.04*(a-75);elsey=0;return y;
}//湿度分区
double Low_damp(int a)
{double y;if(a>0&&a<25)y=-0.04*a+1;elsey=0;return y;
}double Mid_damp(int a)
{double y;if(a>15&&a<=30)y=0.067*(a-15);else if(a>30&&a<45)y=1-0.067*(a-30);elsey=0;return y;
}double High_damp(int a)
{double y;if(a>35&&a<60)y=0.04*(a-35);elsey=0;return y;
}double Min(float a,float b)
{double min;if(a>b)min=b;elsemin=a;return min;}double Result()
{double maxa,maxb,maxc,Res;double a[4],b[5],c[3];int i,j,k;a[0]=Min(Low_temp(tem),Mid_damp(dam));a[1]=Min(Mid_temp(tem),Mid_damp(dam));a[2]=Min(Higher_temp(tem),Mid_damp(dam));a[3]=Min(Mid_temp(tem),High_damp(dam));b[0]=Min(Low_temp(tem),Low_damp(dam));b[1]=Min(Mid_temp(tem),Low_damp(dam));b[2]=Min(Higher_temp(tem),High_damp(dam));b[3]=Min(High_temp(tem),Mid_damp(dam));b[4]=Min(High_temp(tem),High_damp(dam));c[0]=Min(Higher_temp(tem),Low_damp(dam));c[1]=Min(High_temp(tem),Low_damp(dam));c[2]=Min(Low_temp(tem),High_damp(dam));maxa=a[0];maxb=b[0];maxc=c[0];for(i=0;i<4;i++)if(a[i]>maxa)maxa=a[i];for(j=0;j<5;j++)if(b[j]>maxb)maxb=b[j];for(k=0;k<3;k++)if(c[k]>maxc)maxc=c[k];Res = (maxa*100+maxb*500+maxc*1000)/(maxa+maxb+maxc);return Res;
}//主函数
void main()
{int a,b=1;while(b){printf("指令: 1 模糊计算 ; 2 退出\n");printf("请输入指令:");scanf("%d",&a);switch(a){case 1:printf("请输入温度:");scanf("%d",&tem);printf("请输入湿度:");scanf("%d",&dam);printf("%lf\n\n",Result());break;case 2:printf("已退出\n");b=0;break;}}
}

运行结果:

通过输入的温度和湿度,计算出设备需要运转的时间。

模糊逻辑基本原理与编程相关推荐

  1. 【人工智能】模糊逻辑基本原理

    [人工智能]模糊逻辑基本原理 模糊逻辑基本原理 相关参考文献 模糊逻辑基本原理 我们生活中,很多概念都无法用确定性的语言描述,多与少,高于矮,年轻与年老,这些都无法用具体的数值来进行衡量,也就是说我们 ...

  2. 数学建模 匈牙利算法求解整数规划基本原理与编程实现

    投资问题(0-1规划) 匈牙利算法求解0-1规划问题 解答: 项目之间是互斥关系,所以使用x1+x2+x3=1; 项目5是以项目1为先验条件,所以x5<=x1,意味着x1=1时,x5=1或0 , ...

  3. 数学建模 割平面算法求解整数规划基本原理与编程实现

    基本思想 松弛问题:线性规划 割掉一块全部都是小数的区域(这一部分取不到整数) 案例 1)横坐标x1,纵坐标x2 2)蓝色小三角形的区域:x2:(1,7/4) x1:(0,3/4) 这块区域,x1与x ...

  4. 从《庖丁解牛》谈谈学习编程

    从<庖丁解牛>谈谈学习编程 原文链接: http://zh.5long.me/2014/paodingjieniu/ 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 前一段时间读了< ...

  5. 单片机c语言编程教学大纲,2014《单片机原理及应用》课程教学大纲.doc

    <单片机原理及应用>课程教学大纲 第一部分 大纲说明 一.课程的性质.目的与任务 <单片机原理及应用>是计算机科学与技术.计算机应用技术.电子信息工程专业的专业课.本课程是以M ...

  6. 最短路径算法的编程与实现 C语言

    一 .目的: 1.掌握最短路径算法的基本原理及编程实现: 二 .环境: operating system version:Win11 CPU instruction set:  x64 Integra ...

  7. 用C++ 和OpenCV 实现视频目标检测(YOLOv4模型)

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 据说,现在很多小区都上线了AI抓拍高空抛物的黑科技,可以自动分析抛物 ...

  8. 想象中的论文答辩和真实的论文答辩,哈哈哈哈哈哈……

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文来源:冷兔(lengtoo)整理自网络,图源见水印 包邮送博文视 ...

  9. bufferedreader读取中文乱码_Python读取excel的两种方法

    excel是什么 Microsoft Excel是一个使用非常广泛的电子表格程序.它的用户友好性和吸引人的功能使其成为数据科学中常用的工具.对于excel来说,整个excel文件称为工作簿,工作簿中的 ...

  10. 【赠书】五一假期福利,OpenCV4最新原理与实战书籍

    五一假期快要到了,本次给大家赠送3本本月新书,这次赠送的书籍是<OpenCV 4机器学习算法原理与编程实战>. 这是一本什么样的书 OpenCV(Open Source Computer ...

最新文章

  1. PHP消息队列httpsqs安装与使用无错版
  2. 顺序表-删除所有元素值为x结点(相等加一,不等前移k)
  3. docker swarm英文文档学习-8-在集群中部署服务
  4. AI:2020年WAIC世界人工智能大会2020年7月9日9:30-12:00开幕式《李彦宏、Elon Musk、马云等大佬演讲》
  5. I.Mx6 使用串口连接PSAM卡的注意事项
  6. 求递归算法时间复杂度:递归树
  7. SDL2:封装媒体显示播放Csdl2
  8. Linux学习总结(49)——应当竭力避免在系统中运行的 Linux 命令
  9. 55个应用html5网站的最好例子
  10. Exam 70-462 Administering Microsoft SQL Server 2012 Databases 复习帖
  11. 概率逗号分号_概率里面的逗号
  12. ios 启动图一键生成工具_[iOS]利用Appicon and Launchimage Maker生成并配置iOSApp的图标和启动页...
  13. 如何重设或更改Verizon FIOS路由器的密码
  14. 这才是心理学:02可证伪性,如何打败头脑中的小精灵
  15. 前端知识之angular组件库之NG-ZORRO-ANTD结构窥探(一)components
  16. html5视频自动播放兼容谷歌浏览器,html5实现完美兼容各大浏览器的播放器
  17. 和平精英灵敏度分享码服务器没有响应,和平精英2021最稳灵敏度分享码完整推荐...
  18. 如何读写一篇优秀的计算机论文
  19. 列联表中的相关测量(卡方值与相关系数之间的转换)
  20. springboot项目配置(yml,pom)

热门文章

  1. HashMap头插法
  2. 中国互联网大人物直播简史
  3. 汉语为主体的计算机网络环境,读书笔记 | 鲁川:汉语语法的意合网络 | 从网络到表层序列的生成...
  4. 任意椭圆的外凸包矩形算法
  5. Xshell远程连接服务器
  6. 中医笔记2-入定、打坐
  7. 如何做好会员营销 三步教你看懂会员管理
  8. 各类型商户微信认证方法
  9. 数据库中了勒索病毒,怎么办?
  10. Win10如何查看打印机端口号?