Anda di sini

Instalasi dan Konfigurasi

[TUTORIAL LENGKAP] Menggunakan Fuzzy Logic Toolbox pada MATLAB

Kusuma Wardana - 22 November 2015 10:08:56 0

MATLAB adalah bahasa pemrograman teknis yang sangat andal untuk proses simulasi dan visualisasi data. MATLAB menjadi tools bagi para ilmuan dan pelajar untuk memodelkan sistem, menganalisis serta menampilkan data. Saat ini, MATLAB terus berkembang untuk menyokong berbagai disiplin keilmuan, termasuk Logika Fuzzy. MATLAB telah menyediakan sebuah tools untuk merancang logika fuzzy, yang dikenal sebagai Fuzzy Logic Toolbox.

Mari kita mulai pembahasan kita dengan menggunakan contoh yang telah kita bahas sebelumnya, yaitu: Dinner for Two. Sebelumnya, kita telah membahas dari segi penurunan matematikanya. Nah, saat ini kita akan menggunakan Fuzzy Logic Toolbox untuk menyelesaikan permasalahan tersebut.

Asumsikan bahwa kita telah menginstal MATLAB pada komputer kita dan telah menyertakan Fuzzy Logic Toolbox di dalamnya. Untuk mengetahui apakah telah toolbox ini telah terinstal apa tidak, kita ketikkan sintaks ver pada Command Window, sebagai berikut:

>> ver

-----------------------------------------------------------------------------------
MATLAB Version: 8.3.0.532 (R2014a)
MATLAB License Number: 271828
Operating System: Microsoft Windows 7 Ultimate  Version 6.1 (Build 7600)
Java Version: Java 1.7.0_11-b21 with Oracle Corporation Java HotSpot(TM) Client VM mixed mode
-----------------------------------------------------------------------------------
MATLAB                                                Version 8.3        (R2014a)
Simulink                                              Version 8.3        (R2014a)
Communications System Toolbox                         Version 5.6        (R2014a)
Computer Vision System Toolbox                        Version 6.0        (R2014a)
Control System Toolbox                                Version 9.7        (R2014a)
DSP System Toolbox                                    Version 8.6        (R2014a)
Data Acquisition Toolbox                              Version 3.5        (R2014a)
Fuzzy Logic Toolbox                                   Version 2.2.19     (R2014a)
Image Acquisition Toolbox                             Version 4.7        (R2014a)
Image Processing Toolbox                              Version 9.0        (R2014a)
Instrument Control Toolbox                            Version 3.5        (R2014a)
MATLAB Compiler                                       Version 5.1        (R2014a)
Neural Network Toolbox                                Version 8.2        (R2014a)
Optimization Toolbox                                  Version 7.0        (R2014a)
Real-Time Windows Target                              Version 4.4        (R2014a)
Signal Processing Toolbox                             Version 6.21       (R2014a)
Statistics Toolbox                                    Version 9.0        (R2014a)

Terlihat bahwa semua toolbox yang terinstal dimunculkan, lengkap dengan versi rilisnya. Untuk saat ini, saya menggunakan Fuzzy Logic Toolbox versi 2.2.19.

Untuk merancang fuzzy pada MATLAB, kita dapat menggunakan dua cara, yaitu dengan mengetiikan sintaksnya pada editor (layaknya memprogram MATLAB), atau menggunakan jendela visual yang telah dirancang antarmukanya sedemikian rupa untuk mendesain suatu sistem fuzzy. Antarmuka ini dikenal sebagai FIS editor. Untuk saat ini, kita akan menggunakan FIS editor.

Jika sudah terinstal, mari kita ketikkan sintaks fuzzy pada Command Window, sebagai berikut:

>> fuzzy

Selanjutnya akan muncul FIS editor, seperti pada Gambar 1.

Gambar 1. Tampilan awal FIS editor

