logika fuzzy

Post on 16-Feb-2016

35 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Kecebu

TRANSCRIPT

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

}

top related