Menggunakan bahasa scripting python
sumber = http://hobbycoding.web.id/source-code-fuzzy-logic-pemberian-beasiswa-dengan-bahasa-c/
ipkBurukmin = 0
ipkBurukmax = 2.75
ipkCukupmin = 2
ipkCukupmax = 3.25
ipkBagusmin = 2.75
ipkBagusmax = 4.05
gajiKecilmin = 0
gajiKecilmax = 3
gajiSedangmin = 1
gajiSedangmax = 6
gajiBesarmin = 4
gajiBesarmax = 12
gajiSangatBesarmin = 7
gajiSangatBesarmax = 1000
"""
gambar untuk memperjelas fungsi derajatKeanggotaanSegitiga
/|
/ |
/ |
----------
a b c
"""
def inRange(minimal,maximal,input):
minimal = min(minimal, maximal)
maximal = max(minimal, maximal)
#print minimal
#print maximal
if((input> minimal) and (input < maximal)):
return 1
else:
return 0
def fuzzyRules(ipk,gaji):
global nilaikelulusanrendah
global nilaikelulusantinggi
nilaikelulusanrendah = 0
nilaikelulusantinggi = 0
ipkBuruk = inRange(ipkBurukmin, ipkBurukmax, ipk)
ipkCukup = inRange(ipkCukupmin, ipkCukupmax, ipk)
ipkBagus = inRange(ipkBagusmin, ipkBagusmax, ipk)
gajiKecil = inRange(gajiKecilmin, gajiKecilmax, gaji)
gajiSedang = inRange(gajiSedangmin, gajiSedangmax, gaji)
gajiBesar = inRange(gajiBesarmin, gajiBesarmax, gaji)
gajiSangatBesar = inRange(gajiSangatBesarmin, gajiSangatBesarmax, gaji)
nkrendah_array = []
nktinggi_array = []
if ipkBuruk == 1 and gajiKecil == 1:
print "Rule 1 : IPK Buruk dan Gaji Kecil"
derajatkelulusanrendah = min(derajatipkburuk, derajatgajikecil)
print "Derajat Kelulusan Rendah ",derajatkelulusanrendah
nilaikelulusanrendah = derajatkelulusanrendah
nkrendah = nkrendah_array.append(nilaikelulusanrendah)
if ipkBuruk == 1 and gajiSedang == 1:
print "Rule 2 : IPK Buruk dan Gaji Sedang"
derajatkelulusanrendah = min(derajatipkburuk, derajatgajisedang)
print "Derajat Kelulusan Rendah ",derajatkelulusanrendah
nilaikelulusanrendah = min(derajatipkburuk, derajatgajisedang)
nkrendah = nkrendah_array.append(nilaikelulusanrendah)
if ipkBuruk == 1 and gajiBesar == 1:
print "Rule 3 : IPK Buruk dan Gaji besar"
derajatkelulusanrendah = min(derajatipkburuk, derajatgajibesar)
print "Derajat Kelulusan Rendah ",derajatkelulusanrendah
nilaikelulusanrendah = derajatkelulusanrendah
nkrendah = nkrendah_array.append(nilaikelulusanrendah)
if ipkBuruk == 1 and gajiSangatBesar == 1:
print "Rule 4 : IPK Buruk dan Gaji sangatbesar"
derajatkelulusanrendah = min(derajatipkburuk, derajatgajisangatbesar)
print "Derajat Kelulusan Rendah ",derajatkelulusanrendah
nilaikelulusanrendah = derajatkelulusanrendah
nkrendah = nkrendah_array.append(nilaikelulusanrendah)
if ipkCukup == 1 and gajiKecil == 1:
print "Rule 5 : IPK Cukup dan Gaji Kecil"
derajatkelulusantinggi = min(derajatipkcukup, derajatgajikecil)
print "Derajat Kelulusan Tinggi ",derajatkelulusantinggi
nilaikelulusantinggi = derajatkelulusantinggi
nktinggi = nktinggi_array.append(nilaikelulusantinggi)
if ipkCukup == 1 and gajiSedang == 1:
print "Rule 6 : IPK Cukup dan Gaji Sedang"
derajatkelulusanrendah = min(derajatipkcukup, derajatgajisedang)
print "Derajat Kelulusan Rendah ",derajatkelulusanrendah
nilaikelulusanrendah = derajatkelulusanrendah
nkrendah = nkrendah_array.append(nilaikelulusanrendah)
if ipkCukup == 1 and gajiBesar == 1:
print "Rule 7 : IPK Cukup dan Gaji Besar"
derajatkelulusanrendah = min(derajatipkcukup, derajatgajibesar)
print "Derajat Kelulusan Rendah ",derajatkelulusanrendah
nilaikelulusanrendah = derajatkelulusanrendah
nkrendah = nkrendah_array.append(nilaikelulusanrendah)
if ipkCukup == 1 and gajiSangatBesar == 1:
print "Rule 8 : IPK Cukup dan Gaji Sangat Besar"
derajatkelulusanrendah = min(derajatipkcukup, derajatgajisangatbesar)
print "Derajat Kelulusan Rendah ",derajatkelulusanrendah
nilaikelulusanrendah = derajatkelulusanrendah
nkrendah = nkrendah_array.append(nilaikelulusanrendah)
if ipkBagus == 1 and gajiKecil == 1:
print "Rule 9 : IPK Bagus dan Gaji Kecil"
derajatkelulusantinggi = min(derajatipkbagus, derajatgajikecil)
print "Derajat Kelulusan Tinggi ",derajatkelulusantinggi
nilaikelulusantinggi = derajatkelulusantinggi
nktinggi = nktinggi_array.append(nilaikelulusantinggi)
if ipkBagus == 1 and gajiSedang == 1:
print "Rule 10 : IPK Bagus dan Gaji Sedang"
derajatkelulusantinggi = min(derajatipkbagus, derajatgajisedang)
print "Derajat Kelulusan Tinggi ",derajatkelulusantinggi
nilaikelulusantinggi = derajatkelulusantinggi
nktinggi = nktinggi_array.append(nilaikelulusantinggi)
if ipkBagus == 1 and gajiBesar == 1:
print "Rule 11 : IPK Bagus dan Gaji Besar"
derajatkelulusantinggi = min(derajatipkbagus, derajatgajibesar)
print "Derajat Kelulusan Tinggi ",derajatkelulusantinggi
nilaikelulusantinggi = derajatkelulusantinggi
nktinggi = nktinggi_array.append(nilaikelulusantinggi)
if ipkBagus == 1 and gajiSangatBesar == 1:
print "Rule 12 : IPK Bagus dan Gaji Sangat Besar"
derajatkelulusanrendah = min(derajatipkbagus, derajatgajisangatbesar)
print "Derajat Kelulusan Rendah ",derajatkelulusanrendah
nilaikelulusanrendah = min(derajatipkbagus, derajatgajisangatbesar)
nkrendah = nkrendah_array.append(nilaikelulusanrendah)
if nilaikelulusantinggi == 0:
nilaikelulusantinggi = 0
else:
nilaikelulusantinggi = max(nktinggi_array)
if nilaikelulusanrendah == 0:
nilaikelulusanrendah = 0
else:
nilaikelulusanrendah = max(nkrendah_array)
print "Nilai Kelulusan Rendah : ",nilaikelulusanrendah
print "Nilai Kelulusan Tinggi : ",nilaikelulusantinggi
def centroidMethod(nilaikelulusanrendah, nilaikelulusantinggi):
global hasil
hasil = (((10+20+30+40+50+60)*nilaikelulusanrendah)+((70+80+90+100)*nilaikelulusantinggi))/((6*nilaikelulusanrendah)+(4*nilaikelulusantinggi))
print "Nilai Kelulusan : ",hasil
return hasil
def fungsiKeanggotaanSegitiga(a, b, c, x):
if ((x>a) and (x<b)):
derajatKeanggotaan = (x-a)/(b-a)
elif (x==b):
derajatKeanggotaan = 1
elif ((x>b) and (x<c)):
derajatKeanggotaan = -((x-c)/(c-b))
else:
derajatKeanggotaan = 0
return derajatKeanggotaan
"""
gambar untuk fungsi derajat KeanggotaanTrapesium
-------
/ | |
/ | |
-------------------
a b c d
"""
def fungsiKeanggotaanTrapesium(a,b,c,d,x):
if ((x>a) and (x<b)):
derajatKeanggotaan = (x-a)/(b-a)
elif ((x>=b) and (x<=c)):
derajatKeanggotaan = 1
elif ((x>c) and (x<d)):
derajatKeanggotaan = -((x-d)/(d-c))
else:
derajatKeanggotaan = 0
return derajatKeanggotaan
def derajatIpk(ipk):
global derajatipkburuk
global derajatipkcukup
global derajatipkbagus
derajatipkburuk = fungsiKeanggotaanTrapesium(ipkBurukmin,ipkBurukmin,2,ipkBurukmax,ipk)
derajatipkcukup = fungsiKeanggotaanSegitiga(ipkCukupmin,2.75,ipkCukupmax,ipk)
derajatipkbagus = fungsiKeanggotaanTrapesium(ipkBagusmin,3.25,ipkBagusmax,ipkBagusmax,ipk)
print "Derajat IPK Buruk : ",derajatipkburuk
print "Derajat IPK Cukup : ",derajatipkcukup
print "Derajat IPK Bagus : ",derajatipkbagus
def derajatGaji(gaji):
global derajatgajikecil
global derajatgajisedang
global derajatgajibesar
global derajatgajisangatbesar
global derajatgajibesar
derajatgajikecil = fungsiKeanggotaanTrapesium(gajiKecilmin,gajiKecilmin,1,gajiKecilmax,gaji)
derajatgajisedang = fungsiKeanggotaanTrapesium(gajiSedangmin,3,4,gajiSedangmax,gaji)
derajatgajibesar = fungsiKeanggotaanTrapesium(gajiBesarmin,6,7,gajiBesarmax,gaji)
derajatgajisangatbesar = fungsiKeanggotaanTrapesium(gajiSangatBesarmin,12,gajiSangatBesarmax,gajiSangatBesarmax,gaji)
print "Derajat Gaji Kecil : ",derajatgajikecil
print "Derajat Gaji Sedang : ",derajatgajisedang
print "Derajat Gaji besar : ",derajatgajibesar
print "Derajat Gaji Sangat Besar : ",derajatgajisangatbesar
def main():
from time import time
data = []
n = int(input("Masukkan jumlah data : "))
for i in range(1, n+1):
ipk = float(raw_input("Masukkan IPK Anda : "))
gaji = float(raw_input("Masukkan gaji anda : "))
t0 = time()
print "\n========== PROSES FUZZYFICATION ==========\n"
print "\n========== Derajat Keanggotaan IPK ==========\n"
dIpk = derajatIpk(ipk)
print "\n========== Derajat Keanggotaan Gaji ==========\n"
dGaji = derajatGaji(gaji)
print "\n========== PROSES INTERFERENCES ==========\n"
fuzzyRules(ipk, gaji)
print "\n========== PROSES DEFUZZYFICATION ==========\n"
DEFUZZYFICATION = centroidMethod(nilaikelulusanrendah,nilaikelulusantinggi)
print DEFUZZYFICATION
DEFUZZY = data.append(DEFUZZYFICATION)
t1 = time() - t0
print "Waktu Eksekusi Fuzzy = ",t1
print data
print "data paling besar adalah : ",max(data)
return 0
if __name__ == "__main__":
main()
Sign up here with your email
ConversionConversion EmoticonEmoticon