Skip to main content

Source Code Perhitungan AHP dengan PHP

Source Code Perhitungan SPK Metode AHP dengan PHP - Kali ini saya akan berbagi source code perhitungan ahp dengan php. Saya buatkan class dengan nama AHP, dimana dalam class tersebut terdapat beberapa fungsi diantaranya: get_row_total, normalize, get_priority, get_cm, dan get_consistency. Di contoh ini juga akan langsung ditampilkan hasil perhitungan dalam bentuk tabel seperti gambar berikut:



Langsung saja cek kodenya:

<?php
error_reporting(~E_NOTICE);
class AHP{
    function get_row_total($matrix){
        $arr = array();
        foreach($matrix as $key => $val){
            foreach($val as $k => $v){
                $arr[$k]+=$v;
            }
        }
        return $arr;
    }
         
    function normalize($matrix, $row_total){
        $arr = array();
        foreach($matrix as $key => $val){
            foreach($val as $k => $v){
                $arr[$key][$k] = $v / $row_total[$k];
            }
        }
        return $arr;
    }
 
    function get_priority($normal){
        $arr = array();
        foreach($normal as $key => $val){
            $arr[$key] = array_sum($val) / count($val);
        }
        return $arr;
    }  
 
    function get_cm($matrix, $priority){
        $arr = array();
        foreach($matrix as $key => $val){
            foreach($val as $k => $v){
                $arr[$key]+=$v * $priority[$k];
            }
        }
     
        foreach($arr as $key => $val){
            $arr[$key] = $val/$priority[$key];
        }
     
        return $arr;
    }
     
    function get_consistency($cm){
        $arr = array();
     
        $sum = array_sum($cm);
        $count = count($cm);      
        $arr['ci'] = (($sum / $count) - $count) / ($count - 1);
     
        $nRI = array (
        1=>0,
        2=>0,
        3=>0.58,
        4=>0.9,
        5=>1.12,
        6=>1.24,
        7=>1.32,
        8=>1.41,
        9=>1.46,
        10=>1.49,
            11=>1.51,
            12=>1.48,
            13=>1.56,
            14=>1.57,
            15=>1.59
        );
        $arr['ri'] = $nRI[count($cm)];
        $arr['cr'] = $arr['ci'] / $arr['ri'];
        $arr['consistency'] =  $arr['cr']<=0.1 ? 'consistent' : 'inconsistent';
     
        return $arr;
    }
}

function display($arr, $echo = true){
    $result = '<table border="1">';
    foreach($arr as $key => $val){
        $result.= '<tr>';
        foreach($val as $k => $v){
            $result.='<td>' . $v . '</td>';
        }
        $result.= '</tr>';
    }
    $result.= '</table>';
 
    if($echo)
        echo $result;
    else
        return $result;
}

$matrix = array(
    array(1, 2, 3),
    array(1/2, 1, 3),
    array(1/3, 1/3, 1),  
);

echo '<h3>Step 1</h3>';
$ahp = new AHP($matrix);
display($matrix);

echo '<h3>Step 2</h3>';
$row_total = $ahp->get_row_total($matrix);
display(array($row_total));

echo '<h3>Step 3</h3>';
$normal = $ahp->normalize($matrix, $row_total);
display($normal);

echo '<h3>Step 4</h3>';
$priority = $ahp->get_priority($normal);
display(array($priority));

echo '<h3>Step 5</h3>';
$cm = $ahp->get_cm($matrix, $priority);
display(array($cm));


echo '<h3>Step 5</h3>';
$consistency = $ahp->get_consistency($cm);

echo 'CI: ' . $consistency['ci'] . '<br />';
echo 'CI: ' . $consistency['ri'] . '<br />';
echo 'CR: ' . $consistency['cr'] . '<br />';
echo 'Consistency: ' . $consistency['consistency'] . '<br />';
?>

Penjelasan Source Code

Untuk bisa memahami source code ini setidaknya temen-temen harus sudah tahu tentang ahp. Bila masih kurang jelas, silahkan baca contoh perhitungan spk metode ahp.

error reporting

Error reporting digunakan untuk mengatur jenis error apa saja yang ingin ditampilkan. Pada contoh di atas saya menggunakan ~e_notice yang artinya PHP hanya akan menampilkan error selain e_notice. e_notice biasanya muncul jika suatu variabel belum diinisialisasi.

get_row_total

get_row_total berfungsi untuk menghitung total setiap kolom matriks. Parameter yang dimasukkan berupa matriks nilai perbandingan AHP berupa array dua dimensi. Fungsi ini akan mengembalikan nilai berupa array satu dimensi.

normalize

normalize berfungsi untuk menormalisasikan matriks perbandingan AHP. Parameter yang dimasukkan adalah matriks (array dua dimensi) dan row_total (array satu dimensi). Fungsi ini akan menghasilkan array dua dimensi.

get_priority

get_priority berfungsi untuk mencari bobot prioritas atau rata-rata matriks yang sudah ternormalisasi. Parameter yang dimasukkan adalah normal (matriks dua dimensi). Fungsi ini akan mengembalikan nilai berupa array 1 dimensi.

get_cm

get_cm berfungsi untuk mencari consistency measure dalam AHP. Parameter yang dimasukkan adalah matrix (array dua dimensi) dan prioritas (array satu dimensi). Fungsi ini akan menghasilkan array satu dimensi.

get_consistency

get_consistency berfungsi untuk mencari konsistensi perbandingan AHP, dengan parameter cm (array dua dimensi). Selain konsistensi, fungsi ini akan mengembalikan nilai berupa array satu dimensi yang berisi ci (consistency index), ri (ratio index), cr (consistency ratio), dan consistncy.

Demikian penjelasan singkat dari source code perhitungan ahp di atas. Jika masih kurang jelas silahkan berikan komentar.

Comments

  1. kalau kriterianya ditambah, jadinya matriksnya agar dinamis gimana ya?? matriks 3x3, 4x4, 5x5,..., nxn

    ReplyDelete

Post a Comment

Popular posts from this blog

Contoh Perhitungan SPK Metode AHP

Contoh perhitungan spk metode ahp dengan mengambil studi kasus pemilihan lokasi warnet terbaik. Dalam perhitungan dengan metode ahp, akan banyak melakukan perbandingan yaitu perbandingan antar kriteria, dan perbandingan antar alternatif setiap kriteria. Sehingga akan cocok bila digunakan untuk studi kasus yang lebih mementingkan ketelitian dalam penilaian daripada banyaknya kriteria dan alternatif yang dinilai. Data yang dibutuhkan dalam contoh perhitungan spk metode ahp 1. Data Kriteria Data kriteria  digunakan sebagai acuan/dasar dari penilaian. Dalam kriteria, kita bisa menambahkan kode kriteria dan nama kriteria. Dalam ahp, tidak usah memberikan bobot kepentingan dalam kriteria seperti pada  metode saw , karena penting atau tidaknya kriteria akan terlihat dari perbandingan antar kriteria (dijelaskan bagian berikutnya). Berikut contoh data kriteria dalam perhitungan spk metode ahp: Kode Nama C01 Jarak ke pondok mahasiswa C02 Jarak ke sarana pendidikan C03 Jar...

Source Code SPK Metode VIKOR dengan PHP dan MySQL

Source code Sistem Pendukung Keputusan (SPK) metode Vlse Kriterijumska Optimizacija Kompromisno Resenje (VIKOR) berbasis web dengan PHP dan MySQL.