Está en la página 1de 2

#include <stdio.

h>
#include <math.h>
float min(float x, float y){
if(x>y) return y;
else return x;
}
float max(float u, float v){
if(u>v) return u;
else return v;
}
void defuzzication(int input1,int input2);
float mf(int x,int L,int C1,int C2,int R);
float
x1_ZE,x1_NE,x1_PO,x2_LO,x2_ME,x2_HI,y_NE,y_ZE,y_PS,y_PM,y_PB,tuso,mauso,output_fz;
float beta[5];//(NE ZE PS PM PB);
int main(){
defuzzication(0,0);
return 0;
}

void defuzzication(int input1,int input2){


float out=0;
x1_NE = mf(input1,-30,-26,-12,0);
x1_ZE = mf(input1,-12,0,0,12);
x1_PO = mf(input1,0,12,26,30);

x2_LO = mf(input2,-2,-1,5,15);
x2_ME = mf(input2,5,15,15,25);
x2_HI = mf(input2,15,25,26,27);

beta[0] = max(min(x1_NE,x2_LO),beta[0]);
//beta2 = max(min(x1_NE,x2_ME),y_PM);
beta[3] = max(min(x1_NE,x2_ME),beta[3]);
//beta3 = max(min(x1_NE,x2_HI),y_PS);
beta[2] = max(min(x1_NE,x2_HI),beta[2]);
//beta4 = max(min(x1_ZE,x2_LO),y_ZE);
beta[1] = max(min(x1_ZE,x2_LO),beta[1]);
//beta5 = max(min(x1_ZE,x2_ME),y_PS);
beta[2] = max(min(x1_ZE,x2_ME),beta[2]);
//beta6 = max(min(x1_ZE,x2_HI),y_PM);
beta[3] = max(min(x1_ZE,x2_HI),beta[3]);
//beta7 = max(min(x1_PO,x2_LO),y_NE);
beta[0]= max(min(x1_PO,x2_LO),beta[0]);
//beta8 = max(min(x1_PO,x2_ME),y_ZE);
beta[1] = max(min(x1_PO,x2_ME),beta[1]);
//beta9 = max(min(x1_PO,x2_HI),y_PB);
beta[4] = max(min(x1_PO,x2_HI),beta[4]);

printf("Gia tri beta %f %f %f %f %f\n",beta[0],beta[1],beta[2],beta[3],beta[4]);

////Defuzzication
//y_NE = mf(beta[0],-12,-6,-6,0);
//y_ZE = mf(beta[1],-6,0,0,6);
//y_PS = mf(beta[2],0,6,6,12);
//y_PM = mf(beta[3],6,12,12,18);
//y_PB = mf(beta[4],12,18,18,24);

tuso=beta[0]*-6+beta[1]*0+beta[2]*6+beta[3]*12+beta[4]*18;
mauso=beta[0]+beta[1]+beta[2]+beta[3]+beta[4];
output_fz=tuso/mauso;
printf("Defuzzication %f:",output_fz);
}

float mf(int x,int L,int C1,int C2,int R){


//void mf(float x,float L,float C1,float C2,float R){
float a;
if(x<L or x > R) a=0;
else if(L<x && x< C1)a= float(x-L)/float(C1-L);
else if(C1<x && x< C2) a=1;
else a = float(x-R)/float(C2-R);
return a;
}

También podría gustarte