模糊推理(T-S系统)+C代码

本文介绍了一个基于T-S型系统的模糊推理实例,通过定义隶属度函数和推理规则来控制冷气阀门的开启程度,实现了根据不同温度调节阀门开度的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一个模糊推理(T-S型系统)例子,如下:



代码的例子如下:


//制定推理规则:
//阀门的打开度数在[0, 90]
//定义:

// 关闭:0      开小:0~30  开中:30~60  开大:60~90
//R1:温度低,则关闭冷气阀门     if T is f1, then Y=0;    Y表示:温度高低对应需要打开的度数
//R2:温度较低,则开小冷气阀门   if T is f2, then Y=30/14*(T-10);
//R3:温度较高,则阀门开中       if T is f3, then Y=30/22*(T-14)+30;
//R4:温度高,则开大阀门         if T is f4, then Y=30/12*(T-24)+60;


代码实现如下:

(下面代码是按照个人理解和思路书写,正确与否尚且不知,从结果看还是有些合理的,欢迎大牛帮忙指正奋斗

#include "stdio.h"
#include "stdlib.h"
#include "math.h"


#define N 4


double A[N];
double Y[N];


double funA1(double x);  //A1温度低,的隶属度函数
double funA2(double x);  //A2温度较低,的隶属度函数
double funA3(double x);  //A3温度较高,的隶属度函数
double funA4(double x);  //A4温度高,的隶属度函数


void main()
{
double T, Z;
double sum=0;
int i;

//推理规则
//阀门的打开度数在[0, 90]
//定义开小:0~30  开中:30~60  开大:60~90
//R1:温度低,则关闭冷气阀门     if T is f1, then Y=0;    Y表示:温度高低对应需要打开的度数
//R2:温度较低,则开小冷气阀门   if T is f2, then Y=30/14*(T-10);
//R3:温度较高,则阀门开中       if T is f3, then Y=30/22*(T-14)+30;
//R4:温度高,则开大阀门         if T is f4, then Y=30/12*(T-24)+60;


for(T=0; T<50; T++)
{
A[0] = funA1(T);
A[1] = funA2(T);
A[2] = funA3(T);
A[3] = funA4(T);

//根据推理规则可计算
Y[0] = 0;
Y[1] = 30/14*(T-10);
Y[2] = 30/22*(T-14)+30;
Y[3] = 30/12*(T-24)+60;

//按加权求和法计算总输出
sum = 0;
for(i=0; i<N; i++)
{
sum += Y[i]*A[i];
}

printf("\n%0.2lf  %lf\n", T, sum);
}
}






//A1的隶属度函数
double funA1(double x)
{
if(x<=10)
return 1;


if(x>10 && x<14)
return (1-(x-10)/4);


if(x>=14)
return 0;
}




//A2的隶属度函数
double funA2(double x)
{
if(x<=10)
return 0;

if(x>10 && x<=14)
return (x-10)/4;

if(x>14 && x<=24)
return (1-(x-14)/10);


if(x>24)
return 0;
}


//A3的隶属度函数
double funA3(double x)
{
if(x<=14)
return 0;

if(x>14 && x<=24)
return (x-14)/10;

if(x>24 && x<=36)
return 1-(x-24)/12;


if(x>36)
return 0;
}


//A4的隶属度函数
double funA4(double x)
{
if(x<=24)
return 0;


if(x>24 && x<=36)
return (x-24)/12;


if(x>36)
return 1;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值