P3 SPK_Metode SAW
Sistem Pendukung Keputusan Penilaian Kinerja Guru
A. Metode SAW
Sumber : https://doi.org/10.32877/bt.v7i1.1608
1. Input matriks keputusan
data_matriks <- matrix(c(
3,3,2,2,3, # H. Ahyad
2,2,2,3,3, # Djoeniati, SH., S.Pd
3,2,3,3,3, # Saddam Husain
2,3,3,2,3, # Siti Hawa, S.Ag
3,1,1,2,2 # Reni Regislawati, S.Pd
), nrow = 5, byrow = TRUE)
rownames(data_matriks) <- c(
"H. Ahyad",
"Djoeniati, SH., S.Pd",
"Saddam Husain",
"Siti Hawa, S.Ag",
"Reni Regislawati, S.Pd"
)
colnames(data_matriks) <- c(
"Absensi",
"Jumlah Mengajar",
"Disiplin",
"Tugas Tambahan",
"Pengembangan Profesi"
)
data_matriks## Absensi Jumlah Mengajar Disiplin Tugas Tambahan
## H. Ahyad 3 3 2 2
## Djoeniati, SH., S.Pd 2 2 2 3
## Saddam Husain 3 2 3 3
## Siti Hawa, S.Ag 2 3 3 2
## Reni Regislawati, S.Pd 3 1 1 2
## Pengembangan Profesi
## H. Ahyad 3
## Djoeniati, SH., S.Pd 3
## Saddam Husain 3
## Siti Hawa, S.Ag 3
## Reni Regislawati, S.Pd 2
2. Jenis kriteria (1 = benefit, -1 = cost)
## [1] 1 1 1 1 1
3. Fungsi normalisasi
normalisasi <- function(data, jenis) {
norm_matriks <- matrix(0, nrow = nrow(data), ncol = ncol(data))
for (j in 1:ncol(data)) {
if (jenis[j] == 1) {
# benefit (nilai lebih besar lebih baik)
norm_matriks[, j] <- data[, j] / max(data[, j])
} else {
# cost (nilai lebih kecil lebih baik)
norm_matriks[, j] <- min(data[, j]) / data[, j]
}
}
rownames(norm_matriks) <- rownames(data)
colnames(norm_matriks) <- colnames(data)
return(norm_matriks)
}
# Proses normalisasi
normal <- normalisasi(data_matriks, jenis_kriteria)
normal## Absensi Jumlah Mengajar Disiplin Tugas Tambahan
## H. Ahyad 1.0000000 1.0000000 0.6666667 0.6666667
## Djoeniati, SH., S.Pd 0.6666667 0.6666667 0.6666667 1.0000000
## Saddam Husain 1.0000000 0.6666667 1.0000000 1.0000000
## Siti Hawa, S.Ag 0.6666667 1.0000000 1.0000000 0.6666667
## Reni Regislawati, S.Pd 1.0000000 0.3333333 0.3333333 0.6666667
## Pengembangan Profesi
## H. Ahyad 1.0000000
## Djoeniati, SH., S.Pd 1.0000000
## Saddam Husain 1.0000000
## Siti Hawa, S.Ag 1.0000000
## Reni Regislawati, S.Pd 0.6666667
4. Bobot kriteria (jumlah harus = 1)
## [1] 0.15 0.10 0.25 0.25 0.25
5. Hitung skor akhir SAW
## [,1]
## H. Ahyad 0.8333333
## Djoeniati, SH., S.Pd 0.8333333
## Saddam Husain 0.9666667
## Siti Hawa, S.Ag 0.8666667
## Reni Regislawati, S.Pd 0.6000000
6. Membuat tabel hasil dan rank
hasil <- data.frame(
Alternatif = rownames(normal),
Skor_SAW = as.numeric(skor)
)
# Mengurutkan dari nilai terbesar
hasil <- hasil[order(-hasil$Skor_SAW), ]
# Menambahkan kolom Rank
hasil$Rank <- rank(-hasil$Skor_SAW, ties.method = "first")
hasil## Alternatif Skor_SAW Rank
## 3 Saddam Husain 0.9666667 1
## 4 Siti Hawa, S.Ag 0.8666667 2
## 1 H. Ahyad 0.8333333 3
## 2 Djoeniati, SH., S.Pd 0.8333333 4
## 5 Reni Regislawati, S.Pd 0.6000000 5
B. Metode WP
S_wp_norm <- apply(normal, 1, function(x) prod(x^bobot))
hasil_wp <- data.frame(
Alternatif = rownames(data_matriks),
Skor_WP = as.numeric(S_wp_norm)
)
# ranking
hasil_wp <- hasil_wp[order(-hasil_wp$Skor_WP), ]
hasil_wp$Rank <- rank(-hasil_wp$Skor_WP, ties.method = "first")
print(hasil_wp)## Alternatif Skor_WP Rank
## 3 Saddam Husain 0.9602645 1
## 4 Siti Hawa, S.Ag 0.8502830 2
## 1 H. Ahyad 0.8164966 3
## 2 Djoeniati, SH., S.Pd 0.8164966 4
## 5 Reni Regislawati, S.Pd 0.5558555 5
(Weighted Aggregated Sum Product Assessment) WASPAS
Gabungan [ WSM + WPM ]
# Komponen WSM (penjumlahan berbobot)
Q1_wsm <- apply(normal, 1, function(x) sum(x * bobot))
# Komponen WPM (perkalian berbobot)
Q2_wpm <- apply(normal, 1, function(x) prod(x^bobot))
lambda <- 0.5 # seimbang tidak condong ke wsp atau wpm
Q_waspas <- lambda * Q1_wsm + (1 - lambda) * Q2_wpm
hasil_waspas <- data.frame(
Alternatif = rownames(data_matriks),
Skor_WASPAS = as.numeric(Q_waspas)
)
hasil_waspas <- hasil_waspas[order(-hasil_waspas$Skor_WASPAS), ]
hasil_waspas$Rank <- rank(-hasil_waspas$Skor_WASPAS, ties.method = "first")
print(hasil_waspas)## Alternatif Skor_WASPAS Rank
## 3 Saddam Husain 0.9634656 1
## 4 Siti Hawa, S.Ag 0.8584748 2
## 1 H. Ahyad 0.8249150 3
## 2 Djoeniati, SH., S.Pd 0.8249150 4
## 5 Reni Regislawati, S.Pd 0.5779278 5