Dimensi Rule =4x2
0 1 =>0
0 0 =>0
1 1 =>1
1 0 =>1
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Baca Sensor Loop
Turun2: (5000.00-4000.00)/(5000.00-1000.00) = 0.25
Naik1: (4000.00-1000.00)/(5000.00-1000.00) =0.75
Turun2: (600.00-300.00)/(600.00-100.00) = 0.60
Naik1: (300.00-100.00)/(600.00-100.00) =0.40
1. Alpha1 Rule 0 + 1 => 0 (Turun) =Min(0.25,0.40)=>0.25
Turun1 =7000.00 - (0.25 * (7000.00-2000.00) = 5750.00
#Predikat1 5750.00
2. Alpha2 Rule 0 + 0 => 0 (Turun) =Min(0.25,0.60)=>0.25
Turun1 =7000.00 - (0.25 * (7000.00-2000.00) = 5750.00
#Predikat2 5750.00
3. Alpha3 Rule 1 + 1 => 1 (Naik) =Min(0.75,0.40)=>0.40
Naik1 = (0.40 *(7000.00-2000.00)) + 2000.00 = 4000.00
#Predikat3 4000.00
4. Alpha4 Rule 1 + 0 => 1 (Naik) =Min(0.75,0.60)=>0.60
Naik1 = (0.60 *(7000.00-2000.00)) + 2000.00 = 5000.00
#Predikat4 5000.00
Data Pembilang Fuzzy:
(0.25 * 5750.00) + (0.25 * 5750.00) + (0.40 * 4000.00) + (0.60 * 5000.00) = 7475.00 =7475.00
Dibagi Penyebut Alpha:
0.25 + 0.25 + 0.40 + 0.60 =1.50
HASIL DEFUZZYFIKASI: 4983.33
---------------------------------------------------------------
--------HITUNG ULANG BACA SENSOR-----------
---------------------------------------------------------------
Sebagai Berikut Engine Utamanya:
float cekMin(float dV1,float dV2){
float hslMin=dV1;
if(dV2<dV1){hslMin=dV2;}
return hslMin;
}
float getFuzzy(String lvl,float Vz,float Vmx,float Vmn){
float fuzzy=-1;
String gab="";
if(lvl=="Turun"){
if (Vz<=Vmn){fuzzy=1;gab="Turun1: "+String(fuzzy);}
else if (Vz<=Vmx){
fuzzy=(Vmx-Vz)/(Vmx-Vmn);
gab="Turun2: ("+String(Vmx)+"-"+String(Vz)+")/(" +String(Vmx)+"-"+String(Vmn)+") = "+String(fuzzy);
}
else if (Vz>=Vmx){fuzzy=0;gab="Turun3: "+String(fuzzy);}
}//lvl
else if(lvl=="Naik"){
if (Vz<=Vmn){fuzzy=0;gab="Naik1: "+String(fuzzy);}
else if (Vz<=Vmx){
fuzzy=(Vz-Vmn)/(Vmx-Vmn);
gab="Naik1: ("+String(Vz)+"-"+String(Vmn)+")/("+String(Vmx)+"-"+String(Vmn)+") =" +String(fuzzy);
}
else if (Vz>=Vmx){fuzzy=1;gab="Naik3: "+String(fuzzy);}
}//lvl
cetak (gab);
return fuzzy;
}//float
float getPredikat(String lvl,float Vz,float Vmx,float Vmn){
float predikat=-1;
String gab="";
if(lvl=="Turun"){
if (Vz<=Vmn){predikat=Vmx - (Vz * (Vmx-Vmn));gab="Turun1 ="+String(Vmx)+" - ("+String(Vz)+" * ("+String(Vmx)+"-"+String(Vmn)+") = "+String(predikat);}
else if (Vz<=Vmx){predikat=Vmx - (Vz * (Vmx-Vmn));gab="Turun2 ="+String(Vmx)+" - ("+String(Vz)+" * ("+String(Vmx)+"-"+String(Vmn)+") = "+String(predikat);}
else if (Vz>=Vmx){predikat=Vmx - (Vz * (Vmx-Vmn));gab="Turun3 ="+String(Vmx)+" - ("+String(Vz)+" * ("+String(Vmx)+"-"+String(Vmn)+") = "+String(predikat);}
}//lvl
else if(lvl=="Naik"){
if (Vz<=Vmn){predikat=(Vz *(Vmx-Vmn)) + Vmn;gab="Naik1 = ("+String(Vz)+" *("+String(Vmx)+"-"+String(Vmn)+")) + "+String(Vmn)+" = "+String(predikat);}
else if (Vz<=Vmx){predikat=(Vz *(Vmx-Vmn)) + Vmn;gab="Naik2 = ("+String(Vz)+" *("+String(Vmx)+"-"+String(Vmn)+")) + "+String(Vmn)+" = "+String(predikat);}
else if (Vz>=Vmx){predikat=(Vz *(Vmx-Vmn)) + Vmn;gab="Naik3 = ("+String(Vz)+" *("+String(Vmx)+"-"+String(Vmn)+")) + "+String(Vmn)+" = "+String(predikat);}
}//lvl
cetak (gab);
return predikat;
}//float


Tidak ada komentar:
Posting Komentar