Mari kita reveiew kasus kita, yaitu Dinner For Two:
Karena hari ini Valentine, Romi ingin mengajak Juli dinner di suatu restoran. Sebelum berangkat dinner, Romi berpikir akan membagi kebahagiaannya pada malam ini kepada pelayan restoran dengan memberikan uang tip. Dia akan memberikan uang tip sebesar 5-25% dari total belanjanya. Besarnya uang tip akan dilihat dari tingkat PELAYANAN(service) dan kualitas MAKANAN (food) yang dihidangkan.

Bantulah Romi untuk memutuskan besarnya uang tip yang akan diberikan kepada pelayan restoran, jika setelah menikmati hidangan dan fasilitas PELAYANAN Romi memberi nilai, sebagai berikut:
PELAYANAN = 7
MAKANAN = 8

Penilaian PELAYANAN dan MAKANAN berada pada rentang nilai 0-10. Ingat, kisaran uang tip adalah 5 - 25%.

Adapun aturan pemberian tip yg ditetapkan oleh Romi adalah sebagai berikut:

  1. Jika PELAYANAN Jelek ATAU MAKANAN Tengik, maka TIP Murah
  2. Jika PELAYANAN Sedang, maka TIP Standar
  3. Jika PELAYANAN Bagus ATAU MAKANAN Lezat, maka TIP Mahal

Dapat kita simpulkan bahwa pasangan input-output adalah sebagai berikut:

  • INPUT: PELAYANAN (Jelek, Sedang, Bagus) dan MAKANAN (Tengik, Lezat)
  • OUTPUT: TIP (Murah, Standar, Mahal)

Nah, kita ketahui bahwa input ada dua, yaitu PELAYANAN dan MAKANAN. Mari kita amati di FIS Editor. Untuk tampilan awal, FIS Editor secara default hanya menampilkan satu input dan satu output. Oleh karena itu, mari kita tambahkan satu buah input lagi. Pada FIS Editor, carilah Edit, kemudian Add Variable... dan klik Input, seperti yang ditunjukkan pada Gambar 2.

Gambar 2. Menambahkan variabel Input

Untuk memudahkan dalam pembuatan sistem, klik-lah input 1, kemudian ubahlah kolom Name pada Current Variabel. Gantilah namanya menjadi PELAYANAN, kemudian tekan Enter. Untuk parameter yang lain (And method, Or method, Implication, dan sebagainya), biarkanlah pada nilai defaulft-nya. Amati proses ini pada Gambar 3.

Gambar 3. Mengubah kolom Name

Lakukan hal yang sama untuk Input 2 dan Output, masing-masing dengan nama MAKANAN dan TIP. Hasilnya tampak seperti pada Gambar 4.

Gambar 4. Nama Varibel yang telah diubah

Langkah selanjutnya adalah menentukan fungsi keanggotaan dari input dan output fuzzy. Mari kita lakukan perubahan pada input PELAYANAN terlebih dahulu. Klik-lah dua kali pada kotak kuning PELAYANAN. Selanjutnya akan muncul jendela Membership Function Editor seperti pada Gambar 5.

Gambar 5. Membership Function Editor

Pada Jendela ini, pastikan saat ini kotak kuning PELAYANAN maih aktif(ditandai dengan garis merah tebal). Klik-lah garis mf1, dan ubahlah parameter dibawahnya (ditunjukkan dengan kolom yang berwarna putih pada Gambar 5) sesuai dengan tabel berikut:

Tabel 1. Properties untuk fungsi keanggotaan PELAYANAN: JELEK

ParameterNilai
Range[0 10]
NameJelek
Typetrimf
Params[-4 0 4]

Jika mf1 sudah diubah, lakukan langkah yang sama untuk mf2 dan mf3, masing masing seperti pada Tabel 2 dan 3.

Tabel 2. Properties untuk fungsi keanggotaan PELAYANAN: SEDANG

ParameterNilai
Range[0 10]
NameSedang
Typetrimf
Params[1 5 9]

