Home » » Metode (SAW) Simple Additive Weighting dan contoh coding PHP

Metode (SAW) Simple Additive Weighting dan contoh coding PHP

Pengertian SAW

Simple Additive Weighting meupakan metode penjumlahan terbobot konsep dasar metode SAW adalah mencari penjumlahan terbobot dari rating kinerja pada setiap alternative pada semua kriteria (Kusumadewi, 2006)
Menurut Fajar Nugraha (2011), metode SAW membutuhkan proses normalisasi matrik keputusan (X) ke suatu skala yang dapat diperbandingkan dengan semua rating alternatif yang ada. Metode SAW mengenal adanya 2(dua) atribut yaitu kriteria (benefit) dan kriteria biaya (cost) perbedaan mendasar dari kedua kriteria ini adalah dalam pemilihan kriteria ketika mengambil keputusan.
Adapun langkah penyelesaian dalam menggunakannya adalah

1. Menentukan alternative, yaitu Ai
2. Menentukan kriteria yang akan dijadikan acuan dalam pengambilan keputusan, yaitu Cj
3. Memberikan nilai rating kecocokan setiap alternative pada setiap kriteria.
4. Menentukan bobot preferensi atau tingkat kepentingan (W) setiap kriteria W=[ W1 W2 W3 W4]
5. Membuat table rating kecocokan dari setiap alternative pada setiap kriteria
6. Membuat matrik keputusan yang dibentuk dari table rating kecocokan dari setiap alternative pada setiap kriteria nilai setiap alternative (Ai) pada setiap kriteria (Cj) yang sudah ditentukan,dimana i=1,2 m dan j=1,2,..n
rumus SAW
7. Melakukan normalisasi matrik keputusan dengan cara menghitung nilai rating kinerja ternomalisasi (rij) dari alternative Ai pada kriteria Cj
Rumus :
a. Jika j adalah keuntungan (Benefit)
benefit-saw
b. Jika j adalah biaya (Cost)
cost-saw
Vi = rangking untuk setiap alternative
Wj=nilai bobot dari setiap kriteria
Rij=nilai rating kinerja ternormalisasi
Nilai Vi yang lebih besar mengindikasikan bahwa akternatif Ai lebih terpilih
Keterangan :
a. Dikatakan kriteria keuntungan apabila nilai memberikan keuntungan bagi pengambil keputusan, sebaliknya kriteria biaya apabila menimbulkan biaya bagi pengambil keputusan
b. Apabila berupa kriteria keuntungan maka nilai dibagi dengan nilai dari setiap kolom, sedangkan untuk kriteria biaya dari setiap kolom dibagi dengan nilai.
8. Hasil dari nilai rating kerja ternormalisasi (rij) membentuk matrik ternormalisasi (R)
matrik-ternormalisasi-saw
9. Hasil akhir dari preferensi (Vi) diperoleh dari penjumlahan dari perkalian elemen baris matrik ternormalisasi (R) dengan bobot preferensi (W) yang bersesuai elemen kolom matrik (W)
preferensi-saw
Hasil perhitungan nilai Vi yang lebih besar mengidentifikasikan bahwa alternative Ai merupakan alternative terbaik (Kusumadewi, 2006)
rumus SAW dan koding PHP

penerapan metode SAW ke PHP

sisini akan berbagi coding php untuk penerapan metode simple additive weight. pada contoh coding yang ane buat kasusnya adalah sebuah perlombaan. terserah nama perlombaannya karena ini hanya sebuah contoh penerapan simple additive weigting.
yang memiliki bobot dari kriteria C1=35% C2 =25% C3=25% dan C4=15%
pada percobaan ini ane menggunakan database untuk menyimpan data alternatif dan tabel matriknya.
dengan nama database=" test_spk".
untuk menyimpan data alternatif ane buat nama tabelnya "tbcalon" yang isinya seperti gambar dibawah ini
contoh simple additive weighting php


dan untuk menyimpan nilai dari setiap alternatif ane buat dengan nama "tbmatrik" yang isinya seperti gambar dibawah ini:
alternatif saw












berikutnya adala membuat coding php dengan nama dokumen "spk.php" dan coding phpnya seperti ini gan..

Coding php saw

