[[{"fid":"202","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"Menggunakan Fuzzy Logic Toolbox pada MATLAB","field_file_image_title_text[und][0][value]":"Menggunakan Fuzzy Logic Toolbox pada MATLAB"},"type":"media","link_text":null,"attributes":{"alt":"Menggunakan Fuzzy Logic Toolbox pada MATLAB","title":"Menggunakan Fuzzy Logic Toolbox pada MATLAB","height":"627","width":"1200","class":"media-element file-default"}}]]
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.
[[{"fid":"203","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"Tampilan awal FIS editor","field_file_image_title_text[und][0][value]":"Tampilan awal FIS editor"},"type":"media","link_text":null,"attributes":{"alt":"Tampilan awal FIS editor","title":"Tampilan awal FIS editor","height":"336","width":"400","class":"media-element file-default"}}]]
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.
[[{"fid":"204","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"dinner for two - small","field_file_image_title_text[und][0][value]":"dinner for two - small"},"type":"media","link_text":null,"attributes":{"alt":"dinner for two - small","title":"dinner for two - small","height":"213","width":"400","class":"media-element file-default"}}]]
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:
- Jika PELAYANAN Jelek ATAU MAKANAN Tengik, maka TIP Murah
- Jika PELAYANAN Sedang, maka TIP Standar
- 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.
[[{"fid":"205","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"Menambahkan variabel Input","field_file_image_title_text[und][0][value]":"Menambahkan variabel Input"},"type":"media","link_text":null,"attributes":{"alt":"Menambahkan variabel Input","title":"Menambahkan variabel Input","height":"337","width":"400","class":"media-element file-default"}}]]
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.
[[{"fid":"206","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"Mengubah kolom Name","field_file_image_title_text[und][0][value]":"Mengubah kolom Name"},"type":"media","link_text":null,"attributes":{"alt":"Mengubah kolom Name","title":"Mengubah kolom Name","height":"337","width":"400","class":"media-element file-default"}}]]
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.
[[{"fid":"207","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"Nama Varibel yang telah diubah","field_file_image_title_text[und][0][value]":"Nama Varibel yang telah diubah"},"type":"media","link_text":null,"attributes":{"alt":"Nama Varibel yang telah diubah","title":"Nama Varibel yang telah diubah","height":"338","width":"400","class":"media-element file-default"}}]]
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.
[[{"fid":"208","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"Membership Function Editor","field_file_image_title_text[und][0][value]":"Membership Function Editor"},"type":"media","link_text":null,"attributes":{"alt":"Membership Function Editor","title":"Membership Function Editor","height":"337","width":"400","class":"media-element file-default"}}]]
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
Parameter | Nilai |
---|---|
Range | [0 10] |
Name | Jelek |
Type | trimf |
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
Parameter | Nilai |
---|---|
Range | [0 10] |
Name | Sedang |
Type | trimf |
Params | [1 5 9] |
Tabel 3. Properties untuk fungsi keanggotaan PELAYANAN: BAGUS
Parameter | Nilai |
---|---|
Range | [0 10] |
Name | Bagus |
Type | trimf |
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.
[[{"fid":"209","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"Membership function untuk input PELAYANAN","field_file_image_title_text[und][0][value]":"Membership function untuk input PELAYANAN"},"type":"media","link_text":null,"attributes":{"alt":"Membership function untuk input PELAYANAN","title":"Membership function untuk input PELAYANAN","height":"335","width":"400","class":"media-element file-default"}}]]
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
Parameter | Nilai |
---|---|
Range | [0 10] |
Name | Tengik |
Type | trapmf |
Params | [0 0 1 3] |
Tabel 5. Properties untuk fungsi keanggotaan MAKANAN: LEZAT
Parameter | Nilai |
---|---|
Range | [0 10] |
Name | Lezat |
Type | trapmf |
Params | [7 9 10 10] |
Tabel 6. Properties untuk fungsi keanggotaan TIP: MURAH
Parameter | Nilai |
---|---|
Range | [0 30] |
Name | Murah |
Type | trimf |
Params | [0 5 10] |
Tabel 7. Properties untuk fungsi keanggotaan TIP: STANDAR
Parameter | Nilai |
---|---|
Range | [0 30] |
Name | Standar |
Type | trimf |
Params | [10 15 20] |
Tabel 8. Properties untuk fungsi keanggotaan TIP: MAHAL
Parameter | Nilai |
---|---|
Range | [0 30] |
Name | Mahal |
Type | trimf |
Params | [20 25 30] |
Hasil akhir dari fungsi keanggotaan MAKANAN dan TIP diperlihatkan seperti pada Gambar 7 dan Gambar 8.
[[{"fid":"210","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"Membership function untuk input MAKANAN","field_file_image_title_text[und][0][value]":"Membership function untuk input MAKANAN"},"type":"media","link_text":null,"attributes":{"alt":"Membership function untuk input MAKANAN","title":"Membership function untuk input MAKANAN","height":"338","width":"400","class":"media-element file-default"}}]]
Gambar 7. Membership function untuk input MAKANAN
[[{"fid":"211","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"Membership function untuk output TIP","field_file_image_title_text[und][0][value]":"Membership function untuk output TIP"},"type":"media","link_text":null,"attributes":{"alt":"Membership function untuk output TIP","title":"Membership function untuk output TIP","height":"336","width":"400","class":"media-element file-default"}}]]
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.
[[{"fid":"212","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"Jendela Rule Editor","field_file_image_title_text[und][0][value]":"Jendela Rule Editor"},"type":"media","link_text":null,"attributes":{"alt":"Jendela Rule Editor","title":"Jendela Rule Editor","height":"337","width":"400","class":"media-element file-default"}}]]
Gambar 9. Jendela Rule Editor
Mari kita review aturan-aturan yang berlaku pada kasus kita, yaitu sebagai berikut:
- Jika PELAYANAN Jelek ATAU MAKANAN Tengik, maka TIP Murah
- Jika PELAYANAN Sedang, maka TIP Standar
- 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.
[[{"fid":"213","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"Menyusun aturan IF-THEN","field_file_image_title_text[und][0][value]":"Menyusun aturan IF-THEN"},"type":"media","link_text":null,"attributes":{"alt":"Menyusun aturan IF-THEN","title":"Menyusun aturan IF-THEN","height":"338","width":"400","class":"media-element file-default"}}]]
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.
[[{"fid":"214","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"Hasil akhir dari sistem fuzzy","field_file_image_title_text[und][0][value]":"Hasil akhir dari sistem fuzzy"},"type":"media","link_text":null,"attributes":{"alt":"Hasil akhir dari sistem fuzzy","title":"Hasil akhir dari sistem fuzzy","height":"337","width":"400","class":"media-element file-default"}}]]
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.
[[{"fid":"215","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"Surface untuk menyatakan hungungan input-ouput","field_file_image_title_text[und][0][value]":"Surface untuk menyatakan hungungan input-ouput"},"type":"media","link_text":null,"attributes":{"alt":"Surface untuk menyatakan hungungan input-ouput","title":"Surface untuk menyatakan hungungan input-ouput","height":"338","width":"400","class":"media-element file-default"}}]]
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.
Komentar Terbaru