;

Miftahush Shirothul Haq

Saudaraku seiman, bukan besar kecilnya tugas yang menjadikan tinggi rendahnya diri kita, melainkan manfaat dari apa yang kita kerjakan buat sekitar kita. Maka senantiasalah bersemangat dalam hal nan penuh kebermanfaatan ini.

Nabi Muhammad SAW

"Jika seseorang bepergian dengan tujuan mencari ilmu, maka Allah akan menjadikan perjalanannya seperti perjalanan menuju surga"

Sabtu, 30 November 2013

Simple Additive Weighting

Secuil Tentang Metode SAW (Simple Additive Weighting)

SAW sendiri adalah Simple Additive Weighting. Dalam hal pengambilan keputusan, metode SAW cukup populer. SAW merupakan metode penjumlahan terbobot suatu alternatif dari beberapa atribut (kriteria) yg didalamnya terdapat proses normalisasi dengan hasil akhir urutan alternatif yang paling disarankan berdasar algoritma metode tersebut. Untuk sejarah, kelebihan, dan kekurangan SAW silahkan dicari sendiri yaa..  . Disini saya bahas alur perhitungannya saja serta script implementasinya dlm PHP ( bukan Pemberi Harapan Palsu hloo :p ).
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
Oke, berikut script dari perhitungan tersebut (Note: script ini berdasar kaidah MAX saja a.k.a semua kriteria menggunakan kaidah benefit, jika menggunakan kaidah MIN silahkan disesuaikan dengan rumus):
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>’;
?>
Simpan script tersebut dengan nama terserah dlm format file .php dan jalankan.

sumber : blog sebelah