Amir Hamzah

Just learning material sharing …
Subscribe

Archive for the ‘Fuzzy Logic’

Fuzzy C-Means Clustering

June 12, 2012 By: amir Category: Fuzzy Logic, Pemrograman No Comments →

Kode MATLAB dalam bentuk file *.txt
DOWNLOAD dan ubah ekstension menjadi *.m
========================================

function [U,V,O]=fcm2(x,c)
[n,m]=size(x);
%% initialization
%% matriks data: n baris x m kolom
w=2;
teta=1e-5;
P0=0;
Pt=0;
OB=[];
%step 1 : Initilize U
U=rand(n,c);
Q=sum(U’)’
for i=1:n
U(i,:)=U(i,:)/Q(i);
end
U
pause
ITER=1;
Obj=1e5;
while (Obj>teta)
%step 2 : update V
Q=sum(U.^w)’;
V=(U’.^w*x);
for i=1:c
V(i,:)=V(i,:)/Q(i);
end;

disp(‘NILAI V’), V
pause
%step 3 : update U from V
for i=1:n
S=0;
for k=1:c
S1=0;
for j=1:m
S1=S1+(x(i,j)-V(k,j))^2;
end
S1=S1^(-1/(w-1));
U(i,k)=S1;
S=S+S1;
end
for k=1:c
U(i,k)=U(i,k)/S;
end
end
disp(‘NILAI U’);U
pause

%step 4 : menghitung F
P0=Pt;
Pt=0;
for i=1:n
for k=1:c
for j=1:m
Pt=Pt+( x(i,j)-V(k,j))^2*U(i,k)^w;
end
end
end
Obj=abs(Pt-P0)

ITER=ITER+1
pause
OB=[OB Obj];
end

O=OB;
% end of function

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Cara penggunaan :
Siapkan data dalam variabel x : dalam format n x m
n=cacah objek
m=dimensi objek
misalnya dalam prompt MATLAB :
>> x=[1 3; 0 4; 4 1; 3 0]

x =

1 3
0 4
4 1
3 0
>>>> fcm2(x,2)

Q =

0.2523
0.8116
1.1852
1.2837

U =

0.3107 0.6893
0.7896 0.2104
0.1611 0.8389
0.6574 0.3426

NILAI V

V =

1.2706 2.3846
2.7171 1.7204

NILAI U

U =

0.9103 0.0897
0.7486 0.2514
0.1877 0.8123
0.2594 0.7406

Obj =

7.5831

ITER =

2

NILAI V

V =

0.7854 3.1931
3.3549 0.7321

NILAI U

U =

0.9923 0.0077
0.9454 0.0546
0.0312 0.9688
0.0420 0.9580

Obj =

5.1949

ITER =

3

NILAI V

V =

0.5283 3.4713
3.4999 0.5113

NILAI U

U =

0.9655 0.0345
0.9776 0.0224
0.0262 0.9738
0.0274 0.9726

Obj =

0.4393

ITER =

4

NILAI V

V =

0.4960 3.5039
3.4981 0.5031

NILAI U

U =

0.9609 0.0391
0.9803 0.0197
0.0262 0.9738
0.0263 0.9737

Obj =

0.0046

ITER =

5

NILAI V

V =

0.4922 3.5078
3.4973 0.5028

NILAI U

U =

0.9603 0.0397
0.9806 0.0194
0.0262 0.9738
0.0262 0.9738

Obj =

6.3781e-005

ITER =

6

NILAI V

V =

0.4917 3.5083
3.4972 0.5028

NILAI U

U =

0.9602 0.0398
0.9806 0.0194
0.0262 0.9738
0.0262 0.9738

Obj =

9.2658e-007

ITER =

7

ans =

0.9602 0.0398
0.9806 0.0194
0.0262 0.9738
0.0262 0.9738

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Ralat Tugas-1 LOGIKA FUZZY

April 05, 2012 By: amir Category: Fuzzy Logic No Comments →

Tugas 1 MK LOGIKA FUZZY :
No.1. Tertulis fungsi keanggotaan untuk himpunan fuzzy A=”bilangan mendekati 5″ sbb :
mA (x) = 1 / ( 1 – (5-x)^2 ) untuk x={0,1,2,3,4,5,6,7,8,9,10}
adalah keliru , RALAT YANG BENAR ADALAH :
mA (x) = 1 / ( 1 + (5-x)^2 ) untuk x={0,1,2,3,4,5,6,7,8,9,10}

K-MEAN CLUSTERING

June 01, 2011 By: amir Category: Fuzzy Logic, Pemrograman No Comments →

K-MEAN Clustering merupakan algoritma partisional yang paling sederhana. Algoritma clustering ini diawali dengan pemilihan objek vektor secara acak sebanyak K buah sebagai nilai awal, yang diangap sebagai K pusat cluster.  Selanjutnya algoritma di proses dengan setiap kali memperbaharui nilai pusat cluster. Pusat cluster yang baru diperoleh dengan menghitung ulang rata-rata seluruh vektor  dalam cluster tersebut. Untuk menentukan vektor objek masuk dalam cluster mana, maka pada setiap iterasi semua vektor objek dihitung nilai jaraknya terhadap pusat-pusat cluster yang ada. pusat cluster yang memiliki nilai jarak terkecil terhadap vektor objek yang bersagkutan dipilih sebagai cluster bagai objek tersebut.

