Decision Support System Series

Weighted Product (WP)

Contoh implementasi DSS (Decision Support System) dengan metode Weighted Product (WP) menggunakan PHP dan MySQL

Metode Weighted Product (WP) merupakan salah satu metode untukmenyelsaikan masalah Multi-Attribute Decision Making(MADM) yang menggunakan perkalian untuk menghubungkan rating atribut,dimana rating setiap atribut harus dipangkatkan dulu dengan bobot atribut yang bersangkutan

author : cahya dsn, published on : February 4th, 2015 updated on : May 31st, 2019

minerva minerva donasi donation

Mau lihat artikel lainya? Dapatkan artikel-artikel lain seputar pemrograman website di sini, dan dapatkan ide-ide baru

Penerapan Metode Weighted Product (WP) diharapkan mampu untuk membantu dalam menentukan Senior Web Developer baru dari beberapa kandidat pelamar yang diajukan, untuk menjadi karyawan di departemen IT

Sebuah perusahaan IT membutuhkan seorang senior web application programmer yang menguasai bahasa pemrograman PHP, database Mysql, menguasai HTML5, javascript dan CSS3. Ada 6 kandidat yang akan dipilih dari hasil interview yang sudah dilakukan oleh tim HRD dan IT yang akan dijadikan alternatif; yaitu A1: Gatot, A2: Kevin, A3: Usman, A4: Nina, A5: Enrico, dan A6: James .

Ada 5 kriteria dasar yang menjadi acuan dalam pengambilan keputusan, yaitu:

  • C1: Penguasaan Aspek teknis (skala 1-10)
  • C2: Pengalaman Kerja (dalam tahun)
  • C3: Interpersonal Skill (skala 1-10)
  • C4: Usia (dalam tahun)
  • C5: Status Perkawinan (5:blm menikah, 8:menikah tanpa tanggungan, 10: menikah dgn tanggungan)

2.1. Rating Kecocokan Alternatif dan Kriteria

Tabel 1 menunjukkan rating kecocokan dari setiap alternatif dengan setiap kriteria. Nilai setiap alternatif pada setiap atribut diberikan berdasarkan data riil.

TABEL 1: Rating kecocokan dari setiap alternatif pada setiap kriteria
Alternatif Kriteria
C1C2C3C4C5
A1 Gatot94.57.5275
A2 Kevin6.516298
A3 Usman8.53.57.53210
A4 Nina92.59385
A5 Enrico76.56308
A6 James997248

2.2. Bobot Kriteria

Pengambil keputusan memberi bobot preferensi dari setiap kriteria sebagai: W=(5,4,4,2.5,3) dengan masing-masing jenisnya (keuntungan/benefit atau biaya/cost) seperti dalam tabel 2 berikut:

TABEL 2: Kriteria yang ditentukan
Kriteria Deskripsi Bobot Atribut
C1 Penguasaan Aspek teknis 5 benefit
C2 Pengalaman Kerja 4 benefit
C3 Interpersonal Skill 4 benefit
C4 Usia 2.5 cost
C5 Status Perkawinan 3 cost

2.3. Perhitungan Manual

Pada bagian ini akan dijelaskan mengenai perhitungan normalisasi bobot (W), penentuan nilai preferensi (S), penentuan nilai preferensi realtif (V), dan perangkingan dari data alternatif yang diberikan. Penjelasannya sendiri disajikan secara langkah per langkah agar mudah dipahami.

2.3.1. Normalisasi Bobot (W)

Berdasarkan data-data tabel kriteria di atas, bobot awal yang ada adalah W=(5,4,4,2.5,3) akan diperbaiki sehingga total bobot $\sum w_j=1$ seperti dalam persamaan [WP-02], dengan cara

$w_{ij}=\frac{w_i}{\sum w_j}$
.. [WP-04]

Dari persamaan [WP-04] diperoleh hasil sebagai berikut:

$\begin{align}w_{1}&= \frac{5}{(5+4+4+2.5+3)}\\ &= \frac{5}{18.5}\\ &= 0.27027027027027\end{align}$

$\begin{align}w_{2}&= \frac{4}{(5+4+4+2.5+3)}\\ &= \frac{4}{18.5}\\ &= 0.21621621621622\end{align}$

$\begin{align}w_{3}&= \frac{4}{(5+4+4+2.5+3)}\\ &= \frac{4}{18.5}\\ &= 0.21621621621622\end{align}$

$\begin{align}w_{4}&= \frac{2.5}{(5+4+4+2.5+3)}\\ &= \frac{2.5}{18.5}\\ &= 0.13513513513514\end{align}$

