BAB
8
STAND-ALONE FIS (Fuzzy Inference System) BAHASA C
Fuzzy Logic Toolbox
sudah menyediakan stand-alone FIS dalam bahasa C. Dalam direktori
instalasi MATLAB, cari folder toolbox¥fuzzy¥fuzzy
dan akan muncul dua file, yaitu fismain.c
dan fis.c.
Kedua file tersebut masih berupa source code yang belum dikompliksi dan sangat
memungkinkan untuk dikomplikasi sesuai dengan kebutuhan. Setelah dikomplikasi
menjadi sebuah executable file, file tersebut bisa membaca file FIS yang
dihasilkan dari MATLAB dan file data input (file teks) untuk FIS.
8.1 Komplikasi dalam Linux/Unix
Jika
ingin menggunakan FIS pada sistem operasi Linux atau Unix, file apat
dikomplikasi dengan memberikan satu baris perintah berikut dalam Unix promt
atau Linux promt:
cc -o -o
fis.exe fismain.c lm
perhatikan
bahwa file fis.c tidak harus dipanggil secara eksplisit dalam perintah komplikasi
di atas karena sudah dipanggil dalam file fismain.c
dengan perintah:
#include “fis.c”
Hasil
dari komplikasi tersebut adalah sebuah executable file yang diberi nama
fis.exe. Untuk nama file bisa diganti formatnya dan tidak harus .exe.
8.2
Komplikasi dalam Windows
Berikut
adalah contoh cara mengkomplikasi fismain.c
dalam Windows dengan menggunakan Visual C++ bawaan Microsoft Visual Studio. Langkah-langkahnya,
yaitu:
1. Pilih
New Project. Untuk bisa mengkomplikasi suatu file menjadi executable
file hnya bisa dulakukan dengan membuat suatu project terlebih dahulu.
2. Pada
Project Type, klik tanda’-‘ pada item Visual C++ Project lalu
pilih Win32. Pada kotak Templates, pilih Win32 Console Project.
3. Tentukan
direktori project lalu beri nama. Pastikan direktori sesuai dengan yang
diinginkan dengan tampilnya tulisan Project will be created at...
4. Pilihi
Application setting.
5. Pastikan Application Type adalah Console Application
.6. Pilih Empty Project pada bagian Additional Options.
7. Pilih
menu untuk menggbukan source code file menjadi bagian dari project .
8. Pada
folder instalasi Matlab, cari folder fuzzy¥fuzzy, temukan
file
fismain.c, lalu klik dua kali file
tersebut.
9. Pilih
menu untuk komplikasi fismain.c menjadi fis.exe.
Nama fis.exe
akan selalu sesuai dengan nama project yang diisikan sebelumnya.
10. Jika
komplikasi berhasil, maka akan muncul tampilan hasil komplikasi seperti pada Gambar
8.10. Executable file fis.exe seharusnya bisa ditemukan
di folder e:¥Matlab¥work¥fis¥Debug, yang mana adalah lokasi
default jika urutan langkah yang ditempuh sama persis dengan langkah di atas.
8.3
Eksekusi
Setelah
komplikasi berhasl, silahkan menuju ke folder dimana fis.exe
berada kemudian ketik:
fis.exe
dan
akan menghasilkan respon:
Usage: fis.exe
data_file fis_file
Pesan
ini berarti fis.exe meminta dua file: data_file
dan fis_file.
data_file
adalah file yang berisi matriks data masukan untuk FIS. Tiap baris dalam data_file
adalah sebuah vektor masukan, dan tiap kolomnya bersesuaian dengan vektor input
data tertentu. fis_file adalah sebuah file FIS
berekstensi .fis yang dibuat dan disimpan dari Matlab. Sebagai
contoh, digunakan data yang didapat dengan mengeksekusi file tripdata.m.
Pada Matlab Editor, ketikkan:
% menghapus
sueua variabel yang ada dalam memori clear all % membersihkan
tampilan clc %
mengeksekusi file trpdata.m tripdata % membuat
FIS awal, dengan % data input
: datin % hasil ekekus tripdata % data
output : datout % hasil eksekusi tripdata fis=genfis2(datin,
datout, 0.5); % melatih
FIS awal, dan menyimpan hasil pelatihan % dalam
variabel trainedfis trainedfis=anfis([datin
datout],fis,[55 0 0.1]); |
Simpan
program di atas, misalkan dengan nama file fisku.m,
lalu pada MATLAB promt, ketikkan:
fisku
maka
akan didapatkan sebuah FIS trainedfis yang sudah dilatih
dengan pasangan data datin dan datout.
Sekarang,
persiapkan data input dan file FIS sehingga bisa menjalankan fis.exe
tanpa bergantung pada MATLAB. Misalkan, dipakai datin
sebagai data masukan. Simpan datin ke disk dalam format
ASCII dengan perintah berikut:
save fis_in.dat
datin -ascii
maka
datin
akan diubah ke format ASCII dan disimpan ke dalam disk dengan nama file fis_in.dat.
lokasi file sama dengan lokasi Current Directory dari MATLAB. Simpan variabel FIS trainedfis
ke dalam disk dengan perintah:
writefis(trainedfis)
maka
akan muncul kotak dialog Save FIS. Ketikkan nama untuk FIS, misalkan trainedfis
lalu Save sehingga variabel workspace trainedfis
akan disimpan dalam disk dengan nama trainedfis.fis.
pindahkan dan copy file fis_in.dat dan trainedfis.fis
ke folder dimana fis.exe berada. Jalankan perintah:
fis.exe
fis_in.dat trainedfis.fis
Dengan
perintah ini, output dari FIS trainedfis akan ditampilkan, dimana
setiap barisnya adalah vektor output. Output dari FIS ini bisa langsung
disimpan ke dalam disk (berformat ASCII) dengan perintah:
fis.exe
fis_in.dat trainedfis.fis > out_trainedfis.dat
dimana out_trainedfis.dat adalah nama file teks dari output FIS.
Beberapa
hal yang perlu diketahui mengenai stand-alone executable file:
1. ANSI
C compatible
2. Hanya
bisa memakai fungsi-fungsi keanggotaan yang disediakan delam Fuzzy Logic Toolbox
yang berjumlah 11 buah.
3. fismain.c
hanya berisi fungsi main.c. Namun, tetap bisa
digabunggakan dengan source file code buatan sendiri.
4. Jika
ingin menggunakan fungsi-fungsi keanggotaan buatan sendiri, file fis.c
yang berisi semua fungsi yang diperlukan untuk melakukan proses fuzzy
inference harus dimodifikasi.
8.4 Membuat
Sendiri Stand-Alone FIS
Stand-alone
FIS bahasa C++
#include
<stdio.h> #include
<math.h> /*Generalized
bell curve membership function */ double gbllmf
(double X, double * par) { double A,B,C,dom; A=par[0]; B=par[1]; C=par[2]; Dom=1./pow( 1+fabs( (X-C)/A
),2*B); Return dom; } /*Takagi-Sugeno FIS */ double TK-FIS(double *
in_data, double * parin, double * parout,int * rule,int * par) /* in_data : sebuah vektor data
input parin : matriks parameter
membership function keseluruhan input parout : matriks koefisien
persamaan garis semua bagain THEN-rules rule : matriks nomor
membership function dan noor persamaan garis yang dupakai dalam tiap TF-THEN
rule par : vektor parameter yang
berisi {input_num,
mf_num, mf_par_num, rule_num} (lihat
penjelasan di bawah) */ { double z, //output
dari rule berupa a line equation w,
//antecedent weight W, //total
weight FISOut; //FIS
Output int
input_num,//jumlah input mf_num,//jumlah membership
function tiap input mf_par_num,//jumlah
parameter membership function tiap input rule_num,//jumlah rule mf_no,//kode indeks
membership function parin_col,//indeks kolom pada
matriks parin i,j,k; input_num=par[0]; mf_num=par[1]; mf_par_numpar[2]; rule_num=par[3]; double * mf_par = new
double(mf_par_num+1); FISOut=0.; W=0.; for (i=1;i<=rule_num;i++) { w=1.0; z=0.0; for (j=1;j<=input_num;j++) { mf_no=rulr[(i-1)*(input_num+1+j)]; for (k=1;k<=mf_par_num;k++) { parin_col=(mf_no-1)*mf_par_num+k; mf_par[k-1]=parin[(j-1)*mf_num*mf_par_num+parin_cc1)] } w*=gbellmf(in_data[j-1],mf_par);//fuzzy
operation AND z+=in_data[j-1]*parout[(i-1)*(input_num+1)+j]; } z+=parout[(i-1)*(input_num+1)+input_num+1]; FISOut+=w*z; W+=w; } FISOut=FISOut/W; Return FISOut; } |
Source
code pada program di atas berisi dua buah fungsi: gbllmf
dan TK_FIS.
Bagian terpenting implementasi FIS ada pada fungsi TK_FIS
dengan defenisi:
double TK-FIS(double
* in_data, double * parin, double * parout,int * rule,int * par)
penjelasan
format data yang harus diisikan ke argumen in_data, parin, parout, rule,
dan par
dalam fungsi TK_FIS diberikan di bawah. Semua argumen
tersebut berupa single array tetapi difungsikan sebagai “matriks”, tergntung
pada cara pengaksesan elemen-elemennya.
Untuk
menggunakan fungsi TK_FIS, semua input FIS harus
mempunyai jumlah dan jenis membership function berjenis gbellmf
(generalized bell cureve membership function). TK_FIS
mengasumsikan bahwa pada bagian antecedent IF-THEN rule, antar input
hanya berlaku operasi fuzzy logic AND.
Video terkait materi
Tidak ada komentar:
Posting Komentar