Arsip Kategori: Fuzzy Logic

Kluster Data Spasial dari ArcGIS/ArcView dengan Fuzzy C-Means (FCM)

Data spasial adalah data yang berupa koordinat geografis suatu elemen dalam peta. Data itu bisa berupa titik maupun polygon. Di sini kita akan mencoba data spasial berupa titik-titik lokasi berasal dari ArcGIS atau GIS tool lainnya sesuai dengan proyeksi yang digunakan. Apa itu proyeksi? Panjang ceritanya, sebaiknya baca buku tentang geographic information system (GIS). Untuk praktek dapat kita buat spasial data yang sudah ada dalam format shapefile (berekstensi *.shp). Untuk memudahkan proses operasi, siapkan direktori kerja di lokasi dimana shapefile itu berada.

Anda harus memiliki fungsi “shaperead” di Matlab, biasanya sudah include di dalamnya untuk versi-versi terbaru. Cara mengeceknya dengan mengetik “help shaperead” di command window, kalau tidak ada, Matlab akan memberi pesan bahwa fungsi shaperead tidak ada. Berikutnya kita akan mengkonversi data ini ke dalam data berekstensi “dat”.

Ok, pastikan file “commercial.dat” yang merupakan konversi workspace ke file “dat” berhasil tersimpan. Mengapa langkah ini diperlukan? Karena toolbox FCM yang kita gunakan berikut ini menggunakan data berekstensi dat ini. Sebenarnya jika menggunakan fungsi fcm dari command window tidak perlu mengkonversi ke dat file, bisa langsung dari workspace, tapi untuk pemula, lebih mudah menggunakan toolbox. Ketik “findcluster” di command window sehingga muncul jendela berikut ini.

Kebetulan toolbox tersedia dalam dua dimensi, sehingga cocok dengan data spasial. Untuk yang tiga dimensi sepertinya agak ribet dan harus mengatur sumbu x,y, z. Atau untuk dimensi >2 sebaiknya menggunakan fungsi dari command window. Ketik “load data” untuk memanggil data, pilih “commercial.dat” yang telah dibuat sebelumnya.

Perhatikan tiga titik hitam yang merupakan titik pusat tiga kluster yang akan kita bentuk. Anda bisa mengganti jumlah kluster, misalnya hanya dua saja dan tekan “start” kembali untuk mencari pusat kluster yang baru. Untuk menyimpan pusat kluster, dapat Anda lakukan dengan menekan “Save Center” lalu simpan dalam bentuk “dat”. Berikutnya tiga center ini akan coba kita buka dengan di ArcGIS di postingan yang akan datang, selamat mencoba. Lanjut baca : Konversi Mat-File ke Shapefile

Iklan

JST, FIS, atau ANFIS?

Berikut kritik dan saran dari pembaca buku data mining dengan matlab, terutama di bab 3 (halaman 49) dan bab 4 (halaman 74) yang membahas mengenai Adaptive Neuro-Fuzzy Inference System (ANFIS) dan Jaringan Syaraf Tiruan (JST). Sebenarnya buku ini kelanjutan dari buku sebelumnya tentang soft computing, jadi beberapa bagian memang ada yang sama, terutama JST dan ANFIS yang berbasis machine learning. Maksudnya dimodif sedikit supaya beda sama yang dulu malah ada yang lupa diganti.

Di kode di atas halaman 49, harusnya tm bukan keuangan. Variabel tm sendiri maksudnya singkatan dari tingkat kemiskinan agar makin besar nilai variabel ini tm makin besar pula, maksudnya makin miskin agar untuk menjumlahkan nanti jadi besar (IPK besar TM juga besar) yang berpeluang mendapat beasiswa. Walaupun bisa saja dirancang dengan tk, tingkat kekayaan, makin besar makin kaya, tetapi walaupun bisa berjalan, bagi programmer yang ingin “testing”, logic error sedikit ribet. O iya, logic error berbeda dengan syntax error (akan diberitahu bahwa baris sekian ada kesalahan) karena sistem berjalan tetapi tidak sesuai dengan kenyataan, lebih berbahaya.

Berikutnya juga di halaman 74 ada beberapa bagian yang tidak saya tulis kodenya karena GUI bisa menggunakan GUI yang lain (FIS atau ANFIS). Memang harusnya buku itu disertai CD untuk kode program agar tidak perlu “latihan mengetik sepuluh jari” :D. Tetapi saya berikan di sini kode sumber untuk satu GUI yang berisi Decision Support System dengan tiga metode tersebut. Download dulu kodenya.

