logika fuzzy

9
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 BERKURANG

Upload: ahmad-muyassar

Post on 16-Feb-2016

35 views

Category:

Documents


0 download

DESCRIPTION

Kecebu

TRANSCRIPT

Page 1: Logika Fuzzy

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

Page 2: Logika Fuzzy

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);

Page 3: Logika Fuzzy

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;

Page 4: Logika Fuzzy

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)

Page 5: Logika Fuzzy

{

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

Page 6: Logika Fuzzy

(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);

Page 7: Logika Fuzzy

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();

Page 8: Logika Fuzzy

A_3.Text = AA3.ToString();

z = (m1 + m2 + m3) / (AA1 + AA2 + AA3); // Titik Pusat

textBox1.Text = z.ToString();

}