Solve a Problem With Fuzzy Logic - SEEVER BLOG

Breaking

Saturday, December 8, 2018

Solve a Problem With Fuzzy Logic

Dalam dunia elektro, khususnya bidang kontrol. Kecerdasan buatan atau yang sering dikenal dengan istila Artificial Intelegence memang sangat penting. Metode-metode yang dilakukan dalam sistem kontrol juga beragam. Salah satu metode yang familliar dan sudah sangat sering digunakan di Indonesia adalah Logika Fuzzy.
Logika yang paling tua adalah logika digital atau logika Boolean yang juga dikenal dengan logika pasti. Disebut logika pasti, karena logika ini hanya memiliki dua kemungkinan 1 atau 0, hitam atau putih, tinggi atau pendek. Logika seperti ini dinilai tidak cocok dengan kehidupan di lapangan yang memiliki logika yang sangat kompleks. Hal ini lah yang menjadi dasar penemuan logika Fuzzy oleh  ilmuan yang bernama Lutfi A.Zadeh pada tahun 1965.
Fuzzy artinya kabur atau samar. Dalam logika fuzzy, sesuatu dapat  diberi nilai antara 0 sampai 1. Aftniya kita dapat memberi sesuatu tersebut dengan nilai 0.1, 0.3, 0.7 atau 0.02 dan seterusnya.Logika seperti ini akan lebih mendekati logika kehidupan sebenarnya, karena kita bisa membagi sesuatu dengan beberapa kemungkinan dan kita bebas menentukan batasan kemungkinan tersebut. 

Untuk lebih jelasnya, langsung saja kita simak contoh penyelesaian suatu masalah dengan menggunakan logika Fuzzy berikut :

Problem : 
Suatu hari Budi pergi ke bengkel untuk mengganti kaca film untuk mobilnya. Dia akan memberikan uang persen kepada karyawan bengkel yang memasang kaca film. Budi ingin memberikan uang persen sebesar 2.5-20% dari total pembelian kaca film. Besarnya uang persen akan dilihat dari tingkzt pelayanan dan kerapihan pemasangan kaca film. Buatlah program menggunakan logika fuzzy untuk membantu budi memutuskan besarnya uang persen yang akan diberika kepada karyawan bengkel, Jika setelah pemasagan kaca Budi memberikan nilai untuk pelayanan 8 dan untuk kerapihan 6. Penilaian mempunyai rentang 0-10.

Pelayanan    = 8
Kerapihan    = 6
Bonus           = 2,5-20%
Penilaian      = 0-10

Rules :
1. Jika  PELAYANAN   Jelek atau  KERAPIHAN  Buruk  maka BONUS   Murah  
2. Jika PELAYANAN  Sedang atau  KERAPIHAN  Baja  maka  BONUS  Standar
3. Jika  PELAYANAN  Bagus atau KERAPIHAN   Rapih  maka  BONUS  Mahal

Step

1.Buat file FIS (Fuzzy Inference Systems) baru dengan menggunakan perintah newfis.Misalkan kita      memberi nama file nya  AIFuzzy.
a=newfis('AIFuzzy');

2.   Definisikan Inputan pertama PELAYANAN dengan perintah addvar.

a=addvar(a,'input','PELAYANAN',[0 10]);

Tambahkan fungsi keanggotaan PELAYANAN (Jelek,Sedang,Bagus) beserta parameter pembentuknya. Dalam program ini digunakan bentuk segitiga maka wajib memiliki 3 input parameter.Fungsi untuk menambahkan fungsi keanggotan digunakan perintah addmf().
     
a=addmf(a,'input',1,'Jelek','trimf',[-4 0 4]);
a=addmf(a,'input',1,'Sedang','trimf',[1 5 9]);
 a=addmf(a,'input',1,'Bagus','trimf',[6 10 14]);

Untuk melihat bentuk dari inputan PELAYANAN, dapat digunakan perintah plotmf()

plotmf(a,'input',1)


 3.   Lakukan langkah 2 untuk inputan kedua KERAPIHAN .

a=addvar(a,'input','Kerapihan',[0 10]);

Tambahkan fungsi keanggotaan KERAPIHAN (Buruk,Baja,Rapih) beserta parameter pembentuknya.

 a=addmf(a,'input',2,'Buruk','trimf',[-3 0 3]);
