模糊逻辑基本原理与编程

模糊逻辑(Fuzzy Logic) 然后,我们定义了输入和输出变量的范围,并为温度定义了四个模糊集合(cold, cool, warm, hot)。接下来,我们定义了一个模糊规则函数,它接受当前的温度输入,应用模糊逻辑推理,并使用重心法去模糊化以得到最终输出。它由Zadeh在1965年提出,是对传统布尔逻辑的扩展。在布尔逻辑中,变量的值只能是0或1(假或真),而在模糊逻辑中,变量的值可以是介于0和1之间的任何值,表示不同程度的真。以下是一个简单的模糊逻辑控制器的Python实现,用于控制一个简单的系统。 阅读详情

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

一、模糊逻辑基本原理

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

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

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

1、模糊集合

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

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

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

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

  

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

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

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

2、模糊逻辑

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

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

该博客地址为:

https://blog.youkuaiyun.com/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;
	else
		y=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;
	else
		y=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);
	else
		y=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);
	else
		y=0;
	return y;
}

//湿度分区
double Low_damp(int a)
{
	double y;
	if(a>0&&a<25)
		y=-0.04*a+1;
	else
		y=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);
	else
		y=0;
	return y;
}

double High_damp(int a)
{
	double y;
	if(a>35&&a<60)
		y=0.04*(a-35);
	else
		y=0;
	return y;
}

double Min(float a,float b)
{
	double min;
	if(a>b)
		min=b;
	else
		min=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;
		}
	}
}

运行结果:

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

人工智能导论 模糊逻辑 本章将介绍用于研究模糊性思维, 语言形式及其规律的工具-模糊逻辑. 阅读详情

相关推荐

【游戏精粹】模糊逻辑

往期内容 模拟群体行为:Flocking算法 目录 模糊逻辑基础 避免模糊系统的组合激增 一种模糊逻辑的实际应用:管理场景复杂度的模糊控制方法 一、模糊逻辑基础 模糊逻辑允许我们量化地模拟大小逻辑,如“有点害怕”、“非常愤怒”、“非常大”等。因此我们可以使用模糊逻辑模拟AI的情感,这也允许我们创造一个比传统逻辑(true或false)更聪明的AI。 使用模糊集合,我们可以模糊“是”与“否”之间的界限,如“好像是”、“不完全是”。 ...

Evil_Carl的博客 2238

模糊逻辑(Fuzzy Logic)

介绍 参考: 添加链接描述

zhangjiaji111的博客 6026

告别电源依赖!MacBook Pro合盖外接显示器+键盘的5分钟设置教程

本文提供了一份详细的MacBook Pro合盖外接显示器与键盘的设置教程,帮助用户摆脱电源依赖,打造无线整洁的移动工作站。通过使用pmset命令行工具创建一键脚本,可快速启用或恢复合盖不休眠模式,实现便携性与扩展性的完美结合,提升移动办公效率。

q9w8e7r6t5的博客 623

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

【人工智能】模糊逻辑基本原理模糊逻辑基本原理相关参考文献 模糊逻辑基本原理 我们生活中,很多概念都无法用确定性的语言描述,多与少,高于矮,年轻与年老,这些都无法用具体的数值来进行衡量,也就是说我们生活中的很多概念都是具有模糊性的。 模糊逻辑就是来解决这些模糊性的,模糊逻辑并不把一个命题直接分为真与假,在模糊逻辑中一个命题可以被称为“部分的真”。而对于真与假的归属,可以用隶属度来进行衡量。隶属度是[0,1]之间的一个取值,用来标识一个程度。 模糊逻辑(Fuzzy Logic)是一种使用隶属度代替布尔真值的逻辑

一拳Marx 3048

44、模糊逻辑编程与模糊公式模型自动搜索

本文介绍了基于模糊逻辑编程的方法,结合FLOPER和FuzzyXPath工具实现模糊公式模型的自动搜索。通过FLOPER生成模糊公式的执行树,并利用FuzzyXPath对树结构进行分析,从而发现模糊公式的完整模型集。文章详细阐述了模糊逻辑编程的原理、FLOPER工具的使用方法、FuzzyXPath的查询技术,并通过案例分析展示了整个流程。该方法在数字芯片建模、模拟电路设计等领域具有广泛应用潜力。

