Minggu, 09 Maret 2014

SPK Menggunakan Metode SAW

SAW adalah Simple Additive Weighting. Dalam hal pengambilan keputusan, metode SAW cukup populer. SAW merupakan metode penjumlahan terbobot suatu alternatif dari beberapa atribut (kriteria) yang didalamnya terdapat proses normalisasi dengan hasil akhir urutan alternatif yang paling disarankan berdasar algoritma metode tersebut.
Ada beberapa langkah untuk mengerjakan pemecahan pengambilan keputusan dari suatu set alternatif dengan beberapa kriteria menggunakan metode SAW. Sesuai dengan algoritma yang ada dari berbagai sumber, sebagai berikut:
1. Menentukan nilai kriteria Cj pada suatu set alternatif Ai. Beserta bobot preferensi (Wj) setiap kriteria Cj
2. Menghitung Rij dengan formula normalisasi sehingga mendapat matrik ternormaisasi.
Rij = Cij / Max(Cij) → jika j adalah atribut / kriteria benefit (untung = nilai lebih besar lebih dipilih)
Rij = Min(Cij) / Cij → jika j adalah atribut / kriteria cost (biaya = nilai lebih kecili lebih dipilih)
3. Menghitung nilai preferensi Vi, lalu mengurutkan dari yang terbesar.

Vi merupakan hasil akhir metode SAW, dengan nilai yang terbesar merupakan alternatif yang disarankan
Wj merupakan bobot preferensi untuk setiap kriteria Cj
Rij merupakan hasil normalisasi
Berikut script dari perhitungan tersebut:
Contoh kasus:
Terdapat 3 alternatif dan 5 kriteria sebagai berikut:
Dengan bobot preferensi: PPKN (30), IPA (25), IPS (20), SENI (10), KOMPUTER (15)


script:
<?php
//variabel jml alternatif
$jml = 3;
//variabel nama alternatif (sesuai urutan soal)
$a = array(‘ANDI’,'BOBI’,'CIAN’);
//variabel jml kriteria
$jk = 5;
//variabel nama kriteria
$k = array(‘PPKN’,'IPA’,'IPS’,'SENI’,'KOMPUTER’);
//variabel bobot kriteria (sesuai urutas soal: PPKN – IPA – IPS – SENI – KOMPUTER)
$w = array(’30′,’25′,’20′,’10′,’15′);
//variabel skor kriteria (sesuia urutan nama pd soal: ANDI – BOBI – CIAN )
$k1 = array(’80′,’70′,’60′); //PPKN
$k2 = array(’64′,’75′,’90′); //IPA
$k3 = array(’78′,’90′,’86′); //IPS
$k4 = array(’89′,’67′,’65′); //SENI
$k5 = array(’85′,’90′,’70′); //KOMPUTER
//pemasangan alternatif terhadap kriteria
$j=1;
for ($i=0; $i < $jml; $i++) {
$alt[$j][1] = $k1[$i]; //kriteria1 utk alternatif ke-i
$alt[$j][2] = $k2[$i]; //kriteria2 utk alternatif ke-i
$alt[$j][3] = $k3[$i]; //kriteria3 utk alternatif ke-i
$alt[$j][4] = $k4[$i]; //kriteria3 utk alternatif ke-i
$alt[$j][5] = $k5[$i]; //kriteria3 utk alternatif ke-i
$alt[$j][6] = $a[$i]; //nama alternatif ke-i
$j++;
}
//Contoh untuk program ini SEMUA Kriteria berkaidah MAX ,,
//untuk kaidah MIN/MAX sesuaikan rumus, diprogram PERLU menambahkan kode kondisi kriteria sesuai kaidah
//Mencari Max pada setiap set nilai kriteria dari semua alternatif.
//Contoh pada set kriteria PPKN nilai max adl 80.
$max[0] = max($k1); //PPKN
$max[1] = max($k2); //IPA
$max[2] = max($k3); //IPS
$max[3] = max($k4); //SENI
$max[4] = max($k5); //KOMPUTER
echo ‘<br><fieldset><legend><h2>Perhitungan SAW</h2></legend>’;
echo ‘<h3>Hasil Perhitungan</h3>’;
echo ‘Tabel Bobot Kriteria SAW’;
echo ‘<table border=1 bordercolor=silver cellspacing=0 cellpadding=5>
<tr bgcolor=#779999>’;
for ($i=0; $i < $jk; $i++){
echo “<th>$k[$i]</th>”;
}
echo “</tr><tr>”;
for ($i=0; $i < $jk; $i++){
echo “<td>$w[$i]</td>”;
}
echo “</tr></table></br>”;
echo ‘Tabel Hitungan Normalisasi SAW’;
echo ‘<table border=1 bordercolor=silver cellspacing=0 cellpadding=5>
<tr bgcolor=#779999><th>No</th><th>Nama</th>’;
for ($i=0; $i < $jk; $i++){
echo “<th>$k[$i]</th>”;
}
echo ‘</tr><tr>’;
//tahap normalisasi
//dari alternatif 1 s.d 3
for ($i=1; $i <= $jml; $i++){
echo “<td>$i</td><td>”.$alt[$i][6].”</td>”;
//$V[$i] = 0;
// dari kriteria 1 s.d 5
for ($k=1; $k <= $jk; $k++){
$R[$i][$k] = $alt[$i][$k]/$max[$k-1]; //formula untuk kaidah MAX
echo “<td>”.round($R[$i][$k],5).”</td>”; //hasil pembulatan 5 angka dibelakan koma
}
echo ‘</tr>’;
}
echo ‘</table><br>’;
//tahap hitung V
for ($i=1; $i <= $jml; $i++){ //loop sebanyak alternatif
$V = 0;
for ($k=1; $k <= $jk; $k++){ //loop sebanyak kriteria
$V = $V + $R[$i][$k]*$w[$k-1]; //hasil Vi, didapat dari jumlah perkalian antara Wj dengan Rij
//echo $V.’<br>’;
}
$Vi[$i] = $V; //simpan hasil V dlm array sesuai alternatif
}
for ($i=1; $i <= $jml; $i++){
$nama[$i] = $alt[$i][6]; //menyimpan varibel nama alternatif ke single array
}
echo ‘Tabel Urutan Akhir SAW’;
echo ‘<table border=1 bordercolor=silver cellspacing=0 cellpadding=5>
<tr bgcolor=#779999><th>No</th><th>Nama</th><th>Nilai V</th></tr>’;
//tahap pengurutan hasil
$jvi = array_combine($nama, $Vi); //menggabungkan array nama dg array Vi
//print_r($jvi);
arsort($jvi); //mengurutkan berdasarkan Vi terbesar
$n = 0;
foreach ($jvi as $x => $val){ //untuk setiap $x = nama dan $val = Vi
$n = $n+1; $vsaw=round($val,5);
echo ‘<tr>’;
echo “<td>$n</td><td>”.$x.”</td>”;
echo “<td>”.$vsaw.”</td>”;
echo ‘</tr>’;
}
echo ‘</table><br></fieldset>’;
?>
 

Tidak ada komentar:

Posting Komentar