P3 SPK_Metode SAW

Sistem Pendukung Keputusan Penilaian Kinerja Guru Menggunakan 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)

jenis_kriteria <- c(1, 1, 1, 1, 1)

jenis_kriteria
## [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)

bobot <- c(0.15,0.10,0.25,0.25,0.25)
bobot
## [1] 0.15 0.10 0.25 0.25 0.25

5. Hitung skor akhir SAW

skor <- normal %*% bobot
skor 
##                             [,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