forked from rafflypohan/Tubes-Pemrograman-Fungsional
-
Notifications
You must be signed in to change notification settings - Fork 0
/
brevity.py
87 lines (65 loc) · 1.85 KB
/
brevity.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
def linear_turun(a, b, x):
if x <= a:
derajat_keanggotaan = 1
elif a <= x <= b:
derajat_keanggotaan = (b - x) / (b - a)
else:
derajat_keanggotaan = 0
yield derajat_keanggotaan
def linear_naik(a, b, x):
if x <= a:
derajat_keanggotaan = 0
elif a <= x <= b:
derajat_keanggotaan = (x - a) / (b - a)
else:
derajat_keanggotaan = 1
yield derajat_keanggotaan
def segitiga(a, b, c, x):
if a <= x <= b:
derajat_keanggotaan = (x - a) / (b - a)
elif b <= x <= c:
derajat_keanggotaan = (c - x) / (c - b)
else:
derajat_keanggotaan = 0
yield derajat_keanggotaan
def ipk_rendah(x):
yield linear_turun(1.5, 2.5, x)
def ipk_sedang(x):
yield segitiga(1.5, 2.5, 3.5, x)
def ipk_tinggi(x):
yield linear_naik(2.5, 4, x)
def penghasilan_rendah(x):
yield linear_turun(3000000, 5500000, x)
def penghasilan_sedang(x):
yield segitiga(2000000, 5500000, 9000000, x)
def penghasilan_tinggi(x):
yield linear_naik(5500000, 9000000, x)
def jarak_dekat(x):
yield linear_turun(5, 12.5, x)
def jarak_sedang(x):
yield segitiga(5, 12.5, 20, x)
def jarak_jauh(x):
yield linear_naik(12.5, 20, x)
def z_dapat(alpha, x):
yield (80 - 40) * alpha[x] + 40
def z_tidak_dapat(alpha, x):
yield 80 - (alpha[x]) * (80 - 40)
# * Inferensi
def inferensi(nilai_ipk, nilai_penghasilan, nilai_jarak):
for i, ip in enumerate(nilai_ipk):
for j, png in enumerate(nilai_penghasilan):
for k, jrk in enumerate(nilai_jarak):
continue
for i in nilai_ipk:
for j in nilai_penghasilan:
for k in nilai_jarak:
continue
def defuzzifikasi(alpha, z, res):
for index in range(len(alpha)):
jum = alpha[index] * z[index]
defuzi = sum(jum) / sum(alpha)
res.value = round(defuzi, 2)
if kembali == "y":
menu(filename)
else:
sys.exit("Terima Kasih")