Ekstrak di satu folder, kemudian Matlab arahkan current directory-nya ke folder tersebut lalu jalankan dengan mengetik nama folder yang berekstensi .m di command window. Untuk melihat kodenya ketik edit disertai nama file berekstensi .m tersebut. Oiya, sesuaikan huruf besar dan huruf kecilnya karena Matlab case sensitive.

Tentu saja kalau data mining jumlah datanya ya tidak hanya segelintir seperti contoh (dengan excel), apalagi big data trend-nya sudah mulai, excel tentu saja tidak sanggup mengolah data hingga jutaan record. Buku berikutnya sudah sampai ke penerbit tentang data mining tetapi fokus ke penanganan Matlab untuk sistem basis data (database management system – DBMS) dengan Microsoft Access (sebagai perwakilan desktop DBMS) dan MySQL (perwakilan web-based) dengan bantuan ODBC.

Octave – Matlab Versi Gratis

Lanjutan postingan sebelumnya yang kurang memuaskan nih, kita coba selain scilab. Silahkan donlot dari situs resminya, biar aman dari virus, sesuaikan dengan sistem operasi yang anda miliki.

Ada yang versi installer, ada yang portable, untuk lebih lengkap saya coba versi intaller saja (sekitar ratusan Mb).

Seperti biasa, khusus pemula klik saja next terus dan pilih yang default. Tunggu sampai proses instalasi selesai. Lisensinya berbasis GNU, apa itu GNU? Sebenarnya GNU itu kalo dibalik UNG dan kalo dibaca mirip UNIX kan? Sebenarnya UNIX itu rencananya open source, tetapi ditelikung sama vendor jadi berbayar, akhirnya rombongan penggemar open source “beraksi” dengan mengembangkan sejenis UNIX dengan nama UNG yang open source, hingga terciptalah Linux .. katanya. Eh selesai .. instalnya.

Coba dijalankan saja. Test dengan fungsi-fungsi dasarnya, apakah sama dengan matlab? Ternyata tampilan prosesnya agak jadul juga (muncul console window beberapa detik). Tampilannya, mirip-mirip juga sih dengan Scilab dan Matlab.

Ok, fungsi matrix dasar berfungsi dan sama dengan Scilab. Bagaimana dengan programmingnya? Pertanyaan yang sama dengan pembahasan Scilab diawal tulisan. Buka/Open direktori kerja .. kok agak lama ya prosesnya. Sebelumnya saya membuat program dengan bahasa Matlab sebagai berikut:

function y=latih(x)

y=x*2

end

Disimpan dengan nama “latih.m”, oke kita coba jalankan dengan Octave.

>> latih(3)

y = 6

ans = 6

Wow .. dapat dijalankan. Sepertinya octave lebih menarik dari Scilab. Bagaimana untuk program lainnya? Kita coba saja fungsi M-file yang ada di matlab, misalnya fungsi norm yang menghitung normal euclidean (jarak) antara satu object dengan lainnya. Yah .. ternyata fungsi norm ada juga di octave.

Ok, berhubung ada yang bertanya mengenai Fuzzy C-Means (FCM) akan kita coba menjalankan fungsi FCM Matlab di octave .. Hmmm mudah-mudahan berhasil. Mula-Mula kita harus latihan dulu membaca listing code matlab. Fungsi fcm di matlab kelihatannya sederhana tetapi dia memanggil banyak sekali fungsi-fungsi yaitu:

Copy saja seluruh file itu di direktori kerja Anda. Sebenarnya ketika kita menjalankan fungsi fcm di octave, dia akan memberikan pesan error di line tertentu, telusuri saja maka Anda akan menemukan fungsi lainnya yaitu distfcm, initfcm, dst. Ok .. jalankan sesuai instruksi pada help fcm.

  • data = rand(100,2);
  • [center,U,obj_fcn] = fcm(data,2);

Ketemu dah pusat clusternya:

  • >> center
  • center =
  • 0.59526 0.66670
  • 0.35972 0.27357

Octave

