Saturday, 23 May 2015

Metode AHP dan Sistem Pendukung Keputusan SAW dalam PHP dan Delphi

Dalam industri manufaktur maupun jasa, pengambil keputusan sering kali dihadapkan suatu permasalah yang kompleks. Salah satu permasalahan yang tersebut adalah masalah menentukan pilihan dari beberapa kandidat atau sekadar mengurutkan prioritas dari beberapa kandidat. Contoh-contoh dalam industri manufaktur termasuk pemilihan supplier, pemilihan pembelian mesin, pemilihan lokasi pabrik, dan lain-lain. Sedangkan contoh-contoh dalam industri jasa seperti pemilihan kendaraan logistik, pemilihan pekerjaan konsultan, pemilihan rute pelayanan, dan-lain.
Permasalahan pengambilan keputusan dapat menjadi kompleks karena adanya pelibatan beberapa tujuan maupun kriteria. Salah satu tool (alat bantu) yang cocok digunakan untuk pemilihan kandidat atau pengurutan prioritas adalah Analytic Hierarchy Process (AHP) yang dikembangkan oleh Thomas L. Saaty. Secara spesifik, AHP cocok digunakan untuk permasalahaan pemilihan kandidat ataupun pengurutan prioritas yang memiliki sifat-sifat sebagai berikut:
  • Melibatkan kriteria-kriteria kualitatif yang sulit dikuantitatifkan secara eksak.
  • Masing-masing kriteria dapat memiliki sub-sub kriteria yang dapat dibentuk seperti hirarki
  • Penilaian dapat dilakukan oleh satu atau beberapa pengambil keputusan secara sekaligus
  • Kandidat pilihan sudah tertentu dan terbatas jumlahnya
Apabila suatu permasalahan pengambilan keputusan ingin diselesaikan dengan metode AHP, permasalahan tersebut perlu dimodelkan sebagai tiga hirarki umum, yakni tujuan, kriteria (termasuk sub-kriteria di bawahnya), dan alternatif. Sebagai contoh, misalnya seorang manajer dihadapkan permasalahan untuk memilih armada logistik yang paling sesuai. Permasalahan ini dapat dimodelkan seperti model hirarki AHP di bawah.

Dalam model di atas, terlihat ada beberapa level/baris yang membentuk sebuah hirarki. Level bagian atas adalah untuk merepresentasikan tujuan. Dua level di bawahnya merupakan level kriteria dan sub-kriteria. Sedangkan level paling bawah menunjukkan kandidat-kandidat yang akan dipertimbangkan untuk dipilih.
Konsep dasar dari AHP adalah penggunaan pairwise comparison matrix (matriks perbandingan berpasangan) untuk menghasilkan bobot relatif antar kriteria maupun alternatif. Suatu kriteria akan dibandingkan dengan kriteria lainnya dalam hal seberapa penting terhadap pencapaian tujuan di atasnya. Sebagai contoh, kriteria spesifikasi dan kriteria biaya akan dibandingkan seberapa pentingnya dalam hal memilih armada transportasi. Begitu juga untuk alternatif. Kendaraan A, B, dan C akan dibandingkan secara berpasangan (dan akan dibentuk matriks) dalam hal sub-kriteria biaya pemeliharaan misalnya.
Nilai-nilai yang disarankan untuk membuat matriks perbandingan berpasangan adalah sebagai berikut:
  • 1 : sama penting (equal)
  • 3 : lebih penting sedikit (slightly)
  • 5 : lebih penting secara kuat (strongly)
  • 7 : lebih penting secara sangat kuat (very strong)
  • 9 : lebih penting secara ekstrim (extreme)
