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
- Tentukan kriteria dan bobotnya.
- Tentukan alternatif.
- Buat matriks keputusan.
- Normalisasi matriks.
- Hitung nilai preferensi (V).
- 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
| Alternatif | Harga | RAM | Storage | Baterai |
|---|---|---|---|---|
| Laptop A | 15jt | 16GB | 512GB | 8jam |
| Laptop B | 12jt | 8GB | 256GB | 10jam |
| Laptop C | 18jt | 32GB | 1TB | 6jam |
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]}")