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

模糊推理(T-S系统)+C代码_第1张图片模糊推理(T-S系统)+C代码_第2张图片


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

模糊推理(T-S系统)+C代码_第3张图片模糊推理(T-S系统)+C代码_第4张图片模糊推理(T-S系统)+C代码_第5张图片


代码的例子如下:

模糊推理(T-S系统)+C代码_第6张图片模糊推理(T-S系统)+C代码_第7张图片

//制定推理规则:
//阀门的打开度数在[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 {
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;
}

你可能感兴趣的:(模式识别算法,模糊推理,T-S系统,C语言)