Lampiran 1.
DAFTAR PUBLIKSI ILMIAH PENULIS (TESIS)
LAMPIRAN Lampiran 1
LISTING PROGRAM
import operator import math import random
Data = [["0.Daniel", "Medan Perjuangan", "TKI ", 33],
["1.Hendrik", "Medan Selayang", "Peg. Swasta", 25], ["2.Rinaldi", "Belawan", "Pedagang", 44],
["3.Marusaha", "Medan Perjuangan", "TKI", 31], ["4.Ana", "Medan Perjuangan", "TKI", 37],
["5.Linda", "Medan Selayang", "Peg. Swasta", 40], ["6.Keanu", "Medan Kota", "Peg. Swasta", 24], ["7.Abadi", "Belawan", "PNS", 42],
["8.Zefri", "Medan Kota", "PNS", 38], ["9.Susan", "Medan Kota", "Therapys", 28], ["10.Herman", "Medan Selayang", "TKI", 27], ["11.Titin", "Medan Selayang", "TKI", 22], ["12.Roma", "Medan Perjuangan", "TKI", 27],
["13.Pidia", "Medan Perjuangan", "Therapys", 30], ["14.Arki", "Medan Kota", "Peg. Swasta", 44], ["15.Asima", "Belawan", "Pedagang", 41], ["16.Darleny", "Belawan", "Pedagang", 24], ["17.Arif", "Belawan", "TKI", 22],
["18.Indah", "Belawan", "Pedagang", 27],
["19.Hendrik", "Medan Selayang", "Peg. Swasta", 26]]
Pasien = [] Wilayah = [] JenisPk = [] PCluster = [] Cluster = [] ClusterB = [] IterasiCl = [] Target_Error = 9 Interasi = 50 Partikel = 5
'--- WILAYAH ---' for i in Data:
Status = 0
if len(Wilayah) == 0:
Wilayah.append([i[1], 1]) else:
for j in Wilayah: if i[1] == j[0]: Status = 1 j[1] = j[1] + 1 if Status == 0:
Wilayah.append([i[1], 1])
Wilayah.sort(key = operator.itemgetter(1), reverse = True) for i in range(len(Wilayah)):
'--- JENIS PEKERJAAN ---' for i in Data:
Status = 0
if len(JenisPk) == 0:
JenisPk.append([i[2], 1]) else:
for j in JenisPk: if i[2] == j[0]: Status = 1 j[1] = j[1] + 1 if Status == 0:
JenisPk.append([i[2], 1])
JenisPk.sort(key = operator.itemgetter(1), reverse = True)
for i in range(len(JenisPk)): JenisPk[i].append(i + 1)
'--- TAMPILKAN KE LAYAR ---'
print("Data Sample")
print("============================================================") for i in Data:
'print("%s - %s - %s - %i" % (i[0], i[1], i[2], i[3]))' print(i)
print("\nInisialisasi Data Wilayah")
print("============================================================") for i in Wilayah:
print(i)
print("\nInisialisasi Data Jenis Pekerjaan")
print("============================================================") for i in JenisPk:
print(i)
print("\nInisialisasi Data Pasien")
print("============================================================") for i in Pasien:
print(i)
Cl = [0, 1, 2]
for I in range(Interasi): Status = 0
PCluster = []
for p in range(Partikel): Pasien = []
'--- PASIEN---' for i in range(len(Data)):
for j in Wilayah:
if Data[i][1] == j[0]: Wil = j[2]
for j in JenisPk:
if Data[i][2] == j[0]: JPk = j[2]
'--- CLUSTER --- if p != 0:
Cl1 = random.randint(0, len(Data)-1) while (True):
Cl2 = random.randint(0, len(Data)-1) if Cl1 != Cl2:
break while (True):
Cl3 = random.randint(0, len(Data)-1) if Cl1 != Cl3 and Cl3 != Cl2:
break
Cl = [Cl1, Cl2, Cl3]
Cluster = []
for i in Cl:
for j in Wilayah:
if Data[i][1] == j[0]: Wil = j[2]
for j in JenisPk:
if Data[i][2] == j[0]: JPk = j[2]
Cluster.append([Wil, JPk, Data[i][3]])
print("\nPusat Cluster")
print("============================================================") for i in Cluster:
print(i)
'--- PERHITUNGAN ITERASI---' for i in range(len(Data)):
for j in range(len(Cluster)):
D = math.sqrt(pow(Pasien[i][1] - Cluster[j][0], 2) + pow(Pasien[i][2] -
Cluster[j][1], 2) +
pow(Pasien[i][3] - Cluster[j][2], 2))
D = float("%.3f" % D) Pasien[i].append(D)
if Pasien[i][4] <= Pasien[i][5]: if Pasien[i][4] <= Pasien[i][6]: Pasien[i].append(1)
Pasien[i].append(0) Pasien[i].append(0)
elif Pasien[i][4] > Pasien[i][6]: Pasien[i].append(0)
Pasien[i].append(0) Pasien[i].append(1)
elif Pasien[i][4] > Pasien[i][5]: if Pasien[i][5] <= Pasien[i][6]: Pasien[i].append(0)
Pasien[i].append(1) Pasien[i].append(0)
Pasien[i].append(0) Pasien[i].append(1)
print("\nJarak setiap data pasien ke Setiap Cluster pada iterasi ke 1")
print("============================================================") for i in Pasien:
print(i)
'Hitung SSE' SSE = 0
for i in Pasien: SSe = 0
SSE = SSe + pow(i[4], 2) + pow(i[5], 2) + pow(i[6], 2)
SSE = SSE / len(Pasien) print("\nSSE =", SSE)
CL2 = []
l = 0
while (True):
'===================== CLUSTER 1 ============' ClusterB = []
CL2 = Cluster for k in range(3):
for j in range(len(Cluster)): Jlh = 0
W = 0
for i in Pasien: if i[7+k] == 1: Jlh = Jlh + 1 W = W + i[1+j] W = W / Jlh
W = float("%.3f" % W) ClusterB.append(W)
Cluster = [[ClusterB[0], ClusterB[1], ClusterB[2]], [ClusterB[3], ClusterB[4], ClusterB[5]], [ClusterB[6], ClusterB[7], ClusterB[8]]]
print("\nCluster baru iterasi ke", l + 2)
print("============================================================") for i in Cluster:
print(i)
for i in range(len(Data)):
for j in range(len(Cluster)):
D = math.sqrt(pow(Pasien[i][1] - Cluster[j][0], 2) + pow(Pasien[i][2] - Cluster[j][1], 2) +
pow(Pasien[i][3] - Cluster[j][2], 2)) D = float("%.3f" % D) Pasien[i][4+j] = D
if Pasien[i][4] <= Pasien[i][5]: if Pasien[i][4] <= Pasien[i][6]: Pasien[i][7] = 1
elif Pasien[i][4] > Pasien[i][6]: Pasien[i][7] = 0
Pasien[i][8] = 0 Pasien[i][9] = 1
elif Pasien[i][4] > Pasien[i][5]: if Pasien[i][5] <= Pasien[i][6]: Pasien[i][7] = 0
Pasien[i][8] = 1 Pasien[i][9] = 0
elif Pasien[i][5] > Pasien[i][6]: Pasien[i][7] = 0
Pasien[i][8] = 0 Pasien[i][9] = 1
print("\nJarak setiap data pasien ke Setiap Cluster pada iterasi ke", l + 2)
print("============================================================") for i in Pasien:
print(i)
if CL2 == Cluster: break
else:
l = l + 1
'Hitung SSE' SSE = 0
for i in Pasien: SSe = 0
SSE = SSe + pow(i[4], 2) + pow(i[5], 2) + pow(i[6], 2)
SSE = SSE / len(Pasien) print("\nSSE =", SSE)
PCluster.append([Cl[0], Cl[1], Cl[2], SSE])
print("")
for i in range(len(PCluster)):
print("Partikel", i+1, "=", PCluster[i])
PCluster.sort(key = operator.itemgetter(3))
print("")
for i in range(len(PCluster)):
print("Partikel", i+1, "=", PCluster[i])
Cl = [PCluster[0][0], PCluster[0][1], PCluster[0][2]] IterasiCl.append(PCluster[0])
print("")
for i in range(len(IterasiCl)):