IMPLEMENTASI LOGIKA FUZZY DALAM PROGRAM
PENGAMBILAN KEPUTUSAN PENERIMA BEASISWA
Diajukan Untuk Memenuhi
Salah Satu Tugas Mata Kuliah Kecerdasan Buatan Dosen : Nelly Indriani W,S.Si., M.T
Oleh :
10112093 - Ilham Abdul Rahman F 10112146 - Pandega Haqqi Sadieda 10112652 - Imam Nur Arifin
Kelas: AI-3
Kelompok 6 Fuzzy Logic
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK DAN ILMU KOMPUTER
Daftar Isi
Daftar Isi... 1
1. Pendahuluan... 2
1.1. Deskripsi Sistem... 2
1.2. Tujuan Sistem... 2
1.3. Keunggulan Metode...2
2. Pendahuluan Sistem... 3
2.1. Representasi Data Masukan...3
2.2. Mekanisme Sistem...3
2.3. Representasi Output Sistem...4
3. Analisis dan Implementasi Sistem...5
Contoh Implementasi :... 8
4. Kesimpulan dan Saran...17
5. Referensi... 18
1. Pendahuluan
1.1. Deskripsi Sistem
Beasiswa adalah pemberian berupa bantuan keuangan yang diberikan kepada seseorang yang bertujuan untuk digunakan demi keberlangsungan pendidikan yang ditempuh. Keputusan penerima beasiswa dengan mempertimbangkan nilai Indeks Prestasi Komulatif (IPK), gaji orang tua, dan nilai hasil ujian penerimaan beasiswa. Sistem yang akan dibuat yaitu pengambilan keputusan penerima beasiswa dengan menggunakan kecerdasan buatan dari implementasi fuzzy logic. Logika fuzzy/fuzzy logic merupakan metodologi pemecahan masalah dengan aplikasi atau program dalam pengendali yang tersimpan dan pemrosesan informasi. Pada saat program dijalankan user memasukkan nilai IPK seseorang, kemudian dilanjutkan memasukkan nominal gaji orang tua, dan nilai hasil ujian penerima beasiswa. Setelah itu sistem akan menentukan apakah dapat atau tidaknya beasiswa dengan mengacu dari peraturan yang telah dibuat sebelumnya.
1.2. Tujuan Sistem
Sistem yang akan dibuat merupakan suatu bentuk program pengambilan keputusan penerima beasiswa yang telah ditanamkan kecerdasan buatan agar user dapat membuat keputusan pasti dari informasi yang ambigu, samar-samar, atau tidak tepat. Keputusan yang dihasilkan disertai dengan perhitungan yang mengacu pada peraturan penerima beasiswa, sehingga pengambilan keputusan dapat dipertanggungjawabkan. Hal ini akan mempermudah user dalam membuat pengambilan keputusan terhadap seseorang yang telah mengajukan beasiswa.
1.3. Keunggulan Fuzzy Logic
2. Pendahuluan Sistem
Salah satu aplikasi Logika Fuzzy adalah sebagai alat bantu dalam pengambilan keputusan. Kasus yang akan kami implementasikan adalah pengambilan keputusan untuk menentukan mahasiswa yang layak mendapatkan beasiswa. Dengan parameter yang akan digunakan sebagai pertimbangan adalah IPK dan Gaji Orang Tua,
2.1. Representasi Data Masukan
Data yang diinput user merupakan IPK dan Gaji Orang Tua.
2.2. Mekanisme Sistem
2.3. Representasi Output Sistem
Saat Sistem dijalankan, output pertama yang muncul merupakan entry data IPK dan Gaji Orang Tua.
Gambar Entry Data IPK dan Gaji Orang Tua
Kemudain tekan tombol enter, maka akan menampilkan hasil derajat kelulusan dari setiap aturan dan nilai kelayakan penerima beasiswa.
3. Analisis dan Implementasi Sistem Fuzzification
Misalkan untuk IPK kita menggunakan fungsi keanggotaan trapesium dengan tiga variable linguistic : Bagus, Cukup dan Buruk. Dengan fungsi maka crisp input IPK 3.00 dikonversi ke nilai fuzzy dengan cara:
IPK 3.00 berada pada nilai linguistic Bagus dan Cukup
Derajat Keanggotaan untuk IPK Bagus dihitung menggunakan rumus (x−a) /(b−a), a<x<b, dimana a = 2,75 dan b = 3,25. Sehingga derajat
keanggotaan untuk IPK Bagus = (3.00−2.75) /(3.25−2.75) = 0.5
Derajat Keanggotaan untuk IPK Cukup dihitung menggunakan rumus −(x−c) /(c−b) dimana c = 3.25 dan b = 2.625. Sehingga derajat keanggotaan
untuk IPK Bagus = −(3.00−3.25)/(3.25−2.625) = 0.4
Misalkan untuk Gaji Orang Tua kita menggunakan fungsi keanggotaan trapesium dengan empat variable linguistic : Kecil, Sedang, Besar dan Sangat Besar. Dengan fungsi maka crisp input Gaji Orang Tua Rp. 10.000.000,- dikonversi ke nilai fuzzy dengan cara:
Gaji Orang Tua berada pada nilai linguistic Besar dan Sangat Besar
Derajat Keanggotaan untuk Gaji Orang Tua Besar dihitung menggunakan rumus −(x−d)/(d−c), c<x ≤ d, dimana c = 7.000.000 dan d = 12.000.0000. Sehingga
derajat keanggotaan untuk Gai Orang Tua Besar = −(10.000.000−12.000 .000)/ (12.000.000−7.000 .000) = 0.67
Derajat Keanggotaan untuk Gaji Orang Tua Besar dihitung menggunakan rumus (x−a) /(b−a), a<x<b dimana a = 7.000.000 dan b = 12.000.000. Sehingga
derajat keanggotaan untuk IPK Bagus =
Jadi proses fuzzification menghasilkan empat fuzzy input IPK = Bagus (0,5) dan Cukup (0,4), dan Gaji Orang Tua = Besar(0,67) dan Sangat Besar(0,6)
Inference System
Terdapat berbagai macam cara dalam menentukan aturan fuzzy. Misalkan, untuk nilai Kelayakan Beasiswa menggunakan fungsi keanggotaan trapezium dengan dua nilai linguistic : Tinggi dan Rendah.
Dengan aturan :
Dengan definisi aturan fuzzy di atas, maka memiliki 3 x 4 = 12 aturan fuzzy, yaitu
1. IF IPK = Buruk AND Gaji = Kecil THEN NilaiKelayakan = Rendah 2. IF IPK = Buruk AND Gaji = Sedang THEN NilaiKelayakan = Rendah 3. IF IPK = Buruk AND Gaji = Besar THEN NilaiKelayakan = Rendah
4. IF IPK = Buruk AND Gaji = Sangat Besar THEN NilaiKelayakan = Rendah 5. IF IPK = Cukup AND Gaji = Kecil THEN NilaiKelayakan = Tinggi
8. IF IPK = Cukup AND Gaji = Sangat Besar THEN NilaiKelayakan = Rendah 9. IF IPK = Bagus AND Gaji = Kecil THEN NilaiKelayakan = Tinggi
10. IF IPK = Bagus AND Gaji = Sedang THEN NilaiKelayakan = Tinggi 11. IF IPK = Bagus AND Gaji = Besar THEN NilaiKelayakan = Tinggi
12. IF IPK = Bagus AND Gaji = Sangat Besar THEN NilaiKelayakan = Rendah
Dari empat data fuzzy input yang didapatkan sebelumnya : Bagus (0,5), Cukup (0,4), Besar(0,67) dan Sangat Besar(0,6), maka aturan yang dapat digunakan adalah
IF IPK is Bagus AND Gaji is Besar THEN NilaiKelayakan is Tinggi
IF IPK is Bagus AND Gaji is Sangat Besar THEN NilaiKelayakan is Rendah
IF IPK is Cukup AND Gaji is Besar THEN NilaiKelayakan is Rendah
IF IPK is Cukup AND Gaji is Sangat Besar THEN NilaiKelayakan is Rendah
Dari empat aturan fuzzy dan empat fuzzy input tersebut, maka proses inference yang terjadi adalah :
Gunakan aturan conjungtion (^) dengan memilih derajat keanggotaan minimum dari nilai-nilai linguistic yang dihubungkan oleh ^ dan lakukan Clipping pada fungsi keanggotaan trapezium untuk Nilai Kelayakan. Sehingga diperoleh :
IF IPK is Bagus(0,5) AND Gaji is Besar(0,67) THEN NilaiKelayakan is Tinggi(0,5)
IF IPK is Bagus(0,5) AND Gaji is Sangat Besar(0,6) THEN NilaiKelayakan is Rendah(0,5)
IF IPK is Cukup(0,4) AND Gaji is Besar(0,67) THEN NilaiKelayakan is Rendah(0,4)
IF IPK is Cukup(0,4) AND Gaji is Sangat Besar(0,6) THEN NilaiKelayakan is Rendah(0,4)
Defuzzification
Proses composition dari dua fuzzy set, NilaiKelayakan is Tinggi(0,5) dan NilaiKelayakan is Rendah(0,5), menghasilkan satu fuzzy set tunggal yang ditunjukan dalam gambar berikut :
Dengan menggunakan Centroid method untuk proses defeuzzyfication untuk mendapatkan nilai crisp. Untuk memudahkan perhitungan, bisa menentukan titik sembarang para area kotak, misalkan 30, 35, 40, 45, 50, 65, 75, 80, 85 dan 90. Dengan titik-titik tersebut, diperoleh hasil berikut :
y∗¿(30+35+0.5+0.540+45+50+0.5 )0.5+(65+75+80+85+90)0.5
+0.5+0.5+0.5+0.5+0.5+0.5+0.5 =
100+197.5
5 =297.55 =59.5
Jadi dengan menggunakan model Mamdani, untuk Nilai Kelayakan IPK 3.00 dan Gaji Orang Tua Rp.10.000.000,-, maka nilaiKelayakan sebesar 59.5
Contoh Implementasi :
float tinggi;
Fungsi untuk aturan Fuzzy
nilaiKelulusan fuzzyRule(float ipk, derajatIpk drjIpk, float gaji ,derajatGaji drjGaji) {
//rule 1:ipk buruk and gaji kecil -> rendah nilaiKelulusan tempNilaiKelulusan;
if(((inRange(ipkBuruk, ipk))==1)&&(inRange(gajiKecil, gaji)==1)){ printf("rule 1:ipk buruk and gaji kecil ->; rendahn");
printf("derajat kelulusan rendah %f\n", min(drjIpk.buruk, drjGaji.kecil)); tempNilaiKelulusan.rendah = max(tempNilaiKelulusan.rendah, min(drjIpk.buruk, drjGaji.kecil));
}
//rule 2:ipk buruk and gaji sedang -> rendah
if(((inRange(ipkBuruk, ipk))==1)&&(inRange(gajiSedang, gaji)==1)){ printf("rule 2:ipk buruk and gaji sedang ->; rendahn");
printf("derajat kelulusan rendah %f\n", min(drjIpk.buruk, drjGaji.sedang)); tempNilaiKelulusan.rendah = max(tempNilaiKelulusan.rendah, min(drjIpk.buruk, drjGaji.sedang));
//rule 3:ipk buruk and gaji besar -> rendah
if(((inRange(ipkBuruk, ipk))==1)&&(inRange(gajiBesar, gaji)==1)){ printf("rule 3:ipk buruk and gaji besar ->; rendah\n");
printf("derajat kelulusan rendah %f\n", min(drjIpk.buruk, drjGaji.besar)); tempNilaiKelulusan.rendah = max(tempNilaiKelulusan.rendah, min(drjIpk.buruk, drjGaji.besar));
}
//rule 4:ipk buruk and gaji sangar besar -> rendah
if(((inRange(ipkBuruk, ipk))==1)&&(inRange(gajiSangatBesar, gaji)==1)){ printf("rule 4:ipk buruk and gaji sangar besar ->; rendah\n");
if(((inRange(ipkCukup, ipk))==1)&&(inRange(gajiKecil, gaji)==1)){ printf("rule 5:ipk cukup and gaji kecil -> tinggi\n");
printf("derajat kelulusan tinggi %f\n", min(drjIpk.cukup, drjGaji.kecil)); tempNilaiKelulusan.tinggi = max(tempNilaiKelulusan.tinggi, min(drjIpk.cukup, drjGaji.kecil));
}
//rule 6:ipk cukup and gaji sedang -> rendah
if(((inRange(ipkCukup, ipk))==1)&&(inRange(gajiSedang, gaji)==1)){ printf("rule 6:ipk cukup and gaji sedang -> rendah\n");
printf("derajat kelulusan rendah %f\n", min(drjIpk.cukup, drjGaji.sedang)); tempNilaiKelulusan.rendah = max(tempNilaiKelulusan.rendah, min(drjIpk.cukup, drjGaji.sedang));
//rule 7:ipk cukup and gaji besar -> rendah
if(((inRange(ipkCukup, ipk))==1)&&(inRange(gajiBesar, gaji)==1)){ printf("rule 7:ipk cukup and gaji besar -> rendah\n");
printf("derajat kelulusan rendah %f\n", min(drjIpk.cukup, drjGaji.besar)); tempNilaiKelulusan.rendah = max(tempNilaiKelulusan.rendah, min(drjIpk.cukup, drjGaji.besar));
}
//rule 8:ipk cukup and gaji sangat besar -> rendah
if(((inRange(ipkCukup, ipk))==1)&&(inRange(gajiSangatBesar, gaji)==1)){ printf("rule 8:ipk cukup and gaji sangat besar -> rendah\n");
if(((inRange(ipkBagus, ipk))==1)&&(inRange(gajiKecil, gaji)==1)){ printf("rule 9:ipk bagus and gaji kecil -> tinggi\n");
printf("derajat kelulusan tinggi %f\n", min(drjIpk.bagus, drjGaji.kecil)); tempNilaiKelulusan.tinggi = max(tempNilaiKelulusan.tinggi, min(drjIpk.bagus, drjGaji.kecil));
}
//rule 10:ipk bagus and gaji sedang -> tinggi
if(((inRange(ipkBagus, ipk))==1)&&(inRange(gajiSedang, gaji)==1)){ printf("rule 10:ipk bagus and gaji sedang -> tinggi\n");
printf("derajat kelulusan tinggi %f\n", min(drjIpk.bagus, drjGaji.sedang)); tempNilaiKelulusan.tinggi = max(tempNilaiKelulusan.tinggi, min(drjIpk.bagus, drjGaji.sedang));
if(((inRange(ipkBagus, ipk))==1)&&(inRange(gajiBesar, gaji)==1)){ printf("rule 11:ipk bagus and gaji besar -> tinggi\n");
printf("derajat kelulusan tinggi %f\n", min(drjIpk.bagus, drjGaji.besar)); tempNilaiKelulusan.tinggi = max(tempNilaiKelulusan.tinggi, min(drjIpk.bagus, drjGaji.besar));
}
//rule 12:ipk bagus and gaji sangat besar -> rendah
if(((inRange(ipkBagus, ipk))==1)&&(inRange(gajiSangatBesar, gaji)==1)){ printf("rule 12:ipk bagus and gaji sangat besar -> rendah\n");
printf("derajat kelulusan rendah %f\n", min(drjIpk.bagus, drjGaji.sangatBesar));
tempNilaiKelulusan.rendah = max(tempNilaiKelulusan.rendah, min(drjIpk.bagus, drjGaji.sangatBesar));
}
return tempNilaiKelulusan; }
Fungsi Keanggotaan Segitiga
float fungsiKeanggotaanSegitiga(float a, float b, float c, float x) {
{
return derajatKeanggotaan; }
Fungsi Keanggotaan Trapesium
float fungsiKeanggotaanTrapesium(float a, float b, float c, float d,float x) {
float derajatKeanggotaan; if ((x>a)&&(x<b))
}
Fungsi Derajat Keanggotaan IPK
derajatIpk derajatKeanggotaanIPK(float ipk)
/*printf("derajat buruk %f n", drjIpk.buruk); printf("derajat cukup %f n", drjIpk.cukup); printf("derajat bagus %f n", drjIpk.bagus); */
return drjIpk; }
Fungsi Derajat Keanggotaan Gaji Orang Tua
derajatGaji derajatKeanggotaanGaji(float gaji){ derajatGaji drjGaji;
/*printf("derajat kecil %f n", drjGaji.kecil); printf("derajat sedang %f n", drjGaji.sedang); printf("derajat besar %f n", drjGaji.besar);
printf("derajat sangatBesar %f n", drjGaji.sangatBesar); */
4. Kesimpulan dan Saran Kesimpulan:
1. Pengambilan keputusan penerima beasiswa dari implementasi fuzzy logic memberikan keputusan pasti, dengan mengacu pada peraturan penerimaan beasiswa dengan Indeks Prestasi Komulatif(IPK), gaji orang tua, dan nilai dari hasil ujian penerimaan beasiswa sebagai parameter masukannya.
2. Batas – batas nilai linguistik akan sangat berpengaruh terhadap akurasi dari fuzzy logic
Saran:
1. Pencarian solusi dengan mengimplementasi dari fuzzy logic tidak selalu menghasilkan solusi terbaik, karena sering ditemukan kesulitan dalam menentukan preferensi atau parameter agar output yang dihasilkan akurat.
5. Referensi
Nugroho, Anto Satriyo. 2003. Pengantar Softcomputing. Modul Kuliah Umum
IlmuKomputer.com. http://asnugroho.net/papers/ikcsc.pdf [diakses 8 Januari 2016 00.43 WIB]
6. Lampiran
1. Screenshoot antarmuka
3. Screenshoot hasil