Selain nilai-nilai di atas, nilai-nilai antaranya juga bisa digunakan, yakni 2, 4, 6, dan 8. Nilai-nilai ini menggambarkan hubungan kepentingan di antara nilai-nilai ganjil yang disebutkan di atas. Sementara jika kepentingannya terbalik, maka kita dapat menggunakan angka reprisokal dari nilai-nilai di atas. Misalnya perbandingan berpasangan antara kriteria 1 dan 3 adalah 1/5, artinya kriteria 3 lebih penting secara kuat dari pada kriteria 1.
Matriks perbandingan berpasangan tersebut harus dibuat tiap level yang memiliki hirarki atasan yang sama. Sebagai contoh pada hirarki sebelumnya, kita harus membuat matriks perbandingan berpasangan untuk sub-kriteria kapasitas angkut dan sub-kriteria ketersediaan suku cadang terhadap kriteria spesifikasi, matriks perbandingan berpasangan antara sub-kriteria biaya pembelian, biaya pemeliharaan dan biaya perton mileage terhadap kriteria biaya, dan seterusnya.
Dalam membuat matriks berpasangan, kita hanya perlu menentukan matriks segitiga atas saja karena matriks segitiga bawah hanyalah nilai reprisokal dari matriks segitiga atas. Selain itu, nilai-nilai diagonal pada matriks perbandingan berpasangan adalah satu (karena setiap item dibandingkan dengan dirinya sendiri). Dengan demikian, apabila kita ingin membuat matriks perbandingan berpasangan dengan jumlah n item, maka kita hanya perlu membuat perbandingan sejumlah n(n-1)/2.
Jika semua matriks perbandingan berpasangan sudah dikumpulkan, kita dapat menghasilkan bobot prioritas akhir dari kandidat pilihan. Langkah pertama adalah setiap matriks perbandingan berpasangan perlu dicari bobot absolut masing-masing item. Setelah itu, bobot prioritas akhir didapat dengan mengkalikan bobot absolut alternatif dengan bobot-bobot kriteria dan sub-kriteria di atasnya. Kemudian, bobot prioritas akhir ini dapat dijadikan sebagai acuan pemilihan kandidat ataupun pengurutan kepentingan kandidat pilihan.
Dalam tulisan ini, saya akan berbagi sebuah template excel yang dapat digunakan untuk menghasilkan bobot absolut dari sebuah matriks perbandingan berpasangan. Sebagai contoh, kita mempunyai matriks perbandingan berpasangan dengan lima item sebagai berikut:



Matriks perbandingan tersebut dapat dihitung dengan template berikut (sila unduh):
AHP

Sebagai tambahan, indeks consistency ratio menunjukkan rasio kekonsistenan matriks perbandingan berpasangan tersebut. Suatu matriks perbandingan berpasangan dianggap tidak konsisten (tidak dibuat dengan baik) apabilai nilai indeks rasio tersebut lebih dari 0.1. Selain itu, sebaiknya kita tidak membandingkan lebih dari tujuh item sekaligus dalam sebuah matriks perbandingan berpasangan. Hal ini dikarenakan nilai consistency ratio tidak cukup menggambarkan tingkat kekonsistenan matriks tersebut ketika jumlah item lebih dari tujuh.
Berikut adalah tampilan dari template tersebut.



Kemudian dengan meng-klik tombol yang tersedia, kita akan mendapatkan consistency ratio maupun bobot masing-masing item seperti tampilan di bawah.



Cara perhitungan yang saya gunakan dalam template excel tersebut adalah menggunakan iterasi rataan geometri (geomean approach). Sebenarnya metode eksak untuk menghitung bobot AHP didasarkan dengan perhitungan nilai Eigen dari matriks. Akan tetapi, perhitungan nilai Eigen akan menghasilkan programa nonlinear yang cukup kompleks (untuk jumlah item lebih dari dua). Sementara itu, berdasarkan teorema, perhitungan iterasi rataan geometri ini akan secara konvergen menuju hasil yang didapatkan dengan metode nilai Eigen.

Penerapan Metode Sistem Pendukung Keputusan SAW

 