sony5的博客 79

Scikit-Fuzzy教程:Python中的模糊逻辑编程实践

模糊逻辑是处理“不确定性”的强大工具,广泛应用于智能家居、工业控制、医疗诊断等领域。本文聚焦Python的Scikit-Fuzzy库,覆盖模糊逻辑的核心概念(如模糊集合、隶属度函数)、推理流程(模糊化→规则评估→去模糊化),并通过实战项目演示如何用代码实现一个完整的模糊系统。本文从生活案例引入模糊逻辑的必要性,逐步讲解核心概念→数学模型→代码实现→实战项目→应用场景,最后总结并提供扩展资源。模糊集合(Fuzzy Set)

AI架构师小马 1022

模糊逻辑知多少?

模糊逻辑知多少? 模糊逻辑严格意义上来说与机器学习没有什么太大的关系,但是对于人工智能AI来说,我认为是一个非常重要的概念。所以这篇文章就来讲讲什么是模糊逻辑,以及模糊逻辑的应用。 1. 经典的布尔逻辑 布尔数值就是0和1,是和非,也是计算机逻辑的基础,其基本运算就是"与、或、非",体现在编程中就是“If .... then...”,这个相信大家都很熟悉了,我们大部分的自动化程序就是用布...

Tsingke 2183

基于C语言的模糊PID控制程序设计与实现

模糊逻辑打破了传统二值逻辑中“属于”或“不属于”的绝对界限,允许元素以不同程度隶属于某个集合,这一特性使其非常适合描述人类语言中的不确定性概念,如“温度较高”、“速度较快”等。在模糊PID控制中,正是借助模糊集合对误差和误差变化率进行语义划分,从而实现基于经验知识的智能推理。常用的动态性能指标包括:指标名称符号定义计算公式(近似)上升时间$ t_r $输出从10%上升至90%目标值的时间峰值时间$ t_p $达到第一个超调峰值的时间。

weixin_34520664的博客 1202

模糊逻辑在语音识别中的应用

1.背景介绍 语音识别技术是人工智能领域的一个重要分支,它旨在将人类的语音信号转换为文本信息,从而实现人机交互。在过去的几十年里,语音识别技术一直是人工智能研究的热门话题,尤其是随着深度学习和神经网络技术的发展,语音识别技术的准确性和速度得到了显著提高。然而,在实际应用中,语音识别仍然面临着许多挑战,如噪声、方言、口音等,这些因素可能会导致识别错误。 在这篇文章中,我们将讨论模糊逻辑在语音识别...

AI天才研究院 1284

探索模糊逻辑在游戏编程中的应用

本篇博客深入探讨了模糊逻辑在游戏编程中的应用,特别是FESpriteControl类如何利用模糊引擎控制精灵位置。通过分析DirectX和Visual Basic结合的示例程序,我们了解到了模糊逻辑在动态和流畅控制游戏对象方面的优势。

weixin_35906794的博客 366

Matlab模糊逻辑工具箱:应用与实践指南

安装Matlab模糊逻辑工具箱的第一步是在Matlab的Add-On Explorer中找到该工具箱并进行安装。通常情况下,用户可以直接在Matlab的命令窗口中输入fuzzytool,系统会自动导向工具箱的安装界面。安装过程需要联网,并且Matlab的版本需要满足工具箱的最低要求。在下载和安装的过程中,Matlab会提示用户是否接受许可协议,并可能要求用户登录MathWorks账户。安装完成后,Matlab界面将显示Fuzzy Logic Toolbox的图标,表示安装成功。

weixin_35756637的博客 1209

模糊逻辑与人工智能的技术挑战