Mantap .. FCM dapat berjalan di octave .. Bagaimana dengan Jaringan Syaraf Tiruan? Fuzzy? Coba saja, ga dilarang kok .. Selamat mencoba dan menikmati software Octave yang open source dan gratis dengan bahasa Matlab.

Memahami Function Matlab

Kalo kita searching internet, bidang informatika ternyata banyak cabangnya dari yang cenderung ke hardware hingga yang cenderung ke software. Jika kita menjumpai seseorang dengan gelar S.Kom kita tidak bisa memastikan yang bersangkutan bisa mengutak-atik jaringan, merancang software, atau bidang-bidang spesifik lainnya. Apalagi jika gelarnya M.Kom atau Ph.D lebih spesifik lagi bidangnya.

Beberapa peneliti ingin mengetahui atau membandingkan dua jenis metode, tentu saja dengan alat ukur yang adil, dimana tidak membandingkan dua metode dengan dua bahasa yang berbeda. Oiya, beberapa literatur membedakan metode dengan algoritma, walaupun ada juga yang menganggapnya sama. Untuk memperbaiki kinerja suatu metode, beberapa peneliti menggunakan bahasa yang mudah, yaitu Matlab. Bahasa ini sulit dibeli oleh individu, dan biasanya institusi yang membelinya karena mahal. Belum lagi kontroversi dari sisi pendidikan dimana Matlab dituduh tidak melatih siswa untuk sungguh-sungguh belajar programming. Banyak pertanyaan-pertanyaan muncul mengenai kode bahasa matlab yang kebanyakan dalam bentuk function dan toolbox.

Berbeda dengan toolbox lain seperti WEKA, SPSS, dan sejenisnya yang melakukan proses data mining dengan menyembunyikan source code, Matlab sebenarnya menunjukan kode yang digunakannya. Jadi jika kita diminta menelusuri algoritmnya, tinggal buka saja M-file yang digunakan. Misalnya kita akan mengkluster dengan Fuzzy C-Means (FCM), secara sederhana kita dapat mencari kluster secara langsung baik lewat GUI atau function. Coba buka kode yang ada dengan mengetik edit fcm di command window. Jika muncul pesan, klik saja Yes.

Untuk bisa membaca kode tersebut, sedikit diperlukan “usaha”. Apalagi jika belum pernah sekalipun belajar bahasa pemrograman. Jika tidak pernah, maka yang disalahkan adalah institusi tempat mahasiswa belajar informatika, karena salah satu dasar seluruh jenis kurikulum informatika (TI, SI, SK, ILKOM) pasti belajar dasar-dasar pemrograman. Di tulisan yang lalu, saya menyinggung fungsi objective FCM. Nah dimanakah letak fungsi objective itu di function matlab?

Jika Anda teliti ternyata fungsi fcm memanggil fungsi stepfcm, maka buka lagi fungsi tersebut dengan mengetik edit stepfcm. Di situ dengan jelas fungsi yang dalam bentuk matematisnya adalah sigma.

Ternyata ada juga fungsi distfcm, ok. Buka saja dan pelajari lagi. Dan untungnya kita tidak terlalu pusing-pusing menerjemahkan karena ada baris komentar yang diawali dengan simbol % yang fungsinya menjelaskan satu line code.

Jika Anda ingin membuat dalam bahasa pemrograman open source, bisa menerapkannya di octave, scilab, dan sejenisnya yang dapat diunduh gratis dari internet. Ok, semoga bermanfaat.

Learning Vector Quantization (LVQ)

LVQ is another kind of competitive network that uses competitive and linear layer together (see past posting for competitive network). The winning neuron of the first stage is become a subclass. Then the second layer combines it into a single class. Many researcher use this kind network for signature identification.

The learning of LVQ is supervised learning. It needs a target as a basis of learning process. Use this script (LEARNING VECTOR QUANTIZATION) to practice your matlab skill in creating a LVQ network. Try to understand the syntax of lvq function by typing “help newlvq” on command window.

The above picture shows matlab respons to our train script function. You can see the IW and LW part of LVQ network using this script.

>> samplelvq.iw{1,1}

ans =

-0.1259 -0.0280

0.0862 0.1584

-0.0351 0.0306

>> samplelvq.lw{2,1}

ans =

1 1 0

0 0 1

Competitive Network

Competitive network uses Hamming Network which is contained feedforward and recurrent layer.