Berikut ini algoritma K-MEAN CLUSTERING :

  1. Ambil K objek sebagai seed dari K pusat kluster
  2. Untuk semua objek: cari kluster dengan jarak terdekat, dan tetapkan objek masuk dalam kluster tersebut.
  3. Hitung ulang pusat kluster dengan rata-rata objek dalam kluster tersebut
  4. Hitung fungsi kriteria dan lakukan evaluasi. Jika fungsi kriteria  berubah cukup kecil algoritma berhenti.

Adapun code MATLAB adalah sebagai berikut :

function [c]=kmean(x,k)

[m,n]=size(x)

%m=dimensi vektor

%n=cacah objek

c=zeros(1,n);  M=zeros(m,k);

bilacak=acak(k,n);

for i=1:k    M(:,i)=x(:,bilacak(i));   end

disp(‘SEED :’)

for i=1:k    sprintf(‘Seed ke- %d adalah objek ke- %d’,i,bilacak(i))

x(:,bilacak(i))

end

T0=0;  T1=10; galat =1e-5;  ITER=0;

while ( abs(T1-T0) > galat )

for i=1:n

jmin=1e8;

for j=1 : k

jarak=norm( x(:,i) – M(:,j ) );

if(jarak < jmin )

c(:,i) =j ;  jmin=jarak;

end

end

end

%meralat pusat cluster

CE=zeros(1,k);   M=zeros(m,k);

for i=1:n

M(:, c(i) ) = M (:, c(i)) + x(:,i);

CE(:, c(i) ) = CE(:, c(i) ) +1;

end

for i=1:k     M(:,i)=M(:,i)/CE(:,i);   end

T0=T1;   T1=0;

%mengitung fungsi tujuan baru

for i=1:n

T1=T1+ norm( x(:,i)-M(:,c(i)) );

end

fungsiTujuan=T1

ITER=ITER+1

pause

end %akhir while

 

%%%%%%%%% digunakan untuk mengacak bilangan 1 sampai K %%%%%%%%%%

% disimpan dalam file terpisah : acak.m

function [r]=acak(k,n)

r=[]; c=0;

while (c<k)

bilacak=round(rand*n)

ada=0;

for j=1:c        if( r(j)== bilacak)ada=1; end

end

if(bilacak>0)

if(~ada)

r=[r bilacak]

c=c+1;

end

end

end

%%%%%%%%%%%%%%%%%%%%%%%%% DATA DALAM BENTUK %%%%%%%%%%

x = Matrik berukuran m x N ( m baris , N kolom)

m =dimensi vektor

N=cacah sampel data

PENGANTAR LOGIKA FUZZY

March 01, 2011 By: amir Category: Fuzzy Logic No Comments →

Fuzzy Logic adalah metodologi pemecahan masalah  dengan beribu – ribu aplikasi dalam pengendali yang tersimpan dan pemrosesan informasi. Fuzzy logic menyediakan cara sederhana untuk menggambarkan kesimpulan pasti dari informasi yang ambigu, samar – samar, atau tidak tepat. Sedikit banyak, fuzzy logic menyerupai pembuatan keputusan pada manusia dengan kemampuannya untuk bekerja dari data yang ditafsirkan dan mencari solusi yang tepat.

Fuzzy logic pada dasarnya merupakan logika bernilai banyak (multivalued logic) yang dapat mendefinisikan nilai diantara keadaan konvensional seperti ya atau tidak, benar atau salah, hitam atau putih, dan sebagainya. Penalaran fuzzy menyediakan cara untuk memahami kinerja dari system dengan cara menilai input dan output system dari hasil pengamatan.


Sejarah

Konsep Fuzzy Logic diperkenalkan oleh Prof. Lotfi Zadeh dari Universitas California di Berkeley pada 1965, dan dipresentasikan bukan sebagai suatu metodologi control, tetapi sebagai suatu cara pemrosesan data dengan memperkenankan penggunaan partial set membership dibanding crisp set membership atau non-membership. Pendekatan pada set teori ini tidak diaplikasikan pada system control sampai tahun 70an karena kemampuan computer yang tidak cukup pada saat itu. Profesor Zadeh berpikir bahwa orang tidak membutuhkan kepastian, masukan informasi numeric, dan belum mampu terhadap control adaptif yang tinggi.

Konsep fuzzy logic kemudian berhasil diaplikasikan dalam bidang control oleh E.H. Mamdani. Sejak saat itu aplikasi fuzzy berkembang kian pesat. Di tahun 1980an negara Jepang dan negara – negara di Eropa secara agresif membangun produk nyata sehubungan dengan konsep logika fuzzy yang diintegrasikan dalam produk – produk kebutuhan rumah tangga seperti vacuum cleaner, microwave oven dan kamera video.  Sementara pengusaha di Amerika Serikat tidak secepat itu mencakup teknologi ini. Fuzzy logic  berkembang pesat selama beberapa tahun terakhir. Terdapat lebih dari dua ribu produk dipasaran yang menggunakan konsep fuzzy logic, mulai dari mesin cuci hingga kereta berkecepatan tinggi. Setiap aplikasi tentunya menyadari beberapa keuntungan dari fuzzy logic seperti performa, kesederhaan, biaya rendah dan produktifitasnya.


