PROGRAM STUDI D3
JURUSAN TEKNIK KOMPUTER
POLITEKNIK NEGERI SRIWIJAYA PALEMBANG
TK
Fuzzy Membership
Function
Pertemuan 14
Inteligensi Buatan
100 menit
[x] =
1|H a l a m a n
0;
xa
(x a) / (b a); a x b
1;
xb
Berapakahderajatkeanggotaanuntuk320Celcius?
2|H a l a m a n
3) Kemudian atur direktori kerja pada window current directory supaya merujuk pada
alamat penyimpanan file linear_naik.m. Anda dapat melakukan klik pada tombol
untuk menelusuri alamat penyimpanan file linear_naik.m. perhatikan gambar
berikut.
Catatan:
Jika alamat current directory berbeda dengan alamat file linear_naik.m, maka fungsi
yang telah dibuat tidak dapat dijalankan.
4) Selanjutnya lakukan pengujian terhadap fungsi yang telah dibuat, dengan
mengetikkan kode berikut lewat command window. Anda cukup mengetikkan pada
bagian >> dengan menuliskan linear_naik(32,25,35) selanjutnya tekan tombol
Enter. Hasil dari fungsi dapat dilihat sebagai umpan balik dari sistem dengan
member jawaban (ans) bernilai 0.7.
b) Linear turun
Garis lurus dimulai dari nilai domain dengan derajat keanggotaan tertinggi pada sisi kiri,
kemugian bergerak menurun ke nilai domain yang memiliki derajat keanggotaan lebih
rendah.
(bx)/(ba);axb
[x] =
0;
xb
3|H a l a m a n
DINGIN
1
Derajat
keanggotaan
[x]
0,667
0
15
20
30
DINGIN[20]=(3020)/(3015)
=10/15
=0,667
Kemudian untuk pengujian dapat dituliskan secara langsung dalam command window
sebagai berikut:
2. 2 Kurva Segitiga
Kurva segitiga pada dasarnya merupakan gabungan antara 2 garis linear seperti terlihat
berikut.
Fungsikeanggotaan:
0;xaatauxc
[x] =
4|H a l a m a n
(x-a)/(b-a); a x b
(c-x)/(c-b); b x c
Sebagai contoh untuk variable temperature dengan himpunan normal yang bernilai domain
dari 15-30 dapat digambarkan sebagai berikut.
NORMAL [23]
= (23-15)/(25-15)
= 8/10
= 0,8
Berbeda dengan fungsi linear naik maupun turun, di dalam matlab telah disediakan sebuah
fungsi built-in berupa kurva segitiga yang diberi nama trimf() atau dengan nama lengkap
Triangular membership function.
Syntax :
y = trimf(x,params)
y = trimf(x,[a b c])
melalui command window silahkan jalankan fungsi trimf() dengan script berikut.
>> x = 0:0.1:35;
>> y = trimf(x,[15 25 35]);
>> plot(x,y);grid;title('Fungsi Segitiga');xlabel('x');ylabel('mu[x]');
Sehingga diperoleh hasil sebagai berikut.
Anda dapat mencoba untuk mengecek hasil nilai untuk setiap input x sebagai berikut.
>> y = trimf(23,[15 25 35])
>> y = trimf(20,[15 25 35])
Hasil yang diperoleh adalah bahwa x = 23 akan menghasilkan y =0.8, sedangkan x = 20
akan menghasilkan y = 0.5.
5|H a l a m a n
Derajat
keanggotaan
[x]
0
a
DOMAIN
Fungsikeanggotaan:
Derajat
keanggotaan
[x]
0,375
0
15
24
NORMAL[32]=(3532)/(3527)
=3/8
=0,375
27
32 35
Di dalam matlab terdapat fungsi built-in dengan nama trapmf() atau Trapezoidal-shaped
built-in membership function. Dengan syntax:
y = trapmf(x,[a b c d])
script berikut digunakan untuk memetakan setiap input x ke y.
>> x = 0:0.1:35;
>> y = trapmf(x,[15 24 27 35]);
>> plot(x,y);grid;title('Fungsi Trapesium');xlabel('x');ylabel('mu[x]');
Sehingga diperoleh hasil pemetaan fungsi keanggotaan untuk setiap input x dalam domain
seperti tampilan gambar berikut.
6|H a l a m a n
Untuk mencoba seperti kasus hitungan manual pada temperature normal dapat dihitung
dengan cara sebagai berikut.
>> y = trapmf(32, [15 24 27 35])
Maka akan diperoleh jawaban 0,375
2. 4 Representasi Kurva S
Kurva S merupakan kurva sigmoid pertumbuhan dengan kenaikan permukaan secara tidak
linear. Kurva S pertumbuhan akan bergerak dari sisi paling kiri dengan nilai keanggotaan 0
(nol) ke sisi keanggotaan 1. Fungsi keanggotaannya akan bertumpu pada 50% nilai
keanggotaanya yang sering disebut dengan titik infleksi.
Kurva S didefinisikan dengan menggunakan 3 parameter, yaitu nilai keanggotaan 0 (), titik
infleksi atau crossover () nilai keanggotaan lengkap ().
Fungsikeanggotaan:
0;x
7|H a l a m a n
TUA
1
0.68
Derajat
keanggotaan
[x]
0
35
50
60
Denganperhitungan:
TUA[50]=12((6050)/(6035))2
= 1 - 2 (10/25)2
= 0,68
Di dalam matlab disediakan sebuah fungsi dengan nama smf() atau dengan nama lengkap
S-shaped curve membership function dengan syntax:
y = smf(x,[a b])
Anda dapat menyelesaikan kasus pada himpunan tua dengan menjalankan script berikut
pada rentang domain TUA.
>> x=0:0.1:60;
>> y=smf(x,[35 50]);
>> plot(x,y);title('Fungsi Keanggotaan S');xlabel('x');ylabel('mu[x]');
8|H a l a m a n
Jika akan dilihat nilai input tepat pada titik infleksi (yaitu 47.5), maka akan diperoleh hasil
sebagai berikut.
>> y = smf(47.5,[35 60])
y=
0.5000
2. 5 Representasi Kurva Z
Fungsi kurva Z disebut juga kurva penyusutan, karena nilai bergerak dari sisi paling kiri
dengan nilai keanggotaan 1 ke kanan dengan nilai keanggotaan 0.
Fungsikeanggotaan:
1;x
MUDA[37]=2((5037)/(5020))2
=2(13/30)2
=0,376
Di dalam matlab telah disediakan sebuah fungsi dengan nama zmf () atau dengan nama
lengkapZshapedbuiltinmembershipfunction.Dengansyntax:
y=zmf(x,[ab])
9|H a l a m a n
Pada kasus himpunan himpunan muda dengan = 20 dan = 50 dapat ditulis diselesaikan
dengan script berikut:
>> x=0:0.1:60;
>> y=zmf(x,[20 50]);
>> plot(x,y);title('Fungsi Keanggotaan Z');xlabel('x');ylabel('mu[x]');
Sehingga menghasilkan gambar seperti berikut:
Kita dapat menyelesaikan kasus untuk input usia 37 dengan perintah sebagai berikut.
>> y=zmf(37,[20 50])
y=
0.3756
Jika kita menghitung untuk input dengan nilai infleksi maka dapat digunakan perintah
berikut:
>> y=zmf(35,[20 50])
y=
0.5000
10|H a l a m a n
2. 6 Kurva PI ()
Kurva PI berbentuk lonceng dengan derajat keanggotaan 1 terletak pada pusat dengan
domain , lebar kurva .
Fungsi Keanggotaan:
x
S(x; , /2, )
[x] = (x,,) = { 1-S(x; , + /2, +) x >
Sebagai contoh pada kasus himpunan setengah baya pada variable umur digambarkan
pada kurva berikut.
SBAYA[42]=12[(4542)/(4535)]2
=12(3/10)2
=12(0.09)
=10.18
=0,82
Cobamenghitungpadatitikinfleksi(45)
SBAYA[45]=12[(4545)/(4535)]2
=12(0/10)2
=12(0)
=10
=1
11|H a l a m a n
SBAYA[51]=1(12[(5551)/(5545)]2)
=1(12(4/10)2)
=1(12(0.16))
=1(10.32)
=10.68
=0,32
Di dalam matlab disediakan sebuah fungsi dengan nama pimf() atau dengan nama
lengkap PI-shaped built-in membership function. Dengan syntax:
y = pimf(x,[a b c d])
script berikut digunakan untuk menggunakan fungsi pimf() dalam rentang input x
sebagai domain himpunan setengah baya.
>> x=0:0.1:55;
>> y=pimf(x,[35 45 45 55]);
>> plot(x,y);title('Fungsi Keanggotaan PI');xlabel('x');ylabel('mu[x]');
sehingga diperoleh hasil sebagai berikut:
Anda dapat mencoba beberapa script sebagai berikut untuk memperoleh nilai
keanggotaan pada himpunan separu baya:
>> y=pimf(42,[35 45 45 55])
y=
0.8200
>> y=pimf(51,[35 45 45 55])
y=
0.3200
>> y=pimf(45,[35 45 45 55])
y=
1
12|H a l a m a n
2. 7 Kurva BETA
Pada dasarnya baik kurva PI maupun kurva BETA merupakan bagian dari kurva bentuk
lonceng, karena memang bentuk permukaannya mirip dengan lonceng. Faktor yang
membedakan antara keduanya adalah pada kerapatannya, sehingga berada dalam kelas
yang berbeda.
Kurva BETA didefinisikan dengan 2 parameter, yaitu nilai pada domain yang menunjukkan
titik pusat kurva () dan setengah lebar kurva () pada sisi kanan dan kiri dari titik pusat.
DOMAIN
Titik infleksi
-
Titik infleksi
+
Derajat
keanggotaan
[x]
0.5
Titik
pusat
Fungsikeanggotaan:
; ,
Sebagai contoh akan dibuat sebuah variable umur dengan himpunan SETENGAH BAYA
(SB) sebagai berikut:
SB[42]=1/(1+((4245)/5)2)
=0,7353
SB[51]=1/(1+((5145)/5)2)
=0,4098
13|H a l a m a n
Di dalam perangkat lunak matlab secara default belum terdapat fungsi BETA, sehingga
untuk keperluan pembuatan system fuzzy dapat dilakukan dengan membuat fungsi buatan
sendiri.
Buat sebuah script dengan nama KURVA_BETA.m, simpan di direktori kerja
function y = KURVA_BETA(x);
[m n] = size(x);
for i=1:n,
if (x(i)<=35) | (x(i)>=55)
y(i)=0;
else
y(i) = 1/(1+((x(i)-45)/5)^2)
end;
end;
selanjutnya dari command window silahkan uji nilai yang telah dihitung secara manual. Jika
pada pengujian program sama dengan hasil perhitungan secara manual maka dapat
dikatakan pembuatan fungsinya berhasil dengan benar.
>> x=42;
>> y=KURVA_BETA(x)
y=
0.7353
>> x=51;
>> y=KURVA_BETA(x)
y=
0.4098
Selanjutnya untuk mengukur titik infleksi pada sisi kiri dan kanan dari titik pusat.
>> x=40;
>> y=KURVA_BETA(x);
y=
0.5000
>> x=50;
>> y=KURVA_BETA(x);
y=
0.5000
Selanjutnya dapat dilakukan proses untuk menggambar grafik input untuk setiap nilai x
sebagai rentang nilai dari sebuah domain.
>> x=0:55;
>> y=KURVA_BETA(x);
>> plot(x,y);title('Kurva BETA');xlabel('x');ylabel('mu[x]');
Sehingga diperoleh hasil sebagai berikut.
14|H a l a m a n
Untuk himpunan DINGIN, maka dapat dibuat sebuah formula sebagai berikut:
x 20
1;
DINGIN [x] = { (28-x)/28-20; 20 x 28
0;
x 28
x 25 atau x 35
0;
NORMAL [x] = { (x-25)/30-25; 25 x 30
(35-x)/35-30; 30 x 35
x 33
0;
PANAS [x] = { (x-33)/40-33; 33 x 40
x 40
1;
15|H a l a m a n
Fungsi yang digunakan untuk menyelesaikan kasus di atas harus diselesaikan dengan membuat
fungsi buatan sendiri. Karena pada dasarnya kurva bentuk bahu merupakan gabungan dari
fungsi linear dan fungsi segitiga.
DINGIN.m
function y = DINGIN(x);
[m n] = size(x);
for i=1:n,
if x(i) >= 28
y(i) = 0;
elseif (x(i) >= 20) & (x(i) <= 28)
y(i) = (28-x(i))/(28-20);
else
y(i) = 1;
end;
end;
NORMAL.m
function y = NORMAL(x);
[m n] = size(x);
for i=1:n,
if (x(i) <= 25) | (x(i) >= 35)
y(i) = 0;
elseif (x(i) >= 25) & (x(i) <= 30)
y(i) = (x(i)-25)/(30-25);
elseif (x(i) >= 30) & (x(i) <= 35)
y(i) = (35-x(i))/(35-30);
end;
end;
PANAS.m
function y = PANAS(x);
[m n] = size(x);
for i=1:n,
if x(i) <= 33
y(i) = 0;
elseif (x(i) >= 33) & (x(i) <= 40)
y(i) = (x(i)-33)/(40-33);
else
y(i) = 1;
end;
end;
Kemudian ujilah hasil pembuatan script dengan menjalankan perintah berikut pada command
window.
16|H a l a m a n
Tugas :
1) Modifikasilah program matlab pada representasi linear naik untuk himpunan PANAS
keanggotaan 1) sehingga semua rentang nilai pada domain dapat ditampilkan dalam
grafik fungsi keanggotaan. Buat m-file dengan nama PANAS_LINEAR.m
2) Modifikasilah program matlab pada representasi linear turun untuk himpunan DINGIN
keanggotaan 1) sehingga semua rentang nilai pada domain dapat ditampilkan dalam
grafik fungsi keanggotaan. Buat m-file dengan nama DINGIN_LINEAR.m
Sumber referensi:
Kusumadewi, Sri. 2002. Analisis dan
Desain Sistem Fuzzy
Menggunakan Toolbox Matlab.
Yogyakarta: Penerbit Graha Ilmu
17|H a l a m a n
Nama Laboratorium :
(fungsi
bentuk
(fungsi
bentuk
Nomor Komputer :