Open your Matlab and try this lab example. Just copy and paste to see how this kind of network worked. Newc is a function from matlab to create a competitive network. Use this Competitive Network file for practise.

Try to train a competitive network. After training the network, try to simulate the trained network to find the result from a sample input.

This is a result from simulation of samplec on Pc. Type on command window “help newc” to study the syntax of newc function from your Matlab.

>> Yc1 = sim(samplec, Pc)

Yc1 =

(2,1) 1

(2,2) 1

(2,3) 1

(1,4) 1

(1,5) 1

(1,6) 1

Konversi Scope ke Figure-2

Sambungan dari postingan dua tahun yang lalu (https://rahmadya.com/2012/04/12/konversi-scope-ke-figure-pada-matlab/). Berikut ini akan saya coba merubah scope yang tampilannya tidak bagus untuk dicetak menjadi figure yang lebih nyaman, terutama dari sisi penggunaan tinta printer. Maklum background scope yang hitam membuat tinta printer cepat habis. Selain itu figure sangat mudah untuk dimanipulasi seperti menambahkan garis panah yang menjelaskan suatu lengkung kurva, dan sebagainya.

Gambar di atas adalah salah satu contoh yang akan kita buat figure-nya. Jika dijalankan dan menekan dobel scope bernama Grafik2 (panah ungu) Anda akan melihat grafik berikut ini (contoh kasus perbandingan beberapa model lewat mekanisme multiplexing):

Tampak grafik yang mirip tampilan alat ukur listrik. Sebenarnya ketika kita menjalankan model, Matlab dapat merekam hasilnya jika kita melakukan inisiasi pada scope. Pada gambar di atas coba Anda klik icon parameters. Tekan tab “Data history“.

Centang “Save data to workspace” agar setiap model di-running akan menyimpan hasilnya dari variabel “keluaran“, dengan format “Array“. Jika Anda tidak percaya, setelah di running, Lihat Matlab, Anda akan menemukan satu variabel baru yang muncul di workspace (jendela ini secara default terletak di pojok kanan, kalo belum diutak-atik).

Sebenarnya tugas sudah selesai, karena Matlab sudah menyediakan matrix keluaran yang berisi data yang merepresentasikan grafik pada scope. Coba saja anda ketik pada command window> keluaran.

Tampak enam kolom yang merepresentasikan garis pada scope. Yang mana saja? Tentu saja yang membuat model yang tahu. Perbandingan dari gabungan beberapa kontroler memang sulit membedakan, tapi jika kita sudah tahu jenis keluaran di satu kontroler, untuk perbandingan pasti tahu dong. Tapi kalau dilihat sepintas, kolom pertama itu time (waktu), kolom kedua itu pasti yang berwarna kuning (karena konstant 25). Coba kita buat grafik antara kolom satu dengan kolom dua terlebih dahulu:

>plot(keluaran(:,1),keluaran(:,2))

Apaan tuh? Jangan bingung. Jika kita akan membuat plot sumbu horizontal, x, dengan sumbu vertikal, y, maka formatnya adalah plot(x,y). Tapi di sini sumbu horizontal-nya keluaran(:,1), maksudnya adalah seluruh baris kolom ke-1. Begitu juga keluaran(:,2) artinya seluruh baris kolom kedua. Hasilnya adalah sebagai berikut.

Lanjutkan dengan membuat plot dari kolom kesatu dengan ketiga, keempat, dan seterusnya hingga keenam. Eiit.. jangan lupa mengetik hold, agar gambar sebelumnya tidak terhapus.

>hold

>plot(keluaran(:,1),keluaran(:,3)

>plot(keluaran(:,1),keluaran(:,4)

Terus hingga muncul hasil sebagai berikut. (Note: Tidak perlu diketik semua, cukup tekan panah atas di keyboard dan edit angka terakhirnya).

Kok ada tulisannya .. Ah itu gampang, tinggal insert – Text Arrows aja dan arahkan ke kurva yang akan anda rinci, termasuk x-label dan y-labelnya.

Membuat Program Sederhana Fuzzy

Sudah lama tidak menulis tentang soft computing, maklum kesibukan luar biasa karena kuliah. Kebetulan kali ini saya mengambil mata kuliah Artificial Intelligent and Neuro-Fuzzy. Materi ini membahas seluruh ilmu soft computing, dimulai dari syaraf tiruan, fuzzy, algoritma genetika, hingga turunannya seperti particle swarm, simulated annealing, dan lain-lain. Kali ini saya hanya akan meneruskan tulisan saya yang dulu dengan menambah satu contoh aplikasi, mengingat banyak yang membutuhkan.

Untuk menjalankan aplikasi ini, letakkan di folder kerja Anda (current directory) setelah diekstrak, kemudian jalankan dengan mengetik nama file *.m di command window. Untuk melihat dan mengutak-atik script dengan mengetik edit <nama file *.m> serta untuk melihat alur logika fuzzy dengan mengetik fuzzy <nama *.fis>. Selamat mencoba.

beasiswa

Membuat JST dengan Neural Network Fitting Tool (nftool)

Data Mining/06.05.2013/Sistem Informasi

Matlab menyediakan fasilitas JST yang lebih spesifik dari sebelumnya, yaitu fitting, clustering, dan Pattern recognition. Sekarang kita coba melatih data berikut ini dengan nftool. Buat dengan excel setelah itu pindahkan ke workspace dengan perintah xlsread. Misalnya, nama file excel-ya ‘input.xlsx’. Misalnya kolom A Indeks Prestasi Mahasiswa, Kolom B Tingkat Kemiskinan dan C mendapat beasiswa atau tidak (beasiswa = 1, Tidak Beasiswa = 0).

Berikutnya masuk ke Command Window, masukan beberapa langkah berikut ini untuk membuat data masukan dan target yang akan digunakan untuk pelatihan.

  • input=xlsread(‘input.xlsx’);
  • in=[input(:,1) input(:,2)];
  • out=input(:,3);

Berikutnya jika in dan out sudah ada di workspace kita, panggil nftool untuk membuat JST dan melakukan pelatihan. Ketik nftool di command window. Masukan input dan outputnya sesuai dengan variabel yang telah dibuat. Jangan lupa klik jumlah record berdasarkan baris atau kolom. Biasanya, jika belum dicentang, tombol next tidak bisa ditekan yang artinya antara input dan output masih ada kesalahan. Klik Next, hingga muncul tampilan sebagai berikut.

 

Berikutnya kita lakukan pelatihan (training) dengan metode Backpropagation. Klik tombol ‘Train’.

Setelah pelatihan selesai, jangan lupa menyimpan hasil pelatihan tersebut ke workspace dengan menekan tombol ‘Save Result‘.

Berikutnya uji dengan beberapa masukan, apakah hasilnya tepat? Untuk menguji hasil pelatihan dapat dilakukan dengan menguji input yang dilatih, apakah sesuai dengan target atau tidak? Gunakan kode berikut.

Perhatikan, hasil antara kolom kiri dan kanan harus sama. Perbedaan menandakan ada kesalahan pada hasil pelatihan. Tetapi jarang diperoleh hasil pelatihan yang memiliki akurasi 100%. Jika ingin melihat Surface, gunakan kode berikut di Command Window untuk melihat hasil surface beragam kemungkinan masukan.

  • plot3(1,1,1)
  • hold
  • Current plot held
  • >> grid
  • >> for i=1:40
  • for j=1:40
  • x=i/10;y=j/10;
  • k=sim(net,[x;y]);
  • if k>0.5
  • plot3(x,y,k,’r*’)
  • else
  • plot3(x,y,k,’b*’)
  • end
  • end
  • end

Wilayah berwarna merah berdasarkan kode di atas masuk dalam kategori memperoleh beasiswa “1” dan biru masuk kategori tidak mendapat beasiswa “0”.

Melihat Surface Jaringan Syaraf Tiruan (JST)

Surface merupakan istilah yang digunakan Matlab terhadap bidang tiga dimensi. Variabel yang ada adalah X, Y, dan Z. Terkadang kita ingin melihat surface JST yang telah kita training untuk mengetahui kinerjanya seperti pada Fuzzy Inference System (FIS) dan Adaptive Neuro-Fuzzy Inference System (ANFIS). Sebagai bahan perbandingan perhatikan data berikut ini yang akan kita latih dengan ANFIS dan JST.

Kolom satu dan dua adalah variabel masukan, sedangkan kolom ketiga menyatakan target pembelajaran. Berikutnya kita latih sistem kita, baik dengan ANFIS maupun JST. Dengan anfis kita peroleh surface sebagai berikut:

Mengenai cara pembuatannya, lihat tulisan saya terdahulu mengenai pelatihan ANFIS. Untuk JST harus kita buat struktur network dan kemudian melatihnya dengan data di atas. Berikut ini contoh code untuk membuat grafik 3D JST dengan nama ‘net‘.

Di sini saya menggunakan resolusi dua digit di belakang koma, dari 0.01 hingga 4. Hasilnya adalah grafik di bawah ini. Lumayan lama (lebih dari 10 menit) ketika kode di atas dijalankan.

Jika dirasa terlalu lama prosesnya, dapat kita turunkan resolusinya menjadi satu digit di belakang koma. Untuk warna data dilakukan dengan perintah di belakang plot3, dengan if-else untuk wilayah warna tertentu.

Sebenarnya ada cara untuk membuat lewat instruksi ‘surface’ atau ‘mesh’, tetapi untuk kasus fungsi ‘sim’ pada matlab tidak bisa dijalankan. Berikut ini contoh script untuk 3D fungsi matematis biasa.

Membuat Logika AND di Anfis

Upload Via Word, 1.11.2012. Tk. Elektronika

And merupakan operator logika dimana masukan kiri dan masukan kanan harus berharga ‘1’ jika ingin dihasilkan keluaran = 1. Untuk mempraktekannya coba buka Matlab anda. Masukkan data di matlab:

>> dat

 

dat =

 

0 0 0

1 0 0

0 1 0

1 1 1

Kemudian ketik anfisedit

Load data dari workspace yang baru saja dibuat, rancang struktur dengan dua mf di tiap tiap masukan. Hasilnya seperti ini, dibuat dua, karena rencananya hanya aka nada dua masukan dekat ke 0 atau ke 1

Lakukan training, kemudian simpan ke file. Buka fuzzy hasil create. Uji RULEnya.

Tarik garis merah ke kenan semua (berarti masukan 1 =1 dan masukan kanan 1), maka hasil output harus satu. Sebaliknya selain itu, missal kiri 0 dan kanan 1, hasilnya harus 0.

Membuat KLF di Simulink Matlab

Di antara berbagai jenis kontroler, Kontroler Logika Fuzzy (KLF) merupakan jenis kontroler terbaru dan memiliki kelebihan dari sisi kepraktisan dibanding dengan Proporsional Integral dan Differensial (PID) yang telah lama digunakan. Untuk mempraktekan KLF, buka Matlab.

  1. Arahkan “Current Directory” ke folder Anda.

  2. Kita akan mencoba membuat KLF paling sederhana, hanya dengan satu masukan, misalnya SUHU. Ketik “fuzzy” di command window.

  3. Secara default, Matlab memberikan satu masukan dengan satu keluaran, dan jenis fuzzy “Mamdani”. Baca teori fuzzy untuk mengetahui jenis-jenis fuzzy. Ganti nama input1 menjadi “error” dan output1 menjadi “respon”.
  4. Berikutnya adalah menyeting “Fungsi Keanggotaan (Membersip Function)“. Dobel klik pada masukan (error). Untuk sistem pemanas, kita akan membagi hanya menjadi dua MF, yaitu error yang rendah dan yang tinggi dengan range (jangkauan) antara -10 hingga 90 derajat. Maksudnya, jika error 90 derajat, berarti selisih antara masukan dengan keluaran sebear 90 derajat. Sedangkan -10 terjadi ketika keluaran lebih besar dari masukan. Tetapi kita masukan saja jangkauannya antara -90 dan 90 derajat.

  5. Berikutnya kita merancang keluaran (respon), dengan menekan respon. Sama dengan error, respon misalnya hanya ada dua MF, yaitu hidup dan mati dengan range antara 0 sampai satu.

     

  6. Setelah mengeset masukan dan keluaran, langkah terpenting adalah membuat rule (aturan) dengan if – then. Jika suhu keluaran dingin maka pemanas dihidupkan. Dingin berarti errornya tinggi, maka buat rule: jika error tinggi then respon hidup. Sebaliknya jika suhu keluaran melebihi set point (panas) maka pemanas dimatikan, rule-nya: jika error rendah then respon mati.

  7. Langkah berikutnya adalah menyimpan FUZZY dengan cara klik File – Export – to File. Beri nama, misalnya “pemanas”. Jika Anda lihat di folder kerja, akan tampak satu file fuzzy dengan nama “pemanas.fis”.
  8. Untuk mengujinya buka jendela model, klik (simulink), gambar bentuk di bawah ini, jika tidak bisa menemukan Fuzzy Logic Controller (FLC) ketik “fuzzy” di searching. Dobel klik pada “Fuzzy” di simulink, isi parameter dengan ‘pemanas.fis’ (gunakan petik satu).

     

  9. Jalankan dengan menekan tombol RUN. Lihat hasilnya dengan merubah-rubah nilai masukan. Hasilnya tampak pada Display.

  10. NOTE: untuk Matlab versi 7.0 ternyata ada masalah di Deffuzifikasi, oleh karena itu ganti metode defuzzifikasinya dari centroid menjadi “bisector”. Selamat Mencoba !

Biometrics

Biometrics is my research focus. I interest to it because they have many advantages compared to conventional method such as user-id and password for login. I ‘ve been looking for biometrics text book in Indonesian, but I have not find it yet until now. Thanks to someone who has upload this book, finally I found it.

If you want to make fingerprint, iris, face, signatture, and others identification system, you must read this book. Also, it discusse more about the standard of biometrics system, what are their limitations?, characteristic?, etc. After the fast development of web-based system (internet), the web-based biometrics system is very interesting to many researcher today.

Kendala Pada Matlab

Matlab merupakan bahasa komputasi teknis yang bermaksud membantu para saintis dalam melaksanakan kegiatan sehari-harinya (riset, project, data processing, dan sebagainya). Kendala mahasiswa yang menggunakan matlab sebagai tool pendukung adalah saat disidang mahasiswa tersebut tidak sanggup menjelaskan konsep dasar yang melatar belakangi operasi pada Matlab. Beberapa penguji terkadang meminta source code dalam bahasa tertentu seperti C++ dan Java. Jika mahasiswa yang bersangkutan sudah mempelajari teori dasarnya terlebih dahulu mungkin tidak ada masalah, namun jika karena terdesak oleh waktu dan mahasiswa itu tidak sempat mempelajari dasar teori algoritma yang mendasarinya, malapetaka akan menimpa mahasiswa itu. Sebenarnya pada help Matlab, setiap akan memberikan referensi tutorial, Matlab memberikan dasar teori pendukungnya dengan disertai oleh buku rujukan yang bisa kita beli atau download di internet.

Untuk kasus dimana dosen penguji meminta kode sumber, mungkin agak sedikit bermasalah terutama jika dosen penguji tersebut tidak mengakui M-file sebagai bahasa pemrograman layaknya C++, Java, VB dan sejenisnya. Untuk menyiasati hal itu ada baiknya kita mengkonversi bahasa matlab menjadi bahasa C++. Langkahnya adalah dengan membuat deployment project (file – new – Deployment Project). Setiap kita selesai membuat kompilasi program menjadi exe, Matlab selalu menyediakan source code dalam bahasa C++ di folder “Src”. Berikut ini contoh program menghitung beasiswa dengan menggunakan FIS dan ANFIS yang setelah dikompilasi muncul file dalam bahasa C++.

Sebenarnya inti dari programming adalah algoritma, jadi jika kita memahami algoritma maka bahasa apapun dapat kita kuasai. Fanatik terhadap satu bahasa menurut saya kurang baik. Tetapi sebisa mungkin kita memahami dua atau tiga bahasa pemrograman yang dapat kita jadikan alat dalam menterjemahkan algoritma yang telah kita kuasai atau sedang dipelajari.

Gambar di atas mengilustrasikan hasil running file executable hasil kompilasi dari bahasa Matlab. Tampak bahwa matlab sudah mampu membuat aplikasi layaknya bahasa pemrograman yang umum dipakai, disetai dengan GUI yang sudah maju sejak versi 6 hingga sekarang (versi 7).

Salam …

Rahmadya Trias Handayanto

Soft Computing

Istilah soft computing merupakan pelengkap dari hard computing yang merupakan komputasi berdasarkan ketidakpastian. Banyak yang bingung apa bedanya soft computing dengan artificial intelligent (AI). AI lebih dahulu muncul, merupakan metode komputasi berdasarkan simbol-simbol dan dikembangkan oleh bahasa pemrograman tertentu seperti prolog, lisp, clips, dan sejenisnya. Soft computing tidak jauh berbeda dengan AI dalam hal penerapan, tetapi dari sisi perhitungan tetap menggunakan notasi-notasi numerik hanya saja dengan algoritma-algoritma tertentu yang saat ini berkembang pesat antara lain: Fuzzy, ANFIS, Jaringan Syaraf Tiruan, Algoritma genetik dan yang terakhir Bayes. Karena berdasarkan algoritma tertentu maka bahasa pemrograman seperti C++, Java, Matlab dan sebagainya dapat digunakan dan tidak lagi dimonopoli oleh bahasa khusus AI.

Fuzzy yang dipelopori oleh Lutfi Askar Zadeh, pria keturunan Iran yang sempat mengenyam pendidikan di Rusia dan saat ini tinggal di Amerika Serikat merupakan dasar dari Soft Computing. Algoritmanya merupakan konversi dari numerik biasa yang diistilahkan dengan CRISP menjadi fungsi keanggotaan Fuzzy yang bersifat manusiawi (linguistik). Beberapa kritikus menanyakan mengapa fuzzy tetap menyandarkan pada aritmatika, sehingga munculah Fuzzy tipe-2 yang memasukkan unsur ketidakpastian.

Jaringan Syaraf Tiruan, yang merupakan metode yang dikembangkan oleh mcculloch – pitts merupakan algoritma yang berusaha meniru bentuk syaraf biologis makhluk hidup. Dengan konsep Neuron-nya disertai dengan bobot dan fungsi aktivasi merupakan terobosan dalam algoritma soft computing. Setelah sempat redup di tahun 70-an karena tidak sanggup menyelesaikan kasus serderhana seperti XoR, akhirnya algoritma ini marak diteliti kembali setelah Hopfield menemukan metode pembelajaran rambatan kesalahan (backprogragation error) yang sanggup mengeset bobot sesuai dengan target pembelajaran.

ANFIS yang merupakan singkatan dari Adaptive Neuro Fuzzy Inference System merupakan penggabungan dari Fuzzy dengan Jaringan Syaraf Tiruan. Bedanya hanya pada rule yang dibentuk lewat mekanisme pembelajaran (learning). Di antara tiga metode pembuatan rule Fuzzy (Mamdani, Sugeno dan Tsukamoto) hanya Sugeno yang secara efisien mampu diaplikasikan pada ANFIS.

Algoritma Genetik yang masuk dalam kategori Evolutionary Computing merupakan algoritma yang berusaha meniru sifat adaptive dari alam sekitar (mirip teori darwin) dimana organisme yang hidup saat ini adalah organisme terbaik yang berhasil unggul dibanding organisme lain yang sudah punah. Metodenya adalah membangkitkan sembarang bilangan, kemudian dievaluasi dengan fungsi objective dan jika kurang baik maka dimusnahkan, sedangkan yang baik, dikawin silangkan serta dimutasi sehingga menghasilkan individu baru yang lebih baik dari induknya. Operasi ini terus berlangsung hingga dihasilkan individu terbaik hasil dari kawin silang dan mutasi.

Bayes, pertama kali dimunculkan dalam bentuk Naive Bayes yang merupakan komputasi berdasarkan statistik probabilistik. Pengambilan keputusan berdasarkan dengan peluang terbesar di antara kandidat yang ada. Terkadang kondisi di lapangan sangat jarang dijumpai kondisi pasti antara A,B,C atau D, seperti pendeteksian penyakit, peramalan cuaca dan sebagainya. Oleh karena itu hasil dari metode bayes ini merupakan peluang terbesar dari suatu kondisi (tidak 100 % akurat).

Metode tersebut di atas terkadang digabungkan antara satu dengan lainnya untuk menghasilkan akurasi, kecepatan dan efisiensi dalam pengoperasiannya. Karena antara satu metode dengan metode lainnya memiliki kelemahan dan kelebihan masing-masing. Metode mana yang Anda gunakan semua ada di tangan Anda. Termasuk bahasa pemrograman yang menjadi pilihan Anda. Untuk saat ini saya sedang mengimplementasikan algoritma Soft Computing dalam bahasa Java, karena bahasa ini merupakan selain bahasa yang open source, banyak dipakai di peralatan, juga dapat berjalan di aplikasi berbasis Web yang saat ini sedang booming.

Rahmadya Trias Handayanto