1.背景介绍 模糊逻辑是一种计算模型,它可以处理不确定性、不完全信息和不可知性等问题。在人工智能领域,模糊逻辑已经成为一个重要的研究方向,因为它可以帮助人工智能系统更好地理解和处理人类的思维和决策过程。 模糊逻辑的核心概念包括模糊集、模糊关系、模糊函数和模糊变量等。这些概念可以帮助我们更好地理解模糊逻辑的工作原理和应用场景。 模糊逻辑的核心算法原理包括模糊化、模糊判定、模糊推理和模糊控制等。...

AI天才研究院 892

模糊逻辑控制系统_fis文件实现

模糊逻辑系统是一种处理不确定性与模糊性的有效工具,它模拟人类的思考方式,允许推理过程中的不确定因素。不同于传统的二值逻辑系统,模糊逻辑采用介于0和1之间的值表示信息,以便更加灵活地处理模糊概念和不精确数据。在众多领域,如自动控制、图像处理、数据分析等,模糊逻辑均展示出其独特的优势。在.fis文件的每个部分中,都包含了一系列关键元素,这些元素共同定义了模糊逻辑系统的运作方式。变量(Variables):在模糊系统中,变量代表了问题域中的一个概念。

weixin_35696112的博客 1057

模糊逻辑与神经网络融合的必要性探讨

在当今科技飞速发展的时代,人工智能和自动化技术在各个领域都得到了广泛的应用。模糊逻辑和神经网络作为两种重要的智能计算方法,分别在不同的场景中展现出了独特的优势。然而,随着问题的复杂性不断增加,单一的方法往往难以满足实际需求。因此,探讨模糊逻辑与神经网络的融合具有重要的现实意义。本文将深入分析两者融合的必要性,并通过具体的案例和代码进行说明。

梵心白莲的博客 1093

实现模糊逻辑控制:C#库与Windows Forms GUI

模糊逻辑控制器(FLC)是基于模糊集理论和模糊逻辑设计的控制系统,其主要目的是在复杂和不确定条件下实现有效的决策支持。与传统逻辑控制器相比,FLC能够处理更自然和人类友好的语言规则,而不是精确的数值。自20世纪60年代由Zadeh提出模糊逻辑的概念以来,模糊集理论及其在FLC中的应用迅速发展,为智能控制领域带来了革命性的变化。传统逻辑控制器依赖于明确的数学模型,而FLC能够更好地处理模糊性、不确定性和非精确性信息。本章将探讨FLC的基本原理,以及如何利用这些原理来创建功能强大的控制系统。

weixin_42511373的博客 781

C++模糊逻辑代码实现

模糊逻辑是一种很重要的描述手段,针对于模棱两可的概念,模糊逻辑用亦真亦假的思想描述。

【花雕学编程】Arduino BLDC 之模糊逻辑避障控制机器人

本文介绍了一种基于Arduino的无刷直流电机(BLDC)模糊逻辑避障控制机器人系统。该系统采用模糊逻辑控制(FLC)技术,通过模拟人类经验决策过程处理环境不确定性,相比传统控制方法具有更强的适应性和鲁棒性。文章详细阐述了该系统的三大特点:基于模糊逻辑的智能决策机制、强大的环境适应性与鲁棒性、高动态响应的BLDC执行系统。同时介绍了该系统在非结构化环境勘探、农业自动化和家庭服务机器人等场景的应用。此外,文章还提供了基础三传感器模糊避障和五传感器模糊巡墙两个具体实现案例的代码框架,并强调了系统设计中需重点关注

雕爷学编程 937

别再手动巡检了!vRealize Operations Manager 8.x 自动化报告配置全攻略(附模板下载)

本文详细介绍了如何利用vRealize Operations Manager 8.x实现自动化巡检报告配置,大幅提升虚拟化运维效率。通过模板定制、智能调度和自动分发等功能,帮助运维团队告别手动生成报告的繁琐工作,实现90%以上的时间节省。文章还提供了实用的配置技巧和最佳实践,助力企业构建高效的自动化报告系统。

weixin_33806859的博客 298
上一篇: 神经网络的基础知识与简单分类编程
下一篇: 粒子群算法基本原理与编程
SweeNeil
博客等级 码龄9年 251粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值