Tag Archives: Fuzzy
Implementasi Fuzzy Logic Controller untuk Kontrol Kecepatan Motor DC pada Prototype Kipas Angin
Artikel ini membahas perancangan sebuah aplikasi dengan menggunakan mikrokontroler Arduino yang dapat berguna sebagai alat untuk mengaktifkan atau menonaktifkan kipas angin pada suatu ruangan. Perancangan sistem ini dilengkapi dengan beberapa perangkat keras yaitu sebuah motor DC 1000 rpm, baling-baling, sensor ultrasonic, sensor suhu LM35, Arduino Uno, rangkaian driver motor dan baterai 10 Volt. Rancangan dari sistem ini digunakan untuk mengatur putaran kipas angin yang disesuaikan dengan temperatur dan jarak dari suatu objek. Adapun diagram hardware nya sebagai berikut : Read More
Kendali Motor Pada Prototipe Overhead Crane Menggunakan Metode Fuzzy Logic Controller
Pada artikel ini dirancang kendali motor pada prototype overhead crane dengan Fuzzy Logic Controller (FLC). Kontrol motor menggunakan implementasi fuzzy logic dengan input berupa sensor ultrasonik dan potensiometer. Nilai dari kedua sensor ini yang akan mempengaruhi kecepatan motor pada plant. Sensor ultrasonik akan dipasang pada salah satu ujung crane dan sensor potensiometer akan dipasang pada tali crane untuk mengontrol motor guna mempertahankan sudut pergerakan tali. Read More
Implementasi Metode Fuzzy Logic Controller Pada Kontrol Posisi Lengan Robot 1 DOF (bag.3/3)
Melanjutkan dari artikel sebelumnya.
4. Kode Program Defuzzifikasi
Metode defuzzifikasi yang digunakan pada program ini adalah metode WA (Weighted Average) atau COA (center of area) dengan persamaan sebagai berikut:
Potongan program untuk metode CoA ditulis sebagai berikut: Read More
Implementasi Metode Fuzzy Logic Controller Pada Kontrol Posisi Lengan Robot 1 DOF (bag.1/3)
Pada artikel ini akan dirancang sebuah sistem yang mengimplementasikan metode Fuzzy Logic Controller pada sebuah lengan robot 1 DOF. Berdasarkan blok diagram pada Gambar 1, dapat dilihat bahwa terdapat 2 nilai input yang akan masuk ke proses fuzzifikasi. Input yang pertama yaitu nilai error yang didapatkan dari selisih antara nilai set point (posisi lengan actual) dan nilai present value (posisi lengan target). Nilai posisi tersebut didapatkan dari nilai potensiometer yang di-couple pada lengan. Input yang kedua yaitu nilai delta error (error – last error). Output dari proses fuzzy logic controller berupa nilai PWM (pulse width modulation) yang akan mengatur pergerakan motor dari posisi lengan robot (actual). Nilai dari sensor potensiometer yang ada pada lengan robot (actual) akan digunakan sebagai feedback untuk mengetahui nilai error pada setiap iterasi yang telah dijalankan.
Read More
Merancang Kendali Fuzzy Sederhana
Untuk memahami bagaimana Fuzzy Logic Controler (FLC) dirancang dan bagaimana bekerja, dapat dimulai dengan beberapa contoh kasus sederhana seperti salah satunya berikut ini. Akan dirancang kontroler untuk mengatur kecepatan motor DC dengan merubah besar tegangan masukan motor. Pada saat motor berputar terlalu cepat dari set point yang ditetapkan, maka untuk memperlambat putaran motor tegangan motor DC perlu dikurangi. Jika motor terlalu lambat, maka tegangan masukan motor harus ditambah agar kecepatan motor mencapai nilai set point.
Gambar 1. Diagram Blok Sistem Kendali Kecepatan Motor
Menentukan masukan dan keluaran kontroler
Sesuai dengan Gambar 1 diatas masukan kontroler fuzzy hanya satu yaitu error (Error). Error merupakan selisih antara kecepatan motor saat ini dengan kecepatan yang diinginkan (setpoint). Dalam kasus ini kecepatan motor diatur agar mempunyai kecepatan yang stabil pada 260 rpm.
Keluaran kontroler yaitu besar tegangan kontrol motor (Teg). Tegangan kerja yang diberikan pada motor mempunyai rentang antara 0 Volt hingga 5 volt. Motor akan berputar dengan kecepatan 260 rpm (yg diinginkan) jika tegangan yang diberikan pada motor sebesar 2.5 volt.
Menentukan Membership Function (MF)
Langkah berikutnya adalah menentukan fungsi keanggotaan (membership function), baik masukan maupun keluaran. Fungsi keanggotaan masukan Error ditentukan terdiri dari 3 himpunan yaitu, Negatif (Neg), Zero (Zero), dan Positif (Pos).
Gambar 2. MF Error (error)
Secara matematis fungsi keanggotaan Error dapat dituliskan sebagai berikut.
Sedangkan untuk keluaran kontroler Teg dibagi menjadi 3 himpunan juga yaitu, Kecil (K), Sedang (S), Besar (B).
Gambar 3. MF Tegangan (Teg)
Secara matematis fungsi keanggotaan Tegangan dapat dituliskan sebagai berikut.
Membuat rule (aturan)
Setelah menenutukan fungsi keanggotaan masing-masing masukan dan keluaran, selanjutnya ditentukan rules (aturan) yang akan diterapkan kontroler. Aturan dibuat untuk mengendalikan motor agar kecepatannya stabil pada 260 rpm. Jadi ketika kecepatan motor sekarang dinilai terlalu cepat (>260rpm) daripada nilai setpoint maka nilai error-nya bernilai negatif (-). Dengan demikian kontroler harus menurunkan tegangan motor agar motor melambat. Sebaliknya jika kecepatan motor terlalu lambat maka nilai error-nya positif (+) maka tegangan motor perlu dinaikkan. Jika kecepatan telah tepat pada 260 rpm maka kontroler mengeluarkan tegangan sebesar 2.5 volt. Diharapkan dengan aturan tersebut motor akan berputar dengan kecepatan yang stabil pada 260 rpm.
Dari penjelasan diatas dapat ditentukan ada 3 aturan pengendalian sebagai berikut:
Aturan #1:
IF error IS negatif THEN teg IS kecil
Aturan #2:
IF error IS zero THEN teg IS sedang
Aturan #3:
IF error IS positif THEN teg IS besar
Menganalisa bagaimana FLC bekerja
Diambil contoh ketika kecepatan motor 285 rpm, dimana lebih besar dari kecepatan yang diinginkan yaitu 260 rpm, berapakah tegangan yang dikeluarkan kontroler agar motor berputar pada kecepatan normalnya (260 rpm)?
Sesuai kasus diatas, nilai error adalah sebesar -25 rpm. Langkah pertama yang dilakukan kontroler adalah menentukan derajat keanggotaan dari -25 rpm terhadap fungsi error (fuzzyfikasi). Nilai -25 rpm masuk dalam keanggotaan dari Zero dan Neg (Gambar 4), untuk itu ada dua proses fuzzyfikasi untuk menentukan derajat keanggotaannya.
Gambar 4. Fuzzyfikasi masukan error
Dari dua nilai derajat keanggotaan Error kemudian kita tentukan nilai derajat keanggotaannya terhadap keluaran Tegangan. Untuk menentukan termasuk fungsi keanggotaan keluaran yang mana, sebelumnya kita tentukan aturan (rule) yang aktif. Karena nilai masukan Error masuk dalam keanggotaan Zero dan Pos, maka setelah dievaluasi aturan yang aktif adalah Aturan #1 dan Aturan #2. Untuk itu selanjutnya dilakukan inmplikasi untuk memperoleh consequent/keluaran sebuah aturan IF THEN
berdasarkan derajat keanggotaan antecedent.
Gambar 5. Proses Implikasi
Langkah selanjutnya adalah melakukan agregasi, yaitu mengombinasikan keluaran aturan IF-THEN menjadi fuzzy set tunggal. Pada kasus ini ditentukan menggunakan fungsi max sehingga menghasilkan fuzzyset seperti gambar berikut.
Gambar 6. Proses Agregasi
Hasil dari proses agregasi masih merupakan informasi fuzzy, untuk itu perlu dilakukan perhitungan yang menghasilkan bilangan tunggal sebagai nilai keluaran kontroler (defuzzyfikasi). Proses defuzzifikasi pada kasus ini menggunakan metode COG (Center of Gravity), dengan perhitungan seperti berikut.
Dengan metode COG (Center of Gravity) didapat nilai defuzzifikasi (nilai teg) sebesar 1.87 Volt. Jadi dapat disimpulkan bahwa pada saat kecepatan motor 285 rpm (terlalu cepat), kontroler harus memberikan tegangan pada motor lebih kecil dari tegangan normalnya (2.5Volt) yaitu sebesar 1.87 Volt agar kecepatan motor melambat.
Membuat Adaptive Neuro Fuzzy Inference System (ANFIS) di MATLAB
Akan dibuat rancangan FIS (Fuzzy Inference System) dengan proses training Adaptive Neuro Fuzzy Inference System (ANFIS) di MATLAB.
TRAINING DATA
Untuk membuat training data mulailah dengan membuat matrik pada command window MATLAB sesuai tabel dibawah ini (atau dapat disesuaikan).
Ketik perintah berikut pada command window MATLAB
>> trainData=[1 20 0; 1.1 25.6 0.146;…dst]
Untuk me-load kita bisa lakukan di ANFIS editor. Ketik anfisedit pada command window MATLAB. Kemudian pada kolom Load Data pilih type Training, dan kita bisa ambil dari file atau workspace. Klik Load Data, kemudian pada window kecil yang muncul ketikkan nama file training data yang kita buat tadi (trainData). Hasil plot trainData akan tampak seperti gambar berikut.
GENERATE ANFIS
Selanjutnya menentukan parameter-parameter fungsi keanggotaan dalam ANFIS. Untuk melakukannya, pada kolom generate ANFIS kita pilih GridPartition. Kemudian kita tentukan banyaknya input MF sebanyak 5 dengan type trapesium masing-masing untuk input 1 dan 2, sedangkan type MF ouput kita pilih constant.
Untuk melihat struktur model ANFIS yang kita buat, pada bagian ANFIS info klik Structure. Hasil ANFIS yang kita buat akan tampak seperti berikut.
Pada gambar diatas tampak bahwa ANFIS terdiri dari dua input, dengan masing-masing terdiri dari 5 Membership Function. Terdapat rule sebanyak 25 buah, dengan operator and. ANFIS terdiri dari satu output dengan output MF yang terbentuk sebanyak 25 buah. Garis-garis yang menghubungkan antar node menunjukkan sebuah rule yang bersesuaian.
TRAINING ANFIS
Untuk pelatihan FIS, ANFIS menyediakan dua metode optimasi parameter fungsi keanggotaan yaitu Backpropagation dan Hybrid (gabungan backpropagation dan least square). Untuk kali ini akan dicoba menggunakan optimasi Hybrid.
Untuk menghentikan proses training, ANFIS menggunakan nilai error tolerance, sehingga jika setelah training data error memasuki daerah error tolerance ini maka training akan berhenti. Dipilih error tolerance sebesar 0 (default). Kemudian banyaknya epoch (iterasi) proses training ditentukan sebanyak 40.
Untuk memulai proses training, klik train now. Hasilnya akan seperti gambar berikut.
Jika diperhatikan, training error grafiknya semakin menurun dan mencapai titik erorr tetap pada angka 0.0083152 pada saat epoch mencapai 20. Artinya bahwa proses training menghasilkan error minimum pada nilai 0.0083152 yaitu selisih 0.0016848 dari toleransi error yang kita definisikan (tidak pernah mencapai nilai 0), untuk itu proses training dibatasi dengan banyaknya iterasi (epoch), yaitu 40 kali.
PENGUJIAN PASCA TRAINING ANFIS
Untuk mengetahui performance ANFIS yang telah ditraining dengan data awal (trainData), kita bisa lakukan test dengan melakukan ploting data trainData dan ANFIS dengan nilai input yang sama. Pada kolom Test FIS di ANFIS editor klik Test Now dengan sebelumnya memilih training data.
Jika kita perhatikan gambar diatas tampak bahwa hasil ploting trainData (o) dan ANFIS output (*) pada beberapa nilai berhimpitan. Artinya ANFIS yang kita training telah dapat memetakan masukan terhadap keluaran dengan baik. Pada saat tertentu hasil ploting FIS output tampak bergeser dari trainData, ini menunjukkan ada error yang relatif besar ketika ANFIS diberi masukan pada masukan sekitar nilai tersebut.
Pada perancangan FIS sebelumnya didasarkan pada IF-THEN rules yang sudah didefinisikan sebelumnya. Jadi pendekatan yang dipakai sebelumnya diasumsikan kita sudah memiliki IF-THEN rules, dengan kata lain kita sudah mengetahui lebih dulu bagaimana kelakukan dari sistem yang dimodelkan. Tujuannya adalah mentransfer pengetahuan kita tersebut kedalam sistem fuzzy dalam bentuk FIS.
Sedangkan pada ANFIS, pemodelan didasarkan pada pasangan input dan output. Jadi diasumsikan kita mempunyai data input dan output dari sistem sebelumnya, kemudian baru mencari IF-THEN rules yang bisa memetakan input menjadi output. ANFIS mengandaikan bahwa data input dan output dari suatu Blackbox system telah ada, kemudian kita menebak model apa yang cocok pada blackbox tersebut.
ANFIS dapat mengatasi kesulitan menentukan prameter-parameter fungsi keanggotaan untk mendapatkan FIS yang memetakan input ke output dengan benar pada pemodelan yang didasarkan pada data.