Tabel 3. Properties untuk fungsi keanggotaan PELAYANAN: BAGUS

ParameterNilai
Range[0 10]
NameBagus
Typetrimf
Params[6 10 14]

Hasilnya terlihat seperti pada Gambar 6. Membership function adalah fungsi keanggotaan yang mewakili suatu himpunan fuzzy. Pada input PELAYANAN, semua fungsi keanggotaan memiliki tipe trimf. Trimf adalah Triangular Membership Function. Yaitu fungsi keanggotaan berbentuk segitiga. Bagaimana menentukan harus memiliki bentuk tertentu? Hal ini sangat tergantung dari pengalaman dan pemahaman si designer. Mereka harus memperkirakan bentuk yang tepat dan masuk akal untuk jenis kasus tertentu. Bagaimana teori memilih fungsi keanggotaan tidak dibahas pada tulisan ini. Derajat keanggotaan akan memiliki nilai berkisar antara 0 - 1. Makin tinggi derajat keanggotaan, makin signifikan pengaruhnya dalam logika kita. Sebagai contoh, mari kita amati Gambar 6. Nilai PELAYANAN yang benar-benar dikatakan BAGUS adalah ketika PELAYANAN tersebut bernilai 10, bukan? Kita buatkan fungsi keanggotaan berbentuk segitiga. Dengan puncak di angka 10, dan kaki satunya di angka 6 (kaki satunya akan berada di angka 14, tapi tidak masuk dalam Range kita, jadi tidak akan kita bahas). Nilai PELAYNAN = 9 juga termasuk BAGUS, namun derajatnya mulai berkurang. Sekarang amati nilai 7. Nilai PELAYNAN = 7 bersinggungan dengan fungsi keanggotaan SEDANG dan BAGUS. Dapat kita simpulkan bahwa nilai =7 termasuk BAGUS dan termasuk SEDANG, tapi masing-masing dengan derajat (bobot) keanggotaan yang berbeda. Ambil sekali lagi angka 2. Nilai PELAYANAN = termasuk dalam kategori SEDANG dan JELEK. Namun, jika kita amati, nilai = 2 akan cederung memiliki bobot yang lebih besar ke JELEK daripada ke SEDANG. Apa kalian mengamatinya? Nah, inilah watak kekaburan dari suatu logika fuzzy.

Gambar 6. Membership function untuk input PELAYANAN

Sekarang, kita lakukan penyesuaian untuk variabel MAKANAN dan TIP. Lakukan langkah-langkah yang sama seperti mengubah variabel PELAYANAN. Sesuaikanlah seperti pada Tabel 4 sampai Tabel 8. Jika memebership function dibutuhkan lebih atau kurang, kita bisa menambahkannya melalui kolom Edit di bagian atas jendela. Perhatikan bahwa fungsi keanggotaan untuk MAKANAN adalah berbentuk trapesium (trapmf).

Tabel 4. Properties untuk fungsi keanggotaan MAKANAN: TENGIK

ParameterNilai
Range[0 10]
NameTengik
Typetrapmf
Params[0 0 1 3]

Tabel 5. Properties untuk fungsi keanggotaan MAKANAN: LEZAT

ParameterNilai
Range[0 10]
NameLezat
Typetrapmf
Params[7 9 10 10]

Tabel 6. Properties untuk fungsi keanggotaan TIP: MURAH

ParameterNilai
Range[0 30]
NameMurah
Typetrimf
Params[0 5 10]

Tabel 7. Properties untuk fungsi keanggotaan TIP: STANDAR

ParameterNilai
Range[0 30]
NameStandar
Typetrimf
Params[10 15 20]

Tabel 8. Properties untuk fungsi keanggotaan TIP: MAHAL

ParameterNilai
Range[0 30]
NameMahal
Typetrimf
Params[20 25 30]

Hasil akhir dari fungsi keanggotaan MAKANAN dan TIP diperlihatkan seperti pada Gambar 7 dan Gambar 8.