spk.php
<?php
 // Koneksi
 
 mysql_connect("localhost","root","") or die(mysql_error());
 mysql_select_db("test_spk") or die(mysql_error());

 //Buat array bobot { C1 = 35%; C2 = 25%; C3 = 25%; dan C4 = 15%.}
 $bobot = array(0.30,0.30,0.20,0.20);

 //Buat fungsi tampilkan nama
 function getNama($id){
  $q =mysql_query("SELECT * FROm tbcalon where idCalon = '$id'");
  $d = mysql_fetch_array($q);
  return $d['nama'];
 }
 
 //Setelah bobot terbuat select semua di tabel Matrik
 $sql = mysql_query("SELECT * FROM tbmatrik");
 //Buat tabel untuk menampilkan hasil
 echo "<H3>Matrik Awal</H3>
 <table width=500 style='border:1px; #ddd; solid; border-collapse:collapse' border=1>
  <tr>
   <td>No</td>
   <td>Nama</td>
   <td>C1</td>
   <td>C2</td>
   <td>C3</td>
   <td>C4</td>
   <td>jumlah poin</td>
  </tr>
  ";
 $no = 1;
 while ($dt = mysql_fetch_array($sql)) {
  $jumlah= ($dt['Kriteria1'])+($dt['Kriteria2'])+($dt['Kriteria3'])+($dt['Kriteria4']);
  echo "<tr>
   <td>$no</td>
   <td>".getNama($dt['idCalon'])."</td>
   <td>$dt[Kriteria1]</td>
   <td>$dt[Kriteria2]</td>
   <td>$dt[Kriteria3]</td>
   <td>$dt[Kriteria4]</td>
   <td>$jumlah</td>
  </tr>";
 $no++;
 }
 echo "</table>";

 //Lakukan Normalisasi dengan rumus pada langkah 2
 //Cari Max atau min dari tiap kolom Matrik
 $crMax = mysql_query("SELECT max(Kriteria1) as maxK1, 
      max(Kriteria2) as maxK2,
      max(Kriteria3) as maxK3,
      max(Kriteria4) as maxK4 
   FROM tbmatrik");
 $max = mysql_fetch_array($crMax);

 //Hitung Normalisasi tiap Elemen
 $sql2 = mysql_query("SELECT * FROM tbmatrik");
 //Buat tabel untuk menampilkan hasil
 echo "<H3>Matrik Normalisasi</H3>
 <table width=500 style='border:1px; #ddd; solid; border-collapse:collapse' border=1>
  <tr>
   <td>No</td>
   <td>Nama</td>
   <td>C1</td>
   <td>C2</td>
   <td>C3</td>
   <td>C4</td>
  </tr>
  ";
 $no = 1;
 while ($dt2 = mysql_fetch_array($sql2)) {
  echo "<tr>
   <td>$no</td>
   <td>".getNama($dt2['idCalon'])."</td>
   <td>".round($dt2['Kriteria1']/$max['maxK1'],2)."</td>
   <td>".round($dt2['Kriteria2']/$max['maxK2'],2)."</td>
   <td>".round($dt2['Kriteria3']/$max['maxK3'],2)."</td>
   <td>".round($dt2['Kriteria4']/$max['maxK4'],2)."</td>
  </tr>";
 $no++;
 }
 echo "</table>";

 //Proses perangkingan dengan rumus langkah 3
 $sql3 = mysql_query("SELECT * FROM tbmatrik");
 //Buat tabel untuk menampilkan hasil
 echo "<H3>Perangkingan</H3>
 <table width=500 style='border:1px; #ddd; solid; border-collapse:collapse' border=1>
  <tr>
   <td>no</td>
   <td>Nama</td>
   <td>total poin</td>
   <td>SAW</td>
   <td>ket</td>
  </tr>
  ";

//Kita gunakan rumus (Normalisasi x bobot)
 while ($dt3 = mysql_fetch_array($sql3)) {
  $jumlah= ($dt3['Kriteria1'])+($dt3['Kriteria2'])+($dt3['Kriteria3'])+($dt3['Kriteria4']);
  $poin= round(
   (($dt3['Kriteria1']/$max['maxK1'])*$bobot[0])+
   (($dt3['Kriteria2']/$max['maxK2'])*$bobot[1])+
   (($dt3['Kriteria3']/$max['maxK3'])*$bobot[2])+
   (($dt3['Kriteria4']/$max['maxK4'])*$bobot[3]),3);

  $data[]=array('nama'=>getNama($dt3['idCalon']),
      'jumlah'=>$jumlah,
      'poin'=>$poin);

 }


//mengurutkan data
   foreach ($data as $key => $isi) {
    $nama[$key]=$isi['nama'];
    $jlh[$key]=$isi['jumlah'];
    $poin1[$key]=$isi['poin'];
   }
   array_multisort($poin1,SORT_DESC,$jlh,SORT_DESC,$data);
   $no=1;
   $h="juara";
   $juara=1;
   $hr=1;

   foreach ($data as $item) { ?>
   <tr>
   <td><?php echo $no ?></td>
   <td><?php echo$item['nama'] ?></td>
   <td><?php echo$item['jumlah'] ?></td>
   <td><?php echo$item['poin'] ?></td>
   <td><?php echo"$h $juara" ?></td>
   </tr>
   <?php
   $no++;
   if ($no>=4) {
    $h="  ";
    $juara=" ";
   }else{
    $juara++;
   }

   }
   echo "</table>";

?>

Hasil dari dari program php

hasil dari proses koding php diatas seperti dibawah ini gan
metode saw dengan php




Terima kasih telah membaca Silahkan baca artikel terkait dibawah ini.

« Previous
« Prev Post
Next »
Next Post »
arsipbertuah
arsipbertuah Updated at: December 13, 2016

12 komentar:

  1. Thanks gan, sangat membantu. Klo ada contoh programnya akan lebih baik.

    ReplyDelete
  2. terimakasih banyak gan.. sangat membantu,

    ReplyDelete
    Replies
    1. Sama2 gan...jangan lupa share supaya lebih bermanfaat....

      Delete
  3. mas sekalian databasenya
    soalnya aku baru belajar .mkasih yo

    ReplyDelete
  4. bang bagaimana kriterianya ada subkriterianyan bagaimana cara perhitungannya??
    Terima Kasih

    ReplyDelete
  5. sekalian databasenya mas kalo boleh. terimakasih

    ReplyDelete
  6. This comment has been removed by the author.

    ReplyDelete
  7. bermanfaat sekali mas, kalo bisa jelasin isi kodingnya mas, masih awam sya hehehe

    ReplyDelete
  8. Mas saya mau tanya di kolom SAW punya saya gak tampil,, salah nya ada di scrib coding yg mana ya mas, tolong info nya??

    ReplyDelete
  9. Mas saya mau nanya ini pas saya buat function getNamanya dengan parameter yang sudah saya sesuaikan malah gamuncul output apa2, solusinya gimana ya?

    ReplyDelete

komentar dengan link aktif di anggap spam dan akan segera di hapus.