$\begin{align}w_{5}&= \frac{3}{(5+4+4+2.5+3)}\\ &= \frac{3}{18.5}\\ &= 0.16216216216216\end{align}$

Sehingga diperoleh bobot ternormalisasi w=(0.27027027027027,0.21621621621622,0.21621621621622,0.13513513513514,0.16216216216216)

2.3.2. Menghitung Nilai Vektor S

Nilai vektor preferensi S dihitung berdasarkan persamaan [WP-01], sehingga diperoleh hasil:

$\begin{align}S{1}&=(9^{0.27027027027027})(4.5^{0.21621621621622})(7.5^{0.21621621621622})(27^{-0.13513513513514})(5^{-0.16216216216216})\\ &=1.9123\end{align}$

$\begin{align}S{2}&=(6.5^{0.27027027027027})(1^{0.21621621621622})(6^{0.21621621621622})(29^{-0.13513513513514})(8^{-0.16216216216216})\\ &=1.1063\end{align}$

$\begin{align}S{3}&=(8.5^{0.27027027027027})(3.5^{0.21621621621622})(7.5^{0.21621621621622})(32^{-0.13513513513514})(10^{-0.16216216216216})\\ &=1.5577\end{align}$

$\begin{align}S{4}&=(9^{0.27027027027027})(2.5^{0.21621621621622})(9^{0.21621621621622})(38^{-0.13513513513514})(5^{-0.16216216216216})\\ &=1.6728\end{align}$

$\begin{align}S{5}&=(7^{0.27027027027027})(6.5^{0.21621621621622})(6^{0.21621621621622})(30^{-0.13513513513514})(8^{-0.16216216216216})\\ &=1.6841\end{align}$

$\begin{align}S{6}&=(9^{0.27027027027027})(9^{0.21621621621622})(7^{0.21621621621622})(24^{-0.13513513513514})(8^{-0.16216216216216})\\ &=2.0606\end{align}$

2.3.3. Menghitung Nilai Vektor V

Perhitungan nilai vektor preferensi V mengacu pada persamaan [WP-03]. Dari persamaan tersebut dapat disederhanakan menjadi persamaan sebagai berikut:

$V_i=\frac{S_i}{\displaystyle\sum_{i=1}^{m}S_i}$
.. [WP-05]

Dari persamaan [WP-05] tersebut kita peroleh:

$\begin{align}V_1&= \frac{1.9123}{(1.9123 + 1.1063 + 1.5577 + 1.6728 + 1.6841 + 2.0606)}\\&= 0.1914\end{align}$

$\begin{align}V_2&= \frac{1.1063}{(1.9123 + 1.1063 + 1.5577 + 1.6728 + 1.6841 + 2.0606)}\\&= 0.1107\end{align}$

$\begin{align}V_3&= \frac{1.5577}{(1.9123 + 1.1063 + 1.5577 + 1.6728 + 1.6841 + 2.0606)}\\&= 0.1559\end{align}$

$\begin{align}V_4&= \frac{1.6728}{(1.9123 + 1.1063 + 1.5577 + 1.6728 + 1.6841 + 2.0606)}\\&= 0.1674\end{align}$

$\begin{align}V_5&= \frac{1.6841}{(1.9123 + 1.1063 + 1.5577 + 1.6728 + 1.6841 + 2.0606)}\\&= 0.1685\end{align}$

$\begin{align}V_6&= \frac{2.0606}{(1.9123 + 1.1063 + 1.5577 + 1.6728 + 1.6841 + 2.0606)}\\&= 0.2062\end{align}$

2.3.4. Perankingan Nilai Vektor V

Dari hasil perhitungan nilai vektor V di atas dapat diurutkan secara descending (dari nilai terbesar ke nilai terkecil) sebagai berikut:

No Alternatif Nilai Akhir
1 A6 James 0.20618509857598
2 A1 Gatot 0.1913534415586
3 A5 Enrico 0.16851174875229
4 A4 Nina 0.16738084565717
5 A3 Usman 0.15586249057774
6 A2 Kevin 0.11070218724205

Sehingga dari 6 orang kandidat, diperoleh hasil yang terpilih untuk diterima sebagai Senior Web Developer di departemen IT adalah James dengan total nilai perhitungan akhir sebesar 0.20618509857598.

3. Aplikasi PHP

Sebagai pelengkap artikel Metode Weighted Product (WP) pada bagian ini akan dibahas langkah-langkah dalam implementasinya dengan bahasa pemrograman PHP dan database MySQL/MariaDB.

3.1. Persiapan Database

Sebagai bahan pembelajaran aplikasi WP ini; dibuat database (dalam hal ini menggunakan MySQL/MariaDB Database server) sebagai berikut:

