Apa itu Metode SAW?

Simple Additive Weighting (SAW) atau Metode Penjumlahan Terbobot adalah metode paling sederhana dan populer dalam SPK. SAW mencari alternatif terbaik dengan menjumlahkan nilai terbobot dari setiap kriteria.

Langkah-Langkah Metode SAW

  1. Tentukan kriteria dan bobotnya.
  2. Tentukan alternatif.
  3. Buat matriks keputusan.
  4. Normalisasi matriks.
  5. Hitung nilai preferensi (V).
  6. Ranking alternatif.

Rumus Normalisasi

Normalisasi dilakukan berdasarkan jenis kriteria:

Kriteria Benefit (semakin tinggi semakin baik):
rij = xij / max(xij)

Kriteria Cost (semakin rendah semakin baik):
rij = min(xij) / xij

Rumus Nilai Preferensi

Vi = Σ (wj × rij)

Vi = Nilai preferensi alternatif ke-i
wj = Bobot kriteria ke-j
rij = Nilai normalisasi alternatif i pada kriteria j

Contoh Kasus: Pemilihan Laptop

Kriteria: Harga (Cost), RAM (Benefit), Storage (Benefit), Baterai (Benefit)

Bobot: Harga=0.3, RAM=0.25, Storage=0.25, Baterai=0.2

AlternatifHargaRAMStorageBaterai
Laptop A15jt16GB512GB8jam
Laptop B12jt8GB256GB10jam
Laptop C18jt32GB1TB6jam

Implementasi Python

import numpy as np

# Data alternatif
data = np.array([
    [15, 16, 512, 8],   # Laptop A
    [12, 8, 256, 10],   # Laptop B
    [18, 32, 1024, 6]   # Laptop C
])

# Bobot kriteria
bobot = np.array([0.3, 0.25, 0.25, 0.2])

# Jenis kriteria: 0 = cost, 1 = benefit
jenis = [0, 1, 1, 1]

# Normalisasi
normalized = np.zeros_like(data, dtype=float)
for j in range(data.shape[1]):
    if jenis[j] == 0:  # Cost
        normalized[:, j] = data[:, j].min() / data[:, j]
    else:  # Benefit
        normalized[:, j] = data[:, j] / data[:, j].max()

print("Matriks Ternormalisasi:")
print(normalized)

# Hitung nilai preferensi
V = np.dot(normalized, bobot)
print("\nNilai Preferensi:")
for i, v in enumerate(V):
    print(f"Laptop {chr(65+i)}: {v:.4f}")

# Ranking
ranking = np.argsort(V)[::-1]
print(f"\nRanking: {['Laptop '+chr(65+r) for r in ranking]}")