Gambar 7. Membership function untuk input MAKANAN

Gambar 8. Membership function untuk output TIP

Setelah menyusun semua fungsi keanggotaan baik input maupun output, langkah selanjutnya adalah menetapkan aturan-aturan menggunakan mekanisme IF-THEN, atau dikenal sebagai aturan JIKA-MAKA. Masih pada jedela yang sama (Membership Function Editor), bukalah Edit kemudian klik Rules... . selanjutnya akan tampil jendela Rule Editor seperti pada Gambar 9.

Gambar 9. Jendela Rule Editor

Mari kita review aturan-aturan yang berlaku pada kasus kita, yaitu sebagai berikut:

  1. Jika PELAYANAN Jelek ATAU MAKANAN Tengik, maka TIP Murah
  2. Jika PELAYANAN Sedang, maka TIP Standar
  3. Jika PELAYANAN Bagus ATAU MAKANAN Lezat, maka TIP Mahal

Nah, selanjutnya kita sesuaikan pengaturan jendela Rule Editor dengan aturan ini. Ubah-ubahlah kolom PELAYANAN, MAKANAN dan TIP, serta sesuaikan dengan pilihan Connection-nya (dalam hal ini OR atau AND). Karena kita menggunakan kata 'ATAU' dalam aturan kita, maka kita gunakan koneksi OR. Pada aturan kedua, terlihat hanya input PELAYANAN saja yang masuk dalam aturan, sedangkan MAKANAN tidak. Oleh karena itu, kita bisa pilih kolom MAKANAN dengan none. Jika telah selesai satu aturan, klik-lah tombol Add Rule. Kita juga bisa mengedit atau menghapus aturan yang kita buat dengan tombol yang telah disediakan. Hasil selengkapnya ditunjukkan pada Gambar 10.

Gambar 10. Menyusun aturan IF-THEN

Jika sudah, jendela Rule Editor dan Membership Function bisa kita tutup, dan kita bisa kembali jendela awal. Di jendela utama, kita bisa melihat hasil dari sistem fuzzy yang telah kita buat. Carilah View, kemudian klik Rules. Hasilnya terlihat pada Gambar 11.

Seperti yang telah kita bahas sebelumnya bahwa input diberi nilai tertentu, yaitu PELAYANAN = 7, dan MAKANAN = 8. Ubahlah kolom Input, dan lihat hasilnya. Terlihat bahwa nilai TIP = 20. Nah, dengan demikian, dapat kita simpulkan bahwa TIP yang harus dibayarkan oleh Romi adalah sebesar 20%. Kita dapat mengubah-ubah nilai input ini dengan cara mengetikkan, atau menggeser-geser garis vertikal yang melintasi input.

Gambar 11. Hasil akhir dari sistem fuzzy

Kita dapat melihat bentuk dari berbagai peluang nilai input kita dengan cara memilih View - Surface. Hasilnya terlihat seperti pada Gambar 12.

Terakhir, simpanlah projek ini jika diperlukan. Pilihlah File - Export - To File... Simpanlah sesuai dengan nama yang kita inginkan. Hindarilah menggunakan spasi dalam penamaan.

Bagaimana... cukup mudah bukan? Semoga tutorial ini bermanfaat. Terima kasih.

29.006
Daftar Artikel Terkait
Image

Kusuma Wardana

I Nyoman Kusuma Wardana, yang akrab dipanggil Kusuma, lahir dan besar di Bali. Ia tinggal di Desa Wisata Ubud, dan lebih banyak melaksanakan aktivitasnya di Denpasar. Profesinya adalah sebagai staf pengajar di Jurusan Teknik Elektro, Politeknik Negeri Bali. Saat ini Ia menjadi salah satu penulis di tutorkeren.com.

Artikel Menarik Lainnya
Mari Gabung

Halo Emo 51 , Ada yang ingin disampaikan? Jangan sungkan untuk gabung diskusi ini. Silahkan Login dulu atau Daftar baru.