CREATE DATABASE IF NOT EXISTS db_dss;
USE db_dss;

Awalnya membuat dulu database dengan nama db_dss jika belum ada database dengan nama tersebut, kemudian gunakan database tersebut dengan memakai sintak USE db_dss;

Dalam hal ini, pembuatan database memakai command console dari database server yang bersangkutan

3.1.1. Membuat Data Tabel Kriteria

Berdasarkan contoh kasus di atas dibuatkan tabel untuk data-data kriteria sebagai berikut:

DROP TABLE IF EXISTS wp_criterias;
CREATE TABLE IF NOT EXISTS wp_criterias(
  id_criteria TINYINT(3) UNSIGNED NOT NULL,
  criteria VARCHAR(100) NOT NULL,
  weight FLOAT NOT NULL,
  attribute SET('benefit','cost'),
  PRIMARY KEY(id_criteria)
)ENGINE=MyISAM;

INSERT INTO wp_criterias(id_criteria,criteria,weight,attribute)
VALUES
(1,'Penguasaan Aspek teknis',5,'benefit'),
(2,'Pengalaman Kerja',4,'benefit'),
(3,'Interpersonal Skill',4,'benefit'),
(4,'Usia',2.5,'cost'),
(5,'Status Perkawinan',3,'cost');

3.1.2. Membuat Data Tabel Alternatif

Data-data mengenai kandidat yang akan dievaluasi seperti yang tertera pada contoh kasus di atas dapat di representasikan dalam tabel database sebagai berikut:

DROP TABLE IF EXISTS wp_alternatives;
CREATE TABLE IF NOT EXISTS wp_alternatives(
  id_alternative SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
  name VARCHAR(30) NOT NULL,
  PRIMARY KEY(id_alternative)
) ENGINE=MyISAM;

INSERT INTO wp_alternatives(name)
VALUES
('Gatot'),
('Kevin'),
('Usman'),
('Nina'),
('Enrico'),
('James');

Dalam tabel wp_alternatives tersebut hanya disimpan id dan nama alternatif-nya; dalam pengembangannya dapat ditambahkan atribut/properti data lainnya, semisal alamat, nomor telepon, email, dan sebagainya sesuai kebutuhan. Namun dalam contoh ini hanya diperlukan namanya saja.

3.1.3. Membuat Data Tabel Hasil Evaluasi

Berikutnya adalah membuat tabel yang berisi hasil evaluasi dari tiap-tiap kandidat(alternatif) terhadap kriteria-kriteria yang diberikan. Data-data yang ada pada contoh kasus di atas dapat di representasikan dalam tabel relasi antara tabel wp_criterias dengan tabel wp_alternatives sebagai berikut:

DROP TABLE IF EXISTS wp_evaluations;
CREATE TABLE IF NOT EXISTS wp_evaluations(
  id_alternative SMALLINT(5) UNSIGNED NOT NULL,
  id_criteria TINYINT(3) UNSIGNED NOT NULL,
  value FLOAT NOT NULL,
  PRIMARY KEY (id_alternative,id_criteria)
)ENGINE=MyISAM;

INSERT INTO wp_evaluations(id_alternative,id_criteria,value)
VALUES
(1,1,9),(1,2,4.5),(1,3,7.5),(1,4,27),(1,5,5),
(2,1,6.5),(2,2,1),(2,3,6),(2,4,29),(2,5,8),
(3,1,8.5),(3,2,3.5),(3,3,7.5),(3,4,32),(3,5,10),
(4,1,9),(4,2,2.5),(4,3,9),(4,4,38),(4,5,5),
(5,1,7),(5,2,6.5),(5,3,6),(5,4,30),(5,5,8),
(6,1,9),(6,2,9),(6,3,7),(6,4,24),(6,5,8);

3.2. Koneksi Ke Database Server

Dari databse yang sudah dibuat, kita bisa membuat script php untuk membuat koneksi ke database server dengan extension mysqli secara sederhana sebagai berikut:

<?php
//-- konfigurasi database
$dbhost 'localhost';
$dbuser 'root';
$dbpass '';
$dbname 'db_dss';
//-- koneksi ke database server dengan extension mysqli
$db = new mysqli($dbhost,$dbuser,$dbpass,$dbname);
//-- hentikan program dan tampilkan pesan kesalahan jika koneksi gagal
if ($db->connect_error) {
   die(
'Connect Error ('.$db->connect_errno.')'.$db->connect_error);
}
?>

Sesuaikan nilai-nilai $dbhost,$dbuser,$dbpass dan $dbname dengan konfigurasi database yg digunakan.