a=addmf(a,'input',2,'B,aja','trimf',[2 5 8]);
   a=addmf(a,'input',2,'Rapih','trimf', [7 10 13]);

Untuk melihat bentuk dari inputan KERAPIHAN, dapat digunakan perintah plotmf() pada gambar kedua.

figure; plotmf(a,'input',2)

4.    Setelah definisi fungsi input PELAYANAN dan KERAPIHAN selesai, selanjunya adalah                     mendufunisikan fungsi Output (BONUS). Caranya sama dengan pendefinisian inputan.

a=addvar(a,'output','BONUS',[2.5 20]);

Tambahkan fungsi keanggotaan BONUS (Murah,Standar,Mahal) beserta parameter pembentuknya
a=addmf(a,'output',1,'Murah','trimf',[0 2.5 5]);
  a=addmf(a,'output',1,'Standar','trimf',[5 10 15]);
 a=addmf(a,'output',1,'Mahal','trimf',[15 20 25]);

Untuk melihat bentuk dari inputan PELAYANAN, dapat digunakan perintah plotmf() pada gambar kedua.
figure; plotmf(a,'output',1)



15. Selanjutnya adalah penyusunan aturan-aturan yang berlaku pada sistem.Jika dipermisalkan kita memiliki sejumlah m input dan n output, maka matriks harus disusun dengan jumlah kolom= m+n+2.Dalam kasusu ini kita memiliki 2 inputan (PELAYANAN dan KERAPIHAN) maka m=2 dan satu output (BONUS) maka n=2, dengan demikian jumlah kolom matriks =2+1+2=5.
Contoh :
aturan1 = [1 1 1 1 2];

1.   Kolom pertama pertama mewakili indeks inputan PELAYANAN (Jelek,Sedang,Bagus) diwakilkan dengan nilai indeks  PELAYANAN (1 2 3). Sehingga pada kolom pertama yang bernilai 1, mewakili indeks PELAYANAN Jelek.
2.  Kolom kedua mewakili indeks inputan KERAPIHAN (Buruk,Baja,Rapih) diwakilkan dengan nilai indeks KERAPIHAN (1 2 3). Sehingga pada kolom kedua yang bernilai 1, mewakili indeks KERAPIHAN Buruk.
3.     Kolom kedua mewakili indeks Output  BONUS(Murah,Standar,Mahal) diwakilkan dengan nilai indeks BONUS (1 2 3). Sehingga pada kolom kedua yang bernilai 1, mewakili indeks BONUS Murah.
4. Kolom keempat merupakan indeks dari dari output, nilai dari n+m+1 mewakili pembobotan kita.Nilai bobot ini memiliki range 0-1. Tetapi umumnya dibiarkan menjadi 1.
5. Kolom kelima mewakili operator dalam logika fuzzy, yaitu operator OR dan AND.Operator OR diwakili dengan angka 2 sementara operator AND diwakili dengan angka 1.

% Aturan1: Jika PELAYANAN Jelek ATAU MAKANAN Tengik, maka BONUS Murah
aturan1 = [1 1 1 1 2];
% Aturan2: Jika PELAYANAN Sedang atau Kerapihan Biasa maka BONUS Standar
aturan2 = [2 2 2 1 2];
% Aturan3: Jika PELAYANAN Bagus ATAU Rapih, maka BONUS Mahal
aturan3 = [3 3 3 1 2];

6. Selanjutnya adalah penggabungan semua aturan yang telah dibuat dan lakukan evaluasi:
      listAturan = [aturan1;aturan2;aturan3];
      a = addrule(a,listAturan);
      % Perlihatkan aturan, apakah sudah sesuai?
      showrule(a);
      % Lakukan evaluasi untuk PELAYANAN = 8 dan Kerapihan = 6
      evalfis([8 6], a)

Berikut adalah program lengkapnya :





1 comment:

  1. Promo www.Fanspoker.com :
    - Bonus Freechips 5.000 - 10.000 setiap hari (1 hari dibagikan 1 kali) hanya dengan minimal deposit 50.000 dan minimal deposit 100.000 ke atas
    - Bonus Cashback 0.5% Setiap Senin
    - Bonus Referal 20% Seumur Hidup
    || WA : +855964283802 || LINE : +855964283802 ||

    ReplyDelete