Metode sistem pendukung keputusan SAW (Simple additive Weighting) merupakan salah satu metode Sistem Pendukung Keputusan yang menggunakan konsep penjumlahan terbobot. Pada tulisan kali ini saya akan memberikan contoh bagaimana cara Penerapan Metode Sistem Pendukung Keputusan SAW dengan PHP. Sebelumnya saya akan menjelaskan proses dari metode Simple additive weighting :
  1. Siapkan terlebih dahulu data yang disimpan dalam Matrik Data.
  2. Lakukan Normalisasi Matrik Data dengan formula :
    Normalisasi Matrik SAW
    Normalisasi Matrik SAW
  3. Lakukan perangkingan dengan Formula
Vi = (rij * wi) + (rij * wi) + .. (rxx * wx)

Sebagai bahan Penerapan Metode SAW, berikut contoh kasus yang akan kita coba lakukan perhitungan dengan PHP.
Suatu Institusi Perguruan tinggi akan memilih seorang karyawan untuk dipromosikan sebagai kepala unit Sistem Informasi.
Ada empat kriteria yang digunakan untuk melakukan penilaian yaitu :
  1. C1  = Tes Pengetahuan (Wawasan) Sistem Informasi.
  2. C2 = Praktik Insatalasi Jaringan
  3. C3 = Tes Kepripadian
  4. C4 = Tes Pengetahuan Agama.
Pengambil keputusan memberikan bobot untuk setiap kriteria sebagai berikut: C1 = 35%; C2 = 25%; C3 = 25%; dan C4 = 15%.

Ada enam orang karyawan yang menjadi kandidat (alternatif) untuk dipromosikan sebagai kepala unit, yaitu:
  1. A1 = Indra
  2. A2 = Roni,
  3. A3 = Putri,
  4. A4 = Dani,
  5. A5 = Ratna, dan
  6. A6 = Mira.
Data diatas sekarang kita rubah ke dalam database, buat database kira2 seperti ini :
tbcalon :

Tabel Calon Sistem Pendukung Keputusan

 Selanjutnya kita buat tabel untuk menyimpan matrik, misal tbmatrik :
 
Tabel Matrik Sistem Pendukung Keputusan
Tabel Matrik Sistem Pendukung Keputusan
Setelah keduanya dibuat, silahkan isi data sehingga terbentuk data seperti ini :
tbcalon :

Data Calon SPK
Data Calon SPK
dan data Matrik :
Data Matrik Calon SPK
Data Matrik Calon SPK
Langkah-langkah perhitungan sistem pendukung keputusan dengan php :
Lakukan Langkah ke 2, yakni normalisasi :


//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 "

Matrik Normalisasi

    'border:1px; #ddd; solid; border-collapse:collapse'border=1>
        
            NoNamaC1C2C3C4
        
        ";
    $no = 1;
    while ($dt2 = mysql_fetch_array($sql2)) {
        echo "
            $no
".getNama($dt2['idCalon'])."".round($dt2['Kriteria1']/$max['maxK1'],2)."".round($dt2['Kriteria2']/$max['maxK2'],2)."".round($dt2['Kriteria3']/$max['maxK3'],2)."".round($dt2['Kriteria4']/$max['maxK4'],2)."
        
";
    $no++;
    }
    echo "
";

Selanjutnya lakukan Perangkingan :
//Proses perangkingan dengan rumus langkah 3
    $sql3 = mysql_query("SELECT * FROM tbmatrik");
    //Buat tabel untuk menampilkan hasil
    echo "

Perangkingan

    'border:1px; #ddd; solid; border-collapse:collapse'border=1>
        
            NoNamaRangking
        
        ";
    $no = 1;
    //Kita gunakan rumus (Normalisasi x bobot)
    while ($dt3 = mysql_fetch_array($sql3)) {
        echo "
            $no
".getNama($dt3['idCalon'])."
            "
            .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]),2)."
        
";
    $no++;
    }
    echo "
";
Selesai, berikut adalah perhitungan sistem pendukung keputusan dengan PHP :

Hasil Sistem Pendukung Keputusan
Hasil Sistem Pendukung Keputusan
Source code, download Source Code Sistem Pendukung Keputusan SAW.

No comments:

Post a Comment