logika fuzzy
DESCRIPTION
KecebuTRANSCRIPT
Contoh Program Logika Fuzzy Metode Tsukamoto Contoh Program Logika Fuzzy Metode Tsukamoto dg Visual Studio 2012, saya akan membagikan contoh program kendali logika fuzzy / Fuzzy Logic Controll dg menggunakan metode Tsukamoto.
Penjelasan Program:
dengan menggunakan prinsip fuzzy logic controll metode Tsukamoto, program ini bertujuan mencari daya motor berdasarkan dua masukan, yaitu jumlah orang & berat barang bawaan.
program ini dibuat dg menggunakan software Microsoft Visual Studio 2012 Ultimate dg bahasa C# (baca : C Sharp)
Contoh Program Logika Fuzzy
Rule Base
1. IF Barang Bawaan RINGAN && Jumlah Orang SEDIKIT THEN Daya Motor BERKURANG1. IF Barang Bawaan RINGAN && Jumlah Orang BANYAK THEN Daya Motor BERKURANG1. IF Barang Bawaan BERAT && Jumlah Orang SEDIKIT THEN Daya Motor BERTAMBAH
1. IF Barang Bawaan BERAT && Jumlah Orang BANYAK THEN Daya Motor BERTAMBAH
Algoritma program:
1. Start2. Masukkan batas bawah &/ batas atas masing2 himpunan (Ringan, Berat, Sedikit, Banyak, Berkurang, Bertambah)3. masukkan input >> berat barang bawaan (input X) & jumlah orang (input Y)4. hitung derajat keanggotaan unt masing2 himpunan masukan (uRingan, uBerat, uSedikit, uBanyak)5. hitung a-predikat 1-4 dg menggunakan fungsi MIN6. hitung z1-z47. hitung rerata terbobot (Z) >> hasil akhir
source code program:
namespace program1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void hitung_Click(object sender, EventArgs e)
{
double input, BB, BA;
double uRingan, uBerat;
{
input = double.Parse(inputX.Text);
BB = double.Parse(Ringan.Text);
BA = double.Parse(Berat.Text);
uRingan = rumus.turun(BB, BA, input);
uBerat = rumus.naik(BB, BA, input);
textBox1.Text = uRingan.ToString();
textBox2.Text = uBerat.ToString();
}
double uSedikit, uBanyak;
{
input = double.Parse(inputY.Text);
BB = double.Parse(sedikit.Text);
BA = double.Parse(banyak.Text);
uSedikit = rumus.turun(BB, BA, input);
uBanyak = rumus.naik(BB, BA, input);
textBox3.Text = uSedikit.ToString();
textBox4.Text = uBanyak.ToString();
}
double kurang, tambah;
kurang = double.Parse(berkurang.Text);
tambah = double.Parse(bertambah.Text);
double p1, p2, p3, p4, z1, z2, z3, z4, z;
p1 = Math.Min(uRingan, uBanyak);
z1 = tambah - ((tambah - kurang) * p1);
z_1.Text = z1.ToString();
p2 = Math.Min(uRingan, uSedikit);
z2 = tambah - ((tambah - kurang) * p2);
z_2.Text = z2.ToString();
p3 = Math.Min(uBerat, uBanyak);
z3 = ((tambah - kurang) * p3) + kurang;
z_3.Text = z3.ToString();
p4 = Math.Min(uBerat, uSedikit);
z4 = ((tambah - kurang) * p4) + kurang;
z_4.Text = z4.ToString();
z = ((p1 * z1) + (p2 * z2) + (p3 * z3) + (p4 * z4)) / (p1 + p2 + p3 + p4);
hasil.Text = z.ToString();
}
private void clear_Click(object sender, EventArgs e)
{
Ringan.Clear();Berat.Clear();inputX.Clear();
textBox1.Clear();textBox2.Clear();
sedikit.Clear();banyak.Clear();inputY.Clear();
textBox3.Clear();textBox4.Clear();
berkurang.Clear(); bertambah.Clear();
z_1.Clear(); z_2.Clear(); z_3.Clear(); z_4.Clear(); hasil.Clear();
}
private void ResetInput_Click_1(object sender, EventArgs e)
{
inputX.Clear(); inputY.Clear();
}
}
}
public partial class rumus
{
//BB:Batas Bawah , BA:Batas Atas
public static double turun(double BB, double BA, double input)
{
double u;
if (input <= BB) { u = 1; }
else if (input >= BA) { u = 0; }
else { u = (BA - input) / (BA - BB); }
return u;
}
public static double naik(double BB, double BA, double input)
{
double u;
if (input <= BB) { u = 0; }
else if (input >= BA) { u = 1; }
else { u = (input - BB) / (BA - BB); }
return u;
}
}
Program Logika Fuzzy Metode Mamdani Pada program berikut ini, kita akan membuat program mesin cuci fuzzy sederhana unt menentukan waktu pencucian yg efektif berdasarkan masukan jumlah pakaian & tingkat kekotoran pakaian. Software yg dipakai unt membuat program ini adalah Visual Studio 2012 dengan menggunakan bahasa C#.
Algoritma Program:
1. masukkan batas bawah & batas atas tingkat kekotoran, misalnya bersih = 3, & kotor = 15,2. >> input >> masukkan tingkat kekotoran pakaian, misalnya 8. dlm prakteknya masukan tingkat kekotoran dpt menggunakan sensor cahaya.3. masukkan batas bawah & batas atas jumlah pakaian, misalnya sedikit = 10, banyak = 30,4. >> input >> masukkan jumlah pakaian, misalnya 23. dlm praktek dpt menggunakan sensor infrared, / masukannya adalah berat pakaian dengan menggunakan sensor berat.5. masukkan batas bawah & batas atas waktu pencucian, misalnya cepat = 300s, lama=1200s,6. hitung derajat keanggotaan masing2 inputan terhadap masing2 himpunanannya.7. lakukan langkah aplikasi fungi implikasi, dengan fungsi MIN unt mencari a-predikat 1 s/d 4
(sesuai aturan)8. lakukan komposisi aturan menggunakan metode MAX unt mencari nilai a1 & a29. lakukan defuzzyfikasi, tentukan fungsi keanggotaan dari hasil komposisi -> hitung momen (M1, M2, M3) -> hitung luas masing2 daerah (A1, A2, A3)10. hitung z (nilai akhir) kemudian tampilkan hasilnya
Contoh Kode Program C#
private void button1_Click(object sender, EventArgs e)
{
double bb, ba, i;
double ubersih, ukotor;
{
i = double.Parse(inputx.Text);
bb = double.Parse(bersih.Text);
ba = double.Parse(kotor.Text);
ubersih = rumus.turun(bb, ba, i);
ukotor = rumus.naik(bb, ba, i);
uBrsh.Text = ubersih.ToString(); uKtr.Text = ukotor.ToString();
}
double usedikit, ubanyak;
{
i = double.Parse(inputy.Text);
bb = double.Parse(sedikit.Text);
ba = double.Parse(banyak.Text);
usedikit = rumus.turun(bb, ba, i);
ubanyak = rumus.naik(bb, ba, i);
uSdkt.Text = usedikit.ToString(); uByk.Text = ubanyak.ToString();
}
double cpt, lma;
cpt = Convert.ToInt32(cepat.Text);
lma = Convert.ToInt32(lama.Text);
double p1, p2, p3, p4, max1, max2, max, Min1, Min2, Min, a1, a2 ;
double m1, m2, m3, AA1, AA2, AA3, z;
// Mencari a-predikat 1 - 4
p1 = Math.Min(ubersih, usedikit);
p2 = Math.Min(ubersih, ubanyak);
p3 = Math.Min(ukotor, usedikit);
p4 = Math.Min(ukotor, ubanyak);
Min1 = Math.Min(p1, p2); Min2 = Math.Min(p3, p4);
Min = Math.Min(Min1, Min2); // Mencari Min
max1 = Math.Max(p1, p2); max2 = Math.Max(p3, p4);
max = Math.Max(max1, max2); // Mencari Max
a1 = (lma - cpt)*Min + cpt; // Mencari batas area 1
a2 = (lma - cpt)*max + cpt; // Mencari batas area 2
ha1.Text = a1.ToString();
ha2.Text = a2.ToString();
// Defuzzyfikasi
m1 = (Min/2)*(Math.Pow(a1,2));
m2 = (((1 / (lma - cpt)) / 2) * (Math.Pow(a2, 3))) - (((cpt / (lma - cpt)) / 2) * Math.Pow(a2, 2)) - (((1 / (lma - cpt)) / 3) * (Math.Pow(a1, 3))) - (((cpt / (lma - cpt)) / 2 * (Math.Pow(a1, 2))));
m3 = ((max * Math.Pow(lma, 2)) / 2) - (max * (lma-cpt) / 2) * (lma-cpt);
hm1.Text = m1.ToString(); hm2.Text = m2.ToString(); hm3.Text = m3.ToString();
// Mencari Luas Area A1,A2,A3
AA1 = a1 * Min;
AA2 = (Min + max) * (a2 - a1) / 2;
AA3 = (lma-(lma-cpt)) * max;
A_1.Text = AA1.ToString();
A_2.Text = AA2.ToString();
A_3.Text = AA3.ToString();
z = (m1 + m2 + m3) / (AA1 + AA2 + AA3); // Titik Pusat
textBox1.Text = z.ToString();
}