Alasan Penggunaan Fuzzy Logic

Fuzzy logic menawarkan beberapa karakteristik unik yang menjadikannya suatu pilihan yang baik untuk banyak masalah control. Karakteristik tersebut antara lain :

  1. Sudah menjadi sifatnya yang kuat selama tidak membutuhkan ketepatan, input yang bebas derau, dan dapat diprogram untuk gagal dengan aman jika sensor arus balik dimatikan atau rusak. Control output adalah fungsi control halus meskipun jarak variasi input yang cukup besar.
  2. Selama fuzzy logic controller memproses aturan – aturan yang dibuat user yang memerintah system control target, ia dapat dimodifikasi dengan mudah untuk meningkatkan atau mengubah secara drastis performa system. Sensor yang baru dapat dengan mudah digabungkan kedalam system secara sederhana dengan menghasilkan aturan memerintah yang sesuai.
  3. Fuzzy logic tidak terbatas pada sedikit masukan umpan-balik dan satu atau dua output control, tidak juga penting untuk menilai atau menghitung parameter rata –  rata perubahan dengan tujuan agar ia diimplementasikan. Sensor data yang menyediakan  beberapa indikasi untuk aksi dan reaksi system sudah cukup. Hal ini memungkinkan sensor menjadi murah dan tidak tepat sehingga menghemat biaya system keseluruhan dan kompleksitas rendah.
  4. Karena operasi – operasi yang berbasiskan aturan, jumlah input yang masuk akal dapat diproses ( 1 sampai 8 atau lebih ) dan  banyak output ( 1 sampai 4 atau lebih ) dihasilkan, walaupun pendefinisian rulebase secara cepat menjadi rumit jika terlalu banyak input dan output dipilih untuk implementasi tunggal selama pendefinisian rules(aturan), hubungan timbal baliknya juga harus didefinisikan. Akan lebih baik jika memecah system kedalam potongan – potongan yang lebih kecil dan menggunakan fuzzy logic controllers yang lebih kecil untuk didistribusikan pada system, masing – masing dengan tanggung jawab yang lebih terbatas.
  5. Fuzzy Logic dapat mengontrol system nonlinier yang akan sulit atau tidak mungkin untuk dimodelkan secara matematis. Hal ini membuka pintu bagi system control yang secara normal dianggap tidak mungkin untuk otomatisasi.

Sedangkan karakteristik utama dari fuzzy logic yang ditemukan oleh Prof. Lotfi A. Zadeh adalah sebagai berikut:

  • Dalam fuzzy logic, penalaran tepat dipandang sebagai suatu kasus terbatas dari penalaran kira –kira.
  • Dalam fuzzy logic segala sesuatunya adalah masalah derajat.
  • System logis manapun dapat difuzzifikasi.
  • Dalam fuzzy logic, pengetahuan diinterpretasikan sebagai koleksi dari fuzzy yang dipaksakan pada sekumpulan variable.
  • Kesimpulan dipandang sebagai sebuah proses dari perkembangan pembatas elastis.


Bagaimana Fuzzy Logic Digunakan

Adapun langkah – langkah penggunaan fuzzy logic adalah sebagai berikut:

  • Definisikan obyektif dan criteria control :
  1. Apa yang kita coba control ?
  2. Apa yang harus kita lakukan untuk mengontrol system ?
  3. Respon seperti apa yang kita butuhkan ?
  4. Apa mode kegagalan system yang mungkin ?
  • Tentukan hubungan antara input dan output serta memilih jumlah minimum variable input pada mesin fuzzy logic(secara khusus error dan rata – rata perubahan error).
  • Dengan menggunakan struktur berbasis aturan dari fuzzy logic, jabarkan permasalahan control ke dalam aturan IF X AND Y THEN Z yang mendefinisikan respon output system yang diinginkan untuk kondisi input system yang diberikan. Jumlah dan kompleksitas dari rules bergantung pada jumlah parameter input yang diproses dan jumlah variable fuzzy yang bekerjasama dengan tiap – tiap parameter. Jika mungkin, gunakan setidaknya satu variable dan turunan waktunya. Walaupun mungkin untuk menggunakan sebuah parameter tunggal yang error saat itu juga tanpa mengetahui rata – rata perubahannya, hal ini melumpuhkan kemampuan system untuk meminamalisasi keterlampauan untuk sebuah tingkat input.
  • Buat fungsi keanggotaan yang menjelaskan nilai input atau output yang digunakan didalam rules.
  • Buat rutinitas proses awal dan akhir yang penting jika diimplementasikan dalam software, sebaliknya program rules kedalam mesin hardware fuzzy logic.
  • Test system, evaluasi hasil, atur rules dan fungsi keanggotaan, dan retest sampai hasil yang memuaskan didapat.

SUmber : sumber kopas dari sini