Secara umum dalam WP, langkah-langkah yang dilakukan dalam pengambilan keputusan adalah sebagai berikut:

3.3.1 Pengambilan Data

Untuk keperluan perhitungan berikutnya, terlebih dahulu dengan PHP diambil data dari database MySQL/MariaDB yang sudah dibuat sebelumnya dan disimpan dalam variabel array, sebagai berikut:

<?php
//--- query mengambil nilai data-data kriteria
$sql="SELECT id_criteria,criteria,weight
      FROM wp_criterias
      ORDER BY id_criteria"
;
$result=$db->query($sql);
//--- inisialisasi array kriteria 'C'
$C=array();
//--- inisialisasi array weight/bobot 'W'
$W=array();
//--- inisialisasi jumlah kriteria 'n'
$n=0;
while(
$criteria=$result->fetch_assoc()){
  
$W[$id_criteria]=$criteria['weight'];
  
$C[]=$criteria;
  ++
$n;
}
$result->free();

//--- query mengambil nilai data-data hasil evaluasi
$sql="SELECT id_criteria,criteria,weight
      FROM wp_evaluations
      ORDER BY id_alternative,id_criteria"
;
$result=$db->query($sql);
//--- inisialisasi array X
$X=array();
$alternative='';
//--- inisialisasi jumlah alternative 'm'
$m=0;
while(
$row=$result->fetch_assoc()){
  if(
$row['id_alternative']!=$alternative){
    
$X[$row['id_alternative']]=array();
    
$alternative=$row['id_alternative'];
    ++
$m;
  }
  
$X[$row['id_alternative']][$row['id_criteria']]=$row['value'];
}
$result->free();
?>

3.3.2. Normalisasi Bobot (W)

Script PHP yang digunakan untuk mengimplementasikan perhitungan normalisasi bobot dapat dituliskan sebagai berikut:

<?php
//--- menghitung total jumlah bobot
$sigma_w=array_sum($W);
//--- membagi masing-masing bobot dengan total jumlah bobot
foreach($W as $j=>$w){
  
$W[$j]=$w/$sigma_w;
}
?>

3.3.3. Menghitung Nilai Vektor S

Perhitungan nilai vektor preferensi S dengan PHP dapat dilakukan dengan script berikut:

<?php
//--- inisialisasi array 'S'
$S=array();
//--- menghitung nilai preferensi S untuk tiap-tiap alternatif
foreach($X as $i=>$x){
  
//--- inisialisasi nilai S untuk alternatif ke-i
  
$S[$i]=1;
  
//--- lakukan iterasi untuk tiap-tiap data hasil evaluasi X
  
foreach($x as $j=>$value){
    
//--- kalikan dengan pangkat negatif dari nilai untuk kriteria ke j
    //--- jika merupakan kriteria biaya/cost
    
if($criterias[$j]['attribute']=='cost')
      
$S[$i]*=pow($value,-$W[$j]);
    
//--- kalikan dengan pangkat positif dari nilai untuk kriteria ke j
    //--- jika merupakan kriteria keuntungan/benefit
    
else
      
$S[$i]*=pow($value,$W[$j]);
  }
}
?>

3.3.4. Menghitung Nilai Vektor V

Nilai dari Vektor V adalah nilai dari masing-masing nilai preferensi S dibagi dengan jumlah total nilai vektor S. Perhitungan tersebut dapat direpresentasikan dalam kode-kode PHP sebagai berikut:

<?php
//--- inisialisasi vektor V
$V=array();
//--- menghitung total jumlah nilai preferensi S
$sigma_s=array_sum($S);
//--- membagi masing-masing bobot dengan total jumlah nilai preferensi S
foreach($S as $j=>$s){
  
$V[$j]=$s/$sigma_s;
}
?>

3.3.5. Perankingan Nilai Vektor V

Proses perankingan nilai vektor V dalam PHP dapat dilakukan dengan perintah berikut:

<?php
//--- mengurutkan data nilai vektor V secara descending
arsort($V);
//--- menampilkan data secara terurut dari yang terbesar
$rank=0;
foreach(
$V as $i=>$v){
echo ++
$rank." V{$i} = {$v} <br>";
}
?>

Dari hasil perangkingan tersebut, diperolah alternatif dengan nilai tertinggi sebagai alternatif yang terpilih.

Konfigurasi aplikasi

Masukkan jumlah Kriteria (n) dan jumlah Alternatif (m) yang akan disimulasikan. Pada simulasi ini dibatasi nilai masukkannya masing-masing hanya bilangan bulat antara 3 s.d 7 saja