Perbandingan Unjuk Kerja Jaringan Syaraf Tiruan CMAC (Cerebellar Model Articulation Controller) dan RBF (Radial Basis Function) pada Pengendalian Plant Suhu secara On- line
TUGAS AKHIR
Diajukan guna melengkapi persyaratan dalam menyelesaikan pendidikan tingkat Sarjana/Strata Satu di Jurusan Teknik Elektro Fakultas Teknik Universitas Diponegoro
Oleh : Amin Fauzan L2F 000 571
JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK UNIVERSITAS DIPONEGORO SEMARANG 2004
HALAMAN PENGESAHAN
Laporan Tugas Akhir dengan judul "Perbandingan Unjuk Kerja Jaringan Syaraf Tiruan CMAC (Cerebellar Model Articulation Controller) dan RBF (Radial Basis Function) pada Pengendalian Plant Suhu secara On – line“ yang disusun oleh: Nama : AMIN FAUZAN NIM
: L2F 000 571
Telah disetujui dan disahkan di Semarang pada tanggal : ...............................2004
Menyetujui/Mengesahkan, Pembimbing I,
Pembimbing II,
Wahyudi, ST. MT.
Iwan Setiawan, ST. MT.
NIP. 132 086 662
NIP. 132 283 183
Ketua Jurusan Teknik Elektro Fakultas Teknik Universitas Diponegoro,
Ir. Sudjadi, MT. NIP. 131 558 567
PEN GESAHAN REVIS I TUGAS AKHIR
Revisi Tugas Akhir dengan judul “Perbandingan Unjuk Kerja Jaringan Syaraf Tiruan CMAC (Cerebellar Model Articulation Controller) dan RBF (Radial Basis Function) pada Pengendalian Plant Suhu secara On – line” yang disusun oleh: Nama : AMIN FAUZAN NIM
: L2F 000 571
telah disetujui dan disahkan pada Tanggal :
2004.
Tempat : Semarang
Menyetujui dan mengesahkan, Ketua Tim Penguji,
Sekretaris Tim Penguji,
Anggota Tim Penguji,
Achmad Hidayatno, ST. MT. NIP. 132 137 933
Yuli Christyono, ST. MT. NIP. 132 163 660
Trias Andromeda,ST MT. NIP. 132 283 185
ABSTRAK
Sebuah pendekatan dalam pengendalian plant yang parameter-parameternya tidak diketahui dapat dilakukan dengan menggunakan jaringan syaraf tiruan. Tidak semua jenis jaringan syaraf tiruan cocok untuk mengendalikan plant secara on-line. Setiap jaringan syaraf tiruan memiliki kecepatan beradaptasi atau konvergensi yang berbeda, tergantung pada struktur jaringan dan algoritma pembelajaran yang digunakan. Pemilihan jenis jaringan syaraf tiruan untuk mengendalikan plant secara on-line dapat dilakukan dengan mengetahui unjuk kerja masing-masing jaringan pada pengendalian secara on-line. Pada tugas akhir ini dilakukan pengujian terhadap unjuk kerja jaringan syaraf CMAC dan RBF untuk mengendalikan plant suhu secara on-line. Pengujian untuk mengetahui perbandingan unjuk kerja kedua jaringan syaraf dilakukan dengan pengujian pengaruh bobot pembelajaran, pengujian referensi naik, pengujian referensi turun dan pemberian gangguan. Hasil pengujian menunjukkan bahwa aplikasi jaringan syaraf CMAC pada plant suhu mempunyai unjuk kerja yang lebih baik daripada jaringan syaraf RBF. Jaringan syaraf tiruan CMAC memiliki laju pembelajaran yang lebih cepat dan mampu mengatasi pengaruh gangguan lebih cepat daripada jaringan syaraf RBF.
Kata kunci : Jaringan Syaraf Tiruan, CMAC, RBF, Plant Suhu .
ABSTRACT
A approach in controlling of plant which is its parameters unknown can be done by using artificial neural network. Not all of artificial neural network type suited for controlling plant onlinely. Each artificial neural network have a different speed adaptation or konvergence, depend on network structure and study algorithm. Election of artificial nerve network type to control plant on-linely can be done if we know each performance of neural network operation on-linely. At this final project we try to make experiment to show performance of CMAC and RBF’s neural network at operation of temperature plant on-linely. Examination to show the performace of controller is done by examination of influence of study wight to system respon, examination of reference go up, examination of reference go down and giving of trouble. Result of examination indicate that the application of CMAC’s neural network at temperature plant show better performance than RBF’s neural network. It has faster rate of study and can overcome influence of trouble quickly than RBF’s neural network. Keyword : Artificial Neural Netwark, CMAC, RBF, Temperature Plant.
KATA PENGANTAR
ﺑﺴﻢ اﷲ اﻟﺮﺣﻤﻦ اﻟﺮﺣﯿﻢ Puji dan syukur penulis panjatkan kepada Allah SWT atas rahmat dan karunia-Nya, sehingga pelaksanaan tugas akhir dan penyusunan laporan ini dapat terselesaikan. Shalawat dan salam semoga senantiasa tercurah atas Nabi Muhammad Rasulullah SAW. Tugas akhir dengan judul "Perbandingan Unjuk Kerja Jaringan Syaraf Tiruan CMAC (Cerebellar Model Articulation Controller) dan RBF (Radial Basis Function) pada Pengendalian Plant Suhu secara On-line" ini diajukan untuk memenuhi syarat akhir untuk menyelesaikan pendidikan Program Strata 1 pada Jurusan Teknik Elektro Fakultas Teknik Universitas Diponegoro Semarang. Rasa terima kasih yang tulus kami ucapkan kepada semua pihak yang telah membantu selama pelaksanaan tugas akhir ini. 1. Bapak dan Ibu serta Adik – adikku yang selalu memberikan kasih sayang, doa dan semangat. 2. Bapak Ir. Sudjadi, MT, selaku Ketua Jurusan Teknik Elektro Fakultas Teknik Universitas Diponegoro Semarang. 3. Bapak R. Rizal Isnanto, ST. MT. MM., selaku koordinator Tugas Akhir yang telah mengurus keperluan administrasi Tugas Akhir Teknik Elektro Universitas Diponegoro. 4. Bapak Wahyudi, ST. MT. dan Bapak Iwan Setiawan, ST. MT., selaku dosen pembimbing I dan II yang telah memberi bimbingan dan pengarahan dalam penyusunan laporan Tugas Akhir. 5. Bapak Sumardi, ST. MT., selaku Kepala Laboratorium Teknik Kontrol Otomatik. 6. Para aktivis Lab. Teknik Kontrol Otomatik, Mas Andy N ’98, Mas Sunardi ’99, Mas Abbas ‘99, Mas B4t0q ’99, Mas Agusti ’99, Ari Otong ‘00, Eko Kodok ’00, Udin Geboy ’00, Deni DJNZ ’00, Erik ’00, Satria ‘01, dan rekan – rekan aktivis lab. lain: Dalma ’99, Sri ‘Embong’ ’00, Arif Januar ’00, Ronald ‘bebek’ ’00, Feny ‘pepenk’ ’00, Nanda ‘Brewers’ ’00,, Andy Hartono ’00, tHE_konC’00, Reza ’01, Nyoto ‘saridin’ 01.
7. Rekan–rekan angkatan 2000, terima kasih atas kekompakan dan kerjasama selama ini. 8. 23 smunsa ’00 : Fredy Kam-Pret, Ipoel, Reza Parto, Ari Mukong, Anto Ireng, Gogox, Bowok, Del Christo, dan Widyawan Candra, kalian adalah sahabat-sahabat terbaikku. 9. Teman-teman kost putra Biru Langit, Dephit, Mekel, Dian, Gendut, Aries, dan Made, terima kasih atas tumpangan tidurnya. 10. “Bening”, semua yang hadir dalam perjalanan “Hijau” kita akan senantiasa menjadi pelajaran berharga dalam perjalananku. 11. Yulita Novianty, terimakasih atas doa dan nasihatnya, keep pray for me and always be a simple and smart girl. 12. Rekan – rekan tim KKN, Ari, Adhi, Cacha. Lia, Amar dan Retno, (seperti permintaan kalian nama kalian udah tak tulis) ayooo…cepetan..lulus……!, Pak Lurah dan Ibu, terima kasih karena telah menganggap kami sebagai anak. 13. Rekan – rekan remaja masjid Al –Hikmah 14. Dan semua pihak yang tidak dapat penulis sebutkan satu persatu yang telah membantu hingga terselesainya tugas akhir dan laporan tugas akhir ini. Semoga pembuatan tugas akhir ini dapat memberikan manfaat bagi perkembangan ilmu
kontrol pada khususnya dan seluruh pihak yang
berkepentingan.
Semarang,
Oktober 2004
Penulis
DAFTAR ISI
Halaman Judul .............................................................................................. i Halaman Pengesahan .................................................................................... ii Pengesahan Revisi Tugas Akhir ................................................................... iii Abstrak ......................................................................................................... iv Abstract ........................................................................................................ v Kata Pengantar ............................................................................................. vi Daftar Isi....................................................................................................... viii Daftar Gambar .............................................................................................. xi Daftar Tabel.................................................................................................. xv BAB I
PENDAHULUAN
1.1 Latar Belakang ................................................................................ 1 1.2 Tujuan............................................................................................. 2 1.3 Pembatasan Masalah ....................................................................... 2 1.4 Sistematika Penulisan...................................................................... 3 BAB II DASAR TEORI 2.1 Blok Diagram Kontrol Fixed Stabilising Controller ........................ 4 2.2 Algoritma Least Mean Square (LMS).............................................. 5 2.3 Jaringan Syaraf Tiruan .................................................................... 5 2.4 CMAC ( Cerebellar Model Articulation Controller )....................... 7 2.4.1 Struktur Dasar CMAC ............................................................ 7 2.4.2 Pemetaan Titik Ruang Masukan pada CMAC ......................... 8 2.4.3 Kotak Operasi CMAC ............................................................ 13 2.4.4 Algoritma Pelatihan CMAC secara Iteratif.............................. 14 2.5 RBF ( Radial Basis Function )......................................................... 15 2.5.1 Struktur Dasar RBF ................................................................ 15 2.5.2 Strategi Pembelajaran Jaringan RBF ....................................... 17 2.5.3 Algoritma Pelatihan RBFN secara Iteratif ............................... 18 2.6 Penguat Operasional (Operasional Amplfier)................................... 18 2.6.1 Penguat Tak Membalik (Non-Inverting Amplifier) .................. 18
2.6.2 Penguat Selisih (Differential Amplifier) .................................. 19 2.6.3 Pembanding (Comparator) ..................................................... 20 BAB III PERANCANGAN 3.1 Perancangan Kontrol Jaringan Syaraf Tiruan CMAC dan RBF........ 21 3.1.1 Penentuan Nilai Gain Proporsional Jaringan Syaraf CMAC dan RBF .................................................................... 21 3.1.2 Penentuan Nilai Laju Konvergensi Jaringan Syaraf CMAC dan RBF .................................................................... 21 3.1.3 Perancangan Kontrol Jaringan Syaraf CMAC ......................... 22 3.1.4 Perancangan Kontrol Jaringan Syaraf RBF ............................. 27 3.2 Perancangan Perangkat Lunak (Software)........................................ 32 3.2.1 Sofware Jaringan Syaraf CMAC ............................................. 34 3.2.2 Sofware Jaringan Syaraf RBF ................................................. 36 3.3 Perancangan Perangkat Keras (Software)......................................... 39 3.3.1 Rangkaian Digital to Analog Converter (DAC) ..................... 40 3.3.2 Rangkaian Analog to Digital Converter (ADC) ...................... 40 3.3.3 Rangkaian Pengkondisi Sinyal I.............................................. 41 3.3.4 Rangkaian Pengkondisi Sinyal II ............................................ 42 3.3.5 Plant Suhu dengan PWM Driver ............................................ 43 3.3.6 Mikrokontroller AT89s51 ....................................................... 44 BAB IV PENGUJIAN DAN ANALISIS 4.1 Pengujian Jaringan Syaraf CMAC dan RBF secara On-line............. 48 4.2 Pengujian Jaringan Syaraf CMAC ................................................... 50 4.2.1 Pengaruh Nilai Laju Konvergensi terhadap Transien Suhu...... 50 4.2.2 Pengaruh Gain Proporsional terhadap Transien Suhu.............. 52 4.2.3 Pengaruh Nilai Generalisasi terhadap Transien Suhu .............. 55 4.3 Pengujian Jaringan Syaraf RBF ....................................................... 57 4.3.1 Pengaruh Laju Konvergensi terhadap Transien Suhu .............. 57 4.3.2 Pengaruh Nilai Gain Proporsional terhadap Transien Suhu .... 60 4.3.3 Pengaruh Jumlah Fungsi Basis terhadap Transien Suhu ......... 62 4.4 Perbandingan Unjuk Kerja Jaringan Syaraf CMAC dan RBF .......... 65 4.4.1 Pengujian Pengaruh Pembelajaran .......................................... 65
4.4.2 Pengujian Referensi Naik ....................................................... 67 4.4.3 Pengujian Referensi Turun...................................................... 69 4.4.4 Pengujian Gangguan............................................................... 71 BAB V
PENUTUP
5.1 Kesimpulan ..................................................................................... 75 5.2 Saran ............................................................................................... 76 Daftar Pustaka Lampiran A Senarai Program Lampiran B Tampilan Program Lampiran C Skematik Rangkaian Lampiran D Hasil Pengujian Perangkat Keras Lampiran E Data Sheet
DAFTAR GAMBAR
Gambar 2.1
Blok diagram kontrol dengan skema fixed stabilising controller ............................................................. 4
Gambar 2.2
Model neuron jaringan syaraf................................................. 6
Gambar 2.3
Struktur dasar jaringan syaraf tiruan CMAC.......................... 7
Gambar 2.4
Pemetaan ruang masukan CMAC 1 dimensi ........................... 9
Gambar 2.5
Pemetaan 2 dimensi untuk tiap titik ruang masukan dengan pemetaan langsung ...................................... 11
Gambar 2.6
Hasil evaluasi generator alamat pada overlay 1....................... 12
Gambar 2.7
Hasil evaluasi generator alamat pada overlay 2....................... 12
Gambar 2.8
Hasil evaluasi generator alamat pada overlay 3....................... 13
Gambar 2.9
Aliran operasi CMAC dengan metoda Concatenation ............ 13
Gambar 2.10 Aliran operasi CMAC dengan metoda pemetaan langsung...... 14 Gambar 2.11 Struktur dasar jaringan syaraf RBF........................................ 15 Gambar 2.12 Operasi jaringan syaraf RBF dengan 2 masukan .................. 16 Gambar 2.13 Fungsi Gaussian..................................................................... 17 Gambar 2.14 Penguat tak membalik ............................................................ 18 Gambar 2.15 Penguat selisih ....................................................................... 19 Gambar 3.1
Diagram alir generator alamat ................................................ 24
Gambar 3.2
Diagram alir keluaran CMAC untuk alamatalamat yang aktif.................................................................... 25
Gambar 3.3
Diagram alir pembaharuan bobot pada alamatalamat aktif CMAC ................................................................ 26
Gambar 3.4
Diagram alir algoritma kontrol CMAC................................... 27
Gambar 3.5
Grafik jaringan RBF dengan 4 fungsi basis............................ 28
Gambar 3.6
Diagram alir perancangan jaringan RBF yang digunakan ....... 29
Gambar 3.7
Diagram alir perhitungan keluaran RBF 2 dimensi ................. 30
Gambar 3.8
Diagram alir algoritma kontrol RBF ....................................... 31
Gambar 3.9
Diagram alir program utama................................................... 32
Gambar 3.9
Diagram alir program utama (Lanjutan) ................................. 33
Gambar 3.10 Diagram blok hardware sistem pengatur suhu ........................ 39 Gambar 3.11 Rangkaian DAC 0808 ............................................................ 40 Gambar 3.12 Rangkaian Free Running ADC............................................... 41 Gambar 3.13 Pengkondisi sinyal 0 – 5 Volt menjadi -5 – 5 Volt.................. 42 Gambar 3.14 Skema plant suhu dengan PWM driver .................................. 43 Gambar 3.15 Rangkaian PWM Driver untuk Pemanas ................................ 43 Gambar 3.16 Rangkaian minimum mikrokontroller dan RS 232 .................. 44 Gambar 3.17 Diagram alir komunikasi serial mikrokontroller dan PC ......... 45 Gambar 4.1
Respon plant suhu secara ikal terbuka .................................... 48
Gambar 4.2
Respon transien suhu dengan kontrol CMAC untuk referensi 50° C, gain proporsional 1,5, generalisasi 60 dan laju konvergensi 0,1 ................................................... 50
Gambar 4.2
Respon transien suhu dengan kontrol CMAC untuk referensi 50° C, gain proporsional 1,5, generalisasi 60 dan laju konvergensi 0,1 (Lanjutan) .................................. 51
Gambar 4.3 Respon transien suhu dengan kontrol CMAC untuk referensi 50° C, gain proporsional 1,5, generalisasi 60 dan laju konvergensi 0,7 ................................................... 51 Gambar 4.4
Respon transien suhu dengan kontrol CMAC untuk referensi 50° C, generalisasi 60, laju konvergensi 0,1 dan gain proporsional 0,5 ....................................................... 53
Gambar 4.5
Respon transien suhu dengan kontrol CMAC untuk referensi 50° C, generalisasi 60, laju konvergensi 0,1 dan gain proporsional 4 .......................................................... 54
Gambar 4.6
Respon transien suhu dengan kontrol CMAC untuk referensi 50° C, laju konvergensi 0,1, gain proporsional 2 dan generalisasi 30 ................................................................ 55
Gambar 4.6
Respon transien suhu dengan kontrol CMAC untuk referensi 50° C, laju konvergensi 0,1, gain proporsional 2 dan generalisasi 30 (Lanjutan) ............................................... 56
Gambar 4.7
Respon transien suhu dengan kontrol CMAC untuk referensi 50° C, laju konvergensi 0,1, gain proporsional 2
dan generalisasi 30 ................................................................ 56 Gambar 4.8
Respon transien suhu dengan kontrol RBF untuk nilai referensi 50° C, gain proporsional 1,5, Jumlah fungsi basis 5 dan laju konvergensi 0,1 ............................................. 58
Gambar 4.9
Respon transien suhu dengan kontrol RBF untuk nilai referensi 50° C, gain proporsional 1,5, Jumlah fungsi basis 5 dan laju konvergensi 0,7 ............................................ 59
Gambar 4.10 Respon transien suhu dengan kontrol RBF untuk nilai referensi 50° C, jumlah fungsi basis 5, laju konvergensi 0,1 dan gain proporsional 0,5 ............................. 60 Gambar 4.10 Respon transien suhu dengan kontrol RBF untuk nilai referensi 50° C, jumlah fungsi basis 5, laju konvergensi 0,1 dan gain proporsional 0,5 (Lanjutan) ............ 61 Gambar 4.11 Respon transien suhu dengan kontrol RBF untuk nilai referensi 50° C, jumlah fungsi basis 5, laju konvergensi 0,1 dan gain proporsional 4 ............................... 61 Gambar 4.12 Respon transien suhu dengan kontrol RBF untuk referensi 50° C, laju konvergensi 0,1, gain proporsional 2 dan jumlah fungsi basis 3 .................................................. 63 Gambar 4.13 Respon transien suhu dengan kontrol RBF untuk referensi 50° C, laju konvergensi 0,1, gain proporsional 2 dan junlah fungsi basis 8 ................................................... 63 Gambar 4.13 Respon transien suhu dengan kontrol RBF untuk referensi 50° C, laju konvergensi 0,1, gain proporsional 2 dan junlah fungsi basis 8 (Lanjutan) .................................. 64 Gambar 4.14 Pengujian untuk mengetahui pengaruh bobot pembelajaran terhadap transien suhu pada kontrol CMAC .......................... 66 Gambar 4.15 Pengujian untuk mengetahui pengaruh bobot pembelajaran terhadap transien suhu pada kontrol RBF.......... 66 Gambar 4.16 Pengujian referensi naik dengan jaringan syaraf CMAC ....... 68 Gambar 4.17 Pengujian refrensi naik dengan jaringan syaraf RBF.............. 68 Gambar 4.17 Pengujian refrensi naik dengan jaringan syaraf
RBF (Lanjutan) ...................................................................... 69 Gambar 4.18 Pengujian refrensi turun dengan jaringan syaraf CMAC ....... 70 Gambar 4.19 Pengujian refrensi turun dengan jaringan syaraf RBF ........... 70 Gambar 4.19 Pengujian refrensi turun dengan jaringan syaraf RBF (Lanjutan) ..................................................................... 71 Gambar 4.20 Pengujian gangguan pada jaringan syaraf CMAC .................. 71 Gambar 4.20 Pengujian gangguan pada jaringan syaraf CMAC (Lanjutan) .................................................................. 72 Gambar 4.21 Pengujian gangguan pada jaringan syaraf RBF ...................... 72
DAFTAR TABEL
Tabel 3.1 Hubungan kebutuhan memori dengan jangkauan masukan terkuantisasi dengan parameter generalisasi yang dipilih 50 ......... 22 Tabel 3.2 Hubungan besarnya generalisasi yang dipilih dengan kebutuhan memori maksimum CMAC dengan kuantisasi 8 bit...... 23 Tabel 3.3 Alamat-alamat aktif untuk masukan-masukan tertentu pada CMAC dengan dua masukan, 8 bit dan generalisasi = 5 ........ 25 Tabel 3.4 Pemberian nilai pada RD dan WR serta perubahan nilai Pada INTR ................................................................................... 41 Tabel 4.1 Hubungan antara banyaknya parameter generalisasi yang dipilih terhadap lama proses komputasi. ............................... 49 Tabel 4.2 Hubungan antara jumlah fungsi basis yang dipilih terhadap lama proses komputasi. ................................................... 49 Tabel 4.3 Data parameter unjuk kerja sistem dengan kendali CMAC pada referensi 50° C, gain proporsional 1,5, dan generalisasi 60.... 52 Tabel 4.4 Data parameter unjuk kerja sistem dengan kendali CMAC pada referensi 50° C, laju konvergensi 0,1, dan generalisasi 60 ..... 55 Tabel 4.5 Data parameter unjuk kerja sistem dengan kendali CMAC pada referensi 50° C, laju konvergensi 0,1, dan gain proporsional 2 ....................................................................... 57 Tabel 4.6 Data parameter unjuk kerja sistem dengan kendali RBF pada referensi 50° C, gain proporsional 1,5, dan jumlah fungsi basis 5 ................................................................................ 60 Tabel 4.7 Data parameter unjuk kerja sistem dengan kendali RBF pada referensi 50° C, gain proporsional 1,5, dan jumlah fungsi basis 5 ................................................................................ 62 Tabel 4.8 Data parameter unjuk kerja sistem dengan kontrol RBF pada referensi 50° C, laju konvergensi 0,1, dan gain proporsional 2 ...... 64 Tabel 4.9 Data unjuk kerja jaringan syaraf CMAC dan RBF terhadap pengujian gangguan ...................................................................... 73
BAB I PENDAHULUAN
1.1
Latar Belakang Dalam perancangan sistem kontrol konvensional, parameter-parameter
kontrol dihitung berdasarkan parameter plant. Secara praktis, parameter plant tersebut
tidak diketahui, sehingga perancangan sistem kontrol harus diawali
dengan proses identifikasi plant yang akan dikontrol. Untuk suatu plant yang kompleks, proses untuk mendapatkan parameter plant merupakan proses yang sulit dan memakan banyak waktu. Sebuah
pendekatan
dalam
pengendalian
plant
yang
parameter-
parameternya tidak diketahui dapat dilakukan dengan menggunakan jaringan syaraf tiruan. Tidak semua jenis jaringan syaraf tiruan cocok untuk mengendalikan plant secara on-line. Setiap jaringan syaraf tiruan memiliki kecepatan beradaptasi atau konvergensi yang berbeda, tergantung pada struktur jaringan dan algoritma pembelajaran yang digunakan. Oleh karena itu, untuk mengendalikan plant secara on-line dengan jaringan syaraf tiruan harus diketahui terlebih dahulu unjuk kerja dari masing-masing jaringan syaraf pada pengendalian plant secara on-line. Pada tugas akhir ini dilakukan pengujian terhadap unjuk kerja jaringan syaraf CMAC dan RBF pada pengendalian plant suhu secara on-line. Pengujian untuk membandingkan unjuk kerja kedua jaringan dilakukan melalui pengujian pengaruh bobot pembelajaran, pengujian referensi naik, pengujian referensi turun dan pemberian gangguan. Struktur pengendalian yang digunakan adalah Fixed Stabilising
Controller.
Unit
kontroller
yang
digunakan
untuk
mengimplementasikan algoritma kontrol dengan jaringan syaraf tiruan CMAC dan RBF adalah PC (Personal Computer) karena mampu melakukan proses komputasi yang kompleks, memiliki ukuran memori yang besar dan memungkinkan membuat fasilitas tambahan untuk pengolahan data seperti recording dan monitoring.
1.2
Tujuan Tujuan yang ingin dicapai pada tugas akhir ini adalah membandingkan
unjuk kerja jaringan syaraf tiruan CMAC dan RBF pada pengendalian plant suhu secara on-line.
1.3
Pembatasan Masalah Dalam pembuatan tugas akhir ini penulis membatasi permasalahan sebagai
berikut : 1. Plant yang dikontrol adalah plant suhu dengan PWM Driver. 2. Jaringan syaraf yang diuji adalah CMAC dan RBF. 3. Algoritma yang digunakan untuk pembaharuan bobot jaringan syaraf adalah algoritma LMS. 4. Jangkauan pengaturan suhu yang diperbolehkan adalah 33º C sampai dengan 90º C. 5. Suhu plant dianggap merata di daerah yang diatur suhunya. 6. Suhu yang dijadikan referensi untuk perhitungan pada komputer adalah suhu hasil pembacaan dari sensor suhu LM35, tidak ada kalibrasi dengan peralatan pengukur suhu standar. 7. Perbandingan unjuk kerja dilakukan melalui pengujian pengaruh bobot pembelajaran, pengujian referensi naik, pengujian referensi turun dan pengaruh gangguan terhadap respon sistem. 8. Penentuan batasan nilai
gain proporsional dan laju konvergensi yang
digunakan pada pengujian dilakukan secara empiris. 9. Pengujian unjuk kerja dilakukan dengan pemilihan laju konvergensi dan gain proporsional secara acak yaitu masing – masing sebesar 0,1 dan 2, serta pemilihan generalisasi dan fungsi basis secara trial and error sehingga memberikan kondisi optimal pada jaringan syaraf CMAC dan RBF. 10. Parameter respon yang dijadikan ukuran untuk membandingkan unjuk kerja adalah waktu penetapan dan lonjakan maksimum respon. 11. Pembuatan program bantu menggunakan bahasa visual Delphi 6.0, dan antarmuka melalui komunikasi serial, ADC 0804 dan DAC 0808.
12. Mikrokontroller AT89s51 hanya digunakan sebagai pengatur aliran data untuk komunikasi serial dan tidak membahas arsitektur serta pemrograman mikrokontroller secara detail. 13. Tidak membahas handshaking komunikasi serial.
1.4
Sistematika Penulisan Sistematika penulisan laporan tugas akhir adalah sebagai berikut:
BAB I
PENDAHULUAN Pada bab ini dibahas mengenai latar belakang, tujuan dan pembatasan masalah tugas akhir serta sistematika penulisan laporan.
BAB II DASAR TEORI Bab ini berisi teori yang melandasi pembuatan tugas akhir ini, mulai dari teori dasar jaringan saraf tiruan, algoritma LMS, struktur pengendalian, jaringan syaraf CMAC, jaringan syaraf RBF, serta teori yang melandasi pembuatan hardware. BAB III PERANCANGAN Pada bab ini dibahas bagaimana merancang jaringan syaraf CMAC dan RBF, perancangan algoritma untuk kontrol CMAC dan RBF, serta perancangan
perangkat lunak dan perangkat keras yang diperlukan
untuk pengendalian plant suhu dengan jaringan syaraf CMAC dan RBF. BAB IV PENGUJIAN DAN ANALISIS Pada bab ini dibahas mengenai pengujian terhadap jaringan syaraf CMAC dan RBF serta pengujian untuk membandingkan unjuk kerja kedua jaringan. Pada bab ini juga dilakukan analis terhadap pengaruh masing – masing parameter jaringan. BAB V PENUTUP Bab ini berisi kesimpulan terhadap hasil pengujian dan saran.
BAB II DASAR TEORI
2.1
Blok Diagram Kontrol Fixed Stabilising Controller Fixed stabilising controller merupakan salah satu arsitektur kontrol
adaptif. Arsitektur kontrol ini diusulkan oleh Miller pada tahun 1987 dan Kraft pada tahun 1990. Blok diagram kontrol dengan skema fixed stabilising controller ditunjukkan pada Gambar 2.1.
Gambar 2.1 Blok diagram kontrol dengan skema fixed stabilising controller
Blok diagram fixed stabilising controller merupakan blok diagram sistem kontrol adaptif langsung dengan keluaran kontroller umpan balik penstabil digunakan untuk melatih model inverse.[3] Tujuan dari pembelajaran model inverse
adalah memformulasikan sebuah pengendali, sehingga blok diagram
kontrol plant secara keseluruhan memiliki fungsi alih satuan. Blok diagram kontrol fixed stabilising controller memiliki dua buah kalang, kalang pertama adalah kalang umpan balik penstabil dan kalang kedua adalah kalang pembelajaran model inverse. Pembelajaran model inverse dapat dilakukan menggunakan jaringan syaraf tiruan dan sebagai kontrol umpan balik penstabil dapat digunakan gain proporsional. Jaringan syaraf tiruan yang dipilih sebagai komponen pengendali harus memiliki laju konvergensi yang cepat,
sehingga tidak semua jaringan syaraf tiruan cocok diimplementasikan sebagai komponen pengendali plant secara on- line.[9]
2.2
Algoritma Least Mean Square (LMS) Algoritma LMS merupakan salah satu algoritma yang digunakan untuk
pembelajaran atau update bobot jaringan syaraf. Algoritma ini banyak digunakan karena proses komputasinya sederhana. Algoritma LMS akan meminimalkan fungsi rata – rata kuadrat error.[5] Secara matematis algoritma LMS untuk pembaharuan bobot jaringan syaraf dituliskan sebagai berikut :
w(n+1) = w(n) + η.[d(n) – y(n)].x(n) ................................................. (2.1) Dimana : w(n+1)
: Bobot pada cacah ke n+1
w(n)
: Bobot pada cacah ke n
η
: Laju konvergensi ( 0 < η < 1)
x(n)
: Masukan yang diboboti
d(n)
: Keluaran yang diinginkan
y(n)
: Keluaran aktual
d(n) – y(n) : Sinyal error yang merupakan data latih
2.3
Jaringan Syaraf Tiruan Jaringan syaraf tiruan merupakan salah satu bidang dalam sistem kontrol
cerdas. Jaringan syaraf tiruan pada dasarnya merupakan fungsi pemetaan masukan ke keluaran sistem yang bebas model matematis atau dikenal dengan istilah estimator bebas model. Sistem ini memetakan kondisi ke aksi. Sistem-sistem dinamis yang dimodelkan tidak diekspresikan secara matematis menggunakan fungsi alih, tetapi direpresentasikan dengan menggunakan kotak fungsional yang mengestimasi fungsi-fungsi dari data pelatihan.[9] Jaringan syaraf tiruan dibentuk dengan meniru kerja dari neuron biologis dalam merespon stimulus yang diberikan kepadanya. Sifat ini kemudian di modelkan dalam suatu bentuk model neuron jaringan syaraf. Neuron adalah unit
pemroses informasi yang penting dalam operasi jaringan syaraf. Model dari neuron ini ditunjukkan pada Gambar 2.2.
Gambar 2.2 Model neuron jaringan syaraf
Tiap penghubung diasosiasikan dengan sebuah nilai bobot (w). Seperti pada sinapsis neuron sel saraf biologis, nilai bobot menentukan derajat pengaruh dari sebuah neuron ke neuron lainnya. Pengaruh dari sebuah neuron ke neuron yang lainnya merupakan hasil kali antara nilai keluaran dari neuron – neuron yang masuk ke neuron yang bersangkutan dengan nilai bobot yang menghubungkan neuron tadi. Fungsi aktivasi berfungsi sebagai penghubung dari penjumlahan semua nilai masukan dengan nilai keluarannya. Salah satu sifat penting yang dimiliki jaringan syaraf tiruan adalah kemampuan jaringan untuk belajar dari lingkungan dan meningkatkan performansinya melalui pembelajaran. Proses pembelajaran jaringan dilakukan melalui proses iterasi terhadap bobot sinapsis. Idealnya jaringan syaraf menjadi adaptif terhadap perubahan setelah proses ini. Pembelajaran dapat diartikan sebagai proses dimana parameter bebas jaringan syaraf diadaptasi melalui proses kontinyu sebagai hasil pengaruh / stimulasi lingkungan dimana jaringan syaraf berada.[5] Dari definisi tersebut, dapat dicatat kejadian sekuensial sebagai berikut : 1. Jaringan syaraf dipengaruhi oleh lingkungan. 2. Terjadi perubahan dalam jaringan sebagai hasil stimulus pengaruh tersebut. 3. Jaringan syaraf merespon perubahan tersebut dengan cara yang baru, karena adanya perubahan pada struktur internalnya.
2.4
CMAC ( Cerrebellar Model Articulation Controller) CMAC merupakan satu jenis jaringan syaraf tiruan yang berusaha meniru
pola kerja cerebellum (otak belakang) manusia. Secara teoritis otak belakang manusia ini berfungsi sebagai pengatur dan penyeimbang gerakan-gerakan motorik. Setiap rangsangan yang diterima oleh
otak belakang ini dipercayai
hanya akan mengaktifkan sekitar satu prosen dari total sel otak belakang yang mungkin jutaan bahkan milyaran jumlahnya. Dalam eksperimennya Albus berhasil mengimplementasikan CMAC ini sebagai pengendali manipulator robot (berkaitan dengan gerakan-gerakan motorik). Dalam perkembangan selanjutnya, CMAC ini banyak diadopsi untuk menyelesaikan permasalahan pada bidangbidang lain yang lebih luas, mulai dari analisis sinyal biologis (Wilson, 1991), pengenalan pola dan pemodelan sistem sampai bidang pengendalian (Miller, 1990). Istilah CMAC kemudian menjadi Cerebellum Model Arithmetic Computer (Miller, 1990).[3] Ditinjau dari jenis arsitektur atau strukturnya, CMAC dapat dimasukkan ke suatu kelas yang dinamakan AMN (Associative Memory Network). Jenis jaringan syaraf ini menyimpan informasi secara lokal. Hal ini menyebabkan laju pembelajaran akan berlangsung relatif lebih cepat dan secara efisien dapat diimplementasikan secara real time.
2.4.1 Struktur Dasar CMAC Struktur dasar CMAC memiliki banyak kemiripan dengan jaringan Perceptron yang diusulkan oleh Rosenblat (1961). Struktur dasar CMAC ditunjukkan pada Gambar 2.3.
Gambar 2.3 Struktur dasar jaringan syaraf tiruan CMAC
Operasi CMAC ini dapat direpresentasikan kedalam dua buah pemetaan, f: x a dan g: a y, dengan x adalah vektor ruang masukan berdimensi n, a adalah vektor asosiasi berdimensi m sedangkan y adalah keluaran berdimensi 1. Dalam CMAC fungsi f(x) memetakan setiap titik ruang masukan x ke dalam sebuah vektor asosiasi A (sel-sel asosiasi yang aktif untuk sebuah titik ruang masukan tertentu), sedangkan y = g(A) besarnya tergantung pada nilai bobot w yang mungkin nilainya berubah selama proses pembelajaran (learning). Keluaran jaringan CMAC dapat dituliskan sebagai berikut :
y = g(A) = wi ............................................................................ (2.2) i 1
Dalam perancangan CMAC, langkah awal yang harus dilakukan adalah menentukan jangkauan nilai ruang masukan, nilai tersebut selanjutnya dikuantisasi. Setelah nilai kuantisasi masukan didapat, langkah selanjutnya adalah memetakan nilai-nilai terkuantisasi ini pada sel-sel asosiasi CMAC berdasarkan parameter generalisasi lokal yang diinginkan. Generalisasi lokal ini berarti untuk setiap nilai masukan CMAC yang berdekatan, maka keluarannya akan berdekatan. Jika jarak nilai masukannya berjauhan, maka keluaran masing-masing akan independen. Secara teknis, penentuan parameter generalisasi ini dilakukan dengan menetapkan jumlah sel asosiasi aktif untuk setiap cacah titik masukan. Misalkan jika generalisasi sama dengan 4, maka untuk tiap titik masukan akan mengaktifkan sejumlah 4 sel asosiasi. Sel-sel asosiasi tertentu dapat diaktifkan oleh titik masukan yang berbeda.
2.4.2 Pemetaan Titik Ruang Masukan pada CMAC Salah satu permasalahan utama pada CMAC adalah pemetaan titik ruang masukan pada vektor asosiasi Aρ. Dalam hal ini diperlukan sebuah algoritma yang secara efesien dapat secara langsung memetakan titik-titik ruang masukan pada sel-sel asosiasi tertentu. Algoritma pemetaan pada CMAC ini dikenal sebagai generator alamat. Untuk kasus ruang masukan n dimensi, perumusan generator alamat dapat dituliskan sebagai berikut :
n q1 l d 1 2 sk 1 A ( q, l ) 1 ( l 1 ) ( 1) k 1
n
qi l di 2 i 1 sj 1 ( 1) ) ............................................... (2.3) j 1
( i 2
Pertama kali akan ditinjau pemetaan ruang masukan tunggal. Misalkan masukan terkuantisasi CMAC memiliki jangkauan nilai antara q min = 0 sampai qmax = 9 (jumlah elemen ruang masukannya s = 10), generalisasi yang dipilih = 3, maka langkah yang harus dilakukan adalah sebagai berikut : 1. Membuat overlay pada ruang masukan sejumlah (dalam hal ini jumlah overlay = 3), kemudian membagi ruang masukan pada overlay pertama sejumlah N kotak (1 kotak penuh berisi elemen). 2. Menentukan vektor penggeseran (d = 1,2,...) pada overlay pertama. Nilai vektor penggeseran ini menentukan jumlah elemen pada kotak pertama. Dalam kasus ini dipilih d = 1, sehingga kotak pertama berisi satu elemen sedangkan sisa 3 kotak masing-masing berisi 3 elemen (kotak penuh). Untuk overlay kedua dan seterusnya pembagian ruang masukan menjadi kotak-kotak secara langsung diperoleh dengan menggeser kotak pada overlay sebelumnya sepanjang satu elemen. Pemetaan masukan terkuantisasi CMAC 1 dimensi ditunjukkan pada Gambar 2.4. Pada dasarnya kotak-kotak ini merupakan sel-sel asosiasi hasil pemetaan dari nilai q yang dilingkupinya. Masukan terkuantisasi 0 akan mengaktifkan alamat memori a1, a5 dan a9, masukan terkuantisasi 1 akan mengaktifkan alamat memori a2, a5 dan a9 dan seterusnya.
Gambar 2.4 Pemetaan masukan CMAC 1 dimensi
Dalam kasus ruang masukan dua dimensi atau lebih, pemetaan dapat dilakukan dengan teknik perangkaian (concatenation).[9] Teknik perangkaian dilakukan untuk setiap sel asosiasi pada overlay yang sama dengan urutan concatenation yang konsisten (urutan concatenation variabel masukan tidak boleh berubah ). Misalkan dimensi ruang masukan CMAC adalah 2 yaitu q1 dan q2 dengan nilai kuantisasi maksimum = 10 dan generalisasi = 3. Langkah awal untuk melakukan pemetaan adalah memetakan masing-masing masukan terkuantisasi tersebut. Untuk masukan tertentu, maka sel asosiasi yang aktif dihitung dengan merangkai sel-sel aktif pada overlay yang sama dalam format vektor bit. Setiap sel direpresentasikan oleh 4 bit, karena nilai maksimum sel asosiasi = 12. Misalkan untuk masukan terkuantisasi [q1 q2]= [2 3], sel-sel asosiasi aktif untuk masingmasing overlay dapat dihitung sebagai berikut : A(q,l) = A([2 3],1)=A2 && B2 = 2 && 2 = 0010 && 0010 =00100010 (34) A(q,l) = A([2 3],2)=A6 && B6 = 6 && 6 = 0110 && 0110 =01100110 (102) A(q,l) = A([2 3],3)=A9 && B10 = 9 && 10 = 1001&& 1010 =10011010 (154) && adalah operator concatenation. Pemakaian metoda concatenation ini akan menyebabkan 2 hal berikut : 1. Memori yang harus disediakan bergantung terhadap dimensi ruang masukan dan jumlah kuantisasi tiap masukan. Untuk kasus diatas memori fisik yang disediakan untuk menyimpan bobot-bobot harus sama dengan A12 && B12 =1100 && 1100 = 11001100 (204) lokasi. 2. Banyak memori yang tidak terpakai karena tidak pernah mungkin diaktifkan. Pendekatan lain dalam melakukan pemetaan dua atau lebih dimensi yaitu dengan menggunakan metoda pengalamatan langsung (direct addresing)[3]. Gambar 2.5 memperlihatkan bagaimana teknik pemetaan dilakukan untuk kasus yang telah dibahas sebelumnya. Langkah-langkah pemetaan ini sama dengan cara pemetaan satu dimensi, tetapi konsep kotak diperluas menjadi hypercube (untuk kasus multi dimensi). Dari Gambar 2.5 tampak bahwa sebuah titik masukan tertentu akan terpetakan pada sebuah hypercube untuk setiap overlay. Untuk titiktitik masukan yang paling berdekatan akan terpetakan pada maksimal 2 buah hypercube yang sama. Semakin jauh jarak titik masukan, maka hypercube hasil
pemetaan akan semakin independen. Misalkan, titik masukan [q1 q2] =[0 0] akan terpetakan akan terpetakan pada alamat memori [a1 a 17 a33] dan titik masukan [q1 q2] =[1 0] akan terpetakan pada alamat memori [a2 a17 a33] dan seterusnya.
45
46
41
42
37
33
39
35
29
17
36
31
26
27
22
23
18
44
40
30
25
Overlay 3
48
43
38
34
21
47
19
Overlay 2
32 28
24 20
Overlay 1 13
9
5
14
10
12
7
2
16
11
6
1
15
8
3
4
9 8 7 6 5 4 3
Masukan 2
2 1 0
1
2
3
4
5
6
7
8
9
0
Masukan 1
Gambar 2.5 Pemetaan 2 dimensi untuk tiap titik ruang masukan dengan pemetaan langsung
Evaluasi terhadap alamat yang aktif untuk masukan terkuantisasi tertentu pada tiap layer ditunjukkan pada Gambar 2.6, Gambar 2.7 dan Gambar 2.8. Masukan [q1 q2] = [0 0] pada overlay 1 akan mengaktifkan alamat memori 0, pada overlay 2 akan mengaktifkan alamat memori 17 dan pada overlay 3 akan
mengaktifkan alamat memori 33. Pada pemetaan ruang masukan dengan metode pemetaan langsung, perbandingan pemakaian memori dengan memori yang harus tersedia (utility ratio) adalah 100 %.
Gambar 2.6 Hasil evaluasi generator alamat pada overlay 1
Gambar 2.7 Hasil evaluasi generator alamat pada overlay 2
9
45
46
47
48
41
42
43
44
37
38
39
40
33
34
35
36
8 7 6 5 4 3 2 1 0
0
1
2
3
4
5
6
7
8
9
Gambar 2.8 Hasil evaluasi generator alamat pada overlay 3
2.4.3 Kotak Operasi CMAC Kotak operasi CMAC menunjukkan aliran operasi CMAC dari masukan sampai diperoleh keluaran CMAC. Gambar 2.9 menunjukkan kotak operasi CMAC dengan metode pemetaan concatenation dan Gambar 2.10 menunjukkan kotak operasi CMAC dengan metode pemetaan langsung.
Gambar 2.9 Aliran operasi CMAC dengan metoda concatenation
Pada kotak operasi CMAC dengan metode pemetaan concatenation, setiap masukan terkuantisasi akan mengaktifkan alamat memori tertentu. Pemetaan nilai masing – masing masukan terkuantisasi ke alamat memori ini dilakukan dengan
metode pemetaan 1 dimensi. Operator concatenation akan menggabungkan memori yang diaktifkan oleh setiap masukan terkuantisasi sehingga diperoleh alamat memori yang akan aktif oleh n masukan.
Gambar 2.10 Aliran operasi CMAC dengan metoda pemetaan langsung
Pada kotak operasi CMAC dengan metode pemetaan langsung, n masukan akan diolah secara bersamaan dengan algoritma generator alamat tertentu. Hasil pengolahan dengan algoritma generator alamat berupa alamat yang aktif untuk n masukan tersebut.
2.4.4 Algoritma Pelatihan CMAC secara Iteratif Langkah 1
: Inisialisasi bobot awal jaringan, w = [0 0 0 . . . . . 0] dan set besarnya laju konvergensi yang digunakan ( 0 < η <1).
Langkah 2
: Untuk setiap sinyal latih x : t, kerjakan langkah 3 sampai selesai
Langkah 3
: Kuantisasi masukan x, x q.
Langkah 4
: Tentukan alamat bobot yang aktif untuk setiap overlay ( l =1,2,...
) dengan generator alamat. Langkah 5
: Hitung keluaran CMAC. Keluaran CMAC
dihitung secara
langsung dengan menjumlahkan bobot-bobot pada memori yang
aktif, y = Wi . i 1
Langkah 6
: Hitung kesalahan (error) antara keluaran terharap (d) dengan keluaran CMAC (y), error = d – y.
Langkah 7
2.5
: Update bobot-bobot pada alamat yang aktif dengan metoda LMS.
RBF (Radial Basis Function) RBF (φ) merupakan fungsi dimana keluarannya simetris terhadap center c
tertentu atau dinyatakan sebagai φc = φ ||x - c||, dimana || . || merupakan vektor normal. Jaringan syaraf yang dibentuk dengan menggunakan fungsi basis berupa fungsi basis radial dinamakan Jaringan Syaraf RBF.
2.5.1 Strutur Dasar RBF Jaringan RBF terdiri atas 3 layer yaitu layer input, hidden layer / kernel layer (unit tersembunyi) dan layer output.[15] Masing – masing unit tersembunyi merupakan fungsi basis radial. Fungsi basis radial ini diasosiasikan oleh lebar dan posisi center dari fungsi basis tersebut. Struktur
dasar jaringan RBF
ditunjukkan pada Gambar 2.11.
Gambar 2.11 Struktur dasar jaringan syaraf RBF.
Jaringan syaraf RBF berbeda dengan jaringan syaraf CMAC. Setiap input dari jaringan ini akan mengaktifkan semua fungsi basis pada hidden layer. Setiap unit dari hidden layer merupakan fungsi basis. Di dalam hidden layer terdapat sejumlah fungsi basis yang sejenis. Setiap fungsi basis akan menghasilkan sebuah
keluaran dengan bobot tertentu. Output jaringan ini merupakan jumlah dari seluruh output fungsi basis dikalikan dengan bobot masing – masing. Operasi jaringan RBF dengan 2 masukan ditunjukkan oleh struktur pada Gambar 2.12.[11] Setiap masukan akan mengaktifkan seluruh fungsi basis pada jaringan RBF. Masukan pertama (x1) akan mengaktifkan fungsi basis φ1 sampai fungsi basis ke φn dan masukan kedua (x2) juga akan mengaktifkan fungsi basis φ1 sampai fungsi basis ke φn, sehingga setiap fungsi basis pada jaringan RBF akan diaktifkan oleh 2 masukan. Keluaran fungsi basis yang diaktifkan oleh 2 masukan dihitung dengan mengalikan keluaran fungsi basis akibat masukan x1 dan keluaran fungsi basis akibat masukan x2. Keluaran tiap fungsi basis ini kemudian diboboti dengan bobot tertentu yaitu w1 sampai dengan wn. Keluaran jaringan RBF dihitung dengan menjumlahkan seluruh hasil perkalian antara keluaran tiap fungsi basis dengan bobotnya sendiri.
Gambar 2.12 Operasi jaringan syaraf RBF dengan 2 masukan
Fungsi basis pada jaringan RBF identik dengan dengan fungsi gaussian yang diformulasikan sebagai berikut : _
φj =
Dimana :
e
xc j 2
2
2 j
........................................................................... (2.4)
cj = Center fungsi gausiaan ke - j σj = Lebar fungsi gausiaan ke - j x = Masukan fungsi basis φj = Keluaran fungsi basis ke – j oleh masukan x Representasi grafis fungsi gaussian ditunjukkan pada Gambar 2.13.
_
φj = e
x c j
2
2 j 2
σ
Gambar 2.13 Fungsi gaussian
Pada setiap jaringan RBF biasanya digunakan lebih dari 1 buah fungsi basis. Tiap – tiap fungsi basis mempunyai 1 center dan 1 bobot tertentu sehingga jumlah center dan bobot memori yang digunakan sama dengan jumlah fungsi basis yang digunakan. 2.5.2 Strategi Pembelajaran Jaringan RBF [12] Berdasarkan rumus fungsi gaussian pada persamaan 2.4 dan struktur dasar jaringan RBF, dapat diusulkan beberapa strategi pembelajaran pada jaringan RBF sebagai berikut : 1. Posisi center pada fungsi basis 2. Lebar dari fungsi basis 3. Bobot keluaran setiap fungsi basis Pada tugas akhir ini strategi pembelajaran yang digunakan adalah pembelajaran bobot keluaran tiap fungsi basis.
2.5.3 Algoritma Pelatihan RBFN secara Iteratif Langkah 1 : Menentukan jumlah fungsi basis yang akan digunakan. Langkah 2 : Menentukan center tiap fungsi basis. Langkah 3 : Menyediakan bobot sebanyak fungsi basis. Langkah 4: Inisialisasi bobot, w = [0 0 0 . . . . . 0] dan set laju konvergensi yang
digunakan ( 0 < η <1). Langkah 5 : Untuk setiap sinyal latih kerjakan langkah 6 – selesai. Langkah 6 : Hitung keluaran tiap fungsi basis. Langkah 7 : Hitung keluaran jaringan RBF. Langkah 8 : Hitung kesalahan (error) antara keluaran terharap (d) dengan keluaran RBF y, error =d – y. Langkah 9: Update bobot-bobot tiap fungsi basis dan bobot basis dengan metoda LMS.
2. 6
Penguat Operasional (Operasional Amplifier) [4] Penguat operasional adalah rangkaian terpadu (IC) yang mempunyai 5
buah terminal dasar. Dua terminal untuk catu daya, 2 yang lain digunakan untuk isyarat masukan yang berupa masukan membalik (-) dan masukan tak membalik (+) serta 1 terminal digunakan untuk keluaran.
2.6.1 Penguat Tak Membalik (Non-inverting Amplifier) Penguat tak membalik merupakan suatu penguat dimana tegangan keluarannya atau Vo mempunyai polaritas yang sama dengan tegangan masukan atau Vi. Rangkaian penguat tak membalik ditunjukkan pada Gambar 2.14.
Gambar 2.14 Penguat tak membalik
Arus i mengalir ke Ri karena impedansi masukan op – amp sangat besar sehingga tidak ada arus yang mengalir pada kedua terminal masukannya. Tegangan pada Ri sama dengan Vi karena perbedaan tegangan pada kedua terminal masukannya mendekati 0 V.
i=
Vi .......................................................................................... (2.5) Ri
Tegangan pada Rf dapat dinyatakan sebagai VRf = I Rf =
Rf xVi .................................................................... (2.6) Ri
Tegangan keluaran Vo didapat dengan menambahkan tegangan pada Ri yaitu Vi dengan tegangan pada Rf yaitu VRf. Vo = Vi +
Rf x Vi ........................................................................ (2.7) Ri
Vo Rf 1 .............................................................................. (2.8) Vi Ri
2.6.2 Penguat Selisih (Differensial amplifier) Penguat selisih merupakan suatu penguat dimana tegangan outputnya merupakan selisih dari tegangan input yang dimasukkan ke kedua terminal masukannnya. Rangkaian penguat selisih ditunjukkan pada Gambar 2.15.
Gambar 2.15 Penguat selisih
Nilai tegangan output Vo dapat dihitung dengan teori superposisi sebagai berikut : 1. Saat V2 ditanahkan, maka penguat selisih akan membentuk penguat tak membalik. Tegangan yang masuk ke terminal tak - membaliknya merupakan tegangan yang terbagi yaitu V
Rb V 1 ........................................................................... (2.9) Ra Rb
Tegangan ini mengalami penguatan sebesar akibat V2 ditanahkan (Vo1) adalah
(
Rf +1), sehingga output Ri
Vo1 (
Rf Rb 1) V 1 .......................................................... (2.10) Ra Ra Rb
2. Saat V1 ditanahkan, maka akan terbentuk penguat membalik dengan penguatan sebesar adalah Vo2 = -
Rf . Tegangan output akibat V1 ditanahkan (Vo2) Ri
Rf V2. Ri
Tegangan output dari penguat selisih adalah penjumlahan dari tegangan Vo1 dan Vo2.
Vo Vo1 Vo 2 ............................................................................ (2.11) Vo (
Rf Rb Rf 1) V1 V 2 .............................................. (2.12) Ra Ra Rb Ri
Untuk nilai Rf = Ri = Ra = Rb = R maka :
Vo V 1 V 2 ............................................................................... (2.13)
2.6.3 Pembanding (Comparator) Pembanding berfungsi untuk membandingkan 2 buah level tegangan yang masuk ke terminal masukan op – amp. Pembanding hanya mempunyai 2 level keluaran yaitu +Vsat dan –Vsat. Keluaran pembanding akan berharga +Vsat jika level tegangan masukan pada terminal tak - membalik lebih besar dari level tegangan masukan pada terminal membalik, dan akan berharga -Vsat jika level tegangan masukan pada terminal tak - membalik lebih kecil dari level tegangan masukan pada terminal membalik.
BAB III PERANCANGAN
3.1
Perancangan Kontrol Jaringan Syaraf Tiruan CMAC dan RBF Perancangan kontrol jaringan syaraf tiruan CMAC dan RBF dilakukan
untuk memberikan batasan terhadap besarnya parameter kontroller yang digunakan. Parameter kontroller tersebut meliputi gain proporsional, laju konvergensi, generalisasi pada jaringan syaraf CMAC dan jumlah fungsi basis pada jaringan syaraf RBF. Perancangan juga diperlukan untuk menyusun algoritma kontrol CMAC dan RBF yang akan diimplementasikan pada komputer.
3.1.1
Penentuan Nilai Gain Proporsional Jaringan Syaraf CMAC dan RBF Nilai gain proporsional yang digunakan pada pengontrolan ditentukan
secara empiris. Secara praktis nilai gain proporsional yang dipilih dibatasi oleh tegangan maksimum DAC yang digunakan. Karena dalam pengujian ini tegangan maksimum DAC adalah 5 volt, maka diusahakan sinyal kendali proporsional pada saat awal tidak melebihi 5 volt. Pada referensi suhu maksimum yang diperbolehkan ( 90° C ), tegangan yang dikirimkan ke DAC adalah ± 2,99 volt. Pada kondisi awal suhu yang terbaca oleh ADC adalah suhu lingkungan karena pemanas masih mati yaitu ± 30° C. Hasil pembacaan ADC pada kondisi awal ini adalah ± 0,99 V. Besarnya sinyal error adalah 2,99 V – 0,99 V = 2,0 V. Agar tidak melampaui batas maksimum DAC maka besarnya gain maksimal yang boleh diberikan adalah sebesar 5 / 2,00 = 2,5. Untuk nilai referensi lebih kecil dari referensi maksimal yang diperbolehkan, besarnya gain proporsional maksimal bisa disesuaikan, sehingga sinyal kontrol pada keadaan awal tidak melebihi 5 volt.
3.1.2
Penentuan Nilai Laju Konvergensi Jaringan Syaraf CMAC dan RBF Secara teoritis, besarnya laju konvergensi yang dipilih akan menentukan
kecepatan pembaharuan bobot jaringan. Jika laju konvergensi yang dipilih relatif kecil, maka kecepatan pembelajaran akan berjalan secara lambat, sedangkan jika
laju konvergensi yang dipilih relatif besar, maka dimungkinkan terjadinya over corrected pada bobot-bobot yang diperbaharui. Pemilihan besarnya laju konvergensi yang digunakan pada pengontrolan dilakukan secara empiris. Pada tugas akhir ini nilai laju konvergensi yang dipilih antara 0,05 sampai dengan 0,5.
3.1.3
Perancangan Kontrol Jaringan Syaraf CMAC Perancangan kontrol jaringan syaraf CMAC dilakukan untuk merancang
jaringan syaraf CMAC yang akan digunakan. Perancangan jaringan syaraf CMAC meliputi perancangan jangkauan masukan terkuantisasi, perancangan generalisasi dan perancangan algoritma kontrol jaringan syaraf CMAC.
A.
Penentuan Jangkauan Masukan Terkuantisasi Besarnya jangkauan nilai masukan terkuantisasi secara langsung akan
menentukan besarnya memori yang harus disediakan. Semakin besar nilai jangkauan terkuantisasi yang dipilih, kebutuhan memori akan semakin besar. Di lain pihak dengan semakin besarnya nilai jangkauan ini, kemampuan CMAC dalam memodelkan masukan akan semakin halus. Dengan demikian, perlu dilakukan kompromi dalam menentukan jangkauan masukan ini. Faktor lain yang perlu diperhatikan adalah ketelitian dari antarmuka yang digunakan dalam hal ini adalah ADC. Jika digunakan ADC dengan ketelitian 8 bit, maka jangkauan kuantisasi maksimumnya adalah 255. Tabel 3.1 Hubungan kebutuhan memori dengan jangkauan masukan terkuantisasi dengan parameter generalisasi yang dipilih 50.
Kuantisasi 8 bit 10 bit 12 bit 14 bit 16 bit
Jangkauan Masukan 0-255 0-1023 0-4095 0-16383 0-65535
Kebutuhan Memori 2442 23847 338058 5305782 84353727
Pada tugas akhir ini digunakan ADC 8 bit sehingga hasil konversi ADC sudah merupakan masukan terkuantisasi keluaran plant bagi jaringan syaraf CMAC karena berupa byte dengan jangkauan 0 – 255. Proses kuantisasi diperlukan untuk masukan suhu referensi dengan perhitungan sebagai berikut :
Kuantisasi referensi = ceil [ Suhu referensi *255/150 ). ..................... (3.1)
B.
Penentuan Generalisasi Besarnya generalisasi yang dipilih juga berpengaruh secara langsung
terhadap kebutuhan memori dan kecepatan proses komputasi. Sebagai bahan ilustrasi, hubungan antara nilai generalisasi yang dipilih dengan kebutuhan memori CMAC ditunjukkan pada Tabel 3.2. Secara teknis, besarnya generalisasi yang dipilih adalah bebas karena pada bahasa pemrograman visual tersedia memori yang besar. Beban komputasi juga tidak menjadi masalah karena proses komputasi dilakukan dalam timer dengan sampling waktu tertentu sehingga kecepatan proses tidak berpengaruh. Pertimbangan yang digunakan dalam pemilihan generalisasi adalah jumlah masukan terkuantisasi. Jika generalisasi yang digunakan jauh melebihi jangkauan maksimum masukan terkuantisasi, maka teori generalisasi lokal menjadi tidak berarti. Pada tugas akhir ini generalisasi maksimal yang diperbolehkan adalah 255. Tabel 3.2 Hubungan besarnya generalisasi yang dipilih dengan kebutuhan memori maksimum CMAC dengan kuantisasi 8 bit.
Parameter generalisasi 10 50 90 130 170 210
C.
Kebutuhan Memori 7262 2442 1435 1166 1526 1886
Perancangan Algoritma Kontrol Jaringan Syaraf Tiruan CMAC Pembuatan perangkat lunak untuk kontrol jaringan syaraf CMAC dan RBF
harus didahului oleh perancangan algoritma kontrol. Selain untuk memudahkan proses pembuatan perangkat lunak, pada kontrol jaringan syaraf CMAC diperlukan beberapa prosedur tambahan seperti prosedur generator alamat dan prosedur untuk update bobot jaringan, sehingga setiap prosedur memerlukan perancangan algoritma tersendiri.
Prosedur untuk menghitung generator alamat ditunjukkan oleh diagram alir pada Gambar 3.1. Ada dua buah variabel yang menjadi masukan CMAC, yaitu suhu referensi dan suhu plant. Untuk jumlah generalisasi yang digunakan (generalisasi), maka alamat[i] merupakan vektor yang digunakan untuk menunjukkan alamat yang diaktikan pada layer ke – i. Proses perhitungan generator alamat dilakukan oleh prosedur yang merepresentasikan persamaan 2.3.
Gambar 3.1. Diagram alir generator alamat
Sebagai bahan ilustrasi, Tabel 3.3 memperlihatkan alamat-alamat yang diaktifkan oleh generator alamat dengan spesifikasi jumlah variabel masukan ada 2 yaitu q1 dan q2, masing-masing masukan dikuantisasi sepanjang 8 bit dan generalisasi yang dipilih adalah 5. Untuk nilai-nilai masukan paling berdekatan, maka ada 4 alamat yang saling overlap, sedangkan untuk nilai-nilai masukan yang berjauhan, alamat-alamat yang diaktifkan akan saling tidak overlap. Masukan [q1 q2] = [0 0], akan mengaktifkan memori pada alamat 1, 2075, 5409, 8113 dan 10817, sedangkan masukan [q1 q2] = [0 1], akan mengaktifkan memori pada
alamat 53, 2075, 5409, 8113 dan 10817. Kondisi ini menunjukkan berlakunya prinsip generalisasi lokal. Tabel 3.3 Alamat-alamat aktif untuk masukan-masukan tertentu pada CMAC dengan dua masukan, 8 bit dan generalisasi = 5.
Masukan Terkuantisasi
Alamat-alamat yang diaktifkan generator alamat
q1
q2
Overlay 1
Overlay 2
Overlay 3
Overlay 4
Overlay 5
0
0
1
2705
5409
8113
10817
0
1
53
2705
5409
8113
10817
1
0
2
2705
5409
8113
10817
1
1
54
2705
5409
8113
10817
254
255
2704
5408
8112
10816
13519
255
253
2704
5408
8112
10764
13468
255
254
2704
5408
8112
10816
13468
Prosedur untuk menghitung keluaran CMAC ditunjukkan oleh diagram alir pada Gambar 3.2. Keluaran CMAC dapat dihitung secara langsung dengan menjumlahkan seluruh bobot-bobot yang tersimpan pada alamat-alamat yang diaktifkan. Dalam hal ini memori_cmac adalah array untuk menyimpan bobotbobot CMAC pada alamat yang diaktifkan. Keluaran CMAC disimpan dalam variabel out_cmac.
Gambar 3.2 Diagram alir perhitungan keluaran CMAC untuk alamat-alamat yang aktif
Prosedur untuk update bobot jaringan CMAC ditunjukkan oleh diagram alir pada Gambar 3.3. Pembaharuan bobot CMAC dilakukan dengan algoritma LMS. Bobot pada alamat-alamat yang diaktifkan diperbaharui secara proporsional terhadap laju konvergensi dan keluaran gain proporsional. Nilai bobot yang disimpan pada memori_cmac diperbaharui dengan algoritma LMS dan hasil pembaharuan disimpan dengan variabel yang sama yaitu memori_cmac.
Gambar 3.3. Diagram alir pembaharuan bobot pada alamat-alamat aktif CMAC
Diagram alir proses pengendalian dengan jaringan syaraf CMAC keseluruhan ditunjukkan oleh diagram alir pada Gambar 3.4. Proses awal merupakan proses setting parameter kontrol CMAC yang meliputi setting generalisasi, setting gain proporsional dan setting laju konvergensi yang digunakan. Proses kontrol diawali dengan pembacaan suhu plant (ouput) dan referensi suhu (referensi). Hasil pembacaan suhu plant sudah merupakan masukan terkuantisasi bagi jaringan syaraf CMAC karena berupa byte. Proses kuantisasi diperlukan untuk referensi suhu (intref). Sinyal error yang merupakan selisih antara suhu plant dan suhu referensi digunakan untuk menghitung keluaran gain proporsional. Di sisi lain, suhu plant dan suhu referensi digunakan sebagai masukan untuk jaringan syaraf. Sinyal kontrol yang dikirimkan ke plant adalah penjumlahan dari keluaran jaringan syaraf dan keluaran gain proporsional. Proses
selanjutnya adalah pembaharuan bobot jaringan dengan menggunakan algoritma LMS dengan menggunakan data latih berupa keluaran gain proporsional.
Gambar 3.4. Diagram alir algoritma kontrol CMAC
3.1.4
Perancangan Kontrol Jaringan Syaraf RBF Perancangan kontrol RBF dilakukan untuk merancang jaringan RBF yang
akan digunakan. Perancangan jaringan RBF meliputi perancangan fungsi basis yang
digunakan dan perancangan algoritma kontrol RBF
diimplementasikan pada komputer.
yang akan
A.
Penentuan Fungsi Basis pada Jaringan RBF Pada tugas akhir ini keluaran ADC 0 – 255 dinormalisasi dalam masukan
jaringan RBF pada dalam jangkauan 0 – 5. Secara teoritis jumlah fungsi basis yang dipilih bebas, namun dengan adanya normalisasi tersebut diperlukan batasan jumlah maksimum fungsi basis yang digunakan. Jika jumlah fungsi basis yang dipilih terlalu banyak maka lebar fungsi basis yang terjadi akan menjadi sangat sempit, sehingga tiap center jaringan RBF menjadi berimpitan. Jumlah fungsi basis maksimal ditentukan sebesar15. Center dari masing – masing fungsi basis dihitung sebagai berikut : for i:=1 to sum_basis do c[i]:=(7/(sum_basis+1))*i; dimana c[i] = Nilai center dari fungsi basis ke [i]. Deviasi yang menentukan kelengkungan dari tiap fungsi basis ditentukan dengan persamaan : Deviasi (σ) = c[1]/3,05 .................................................................. (3.2) Misalkan, jika jumlah fungsi basis yang dipilih adalah 4, maka nilai center tiap fungsi basis adalah : c [ 1 ] = (7/(4 + 1)) * 1 = 1,4 c [ 2 ] = (7/(4 + 1)) * 2 = 2,8 c [ 3 ] = (7/(4 + 1)) * 3 = 4,2 c [ 4 ] = (7/(4 + 1)) * 4 = 5,6 Deviasi dari masing – masing fungsi basis yang terbentuk dihitung sebagai berikut : Deviasi (σ) = 1,4 / 3,05 = 0,459 Secara grafis jaringan syaraf RBF yang dibentuk oleh 4 fungsi basis ditunjukkan pada Gambar 3.5. 5 M as uk an
2
4 3
2 1 0
Gambar 3.5. Grafik jaringan RBF dengan 4 fungsi basis
Pada jaringan RBF, 1 fungsi basis mempunyai 1 bobot sehingga jumlah memori yang dibutuhkan untuk menyimpan bobot adalah sebanyak fungsi basis yang digunakan + 1. Tambahan 1 memori adalah untuk menyimpan bobot basis.
B.
Perancangan Algoritma Kontrol Jaringan Syaraf Tiruan RBF Tahap pertama yang perlu dilakukan pada perancangan algoritma kontrol
jaringan syaraf RBF adalah merancang jaringan RBF yang akan digunakan. Untuk membentuk jaringan RBF diperlukan lebih dari 1 fungsi basis. Dengan masukan ternomalisasi antara 0 – 5 dan jumlah fungsi basis maksimal yang diperbolehkan adalah 15, proses perancangan jaringan RBF yang akan digunakan ditunjukkan oleh diagram alir pada Gambar 3.6. Proses perancangan jaringan RBF meliputi penentuan jumlah fungsi basis yang digunakan, perhitungan center tiap fungsi basis dan penentuan deviasi masing – masing fungsi basis.
Gambar 3.6. Diagram alir perancangan jaringan RBF yang digunakan
Langkah berikutnya adalah menghitung keluaran jaringan RBF dengan masukan yang diberikan yaitu suhu referensi dan suhu plant. Algoritma untuk
menghitung keluaran jaringan RBF 2 masukan ditunjukkan oleh diagram alir pada Gambar 3.7. Proses perhitungan keluaran jaringan RBF 2 dimensi diawali dengan proses pembacaan data masukan yang berupa suhu referensi (referensi) dan suhu plant (output). Kedua masukan tersebut kemudian dinormalisasi pada range 0-5. Keluaran fungsi basis yang diaktifkan oleh 2 masukan dihitung dengan mengalikan keluaran fungsi basis akibat masukan suhu referensi dan keluaran fungsi basis akibat suhu plant (outb[i,i]). Setiap keluaran fungsi basis dikalikan dengan bobotnya sendiri dan disimpan pada variabel outputb[i,i]. Proses terakhir adalah menjumlahkan seluruh hasil kali keluaran tiap fungsi basis dengan bobotnya sendiri kemudian ditambahkan dengan bobot basis (wb). Keluaran jaringan syaraf 2 dimensi ini disimpan pada variabel outrbforde2.
Gambar 3.7. Diagram alir perhitungan keluaran RBF 2 dimensi
Aplikasi algoritma kontrol jaringan syaraf tiruan RBF secara keseluruhan ditunjukkan oleh diagram alir pada Gambar 3.8. Proses kontrol diawali dengan
setting parameter jaringan RBF yang meliputi jumlah fungsi basis yang digunakan, gain proporsional dan laju konvergensi jaringan. Berdasarkan data parameter yang telah ditentukan, kemudian dirancang jaringan RBF sesuai dengan algoritma yang sudah ditentukan. Sinyal error yang merupakan selisih antara suhu plant dan suhu referensi dalam level tegangan digunakan untuk menghitung keluaran gain proporsional. Di sisi lain, suhu plant dan suhu referensi digunakan sebagai masukan untuk jaringan syaraf. Sinyal kontrol yang dikirimkan ke plant adalah penjumlahan dari keluaran jaringan syaraf RBF dan keluaran gain proporsional. Proses selanjutnya adalah pembaharuan bobot jaringan dengan menggunakan algoritma LMS menggunakan data latih berupa keluaran gain proporsional.
Gambar 3.8. Diagram alir algoritma kontrol RBF
3.2
Perancangan Perangkat Lunak (Software) Perangkat lunak yang digunakan adalah bahasa pemrograman Delphi versi
6.0. Perangkat lunak ini berfungsi untuk membuat program aplikasi kontrol dengan jaringan syaraf CMAC dan jaringan syaraf RBF. Disamping itu, juga digunakan untuk membuat program monitor terhadap kondisi suhu plant yang dikontrol dengan menampilkan grafik tanggapan respon. Garis besar program utama kontrol dengan jaringan syaraf CMAC dan RBF yang dibuat ditunjukkan oleh diagram alir pada Gambar 3.9.
Gambar 3.9 Diagram alir program utama
Gambar 3.9 Diagram alir program utama (Lanjutan)
Proses inisialisasi meliputi inisialisasi port serial yang digunakan untuk komunikasi antara PC dengan rangkaian antarmuka yang meliputi: port, baudrate, databits, stopbits dan parity, inisialisasi variabel yang digunakan, dan inisialisasi file yang digunakan untuk penyimpanan. Program inisialisasi ini dimasukkan dalam prosedur Formcreate sebagai berikut : procedure TFjst.FormCreate(Sender: TObject); begin // Inisialisasi port serial serial.Port := pncom1; serial.BaudRateValue :=9600; serial.DataBits := db8bits; serial.StopBits := sb1bits; serial.SwFlow := sfnone; serial.Parity := ptnone; serial.Connect; serial.SendByte(0); // Inisialisasi komponen Mainmenu1.Items.Items[3].Items[0].Enabled:=false; Mainmenu1.Items.Items[3].Items[1].Enabled:=false;
Chart1.BottomAxis.Maximum:=15; ScrollBar1.LargeChange:=batas_maks; ScrollBar1.Visible:=true; // Inisialisasi variabel dan bobot dy:=0; dx:=0; datax:=0; hitung:=0; online:=true; // Inisialisasi file yang digunakan untuk penyimpanan assignfile(F_cmac,'D:\data_cmac.txt'); rewrite(F_cmac); closefile(F_cmac); assignfile(F_rbf,'D:\data_rbf.txt'); rewrite(F_rbf); closefile(F_rbf); assignfile(F,'D:\data.xls'); rewrite(F); closefile(F); assignfile(F,'D:\data.xls'); append(F); writeln(F,'Sampling',#9,'Referensi',#9,'Out NN',#9,'Out Gain' ,#9,'Control u',#9,'Output',#9,'Error'); closefile(F); end;
3.2.1
Software Jaringan Syaraf CMAC Untuk mengaplikasikan jaringan syaraf CMAC pada komputer diperlukan
fungsi atau prosedur tambahan yang mendukung proses komputasi pada jaringan syaraf CMAC. Fungsi atau prosedur tersebut adalah prosedur menghitung jumlah memori maksimal yang harus disediakan, inisialisasi bobot awal, fungsi kuantisasi 8 bit dan fungsi pemetaan masukan terkuantisasi ke alamat memori tertentu (generator alamat). Fungsi atau prosedur pendukung tersebut dituliskan dalam listing program sebagai berikut : // Procedure menghitung memori maksimal yang harus disediakan procedure hitung_memoricmac; begin referensi := 255; output:=255; memoricmac_maks:=generator_alamat(referensi,output,generalisa si,generalisasi); end;
// Procedure inisialisasi awal bobot cmac procedure initbobot; begin
for i:=1 to memoricmac_maks do begin bobot[i]:=0; memori_cmac[i]:=0; end; end; //Fungsi kuantisasi 8 bit Function kuant8bit(var input:real):real; begin kuant8bit:=ceil((input*255)/suhu_maks); end; //Fungsi generator alamat Function generator_alamat(var dref:real;dFback:byte;layer,gen: integer):integer; var temp1,temp2, temp3 : integer; begin temp1:=1 + ceil((dref-layer+1)/gen); temp2:=(layer-1)*(ceil(255/gen)+1)*(ceil(255/gen)+1); temp3:=(ceil(255/gen)+1)*(ceil((dFback-layer+1)/gen)); generator_alamat:=temp1+temp2+temp3; end;
Prosedur hitung_memoricmac digunakan untuk menghitung kebutuhan memori maksimal yang diperlukan. Prosedur initbobot digunakan untuk inisialisasi bobot awal CMAC. Vektor yang disediakan disesuaikan dengan kebutuhan memori maksimal yang diperlukan. Fungsi kuant8bit digunakan untuk mengkuantisasi referensi yang mempunyai level 0 – 150 ° C ke level byte 0 – 255. Fungsi generator_alamat digunakan untuk menentukan alamat memori yang aktif oleh parameter referensi, keluaran plant, dan generalisasi yang digunakan. Program kontrol dengan jaringan syaraf CMAC dituliskan pada prosedur timer_cmac.timer. procedure TFjst.Timer_cmacTimer(Sender: TObject); begin // Baca output suhu plant---> masukan terkuantisasi serial.SendChar('#'); sleep(1); serial.ReadByte(output); // Hitung sinyal error dan output gain proporsional error:= (referensi/pembagi )- (output/51); controlP:=error*gain; // Kuantisasi input referensi intref:=kuant8bit(referensi);
// Hitung keluaran cmac out_cmac:=0; for i:=1 to generalisasi do begin alamat[i]:=generator_alamat(intref,output,i,generalisasi); out_cmac:=out_cmac + memori_cmac[alamat[i]]; end; // Hitung sinyal kendali plant sinyal_kontrol:=controlP+out_cmac; lama:= hitung_milidetik(durasi); // Catat data ke file str((output*suhu_maks/255):2:2,datay); AssignFile(F,'d:\data.xls'); append(F); Writeln(F,inttostr(lama),#9,floattostr(referensi),#9,floattos tr(out_cmac),#9,floattostr(controlP),#9,floattostr(sinyal_ kontrol),#9,datay,#9,floattostr((referensi/pembagi)(output/51))); CloseFile(F); // Update bobot jaringan for i:=1 to generalisasi do begin index:=alamat[i]; memori_cmac[index]:=memori_cmac[index] + laju_cmac * controlP/generalisasi; end; // Kirim sinyal kontrol sinyalcontrol := round(sinyal_kontrol * 51); if sinyalcontrol > 255 then sinyalcontrol:= 255; if sinyalcontrol < 0 then sinyalcontrol:= 0; serial.SendByte(sinyalcontrol); Edit3.Text:=format('%4.1f',[output*(suhu_maks/255)]); // Plot grafik respon datax:=datax + 0.02; Chart1.series[0].SeriesColor:=clred; Chart1.Series[0].AddXY(datax,output*(suhu_maks/255)); Chart1.series[1].SeriesColor:=clblue; Chart1.Series[1].AddXY(datax,referensi); maksek:=Chart1.BottomAxis.Maximum; if datax>batas_maks then begin ScrollBar1.Max:=(Round(datax)-batas_maks)+1; ScrollBar1.Position:=ScrollBar1.Max; end; end;
3.2.2
Software Jaringan Syaraf RBF Untuk mengaplikasikan jaringan syaraf RBF pada komputer diperlukan
fungsi atau prosedur tambahan yang mendukung proses komputasi pada jaringan syaraf RBF. Fungsi atau prosedur tersebut adalah prosedur inisialisasi bobot awal, fungsi membangun jaringan RBF, fungsi menghitung keluaran fungsi basis dengan 2 masukan dan fungsi menghitung keluaran jaringan RBF dengan 2 masukan. Fungsi pendukung tersebut dituliskan dalam listing program sebagai berikut : // Inisialisasi awal bobot RBF procedure init2rbf; var i:integer; begin for i:=1 to jumlah_basis do w[i,1]:=0; wb:=0; outbasis:=0; end; // Procedure membuat jaringan Procedure make_rbf; begin for i:=1 to sum_basis do c[i]:=(7/(sum_basis+1))*i; deviasi :=c[1]/3.05; end; // Fungsi menghitung keluaran fungsi basis oleh 2 masukan function rbf2dim(var s_rbf,a,b,x1,x2 : real):real; begin temp1 := -((a-x1)*(a-x1))/(2*s_rbf*s_rbf); temp2 := -((b-x2)*(b-x2))/(2*s_rbf*s_rbf); rbf2dim := exp(temp1)*exp(temp2); end;
// Fungsi menghitung keluaran RBF 2 dimensi Function outrbforde2(var in1,in2:real):real; begin outbasis:=0; outrbforde2:=0; make_rbf; //Inisialisasi keluaran tiap fungsi basis for i:=1 to sum_basis do outputb[i,i]:=0; //Hitung keluaran tiap fungsi basis oleh 2 masukan for i:=1 to sum_basis do outb[i,i]:=rbf2dim(deviasi,c[i],c[i],in1,in2);
// Kalikan keluaran tiap fungsi basis dengan bobotnya sendiri for i:=1 to sum_basis do outputb[i,i]:= outb[i,i]*w[i,i]; // Hitung keluaran jaringan for i:=1 to sum_basis do outbasis:=outbasis+outputb[i,i]; outbasis:=outbasis+wb; outrbforde2:=outbasis; end;
Prosedur init2rbf digunakan untuk inisialisasi bobot awal jaringan syaraf RBF. Prosedur make_rbf digunakan untuk membangun jaringan RBF. Fungsi rbf2dim digunakan untuk menghitung keluaran fungsi basis yang disebabkan oleh adanya 2 masukan. Fungsi outrbforde2 digunakan untuk menghitung keluaran dari jaringan RBF dengan 2 masukan. Program kontrol dengan jaringan syaraf RBF dituliskan pada prosedur timer_rbf.timer. procedure TFjst.Timer_rbfTimer(Sender: TObject); begin // Baca output suhu plant serial.SendChar('#'); sleep(1); serial.ReadByte(output); // Hitung sinyal error dan output gain proporsional error:= (referensi/pembagi )- (output/51); controlP:=error*gain; // berupa Tegangan // Hitung keluaran RBF orde 2 dy:=output/51; dx:=referensi/pembagi; out_rbf:=outrbforde2(dx,dy); // Hitung sinyal kontrol plant sinyal_kontrol:=controlP+out_rbf; // Kirim sinyal kontrol sinyalcontrol := round(sinyal_kontrol * 51); if sinyalcontrol > 255 then sinyalcontrol:= 255; if sinyalcontrol < 0 then sinyalcontrol:= 0; serial.SendByte(sinyalcontrol); Edit3.Text:=format('%4.1f',[output*(suhu_maks/255)]); lama:= hitung_milidetik(durasi); // Catat data ke file str((output*suhu_maks/255):2:2,datay); AssignFile(F,'d:\data.xls'); append(F); Writeln(F,inttostr(lama),#9,floattostr(referensi),#9,floattos tr(out_rbf),#9,floattostr(controlP),#9,floattostr(sinyal_
kontrol),#9,inttostr(round(output*suhu_maks/255)),#9,floattos tr(referensi-(output*suhu_maks/255))); CloseFile(F); // Update bobot RBF for i:=1 to sum_basis do w[i,i]:=w[i,i] +laju_rbf*controlP*outb[i,i]/( sum_basis+1); // Update bobot basis wb wb:=wb+laju_rbf*controlP/(sum_basis+1); // Plot grafik respon datax:=datax + 0.02; Chart1.series[0].SeriesColor:=clred; Chart1.Series[0].AddXY(datax,output*(suhu_maks/255)); Chart1.series[1].SeriesColor:=clblue; Chart1.Series[1].AddXY(datax,referensi); maksek:=Chart1.BottomAxis.Maximum; if datax>batas_maks then begin ScrollBar1.Max:=(Round(datax)-batas_maks)+1; ScrollBar1.Position:=ScrollBar1.Max; end; end;
3.3
Perancangan Perangkat Keras (Hardware) Secara umum blok diagram sistem pengatur suhu yang akan dibuat pada
tugas akhir ini ditunjukkan oleh diagram pada Gambar 3.10.
Gambar 3.10 Diagram blok hardware sistem pengatur suhu
Rangkaian DAC 0808 berfungsi untuk mengubah data digital berupa masukan referensi suhu dari komputer menjadi data analog berupa tegangan. Pengkondisi sinyal I berfungsi untuk mengubah level tegangan keluaran DAC 0808 dari 0 – 5 Volt menjadi level tegangan -5 – 5 Volt. Level tegangan ini digunakan sebagai masukan driver PWM. Pengkondisi sinyal II berfungsi untuk menguatkan tegangan keluaran sensor suhu LM35. Batas maksimal keluaran sensor adalah 1,5
V pada suhu 150° C, sedangkan referensi ADC adalah 5 Volt sehingga diperlukan penguatan sebesar 5 / 1,5 = 3,33 kali. Rangkaian ADC 0804 digunakan untuk mengubah besaran analog dari pengkondisi sinyal II ke data digital sehingga dapat diolah di komputer. Mikrokontroller digunakan untuk mengatur aliran data dari ADC ke komputer atau dari komputer ke DAC. Komunikasi yang digunakan adalah komunikasi serial melalui RS 232. Mikrokontroller menerjemahkan perintah dari komputer apakah mengirim data ke DAC atau mengambil data dari ADC dan mengirimkannya ke komputer. Plant suhu didesain dengan menggunakan driver PWM untuk mengatur besarnya daya yang dialirkan ke pemanas. Untuk mengukur besarnya suhu yang terjadi digunakan sensor suhu LM35 yang mempunyai karakteristik keluaran 10 mV /° C. Komputer digunakan sebagai unit kontroller untuk mengaplikasikan algoritma jaringan syaraf tiruan CMAC dan RBF. Disamping itu, komputer juga digunakan untuk menampilkan grafik respon dan menyimpan data ke file untuk keperluan analisis.
3.3.1
Rangkaian Digital to Analog Converter (DAC) DAC pada rancangan ini digunakan untuk mengubah masukan digital 8 bit
dari komputer menjadi besaran analog yaitu berupa tegangan. Tipe DAC yang digunakan adalah DAC 0808 yang merupakan DAC 8 bit. Rangkaian lengkap DAC 0808 ditunjukkan pada Gambar 3.11.
Gambar 3.11 Rangkaian DAC 0808
3.3.2
Rangkaian Analog to Digital Converter (ADC) ADC pada rancangan ini digunakan untuk mengubah masukan analog
keluaran sensor suhu yang sudah dikuatkan menjadi data digital 8 bit. Tipe ADC yang digunakan adalah ADC 0804 pada mode kerja free running. Rangkaian free running ADC 0804 ditunjukkan pada Gambar 3.12.
Gambar 3.12 Rangkaian Free running ADC.
Untuk membuat mode kerja ADC 0804 menjadi free running, maka harus diketahui bagaimana urutan pemberian nilai pada RD dan WR serta perubahan nilai pada INTR . Urutan pemberian nilai pada RD , WR perubahan nilai pada INTR ditunjukkan pada Tabel 3.4.
Tabel 3.4 Pemberian nilai pada RD dan WR serta perubahan nilai pada INTR Langkah
INTR
WR
RD
1
0
0
0
2
1
1
0
Mode kerja free running ADC diperoleh jika RD dan CS dihubungkan ke ground agar selalu mendapat logika 0 sehingga ADC akan selalu aktif dan siap memberikan data. Pin WR dan INTR dijadikan satu karena perubahan logika
INTR sama dengan perubahan logika pada WR , sehingga pemberian logika pada WR dilakukan secara otomatis oleh keluaran INTR .
3.3.3
Rangkaian Pengkondisi sinyal I Pengkondisi sinyal I berfungsi untuk mengubah level tegangan keluaran
DAC 0808 dari 0 – 5 Volt menjadi level tegangan -5 – 5 Volt. Level tegangan ini digunakan sebagai masukan driver PWM. Untuk mendapatkan pengkondisi sinyal tersebut digunakan dua buah penguat. Penguat pertama difungsikan sebagai penguat 2 kali sehingga keluaran penguat ini mempunyai jangkauan 0 - 10 V. Penguat kedua digunakan sebagai penguat selisih yang mengurangi tegangan masukan pada terminal tak membaliknya dengan 5 V sehingga keluaran penguat ini mempunyai jangkauan -5 - 5 V untuk jangkauan masukan 0 - 10 V. Desain rangkaian pengkondisi sinyal I ini ditunjukkan pada Gambar 3.13.
Gambar 3.13 Pengkondisi sinyal 0 – 5 Volt menjadi -5 – 5 Volt
3.3.4
Rangkaian Pengkondisi sinyal II Pengkondisi sinyal II berfungsi untuk menguatkan tegangan keluaran
sensor suhu LM35. Keluaran sensor maksimal pada batas suhu maksimal kemampuan sensor adalah 1,5 V pada suhu 150° C, sedangkan referensi ADC adalah 5 Volt sehingga diperlukan penguatan sebesar 5 / 1,5 = 3,33 kali. Untuk mendapatkan penguatan sebesar ini digunakan penguat tak membalik pada Gambar 2.14 dengan memberikan nilai Rf sebesar 33 kΩ dan Ri sebesar 10 kΩ.
3.3.5
Plant Suhu dengan PWM Driver Pada tugas akhir ini plant suhu yang dibuat digerakkan dengan sebuah
PWM driver. Skema plant suhu yang dibuat ditunjukkan pada Gambar 3.14.
Gambar 3.14 Skema plant suhu dengan PWM driver
Tegangan AC keluaran dari trafo disearahkan
dengan penyearah jembatan
sehingga dihasilkan tegangan DC ± 46 Vdc. Untuk menggerakkan tegangan DC tinggi ini digunakan MOSFET tipe IRFP150. Keluaran dari PWM digunakan untuk menggerakkan Mosfet sehingga tegangan keluaran Mosfet yang masuk ke beban adalah tegangan DC ± 46 Vdc dengan frekuensi dan duty cycle sesuai dengan keluaran PWM driver. PWM driver diperoleh dengan membandingkan keluaran sebuah pembangkit gelombang segitiga dengan sebuah tegangan masukan melalui rangkaian pembanding. Desain rangkaian PWM Driver ditunjukkan pada Gambar 3.15.
Gambar 3.15 Rangkaian PWM driver untuk pemanas
Frekuensi gelombang segitiga yang terjadi dapat dihitung dengan menggunakan rumus sebagai berikut :
f
n .................................................................................. (3.2) 4 Ra Ca
f
3 4 x7,2 x105 x10 7
f 10,4 Hz
3.3.6
Mikrokontroller AT89s51 Mikrokontroller AT89s51 digunakan untuk mengatur aliran data dari PC
ke DAC atau dari ADC ke PC. Disamping itu, karena antara komputer dan mikrokontroller dihubungkan secara serial, maka mikrokontroller juga berfungsi untuk mengubah data paralel dari ADC menjadi data serial untuk dikirimkan ke komputer dan mengubah dara serial dari komputer untuk dikirimkan ke DAC. IC RS232
digunakan
sebagai
rangkaian
antarmuka
antara
komputer
dan
mikrokontroller. Desain rangkain komunikasi serial ini ditunjukkan pada Gambar 3.16.
Ke ADC 0804
At89s51
Max 232
Ke DAC 0808
Vcc
Gambar 3.16 Rangkaian minimum mikrokontroller dan RS 232
Diagram alir komunikasi antara PC dan mikrokontroller ditunjukkan pada Gambar 3.17. Saat pertama kali diaktifkan mikrokontroller akan mengeksekusi perintah toggle P1.0 3 kali. Proses ini digunakan untuk indikator bahwa sistem minimum yang digunakan berfungsi. Proses selanjutnya mikrokontroller akan menunggu sampai ada interupsi dari komputer. Jika interupsi berupa data ‘!’, maka mikrokontroller akan mengirimkan data “Koneksi Ok……...!” ke PC sebagai indikator bahwa komunikasi serial sudah bisa berjalan. Jika interupsi berupa data ‘#’, maka mikrokontroller akan mengambil data dari port 2 yang merupakan hasil konversi ADC dan mengirimkannya ke komputer. Jika data interupsi selain ‘!’ dan ‘#’, maka mikrokontroller akan mengirimkan data yang masuk ke register sbuf ke port 0 yang merupakan input DAC. Data ini merupakan data sinyal kontrol yang diberikan ke driver.
Gambar 3.17 Diagram alir komunikasi serial mikrokontroller dan PC
Rutin program assembler yang digunakan untuk komunikasi antara mikrokontroller dengan PC adalah sebagai berikut : ;Program komunikasi serial mikro PC ;Baudrate 9600 dan Mode serial = Mode 0 ;By Amin Fauzan / L2F000571 org 0h sjmp main ;Vektor interupsi serial org 23h sjmp serint org 30h ;Toggle p1.0 3x untuk cek system minimum main: setb p1.0 acall delay acall delay clr p1.0 acall delay acall delay setb p1.0 acall delay acall delay clr p1.0 acall delay acall delay setb p1.0 acall delay acall delay clr p1.0 acall delay acall delay setb p1.0 ;Inisialisasi mode serial dan baudrate mov tmod,#20h mov th1,#0Fdh mov scon,#50h setb tr1 ;Aktifkan interupsi serial awal: setb es setb ea dead: sjmp dead ;Tunggu sampai ada interupsi serint: jb ri,r_cv clr ti reti ;Rutin pelayanan interupsi r_cv:
push psw push acc mov a,sbuf clr ri cjne a,#35,banding mov a,p2 mov sbuf,a sjmp exit banding: cjne a,#'!',send acall deliver sjmp exit send: mov a,sbuf mov p0,a sjmp exit exit: pop acc pop psw reti deliver: mov dptr,#data mov r2,#20 kirim: clr a movc a,@a+dptr mov sbuf,a jnb ti,$ clr ti inc dptr djnz r2,kirim ret ;Rutin delay delay: mov r5,#0ffh delay2: mov r6,#0ffh djnz r6,$ djnz r5,delay2 ret data: db 'Koneksi Ok.........',13,10 end
BAB IV PENGUJIAN DAN ANALISIS
Untuk mengetahui karakteristik dinamis dari plant suhu yang akan dikontrol, dilakukan pengujian secara kalang terbuka. Pengujian dilakukan dengan mengirimkan tegangan tertentu dan mengakuisisi suhu keluaran plant yang terjadi. Hasil pengujian secara kalang terbuka ditunjukkan pada Gambar 4.1. Pengujian secara kalang terbuka menunjukkan bahwa dengan tegangan yang dikirim ke DAC sebesar 1,67 V, plant akan stabil pada suhu 58° C. Dari Gambar 4.1 dapat dihitung konstanta waktu sistem (T), yaitu besarnya waktu yang dibutuhkan oleh respon untuk mencapai suhu keluaran sebesar 0,632 dari suhu keluaran stabilnya atau sekitar (0,632 x (58° C -33° C ) ) + 33° C = 48° C. Hasil akuisisi data menunjukkan bahwa untuk mencapai suhu 48° C dibutuhkan waktu sekitar 40 detik, sehingga konstanta waktu sistem plant suhu yang dikontrol adalah sebesar 40 detik.
Gambar 4.1 Respon plant suhu secara kalang terbuka.
4.1
Pengujian Jaringan Syaraf Tiruan CMAC dan RBF secara On-line Proses pengendalian plant secara on-line diawali dengan proses
pengambilan data keluaran plant dan data referensi, kemudian data tersebut diproses sesuai dengan algoritma kontrol CMAC atau RBF sehingga diperoleh sinyal kontrol untuk plant. Pada tugas akhir ini, algoritma kontrol CMAC dan
RBF dituliskan dalam suatu komponen timer dengan interval waktu 350 ms, sehingga algoritma kontrol CMAC atau RBF tersebut akan dijalankan setiap 350 ms atau dapat dikatakan waktu sampling proses adalah 350 ms. Lama proses komputasi pada kontrol CMAC dan RBF berbeda – beda tergantung pada banyaknya memori yang digunakan dalam proses kontrol. Oleh karena itu, diperlukan pengujian jaringan CMAC dan RBF secara on-line untuk memastikan lama komputasi proses lebih kecil daripada waktu sampling proses tersebut. Pengujian dilakukan dengan menghitung waktu proses yang diperlukan pada proses kontrol dengan jaringan syaraf CMAC dan RBF untuk kebutuhan memori yang berbeda. Pada jaringan syaraf CMAC kebutuhan memori ditentukan oleh parameter generalisasi. Hasil perhitungan waktu proses untuk parameter generalisasi yang berbeda ditunjukkan pada Tabel 4.1. Tabel 4.1 Hubungan antara banyaknya parameter generalisasi yang dipilih terhadap lama proses komputasi.
Jumlah Parameter Generalisasi 10 40 70 100 130
Lama Proses Komputasi (ms) 10,64521888 10,64676842 10,72947912 10,7314682 10,78110579
Pada jaringan syaraf RBF kebutuhan memori ditentukan oleh jumlah fungsi basis yang digunakan. Hasil perhitungan waktu proses untuk jumlah fungsi basis yang berbeda ditunjukkan pada Tabel 4.2. Tabel 4.2 Hubungan antara jumlah fungsi basis yang dipilih terhadap lama proses komputasi.
Jumlah Fungsi Basis 3 6 9 12 15
Lama Proses Komputasi (ms) 10,60441294 10,6397098 10,66818641 10,67345338 10,70400847
4.2
Pengujian Jaringan Syaraf CMAC Pengujian jaringan syaraf CMAC dilakukan untuk mengetahui pengaruh
masing – masing parameter jaringan syaraf CMAC terhadap dinamika respon plant suhu. Untuk parameter jaringan yang sama, pengujian dilakukan dalam 2 keadaan yaitu dengan menggunakan bobot awal dan bobot setelah 2 kali pelatihan.
4.2.1
Pengaruh Laju Konvergensi terhadap Transien Suhu Untuk menunjukkan pengaruh pemilihan nilai laju konvergensi pada
dinamika suhu plant yang dikontrol, dipilih 2 buah nilai laju konvergensi yang relatif berbeda jauh, dengan besar gain proporsional dan generalisasi yang sama. Pada pengujian ini dipilih besar gain proporsional sebesar 1,5, generalisasi 60 dan referensi suhu 50° C. Variasi nilai laju konvergensi yang digunakan adalah 0,1 dan 0,5. Hasil pengujian ditunjukkan pada Gambar 4.2 dan Gambar 4.3. Laju konvergensi yang kecil mengakibatkan sistem lama mencapai keadaan tunak karena proses pembelajaran menjadi relatif lama, sedangkan laju konvergensi yang besar mengakibatkan lonjakan yang besar pada respon transien sistem karena adanya koreksi yang berlebih pada bobot jaringan (over corrected. Penggunaan bobot hasil pelatihan akan meningkatkan unjuk kerja sistem yaitu akan mempercepat waktu penetapan sistem dan mengurangi lonjakan.
(a) Bobot awal nol Gambar 4.2 Respon transien suhu dengan kontrol CMAC untuk referensi 50° C, gain proporsional 1,5, generalisasi 60 dan laju konvergensi 0,1.
(b) Bobot hasil 2 kali pelatihan. Gambar 4.2 Respon transien suhu dengan kontrol CMAC untuk referensi 50° C, gain proporsional 1,5, generalisasi 60 dan laju konvergensi 0,1 (Lanjutan).
(a) Bobot awal nol
(b) Bobot hasil 2 kali pelatihan. Gambar 4.3 Respon transien suhu dengan kontrol CMAC untuk referensi 50° C, gain proporsional 1,5, generalisasi 60 dan laju konvergensi 0,5.
Data parameter unjuk kerja pada pengujian ini ditunjukkan pada Tabel 4.3. Untuk nilai laju konvergensi 0,1, respon sistem mempunyai waktu penetapan sekitar 110 detik. Waktu penetapan dengan nilai laju konvergensi yang relatif kecil ini dapat dipersingkat dengan cara melatih jaringan syaraf CMAC dengan menggunakan bobot hasil pelatihan, sehingga waktu penetapan menjadi lebih singkat yaitu sekitar 16 detik. Untuk laju konvergensi yang relatif besar yaitu 0,5 dengan bobot CMAC awal nol, waktu penetapan respon sekitar 50 detik. Ini berarti laju konvergensi yang besar akan mempercepat waktu penetapan, tetapi respon sistem mengalami lonjakan sebesar 71 %. Penggunaan bobot hasil pelatihan akan mempersingkat waktu penetapan respon menjadi 46 detik dan memperkecil lonjakan transien menjadi 42 %. Tabel 4.3 Data parameter unjuk kerja sistem dengan kontrol CMAC pada referensi 50° C, gain proporsional 1,5, dan generalisasi 60.
Parameter Unjuk Kerja
Laju konvergensi = 0,1 Gain proporsional = 1,5 Generalisasi = 60 Bobot awal nol Bobot hasil latih
Laju konvergensi = 0,5 Gain proporsional = 1,5 Generalisasi = 60 Bobot awal nol Bobot hasil latih
Waktu penetapan
110 detik
16 detik
50 detik
46 detik
Overshoot transient
-
-
71 %
41 %
4.2.2
Pengaruh Gain Proporsional terhadap Transien Suhu Keluaran CMAC merupakan fungsi dari keluaran gain proporsional.
Keluaran gain proporsional digunakan sebagai data latih jaringan syaraf CMAC, sehingga nilai gain proporsinal yang dipilih akan mempengaruhi keluaran CMAC. Untuk memperlihatkan pengaruh pemilihan nilai gain proporsional, pada pengujian ini dipilih 2 buah nilai gain yang besarnya relatif berbeda, dengan besar nilai laju konvergensi dan besar parameter generalisasi yang sama. Pada pengujian ini dipilih referensi suhu 50° C, generalisasi 60 dan laju konvergensi 0,1. Variasi nilai gain proporsional yang digunakan adalah 0,5 dan 4. Hasil pengujian pengaruh pemilihan gain proporsional terhadap transien suhu ditunjukkan pada Gambar 4.4 dan Gambar 4.5. Hasil pengujian
menunjukkan bahwa gain proporsinal berpengaruh terhadap waktu penetapan dan waktu naik respon. Semakin besar gain proporsinal yang dipilih, maka semakin cepat waktu penetapan dan waktu naik respon. Waktu naik respon yang cepat pada transien disebabkan oleh sinyal kontrol yang cukup besar pada saat awal. Sinyal
kontrol
ini
berasal
dari
keluaran
gain
proporsional.
Sebagai
konsekuensinya, respon sistem akan mengalami lonjakan. Penggunaan bobot hasil pelatihan hanya mempercepat waktu naik respon.
(a) Bobot awal nol
(b) Bobot hasil 2 kali pelatihan Gambar 4.4 Respon transien suhu dengan kontrol CMAC untuk referensi 50° C, generalisasi 60, laju konvergensi 0,1 dan gain proporsional 0,5.
(a) Bobot awal nol
(b)Bobot hasil 2 kali pelatihan Gambar 4.5 Respon transien suhu dengan kontrol CMAC untuk referensi 50° C, generalisasi 60, laju konvergensi 0,1 dan gain proporsional 4.
Data parameter unjuk kerja pada pengujian ini ditunjukkan pada Tabel 4.4. Untuk gain proporsional sebesar 0,5 dan bobot awal jaringan CMAC nol, respon sistem memiliki waktu penetapan sekitar 96 detik. Penggunaan bobot hasil pelatihan tidak meningkatkan unjuk kerja, tetapi memperbesar waktu penetapan menjadi 125 detik dan menimbulkan lonjakan respon sebesar 12 %. Pemberian nilai gain proporsional yang relatif besar pada kontrol CMAC yaitu 4 dengan bobot awal nol, membuat keluaran plant mempunyai waktu penetapan sekitar 40 detik. Ini berarti bahwa pemberian gain proporsional yang besar akan mempercepat waktu penetapan, tetapi akan menimbulkan lonjakan respon yang besar.
Tabel 4.4 Data parameter unjuk kerja sistem dengan kontrol CMAC pada referensi 50° C, laju konvergensi 0,1, dan generalisasi 60.
Parameter Unjuk Kerja
Laju konvergensi = 0,1 Gain proporsional = 0,5 Generalisasi = 60 Bobot awal nol Bobot hasil latih
Laju konvergensi = 0,1 Gain proporsional = 4 Generalisasi = 60 Bobot awal nol Bobot hasil latih
Waktu penetapan
96 detik
125 detik
40 detik
37 detik
Overshoot transien
-
12 %
17 %
23 %
4.2.3
Pengaruh Generalisasi terhadap Transien Suhu Untuk mengetahui pengaruh nilai generalisasi terhadap transien suhu
dilakukan pengujian dengan referensi, gain proporsional dan laju konvergensi yang tetap serta variasi terhadap nilai generalisasi. Pada pengujian ini digunakan referensi 50, gain proporsional 2, laju konvergensi 0,1 dan variasi nilai generalisasi yang dipilih adalah 30 dan 150. Hasil pengujian ditunjukkan pada Gambar 4.6 dan Gambar 4.7. Hasil pengujian menunjukkan bahwa untuk generalisasi yang kecil yaitu 30, respon sistem mempunyai waktu penetapan yang lebih singkat dan tidak ada lonjakan pada respon transiennya. Untuk nilai generalisasi yang besar, respon sistem mengalami lonjakan dan mempunyai waktu penetapan yang lebih lama. Penggunaan bobot hasil pelatihan akan mempersingkat waktu penetapan respon dan mengurangi lonjakan yang terjadi.
(a) Bobot awal nol Gambar 4.6 Respon transien suhu dengan kontrol CMAC untuk referensi 50° C, laju konvergensi 0,1, gain proporsional 2 dan generalisasi 30.
(b)Bobot hasil 2 kali pelatihan Gambar 4.6 Respon transien suhu dengan kontrol CMAC untuk referensi 50° C, laju konvergensi 0,1, gain proporsional 2 dan generalisasi 30 (Lanjutan).
(a) Bobot awal nol
(b)Bobot hasil 2 kali pelatihan Gambar 4.7 Respon transien suhu dengan kontrol CMAC untuk referensi 50° C, laju konvergensi 0,1, gain proporsional 2 dan generalisasi 30.
Data parameter unjuk kerja pada pangujian ditunjukkan pada Tabel 4.5. Untuk bobot CMAC awal nol dengan generalisasi 30, respon sistem memiliki waktu penetapan sekitar 47 detik. Penggunaan bobot hasil pelatihan akan memperkecil waktu penetapan menjadi sekitar 23 detik, tetapi menimbulkan lonjakan respon sebesar 6 %. Pemilihan nilai generalisasi yang besar yaitu 150 akan memperbesar waktu penetapan menjadi sebesar 68 detik dan lonjakan respon sebesar 23 %. Penggunaan bobot hasil pelatihan tidak berpengaruh terhadap waktu penetapan dan lonjakan respon. Tabel 4.5 Data parameter unjuk kerja sistem dengan kontrol CMAC pada referensi 50° C ,laju konvergensi 0,1, dan gain proporsional 2.
Parameter Unjuk Kerja Waktu penetapan Overshoot transien
4.3
Laju konvergensi = 0,1 Gain proporsional = 2 Generalisasi = 30 Bobot awal nol Bobot hasil latih
Laju konvergensi = 0,1 Gain proporsional = 2 Generalisasi = 150 Bobot awal nol Bobot hasil latih
47 detik
23 detik
62 detik
63 detik
-
6%
23 %
23 %
Pengujian Jaringan Syaraf RBF Pengujian jaringan syaraf RBF dilakukan untuk mengetahui pengaruh
masing – masing parameter jaringan syaraf RBF terhadap dinamika respon sistem. Untuk parameter jaringan yang sama, pengujian dilakukan dalam 2 keadaan yaitu dengan menggunakan bobot awal dan bobot setelah 2 kali pelatihan.
4.3.1
Pengaruh Laju Konvergensi terhadap Transien Suhu Untuk menunjukkan pengaruh langsung pemilihan nilai laju konvergensi
pada dinamika suhu plant yang dikontrol, dipilih 2 buah nilai laju konvergensi yang relatif berbeda, dengan besar gain proporsional dan jumlah fungsi basis yang sama. Pada pengujian ini dipilih besar gain proporsional sebesar 1,5, jumlah fungsi basis 5 dan referensi suhu 50° C. Variasi nilai laju konvergensi yang digunakan adalah 0,1 dan 0,5.
Hasil pengujian ditunjukkan pada Gambar 4.8 dan Gambar 4.9. Hasil pengujian menunjukkan bahwa laju konvergensi yang kecil mengakibatkan sistem lama mencapai keadaan tunak karena proses pembelajaran menjadi relatif lama, sedangkan laju konvergensi yang besar mengakibatkan lonjakan yang besar pada respon transien sistem. Lonjakan yang besar disebabkan oleh adanya koreksi yang berlebih pada bobot jaringan (over corrected). Sinyal kontrol yang diberikan ke plant mengalami kenaikan yang besar akibat keluaran jaringan RBF mengalami kenaikan yang besar.
(a) Bobot awal nol
(b) Bobot hasil 2 kali pelatihan Gambar 4.8 Respon transien suhu dengan kontrol RBF untuk nilai referensi 50° C , gain proporsional 1,5, jumlah fungsi basis 5 dan laju konvergensi 0,1
(a) Bobot awal nol
(b) Bobot hasil 2 kali pelatihan Gambar 4.9 Respon transien suhu dengan kontrol RBF untuk nilai referensi 50° C, gain proporsional 1,5, jumlah fungsi basis 5 dan laju konvergensi 0,5.
Data parameter unjuk kerja pada pengujian ini ditunjukkan pada Tabel 4.6. Untuk nilai laju konvergensi yang relatif kecil yaitu 0,1 dan bobot RBF awal sama dengan nol, respon suhu plant mempunyai waktu penetapan sekitar 116 detik. Penggunaan bobot hasil pelatihan memperbesar waktu penetapan respon menjadi sekitar 125 detik dan menimbulkan lonjakan sebesar 12 %. Untuk laju konvergensi yang relatif besar yaitu 0,5 dengan bobot RBF awal nol, waktu penetapan keluaran lebih cepat dibandingkan dengan nilai laju konvergensi yang kecil yaitu sekitar 63 detik, tetapi respon sistem mengalami lonjakan sebesar 17 %. Penggunaan bobot hasil pelatihan mempercepat waktu penetapan menjadi sekitar 55 detik , tetapi memperbesar lonjakan menjadi 23 %.
Tabel 4.6 Data parameter unjuk kerja sistem dengan kontrol RBF pada referensi 50° C, gain proporsional 1,5, dan jumlah fungsi basis 5.
Parameter Unjuk Kerja Waktu penetapan Overshoot transien
4.3.2
Laju konvergensi = 0,1 Gain proporsional = 1,5 Jumlah fungsi basis = 5 Bobot awal nol Bobot hasil latih
Laju konvergensi = 0,5 Gain proporsional = 1,5 Jumlah fungsi basis = 5 Bobot awal nol Bobot hasil latih
116 detik
125 detik
63 detik
55 detik
-
12 %
17 %
23 %
Pengaruh Gain Proporsional terhadap Transien Suhu Gain proporsional berpengaruh terhadap keluaran jaringan RBF. Hal ini
karena keluaran gain proporsional digunakan sebagai data untuk melatih jaringan RBF. Untuk memperlihatkan pengaruh pemilihan nilai gain proporsional, pada pengujian ini dipilih 2 buah nilai gain yang besarnya relatif berbeda dengan besar nilai laju konvergensi dan jumlah fungsi basis yang sama. Pada pengujian ini dipilih referensi suhu 50° C, jumlah fungsi basis 5 dan laju konvergensi 0,1. Variasi nilai gain proporsional yang digunakan adalah 0,5 dan 4. Hasil pengujian ini ditunjukkan pada Gambar 4.10 dan Gambar 4.11. Gain proporsional berpengaruh terhadap waktu naik dan waktu penetapan respon. Semakin besar gain proporsional yang dipilih, waktu naik dan waktu penetapan respon akan semakin cepat.
(a) Bobot awal nol Gambar 4.10 Respon transien suhu dengan kontrol RBF untuk nilai referensi 50° C , jumlah fungsi basis 5, laju konvergensi 0,1 dan gain proporsional 0,5.
(b) Bobot hasil 2 kali pelatihan Gambar 4.10 Respon transien suhu dengan kontrol RBF untuk nilai referensi 50° C , jumlah fungsi basis 5, laju konvergensi 0,1 dan gain proporsional 0,5 (Lanjutan).
(a) Bobot awal nol
(b)Bobot hasil 2 kali pelatihan Gambar 4.11 Respon transien suhu dengan kontrol RBF untuk nilai referensi 50° C, jumlah fungsi basis 5, laju konvergensi 0,1 dan gain proporsional 4.
Data parameter unjuk kerja pada pengujian ini ditunjukkan pada Tabel 4.7. Untuk gain proporsional yang kecil yaitu 0,5 dan bobot awal nol, respon transien sistem memiliki waktu penetapan sekitar 137 detik dan tanpa lonjakan. Penggunaan bobot hasil pelatihan memperbesar waktu penetapan menjadi 152 detik dan menimbulkan lonjakan respon sebesar 12 %. Untuk nilai gain proporsional yang relatif lebih besar pada kontrol RBF yaitu 4 dan bobot awal nol, waktu penetapan respon lebih singkat dibandingkan dengan gain proporsional yang kecil yaitu menjadi sekitar 51 detik Penggunaan bobot hasil pelatihan memperbesar waktu penetapan menjadi sekitar 75 detik dan menimbulkan lonjakan sebesar 12 %. Tabel 4.7 Data parameter unjuk kerja sistem dengan kontrol RBF pada referensi 50° C, gain proporsional 1,5, dan jumlah fungsi basis 5.
Parameter Unjuk Kerja
Laju konvergensi = 0,1 Gain proporsional = 0,5 Jumlah fungsi basis = 5 Bobot awal nol Bobot hasil latih
Laju konvergensi = 0,1 Gain proporsional = 0,5 Jumlah fungsi basis = 5 Bobot awal nol Bobot hasil latih
Waktu penetapan
137 detik
152 detik
51 detik
75 detik
Overshoot transien
-
12 %
-
12 %
4.3.3
Pengaruh Jumlah Fungsi Basis terhadap Transien Suhu Untuk mengetahui pengaruh jumlah fungsi basis terhadap transien suhu
dilakukan pengujian dengan pemilihan 2 buah jumlah fungsi basis yang berbeda dan laju konvergensi serta gain proporsional yang sama. Pada pengujian ini digunakan referensi suhu 50º C, gain proporsional 2, laju konvergensi 0,1 dan variasi jumlah fungsi basis yang digunakan adalah 3 dan 8. Hasil pengujian ditunjukkan oleh Gambar 4.12 dan Gambar 4.13. Untuk jumlah fungsi basis sedikit respon sistem mempunyai waktu penetapan yang lebih singkat dan tidak ada lonjakan pada respon transiennya. Untuk jumlah fungsi basis yang lebih banyak, respon sistem mengalami lonjakan dan mempunyai waktu penetapan yang lebih lama.
(a) Bobot awal nol
(b)Bobot hasil 2 kali pelatihan Gambar 4.12 Respon transien suhu dengan kontrol RBF untuk referensi 50° C, laju konvergensi 0,1, gain proporsional 2 dan jumlah fungsi basis 3.
(a) Bobot awal nol Gambar 4.13 Respon transien suhu kontrol RBF untuk referensi 50° C, laju konvergensi 0,1, gain proporsional 2 dan junlah fungsi basis 8
(b)Bobot hasil 2 kali pelatihan. Gambar 4.13 Respon transien suhu kontrol RBF untuk referensi 50° C, laju konvergensi 0,1, gain proporsional 2 dan junlah fungsi basis 8 (Lanjutan).
Data parameter unjuk kerja pada pangujian ini ditunjukkan pada Tabel 4.8. Untuk bobot-bobot RBF awal nol dan jumlah fungsi basis 3, respon transien suhu memiliki waktu penetapan sekitar 37 detik dan tanpa lonjakan. Penggunaan bobot hasil pelatihan akan memperkecil waktu penetapan menjadi sekitar 25 detik. Pemilihan jumlah fungsi basis yang banyak dalam hal ini 8 akan memperbesar waktu penetapan sistem menjadi sebesar 60 detik dan lonjakan respon sebesar 12 %. Penggunaan bobot hasil pelatihan tidak banyak berpengaruh terhadap waktu penetapan dan lonjakan respon.
Tabel 4.8 Data parameter unjuk kerja sistem dengan kontrol RBF pada referensi 50° C, laju konvergensi 0,1, dan gain proporsional 2.
Parameter Unjuk Kerja
Laju konvergensi = 0,1 Gain proporsional = 2 Jumlah fungsi basis = 3 Bobot awal nol Bobot hasil latih
Laju konvergensi = 0,1 Gain proporsional = 2 Jumlah fungsi basis = 8 Bobot awal nol Bobot hasil latih
Waktu penetapan
37 detik
25 detik
60 detik
60 detik
Overshoot transien
-
-
12 %
12 %
4.4
Perbandingan Unjuk Kerja Jaringan Syaraf CMAC dan RBF Untuk membandingkan unjuk kerja jaringan syaraf CMAC dan jaringan
syaraf RBF perlu diperhatikan hal – hal sebagai berikut : 1. Struktur pengendalian yang digunakan harus sama. Struktur yang digunakan adalah Fixed Stabilising Controller. 2. Nilai gain proporsional dan laju konvergensi yang digunakan pada kedua jaringan harus sama. 3. Kedua jaringan harus mempunyai respon yang optimal untuk nilai gain proporsional dan laju konvergensi yang dipilih. Karena kedua paramater jaringan yaitu gain proporsional dan laju konvergensi yang dipilih sama, maka kondisi optimal ini ditentukan oleh pemilihan parameter generalisasi pada jaringan CMAC dan jumlah fungsi basis yang digunakan pada jaringan RBF yang tepat. Pemilihan parameter generalisasi dan jumlah fungsi basis tersebut dilakukan secara trial and error sehingga diperoleh respon sistem yang optimal. Pemilihan gain proporsional dan laju konvergensi kedua jaringan dilakukan secara acak namun dengan mempertimbangkan pengaruh masing – masing parameter tersebut terhadap transien respon suhu yang terjadi. Pada pengujian ini dipilih nilai laju konvergensi sebesar 0,1 dan gain proporsional sebesar 2. Dari hasil trial and error diperoleh bahwa untuk nilai laju konvergensi dan gain proporsional tersebut, parameter generalisasi yang tepat adalah sebesar 25 sedangkan jumlah fungsi basis yang tepat adalah 5.
4.4.1
Pengujian Pengaruh Pembelajaran Untuk menguji pengaruh bobot pembelajaran pada respon sistem
dilakukan pengujian dengan cara mengubah referensi sistem pada 2 setting yang berbeda beberapa kali. Dari grafik respon akan diperoleh perbedaan respon kedua jaringan antara respon jaringan dengan bobot awal nol dan respon jaringan dengan menggunakan bobot hasil pelatihan. Pada pengujian ini referensi sistem diubah pada nilai 40° C dan 70° C.
Gambar 4.14 Pengujian untuk mengetahui pengaruh bobot pembelajaran terhadap transien suhu pada kontrol CMAC.
Gambar 4.15 Pengujian untuk mengetahui pengaruh bobot pembelajaran terhadap transien suhu pada kontrol RBF.
Hasil pengujian ditunjukkan pada Gambar 4.14 dan Gambar 4.15. Pada jaringan CMAC saat pengujian dengan bobot awal nol dan referensi 70° C, respon mempunyai waktu penetapan sebesar 111 detik tanpa lonjakan dan ketika referensi diubah memjadi 40° C respon mempunyai waktu penetapan sebesar 128 detik dengan undershoot sebesar 10 %. Pada referensi 70° C yang kedua waktu penetapan respon menjadi 21 detik atau 81% lebih cepat daripada yang pertama, dan saat diberi referensi 40° C respon mempunyai waktu penetapan sebesar 94 detik atau 26,5 % lebih cepat dari yang pertama dengan lonjakan sebesar 3 %. Pada jaringan RBF saat pengujian dengan bobot awal nol dan referensi 70° C, respon mempunyai waktu penetapan sebesar 40 detik tanpa
lonjakan dan ketika referensi diubah menjadi 40° C respon mempunyai waktu penetapan sebesar 116 detik dengan undershoot sebesar 13 %. Pada saat diberi referensi 70° C dan 40° C lagi respon relatif berubah. Kesimpulan yang diperoleh dari pengujian ini adalah respon jaringan syaraf CMAC dengan menggunakan bobot pelatihan akan menjadi semakin baik, sedangkan pada jaringan syaraf RBF respon sistem akan relatif sama. Hal ini karena pada jaringan CMAC ketika menerima referensi yang baru, maka jaringan akan mengambil bobot – bobot tertentu sesuai dengan memori yang aktifkan akibat referensi baru tersebut, sedangkan pada jaringan RBF setiap masukan yang baru ia akan mengaktifkan seluruh fungsi basis yang berarti ketika ada referensi baru maka bobot yang digunakan adalah bobot hasil pelatihan terakhir.
4.4.2
Pengujian Referensi Naik Untuk mengetahui kemampuan jaringan dalam mengikuti perubahan
referensi naik dilakukan pengujian dengan memberikan referensi yang berubah naik pada beberapa tahap. Perubahan referensi dilakukan setelah respon mencapai keadaan tunak. Pada pengujian ini dilakukan perubahan referensi mulai dari 33° C, 50° C, 70° C dan 90° C. Hasil pengujian ditunjukkan pada Gambar 4.16 dan Gambar 4.17. Hasil pengujian menunjukkan bahwa pada saat digunakan bobot awal jaringan nol, ketika referensi dinaikkan kedua jaringan mampu mengikuti perubahan referensi naik. Dengan menggunakan bobot hasil pelatihan waktu penetapan tiap perubahan referensi pada jaringan syaraf CMAC akan semakin cepat, tetapi pada jaringan syaraf RBF penggunaan bobot hasil pelatihan hanya berpengaruh pada respon awal yaitu saat referensi 50° C. Respon suhu mengalami lonjakan yang besar. Pada saat bobot hasil pelatihan digunakan, maka jaringan menggunakan bobot terakhir yang disimpannya yaitu bobot untuk referensi terakhir yang diberikan yaitu 90° C. Sinyal kontrol yang berasal dari keluaran jaringan RBF cukup besar karena bobot awal yang digunakan adalah bobot untuk menghasilkan sinyal kontrol pada referensi 90° C.
(a) Bobot awal
(b) Bobot hasil 2 kali pelatihan Gambar 4.16 Pengujian referensi naik dengan jaringan syaraf CMAC.
(a) Bobot awal Gambar 4.17 Pengujian referensi naik dengan jaringan syaraf RBF.
(b) Bobot hasil 2 kali pelatihan Gambar 4.17 Pengujian referensi naik dengan jaringan syaraf RBF (Lanjutan).
4.4.3
Pengujian Referensi Turun Untuk mengetahui kemampuan jaringan dalam mengikuti perubahan
referensi turun dilakukan pengujian dengan memberikan referensi yang berubah turun pada beberapa tahap. Perubahan referensi dilakukan setelah respon mencapai keadaan tunak. Pada pengujian ini dilakukan perubahan referensi mulai dari 33° C, 90° C, 70° C dan 50° C. Hasil pengujian pada jaringan syaraf CMAC ditunjukkan pada Gambar 4.18 dan hasil pengujian pada jaringan syaraf RBF ditunjukkan pada Gambar 4.19. Hasil pengujian menunjukkan bahwa pada saat digunakan bobot awal nol, ketika referensi diturunkan kedua jaringan mampu mengikuti perubahan referensi turun. Pada jaringan syaraf CMAC ketika mengikuti perubahan referensi turun, respon akan mengalami undershoot sedangkan pada jaringan syaraf RBF tidak mengalami undershoot. Dengan menggunakan bobot hasil pelatihan undershoot pada jaringan syaraf CMAC dapat dihilangkan sehinggga jaringan mampu mengikuti perubahan referensi dengan baik, tetapi pada jaringan syaraf RBF penggunaan bobot hasil pelatihan hanya berpengaruh pada respon awal yaitu pada saat setting referensi 90° C. Jika dibandingkan respon kedua jaringan setelah mengalami pelatihan, tampak bahwa respon jaringan syaraf CMAC mempunyai waktu penetapan yang lebih singkat daripada jaringan syaraf RBF.
(a) Bobot awal
(b) Bobot hasil 2 kali pelatihan Gambar 4.18 Pengujian referensi turun dengan jaringan syaraf CMAC.
(a) Bobot awal Gambar 4.18 Pengujian referensi turun dengan jaringan syaraf RBF.
(b) Bobot hasil 2 kali pelatihan Gambar 4.18 Pengujian referensi turun dengan jaringan syaraf RBF (Lanjutan).
4.4.4
Pengujian Gangguan Untuk mengetahui unjuk kerja jaringan syaraf CMAC dan RBF dalam
merespon gangguan dari luar dilakukan pengujian dengan memberikan gangguan pada referensi suhu 60° C. Setelah respon suhu mencapai referensi yang diberikan, kipas yang akan menyerap udara ke luar dinyalakan sehingga suhu plant akan turun. Gangguan dihilangkan setelah respon kembali ke keadaan referensi semula.
(a) Bobot awal Gambar 4.20 Pengujian gangguan pada jaringan syaraf CMAC.
(b) Bobot hasil 2 kali pelatihan Gambar 4.20 Pengujian gangguan pada jaringan syaraf CMAC (Lanjutan).
(a) Bobot awal
(b) Bobot hasil 2 kali pelatihan Gambar 4.2 1 Pengujian gangguan pada jaringan syaraf RBF.
Hasil pengujan pada jaringan syaraf CMAC ditunjukkan pada Gambar 4.20 dan hasil pengujian pada jaringan syaraf RBF ditunjukkan pada Gambar 4.21. Hasil pengujian menunjukkan bahwa pada referensi 60° C ketika diberikan gangguan, respon suhu dengan kontrol jaringan syaraf CMAC akan mengalami penurunan suhu maksimum sebesar sebesar 2° C dan membutuhkan waktu sekitar 33 detik untuk mengatasi gangguan tersebut. Ketika gangguan dihilangkan respon akan mengalami kenaikan suhu maksimum sebesar 1° C dan membutuhkan waktu sekitar 33 detik untuk mengatasi gangguan. Pada jaringan syaraf RBF ketika diberikan gangguan, respon sistem akan mengalami penurunan suhu maksimum sebesar 3° C
dan membutuhkan waktu sebesar
57 detik untuk mengatasi
gangguan tersebut, sedangkan jika gangguan dihilangkan respon sistem akan mengalami lonjakan suhu maksimum sebesar 3° C dan membutuhkan waktu sekitar 66 detik untuk kembali ke keadaan referensi. Penggunaan bobot hasil pelatihan pada jaringan CMAC akan mengurangi penurunan suhu ketika diberikan gangguan dan mempercepat waktu untuk mengatasi gangguan tersebut yaitu menjadi sekitar 18 detik pada saat diberi gangguan dan 13 detik pada saat gangguan dihilangkan. Pada jaringan syaraf RBF pengunaan bobot hasil pelatihan ini tidak banyak berpengaruh terhadap respon sistem. Data parameter unjuk kerja pada pengujian ini ditunjukkan pada Tabel 4.9. Tabel 4.9 Data unjuk kerja jaringan syaraf CMAC dan RBF terhadap pengujain gangguan.
Pengujian
Pemberian Gangguan
Parameter Kerja
Jaringan Unjuk CMAC Bobot Awal
Syaraf Jaringan RBF
Syaraf
Bobot Bobot Pelatihan Awal
Bobot Pelatihan
Waktu untuk mengatasi gangguan
33 detik
18 detik
57 detik
77 detik
Lonjakan suhu maksimum
2° C
1° C
3° C
3° C
33 detik
13 detik
66 detik
73 detik
1° C
1° C
3° C
4° C
Waktu untuk Penghilangan mengatasi gangguan Gangguan Lonjakan suhu maksimum
Dari keempat pengujian untuk perbandingan unjuk kerja jaringan syaraf CMAC dan RBF diatas dapat disimpulkan hal – hal sebagai berikut : 1. Pada jaringan syaraf CMAC penggunaan bobot hasil pelatihan akan meningkatkan unjuk kerja sistem baik terhadap referensi tetap, perubahan referensi maupun gangguan. Pada jaringan syaraf RBF penggunaan bobot hasil pelatihan tidak banyak berpengaruh dalam memperbaiki unjuk kerja sistem. 2. Jaringan syaraf CMAC mempunyai unjuk kerja yang lebih baik dalam mengatasi gangguan karena penurunan suhu akibat pemberian gangguan dan lonjakan suhu akibat gangguan dihilangkan lebih kecil daripada jaringan RBF. Disamping itu, waktu yang dibutuhkan untuk mengatasi gangguan dan kembali pada referensi semula lebih cepat. 3. Secara
keseluruhan
jaringan
syaraf
CMAC
mempunyai
proses
pembelajaran yang lebih cepat dibandingkan dengan jaringan syaraf RBF.
BAB V PENUTUP
5.1
Kesimpulan Berdasarkan hasil pengujian yang dilakukan didapatkan hal-hal penting
sebagai berikut: 1.
Kestabilan respon keluaran suhu plant akan sangat tergantung terhadap
pemilihan parameter-parameter kendali CMAC dan RBF , yaitu besarnya laju konvergensi, gain proporsional, besarnya parameter generalisasi dan serta jumlah fungsi basis yang digunakan. 2.
Pemilihan laju konvergensi yang relatif lebih besar akan menyebabkan
keluaran transien mengalami overshoot, overshoot akan semakin tinggi untuk laju konvergensi yang semakin besar. Hal yang sama terjadi pada pemilihan besarnya gain proporsional. Semakin besar gain, transien suhu plant akan mengalami overshoot. 3.
Dari hasil trial and error pemilihan acak gain proporsional sebesar 2 dan
laju konvergensi sebesar 0,1 memberikan kondisi optimal pada jaringan CMAC untuk generalisasi 25 dan pada jaringan syaraf RBF untuk jumlah fungsi basis 5. 4.
Pada jaringan syaraf CMAC penggunaan bobot hasil pelatihan akan
meningkatkan unjuk kerja sistem baik terhadap referensi tetap, perubahan referensi maupun gangguan. Pada jaringan syaraf RBF penggunaan bobot hasil pelatihan tidak banyak berpengaruh dalam memperbaiki unjuk kerja sistem. 5.
Jaringan syaraf CMAC mempunyai unjuk kerja yang lebih baik dalam
mengatasi gangguan karena penurunan suhu akibat pemberian gangguan dan lonjakan suhu akibat gangguan dihilangkan lebih kecil daripada jaringan RBF. Disamping itu, waktu yang dibutuhkan untuk mengatasi gangguan dan kembali pda referensi semula lebih cepat. 6.
Secara keseluruhan jaringan syaraf CMAC mempunyai proses pembelajaran
yang lebih cepat dibandingkan dengan jaringan syaraf RBF.
5.2 1.
Saran Untuk lebih memperbesar range pengaturan suhu sebaiknya digunakan
peralatan interface yang mempunyai resolusi yang lebih besar. 2.
Untuk meningkatkan proses pembelajaran, dimensi jaringan syaraf dapat
dinaikkan dengan menambahkan masukan berupa perubahan suhu yang terjadi pada plant 3.
Untuk meningkatkan performansi sistem dapat ditambahkan pengaturan
kecepatan kipas pendingin sehingga sistem mepunyai 2 keluaran yaitu pemanas dan kecepatan kipas pendingin.
DAFTAR PUSTAKA
(1)
Albus, A New Approach to Manipulator Control : The Cerrebellar Model Articulation Controller (CMAC), IEEE Journal.
(2)
Astrom, John and Bjorn Wittenmark, Adaptive Control, Addison-Wesley Publishing Company, Inc.
(3)
Brown, Martin and Harris, Neurofuzzy Adaptive Modelling and Control, Prentice Hall Inc, 1994.
(4)
Coughlin, Robert and Federick Driscoll, Penguat Operasional dan Rangkaian Terpadu Linier, Jakarta : Erlangga.
(5)
Haykin, Simon, Neural Nerworks- A Comprehensive Foundation, Macmillan Colege-Publishing Company Inc, 1994.
(6)
Kraff, Gordon and David Campagna, A Comparison Between CMAC Neural Network Control and Two Traditional Adaptive Control Systems, Papers
(7)
Malvino, Prinsip – Prinsip Elektronika, Jakarta : Erlangga, 1996.
(8)
Ogata, Katsuhiko, Teknik Kontrol Otomatik, Jilid 1, Erlangga, Jakarta, 1991.
(9)
Setiawan, Iwan. Pengaturan Kecepatan Motor DC dengan Kendali CMAC secara On-line. Jurusan Teknik Elektro Fakultas Teknik Universitas Gajah Mada Yogyakarta.
(10)
Widrow and Lehr,30 Years of Adaptive Neural Network : Perceptron, Madaline and Backpropagation, IEEE Journal.
(11)
...............,http://www.princeton.edu/~kung/ele571/30supervised-BP.ppt
(12)
...............,http://www.nada.kth.se/kurser/kth/2D1432/2004/rbf.pdf
(13)
...............,www-2.cs.cmu.edu/afs/cs.cmu.edu/project/ ai-repository/ai/ areas/neural/systems/cmac/cmac.txt
(14)
...............,www.computing.surrey.ac.uk/courses/ csm10/NeuralNetworks/ RBFNetworks.ppt
(15)
...............,www.data2money.com/PDF/RBFpaper.pdf
(16)
...............,www.ece.unh.edu/robots/cmacdemo.c
(17)
...............,www.icaen.uiowa.edu/~comp/Public/NeuralN.pdf
LAMPIRAN A SENARAI PROGRAM
A.1
Form Loading (Fload)
unit Uload; interface uses Windows, Messages, Controls, Forms, ComCtrls,math;
SysUtils, Dialogs,
Variants, Classes, jpeg, ExtCtrls,
Graphics, StdCtrls,
type TFload = class(TForm) Image1: TImage; Image3: TImage; ProgressBar1: TProgressBar; Label2: TLabel; Label3: TLabel; Timer1: TTimer; Label4: TLabel; Label5: TLabel; Label1: TLabel; Label6: TLabel; Label7: TLabel; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; TCloseAction); procedure Timer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } end;
var
Action:
var Fload: TFload; posisi:integer; implementation uses Ujst; {$R *.dfm} procedure TFload.FormCreate(Sender: TObject); begin Timer1.Enabled:=true; posisi:=0; end; procedure TFload.FormClose(Sender: TCloseAction); begin Timer1.Enabled:=false; end;
TObject;
procedure TFload.Timer1Timer(Sender: TObject); begin posisi:= posisi + 1;
var
Action:
ProgressBar1.Position:=posisi; if posisi = 100 then begin Fload.Hide; Fjst.Show; sleep(100); end; end; end.
A.2
Form Utama (Fjst)
unit Ujst; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, Menus, StdCtrls, Buttons, ExtCtrls, TeEngine, Series, TeeProcs,Chart,math, ExtDlgs, CPDrv, jpeg, IdGlobal; type TFjst = class(TForm) MainMenu1: TMainMenu; File1: TMenuItem; Controller1: TMenuItem; Setting1: TMenuItem; Test1: TMenuItem; Online1: TMenuItem; Other1: TMenuItem; LoadWeight1: TMenuItem; LoadPicture1: TMenuItem; SaveWeight1: TMenuItem; SavePicture1: TMenuItem; Exit1: TMenuItem; Test1: TMenuItem; CMAC1: TMenuItem; RBF1: TMenuItem; CloseLoop1: TMenuItem; CMACParameters1: TMenuItem; RBFParameters1: TMenuItem; Connect1: TMenuItem; Disconnect1: TMenuItem; Reset1: TMenuItem; About1: TMenuItem; Help1: TMenuItem; Shape1: TShape; Label3: TLabel; Edit1: TEdit; Label4: TLabel; BitBtn1: TBitBtn; BitBtn2: TBitBtn; BitBtn3: TBitBtn; Chart1: TChart; Series1: TLineSeries;
ScrollBar1: TScrollBar; Timer_cmac: TTimer; Timer_rbf: TTimer; Edit3: TEdit; Label5: TLabel; SaveDialog1: TSaveDialog; Timer_clp: TTimer; OpenDialog1: TOpenDialog; Series3: TLineSeries; OpenPictureDialog1: TOpenPictureDialog; Setting2: TMenuItem; serial: TCommPortDriver; Timer_akuisisi: TTimer; Image1: TImage; Shape3: TShape; Shape5: TShape; Timer_monitor: TTimer; Button1: TButton; OpenLoop1: TMenuItem; SaveData1: TMenuItem; Button2: TButton; Timer_clock: TTimer; Shape2: TShape; procedure Test1Click(Sender: TObject); procedure CMACParameters1Click(Sender: TObject); procedure RBFParameters1Click(Sender: TObject); procedure LoadPicture1Click(Sender: TObject); procedure About1Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure CMAC1Click(Sender: TObject); procedure RBF1Click(Sender: TObject); procedure CloseLoop1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Timer_cmacTimer(Sender: TObject); procedure ScrollBar1Change(Sender: TObject); procedure Connect1Click(Sender: TObject); procedure Disconnect1Click(Sender: TObject); procedure Reset1Click(Sender: TObject); procedure BitBtn4Click(Sender: TObject); procedure SaveWeight1Click(Sender: TObject); procedure Timer_rbfTimer(Sender: TObject); procedure BitBtn1Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); procedure BitBtn3Click(Sender: TObject); procedure LoadWeight1Click(Sender: TObject); procedure SavePicture1Click(Sender: TObject); procedure Exit1Click(Sender: TObject); procedure Setting2Click(Sender: TObject); procedure Timer_clpTimer(Sender: TObject); procedure Timer_akuisisiTimer(Sender: TObject); procedure serialReceiveData(Sender: TObject; DataPtr: Poin ter;DataSize: Cardinal); procedure Timer_monitorTimer(Sender: TObject); procedure OpenLoop1Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure SaveData1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Timer_clockTimer(Sender: TObject);
procedure Help1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; const graph_maks = 15; ukuran = 4098; suhu_maks = 150; pembagi = 30; batas_maks = 15; var Fjst: TFjst; cmac,rbf,closeloop,openloop : boolean; i,j:integer; datax,panjang:real; maksek,out_rbf,dy,dx,referensi,gain,error,controlP,sinyal_kon trol:real; output : byte; F :textfile; connect:boolean; text_data:string; sinyalcontrol : integer; bagi:integer; hitung:integer; datay:string; waktu,start,stop: TDateTime; Hour, Min, Sec, MSec: Word; berkas_sumber, berkas_target :file; buffer :array[1..ukuran] of byte; sum_baca, sum_rekam : integer; file_report: string; mulai :tdatetime; durasi:tdatetime; lama :integer; online:boolean; //Disini vaiabel untuk kontrol CMAC bobot:array [1..15000] of real; alamat:array[1..15000] of integer; memori_cmac:array[1..15000] of real; data:real; intref,out_cmac:real; generalisasi,lyr,index:integer; F_cmac:textfile; laju_cmac:real; //Disini variabel untuk kontrol RBF w :array[1..15,1..15] of real; wb:real; c:array[1..20] of real; outb:array[1..20,1..20] of real; d,outbasis:real; temp1,temp2:real; //datacontrol:array[1..2] of real; F_rbf:textfile; sum_basis:integer; laju_rbf:real;
outputb:array[1..15,1..15] of real; deviasi:real; // variabel untuk port nama_port:Tportnumber; baudrate:cardinal; databits:Tdatabits; parity:Tparity; stopbits:Tstopbits;
implementation uses Ucmac, Urbf, Userial, Utest, Uabout, Uview, Uload; {$R *.dfm} //Fungsi kuantisasi 8 bit Function kuant8bit(var input:real):real; begin kuant8bit:=ceil((input*255)/suhu_maks); end; //Fungsi generator alamat Function generator_alamat(var dref:real;dFback:byte;layer,gen: integer):integer; var temp1,temp2, temp3 : integer; begin temp1:=1 + ceil((dref-layer+1)/gen); temp2:=(layer-1)*(ceil(255/gen)+1)*(ceil(255/gen)+1); temp3:=(ceil(255/gen)+1)*(ceil((dFback-layer+1)/gen)); generator_alamat:=temp1+temp2+temp3; end; // Procedure menghitung memori maksimal yang harus disediakan procedure hitung_memoricmac; begin referensi := 255; output:=255; memoricmac_maks:=generator_alamat(referensi,output,generalisasi,ge neralisasi); end; // Procedure inisialisasi awal bobot cmac procedure initbobot; begin for i:=1 to memoricmac_maks do begin bobot[i]:=0; memori_cmac[i]:=0; end; end; // Inisialisasi awal bobot RBF procedure init2rbf; var i:integer; begin
for i:=1 to jumlah_basis do w[i,1]:=0; wb:=0; outbasis:=0; end; // Procedure buat jaringan Procedure make_rbf; begin for i:=1 to sum_basis do c[i]:=(7/(sum_basis+1))*i; deviasi :=c[1]/3.05; end; // Fungsi menghitung keluaran fungsi basis oleh 2 masukan function rbf2dim(var s_rbf,a,b,x1,x2 : real):real; begin temp1 := -((a-x1)*(a-x1))/(2*s_rbf*s_rbf); temp2 := -((b-x2)*(b-x2))/(2*s_rbf*s_rbf); rbf2dim := exp(temp1)*exp(temp2); end;
// Fungsi menghitung keluaran RBF 2 dimensi Function outrbforde2(var in1,in2:real):real; begin outbasis:=0; outrbforde2:=0; make_rbf; //Inisialisasi keluaran tiap fungsi basis for i:=1 to sum_basis do outputb[i,i]:=0; //Hitung keluaran tiap fungsi basis oleh 2 masukan for i:=1 to sum_basis do outb[i,i]:=rbf2dim(deviasi,c[i],c[i],in1,in2); // Kalikan keluaran tiap fungsi basis dengan bobotnya sendiri for i:=1 to sum_basis do outputb[i,i]:= outb[i,i]*w[i,i]; // Hitung keluaran jaringan for i:=1 to sum_basis do outbasis:=outbasis+outputb[i,i]; outbasis:=outbasis+wb; outrbforde2:=outbasis; end;
Function hitung_milidetik(waktu: TDateTime): integer; var jam, menit, detik, Mdetik: word; begin DecodeTime(waktu,jam,menit,detik,Mdetik); hitung_milidetik:=(3600000*jam)+(60000*menit)+1000*detik+Mdet ik; end;
procedure TFjst.Test1Click(Sender: TObject); begin Ftest.Show; end; procedure TFjst.CMACParameters1Click(Sender: TObject); begin Fcmac.Show; end; procedure TFjst.RBFParameters1Click(Sender: TObject); begin Frbf.Show; end; procedure TFjst.LoadPicture1Click(Sender: TObject); var nama:string; begin OpenPictureDialog1.Filter :='Picture File(*.bmp)|*.bmp'; Opendialog1.InitialDir :='D:\'; if OpenPictureDialog1.Execute = true then begin Fview.show; nama := OpenPictureDialog1.FileName; Fview.Image1.Picture.LoadFromFile(nama); end; end; procedure TFjst.About1Click(Sender: TObject); begin Fabout.Show; end; procedure TFjst.FormClose(Sender: TObject; var Action: TCloseAction); begin Fload.Close; serial.SendByte(0); Application.Terminate; end; procedure TFjst.CMAC1Click(Sender: TObject); begin with mainmenu1.Items do begin Items[2].Items[0].Checked:=true; Items[2].Items[1].Checked:=false; Items[2].Items[2].Checked:=false; Items[2].Items[3].Checked:=false; Items[3].Items[0].Enabled:=true; Items[3].Items[1].Enabled:=false; end; cmac:=true; rbf:=false; closeloop:=false; openloop :=false; end;
procedure TFjst.RBF1Click(Sender: TObject); begin with mainmenu1.Items do begin Items[2].Items[0].Checked:=false; Items[2].Items[1].Checked:=true; Items[2].Items[2].Checked:=false; Items[2].Items[3].Checked:=false; Items[3].Items[0].Enabled:=false; Items[3].Items[1].Enabled:=true; end; cmac:=false; rbf:=true; closeloop:=false; openloop:=false; end; procedure TFjst.CloseLoop1Click(Sender: TObject); begin with mainmenu1.Items do begin Items[2].Items[0].Checked:=false; Items[2].Items[1].Checked:=false; Items[2].Items[2].Checked:=true; Items[2].Items[3].Checked:=false; Items[3].Items[0].Enabled:=false; Items[3].Items[1].Enabled:=false; end; cmac:=false; rbf:=false; closeloop:=true; openloop:=false; end; procedure TFjst.FormCreate(Sender: TObject); begin // Inisialisasi port serial serial.Port := pncom1; serial.BaudRateValue :=9600; serial.DataBits := db8bits; serial.StopBits := sb1bits; serial.SwFlow := sfnone; serial.Parity := ptnone; serial.Connect; serial.SendByte(0); // Inisialisasi komponen Mainmenu1.Items.Items[3].Items[0].Enabled:=false; Mainmenu1.Items.Items[3].Items[1].Enabled:=false; Chart1.BottomAxis.Maximum:=15; ScrollBar1.LargeChange:=batas_maks; ScrollBar1.Visible:=true; // Inisialisasi variabel dan bobot initbobot; init2rbf; dy:=0; dx:=0;
datax:=0; hitung:=0; online:=true; // Inisialisasi file yang digunakan untuk penyimpanan assignfile(F_cmac,'D:\data_cmac.txt'); rewrite(F_cmac); closefile(F_cmac); assignfile(F_rbf,'D:\data_rbf.txt'); rewrite(F_rbf); closefile(F_rbf); assignfile(F,'D:\data.xls'); rewrite(F); closefile(F); assignfile(F,'D:\data.xls'); append(F); writeln(F,'Sampling',#9,'Referensi',#9,'Out NN',#9,'Out Gain' ,#9,'Control u',#9,'Output',#9,'Error'); closefile(F); end; procedure TFjst.Timer_cmacTimer(Sender: TObject); begin // Baca output suhu plant---> masukan terkuantisasi serial.SendChar('#'); sleep(1); serial.ReadByte(output); // Hitung sinyal error dan output gain proporsional error:= (referensi/pembagi )- (output/51); controlP:=error*gain; // Kuantisasi input referensi intref:=kuant8bit(referensi); // Hitung keluaran cmac out_cmac:=0; for lyr:=1 to generalisasi do begin alamat[lyr]:=generator_alamat(intref,output,lyr,generali sasi); out_cmac:=out_cmac + memori_cmac[alamat[lyr]]; end; // Hitung sinyal kendali plant sinyal_kontrol:=controlP+out_cmac; lama:= hitung_milidetik(durasi); // Catat data ke file str((output*suhu_maks/255):2:2,datay); AssignFile(F,'d:\data.xls'); append(F); Writeln(F,inttostr(lama),#9,floattostr(referensi),#9,floattos tr(out_cmac),#9,floattostr(controlP),#9,floattostr(sinyal_ kontrol),#9,datay,#9,floattostr((referensi/pembagi)(output/51))); CloseFile(F); // Update bobot jaringan
for lyr:=1 to generalisasi do begin index:=alamat[lyr]; memori_cmac[index]:=memori_cmac[index] controlP/generalisasi; end;
+
laju_cmac
*
// Kirim sinyal kontrol sinyalcontrol := round(sinyal_kontrol * 51); if sinyalcontrol > 255 then sinyalcontrol:= 255; if sinyalcontrol < 0 then sinyalcontrol:= 0; serial.SendByte(sinyalcontrol); Edit3.Text:=format('%4.1f',[output*(suhu_maks/255)]); // Plot grafik respon datax:=datax + 0.02; Chart1.series[0].SeriesColor:=clred; Chart1.Series[0].AddXY(datax,output*(suhu_maks/255)); Chart1.series[1].SeriesColor:=clblue; Chart1.Series[1].AddXY(datax,referensi); maksek:=Chart1.BottomAxis.Maximum; if datax>batas_maks then begin ScrollBar1.Max:=(Round(datax)-batas_maks)+1; ScrollBar1.Position:=ScrollBar1.Max; end; end;
procedure TFjst.ScrollBar1Change(Sender: TObject); var NewMax,NewMin:Integer; begin NewMax:=batas_maks+ScrollBar1.Position; NewMin:=ScrollBar1.Position; with Chart1.BottomAxis do //Kasus Max yang baru < Min yang lama if NewMax<Minimum then begin Minimum:=NewMin; Maximum:=NewMax; end else //Kondisi lain termasuk kasus Min yang baru > Max yang lama begin Maximum:=NewMax; Minimum:=NewMin; end; end;
procedure TFjst.Connect1Click(Sender: TObject); begin if Edit1.Text='' then messagedlg('Isi referensi dulu mas!!',mtinformation,[mbok],0) else
begin if cmac=true then begin if generalisasi = 0 then messagedlg('Setting parameter CMAC dulu', mtinformation,[mbok],0) else begin initbobot; Timer_cmac.Enabled:=true; connect:=true; end; end else if rbf=true then begin if sum_basis = 0 then messagedlg('Setting parameter RBF dulu', mtinformation,[mbok],0) else begin init2rbf; Timer_rbf.Enabled:=true; connect:=true; end; end else if closeloop=true then begin Timer_clp.Enabled:=true; connect:=true; end else if openloop=true then begin Timer_akuisisi.Enabled:=true; connect:=true; end else messagedlg('Pilih controller yang digunakan dulu !', mtinformation,[mbok],0); end; mulai:=now; timer_clock.Enabled:=true; serial.Connect; end;
procedure TFjst.Disconnect1Click(Sender: TObject); begin timer_clock.Enabled:=false; lama:= hitung_milidetik(durasi); serial.Disconnect; if cmac=true then begin Timer_cmac.Enabled:=false; AssignFile(F_cmac,'d:\data_cmac.txt'); append(F_cmac); for i:=1 to 15000 do
Writeln(F_cmac,memori_cmac[i]:5:4); CloseFile(F_cmac); end else if rbf=true then begin Timer_rbf.Enabled:=false; AssignFile(F_rbf,'d:\data_rbf.txt'); append(F_rbf); for i:=1 to sum_basis do Writeln(F_rbf,w[i,i]:5:4); Writeln(F_rbf,wb:5:4); CloseFile(F_rbf); end else if closeloop=true then Timer_clp.Enabled:=false; online:=false; connect:=false; timer_akuisisi.Enabled := false; serial.SendByte(0); end; procedure TFjst.Reset1Click(Sender: TObject); begin serial.Connect; assignfile(F_cmac,'D:\data_cmac.txt'); rewrite(F_cmac); closefile(F_cmac); assignfile(F_rbf,'D:\data_rbf.txt'); rewrite(F_rbf); closefile(F_rbf); assignfile(F,'D:\data.xls'); rewrite(F); closefile(F); assignfile(F,'D:\data.xls'); append(F); writeln(F,'Sampling',#9,'Referensi',#9,'Out Gain',#9,'Control u',#9,'Output',#9,'Error'); closefile(F); lama:=0; Chart1.BottomAxis.minimum := 0; Chart1.BottomAxis.maximum :=graph_maks; Chart1.series[0].Clear; Chart1.series[1].Clear; datax :=0; ScrollBar1.Visible := true; initbobot; dy:=0; dx:=0; init2rbf; initbobot; serial.SendByte(0); timer_monitor.Enabled:=true; end;
NN',#9,'Out
procedure TFjst.BitBtn4Click(Sender: TObject); begin if cmac = true then begin AssignFile(F_cmac,'D:\data_cmac.txt'); Reset(F_cmac); for i:=1 to 15000 do begin Readln(F_cmac,memori_cmac[i]); end; CloseFile(F_cmac); assignfile(F_cmac,'D:\data_cmac.txt'); rewrite(F_cmac); closefile(F_cmac); end else if rbf=true then begin AssignFile(F_rbf,'D:\data_rbf.txt'); Reset(F_rbf); for i:=1 to sum_basis do Readln(F_rbf,w[i,i]); Readln(F_rbf,wb); CloseFile(F_rbf); assignfile(F_rbf,'D:\data_rbf.txt'); rewrite(F_rbf); closefile(F_rbf); end; end; procedure TFjst.SaveWeight1Click(Sender: TObject); var cmac_weight:string; begin if cmac = true then begin SaveDialog1.Title :='Save Weight of CMAC'; SaveDialog1.Filter :='Text File(*.cmac)|*.cmac'; SaveDialog1.InitialDir:='D:\'; if Fjst.SaveDialog1.Execute=true then begin assignfile(F_cmac,Fjst.SaveDialog1.FileName '.cmac'); rewrite(F_cmac); closefile(F_cmac); AssignFile(F_cmac,Fjst.SaveDialog1.FileName '.cmac'); append(F_cmac); for i:=1 to 15000 do begin Writeln(F_cmac,memori_cmac[i]:5:4); end; CloseFile(F_cmac); end; end else if rbf = true then begin SaveDialog1.Title :='Save Weight of RBF';
+
+
SaveDialog1.Filter :='Text File(*.rbf)|*.rbf'; SaveDialog1.InitialDir:='D:\'; if SaveDialog1.Execute=true then begin assignfile(F_rbf,SaveDialog1.FileName + '.rbf'); rewrite(F_rbf); closefile(F_rbf); AssignFile(F_rbf,SaveDialog1.FileName + '.rbf'); append(F_rbf); for i:=1 to sum_basis do Writeln(F_rbf,w[i,i]:5:4); Writeln(F_rbf,wb); CloseFile(F_rbf); end; end; end;
procedure TFjst.Timer_rbfTimer(Sender: TObject); begin // Baca output suhu plant serial.SendChar('#'); sleep(1); serial.ReadByte(output); // Hitung sinyal error dan output gain proporsional error:= (referensi/pembagi )- (output/51); controlP:=error*gain; // berupa Tegangan // Hitung keluaran RBF orde 2 dy:=output/51; dx:=referensi/pembagi; out_rbf:=outrbforde2(dx,dy); // Hitung sinyal kontrol plant sinyal_kontrol:=controlP+out_rbf; // Kirim sinyal kontrol sinyalcontrol := round(sinyal_kontrol * 51); if sinyalcontrol > 255 then sinyalcontrol:= 255; if sinyalcontrol < 0 then sinyalcontrol:= 0; serial.SendByte(sinyalcontrol); Edit3.Text:=format('%4.1f',[output*(suhu_maks/255)]); lama:= hitung_milidetik(durasi); // Catat data ke file str((output*suhu_maks/255):2:2,datay); AssignFile(F,'d:\data.xls'); append(F); Writeln(F,inttostr(lama),#9,floattostr(referensi),#9,floattos tr(out_rbf),#9,floattostr(controlP),#9,floattostr(sinyal_ kontrol),#9,inttostr(round(output*suhu_maks/255)),#9,floattos tr(referensi-(output*suhu_maks/255))); CloseFile(F); // Update bobot RBF for i:=1 to sum_basis do w[i,i]:=w[i,i] +laju_rbf*controlP*outb[i,i]/( sum_basis+1);
// Update bobot basis wb wb:=wb+laju_rbf*controlP/(sum_basis+1); // Plot grafik respon datax:=datax + 0.02; Chart1.series[0].SeriesColor:=clred; Chart1.Series[0].AddXY(datax,output*(suhu_maks/255)); Chart1.series[1].SeriesColor:=clblue; Chart1.Series[1].AddXY(datax,referensi); maksek:=Chart1.BottomAxis.Maximum; if datax>batas_maks then begin ScrollBar1.Max:=(Round(datax)-batas_maks)+1; ScrollBar1.Position:=ScrollBar1.Max; end; end;
procedure TFjst.BitBtn1Click(Sender: TObject); begin connect1click(sender); end; procedure TFjst.BitBtn2Click(Sender: TObject); begin Disconnect1Click(Sender); end; procedure TFjst.BitBtn3Click(Sender: TObject); begin Reset1Click(Sender); end; procedure TFjst.Timer_clpTimer(Sender: TObject); begin // ambil data referensi dan gangguan referensi:=strtofloat(Fjst.edit1.text); // baca output suhu serial.SendChar('#'); sleep(1); serial.ReadByte(output); // Hitung sinyal error dan output gain proporsional (level tegangan) error:= (referensi/pembagi )- (output/51); sinyal_kontrol:=error; // Definisikan sinyal kontrol sinyalcontrol := round(sinyal_kontrol * 51); if sinyalcontrol > 255 then sinyalcontrol:= 255; if sinyalcontrol <0 then sinyalcontrol:=0; Serial.SendByte(sinyalcontrol); Edit3.Text:=format('%4.1f',[output*(suhu_maks/255)]); lama:= hitung_milidetik(durasi); // Catat data ke file
AssignFile(F,'d:\data.xls'); append(F); Writeln(F,inttostr(lama),#9,floattostr(referensi),#9,floattos tr(sinyal_kontrol),#9,inttostr(round(output*suhu_maks/255)),# 9,floattostr(referensi-(output*suhu_maks/255))); CloseFile(F); // Plot grafik respon datax:=datax + 0.02; Chart1.series[0].SeriesColor:=clred; Chart1.Series[0].AddXY(datax,output*(suhu_maks/255)); Chart1.series[1].SeriesColor:=clblue; Chart1.Series[1].AddXY(datax,referensi); maksek:=Chart1.BottomAxis.Maximum; if datax>batas_maks then begin ScrollBar1.Max:=(Round(datax)-batas_maks)+1; ScrollBar1.Position:=ScrollBar1.Max; end; end;
procedure TFjst.LoadWeight1Click(Sender: TObject); begin Opendialog1.Filter :='Cmac Files (*.cmac)|*.cmac|Rbf (*.rbf)|*.rbf'; Opendialog1.InitialDir:='D:\'; OpenDialog1.Title :='Load Weight of NN'; if Opendialog1.Execute = true then begin if cmac = true then begin AssignFile(F_cmac,Opendialog1.FileName); Reset(F_cmac); for i:=1 to 15000 do begin Readln(F_cmac,memori_cmac[i]); end; CloseFile(F_cmac); end else if rbf=true then begin AssignFile(F_rbf,Opendialog1.FileName); Reset(F_rbf); for i:=1 to sum_basis do Readln(F_rbf,w[i,i]); Readln(F_rbf,wb); CloseFile(F_rbf); end; end; end;
procedure TFjst.SavePicture1Click(Sender: TObject); var namafile:string; begin
Files
SaveDialog1.Filter := 'Picture File(*.bmp)|*.bmp'; SaveDialog1.InitialDir:='D:\'; SaveDialog1.FileName:=file_report; if SaveDialog1.Execute=true then begin chart1.bottomaxis.Minimum :=0; chart1.BottomAxis.Maximum := maksek; namafile := SaveDialog1.FileName; Chart1.SaveToBitmapFile(namafile + '.bmp'); end; end; procedure TFjst.Exit1Click(Sender: TObject); begin application.Terminate; end;
procedure TFjst.Setting2Click(Sender: TObject); begin Fserial.show; end; procedure TFjst.Timer_akuisisiTimer(Sender: TObject); begin referensi:=strtofloat(Fjst.edit1.text); serial.SendByte(round(referensi*(255/suhu_maks))); serial.SendChar('#'); sleep(1); serial.ReadByte(output); Edit3.Text:=format('%4.1f',[output*(suhu_maks/255)]); lama:= hitung_milidetik(durasi); // Catat data ke file AssignFile(F,'d:\data.xls'); append(F); Writeln(F,floattostr(lama),#9,inttostr(round(output*suhu_maks /255))); CloseFile(F); // Plot grafik respon datax:=datax + 0.02; Chart1.series[0].SeriesColor:=clred; Chart1.Series[0].AddXY(datax,output*(suhu_maks/255)); Chart1.series[1].SeriesColor:=clblue; Chart1.Series[1].AddXY(datax,referensi); maksek:=Chart1.BottomAxis.Maximum; if datax>batas_maks then begin ScrollBar1.Max:=(Round(datax)-batas_maks)+1; ScrollBar1.Position:=ScrollBar1.Max; end; end;
procedure TFjst.serialReceiveData(Sender: Pointer;DataSize: Cardinal); var
TObject;
DataPtr:
DataStr : String; BacaData : char; begin If DataSize = 0 Then begin Ftest.Button1.Enabled := false;; exit; end; Repeat BacaData := char(DataPtr^); Ftest.Memo1.SelText:=bacadata; Inc(Dword(DataPtr)); Dec(DataSize); inc(i); Until DataSize = 0; Ftest.Button1.Enabled := true;; end;
procedure TFjst.Timer_monitorTimer(Sender: TObject); begin serial.SendChar('#'); sleep(1); serial.ReadByte(output); Edit3.Text:=format('%4.1f',[output*(suhu_maks/255)]); end;
procedure TFjst.OpenLoop1Click(Sender: TObject); begin with mainmenu1.Items do begin Items[2].Items[0].Checked:=false; Items[2].Items[1].Checked:=false; Items[2].Items[2].Checked:=false; Items[2].Items[3].Checked:=true; Items[3].Items[0].Enabled:=false; Items[3].Items[1].Enabled:=false; end; cmac:=false; rbf:=false; close loop:=false; openloop:=true; end; procedure TFjst.Button1Click(Sender: TObject); begin referensi:=strtofloat(Fjst.edit1.text); end; procedure TFjst.SaveData1Click(Sender: TObject); begin SaveDialog1.Title :='Save Report'; SaveDialog1.Filter :='Excel File(*.xls)|*.xls'; SaveDialog1.InitialDir:='D:\'; if Fjst.SaveDialog1.Execute=true then begin assignfile(berkas_sumber,'d:\data.xls');
reset(berkas_sumber,1); assignfile(berkas_target,Savedialog1.FileName+'.xls'); rewrite(berkas_target,1); repeat blockread(berkas_sumber,buffer,ukuran,sum_baca); if sum_baca <> 0 then blockwrite(berkas_target,buffer,sum_baca, sum_rekam); until (sum_baca < ukuran ) or (Sum_baca <> sum_rekam); closefile(berkas_sumber); closefile(berkas_target); end; end; procedure TFjst.Button2Click(Sender: TObject); begin serial.SendByte(200); end; procedure TFjst.Timer_clockTimer(Sender: TObject); begin durasi:=now-mulai; end; procedure TFjst.Help1Click(Sender: TObject); begin Application.HelpFile := 'ONLINE.hlp'; Application.HelpCommand(HELP_CONTENTS, 0); end; end.
A.3
Form Test Serial (Ftest)
unit Utest; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, CPDrv; type TFtest = class(TForm) Edit1: TEdit; Button1: TButton; Edit2: TEdit; Label3: TLabel; Shape1: TShape; Label1: TLabel; Label2: TLabel; Memo1: TMemo; Button3: TButton; Timer_baca: TTimer; procedure Button3Click(Sender: TObject); procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; TCloseAction); procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Timer_bacaTimer(Sender: TObject); private { Private declarations } public { Public declarations } end;
var
Action:
var Ftest: TFtest; i: real; implementation uses Ujst; {$R *.dfm}
procedure TFtest.Button3Click(Sender: TObject); begin Fjst.serial.Connect; Fjst.serial.SendChar('!'); memo1.Lines.Add('Status Koneksi : ') end; procedure TFtest.FormCreate(Sender: TObject); begin memo1.clear; memo1.Lines.Add('Status Koneksi : '); Ftest.Button1.Enabled := false; end; procedure TFtest.FormClose(Sender: TCloseAction); begin memo1.Clear; Ftest.Button1.Enabled :=false; end;
TObject;
procedure TFtest.Button2Click(Sender: TObject); begin Fjst.serial.SendChar('!'); sleep(1); Fjst.serial.ReadByte(output); edit2.Text:=floattostr(output/51); end; procedure TFtest.Button1Click(Sender: TObject); begin i:=strtofloat(edit1.text); Fjst.serial.SendByte(round(i*51)); Ftest.Timer_baca.Enabled := true; end; procedure TFtest.Timer_bacaTimer(Sender: TObject); begin Fjst.serial.SendChar('#');
var
Action:
sleep(1); Fjst.serial.ReadByte(output); Ftest.Edit2.Text:=floattostr((output/51)); end; end.
A.4
Form Setting Serial (Fserial)
unit Userial; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ExtCtrls, CPDrv, Ujst; type TFserial = class(TForm) Panel1: TPanel; Label1: TLabel; ComboBox1: TComboBox; ComboBox2: TComboBox; ComboBox3: TComboBox; ComboBox4: TComboBox; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; ComboBox5: TComboBox; Label7: TLabel; Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Fserial: TFserial; implementation {$R *.dfm} procedure TFserial.Button1Click(Sender: TObject); begin case combobox1.itemindex of 0 : nama_port := pncom1; 1 : nama_port := pncom2; end; case combobox2.itemindex of
0 : baudrate := 1200; 1 : baudrate := 2400; 2 : baudrate := 9600; end; case combobox3.itemindex of 0 : databits := db7bits; 1 : databits := db8bits; end;
case combobox4.itemindex of 0 : parity := ptNONE; 1 : parity := ptODD; 2 : parity := ptEVEN; end; case combobox5.itemindex of 0 : stopbits := sb1bits; 1 : stopbits := sb2bits; end; with Fjst do begin serial.Port := nama_port; serial.BaudRateValue :=baudrate; serial.DataBits := databits; serial.StopBits := stopbits; serial.SwFlow := sfnone; serial.Parity := parity; serial.Connect; serial.SendByte(0); end; sleep(5); close; end; procedure TFserial.FormCreate(Sender: TObject); begin Fjst.serial.Disconnect; end; end.
A.5
Form Setting Parameter CMAC (Fcmac)
unit Ucmac; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, Spin; type TFcmac = class(TForm) Shape1: TShape; Label1: TLabel;
Label2: TLabel; Label3: TLabel; Edit1: TEdit; Edit2: TEdit; BitBtn1: TBitBtn; Edit3: TEdit; Label4: TLabel; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Fcmac: TFcmac; implementation uses Ujst; {$R *.dfm} procedure TFcmac.BitBtn1Click(Sender: TObject); begin gain:=strtofloat(Edit2.text); generalisasi:=strtoint(Edit1.Text); laju_cmac:=strtofloat(Edit3.Text); sleep(50); Fcmac.Close; end; procedure TFcmac.FormCreate(Sender: TObject); begin Edit1.Text:='25'; Edit2.Text:='2'; Edit3.Text:='0.1'; end; end.
A.6
Form Setting Parameter RBF (Frbf)
unit Urbf; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ExtCtrls, Buttons; type TFrbf = class(TForm) Shape1: TShape; Edit1: TEdit; Edit2: TEdit; Label1: TLabel; Label2: TLabel;
Label3: TLabel; BitBtn1: TBitBtn; Edit3: TEdit; Label4: TLabel; procedure BitBtn1Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Frbf: TFrbf; i:integer; implementation uses Ujst; {$R *.dfm} procedure TFrbf.BitBtn1Click(Sender: TObject); begin sum_basis:=strtoint(Edit1.Text); gain:=strtofloat(Edit2.text); laju_rbf:=strtofloat(Edit3.Text); jumlah_basis:=sum_basis; sleep(50); Frbf.Close; end;
procedure TFrbf.BitBtn2Click(Sender: TObject); begin Frbf.Close; end; procedure TFrbf.FormCreate(Sender: TObject); begin Edit1.Text:='4'; Edit2.Text:='2'; Edit3.Text:='0.1'; end; end.
A.7
Form Load Picture (Fview)
unit Uview; interface uses Windows, Messages, SysUtils, Variants, Controls, Forms,Dialogs, jpeg, ExtCtrls;
Classes,
Graphics,
type TFview = class(TForm) Image1: TImage; private { Private declarations } public { Public declarations } end; var Fview: TFview; implementation {$R *.dfm} end.
A.7
Form About (Fabout)
unit Uabout; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, jpeg, ExtCtrls, StdCtrls, Menus; type TFabout = class(TForm) Image1: TImage; Shape1: TShape; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; PopupMenu1: TPopupMenu; Close1: TMenuItem; procedure Close1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Fabout: TFabout; implementation {$R *.dfm} procedure TFabout.Close1Click(Sender: TObject); begin close; end; end.
LAMPIRAN B TAMPILAN PROGRAM
B.1 Tampilan Fload
B.2 Tampilan Fserial
B.3 Tampilan Fjst
B.4 Tampilan Ftest
B.5 Tampilan Fcmac
B.6 Tampilan Frbf
B.7 Tampilan Fabout
B.8 Tampilan Help
LAMPIRAN D HASIL PENGUJIAN PERANGKAT KERAS
D.1 Hasil Pengujian DAC 0808 Tegangan Kirim PC
Keluaran DAC
(Volt)
(Volt)
0,0
0,00
0,5
0,50
1,0
0,99
1,5
1,49
2,0
1,99
2,5
2,51
3,0
3,00
3,5
3,49
4,0
4,00
4,5
4,51
5,0
5,00
D.2 Hasil Pengujian ADC 0804 Tegangan Input
Pembacaan ADC
(Volt)
(Volt)
0,0
0,000
0,5
0,509
1,0
1,000
1,5
1,490
2,0
2,000
2,5
2,509
3,0
3,000
3,5
3,509
4,0
4,019
4,5
4,529
5,0
5,000
D.3 Hasil Pengujian Pengkondisi Sinyal I ( Pengubah level tegangan 0 – 5 Volt menjadi -5 – 5 Volt ) Tegangan Input
Keluaran Pengkondisi
(Volt)
Sinyal I (Volt)
0,0
- 4,80
0,5
- 3,84
1,0
- 2,91
1,5
- 1,97
2,0
- 1,01
2,5
0,04
3,0
0,88
3,5
1,81
4,0
2,78
4,5
3,75
5,0
4,67
D.4 Hasil Pengujian Pengkondisi Sinyal II ( Penguat 3,33 kali ) Tegangan Input
Keluaran Pengkondisi
(Volt)
Sinyal II (Volt)
0,0
0,00
0,2
0,65
0,4
1,32
0,6
2,00
0,8
2,65
1,0
3,33
1,2
4,00
1,4
4,65
1,6
5,33
1,8
6,00
2,0
6,64
D.5 Hasil Pengujian Rangkaian Driver PWM Tegangan Kirim PC
Pembacaan ADC
(Volt)
(Volt)
0,0
12,20
0,5
15,90
1,0
20,10
1,5
24,10
2,0
27,90
2,5
31,80
3,0
36,20
3,5
39,40
4,0
43,00
4,5
44,80
5,0
46,20