Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /*
- -- ----------------------------
- -- DSS WP METHOD
- -- CREATED BY : CAHYA DSN
- -- CREATED ON : 2015-01-28
- -- UPDATED ON : 2015-01-29
- -- ----------------------------
- */
- ?>
- <!doctype html>
- <html>
- <head>
- <title>DSS WP Method</title>
- <style>
- * {font-family:georgia,verdana,arial,sans-serif;font-size:1em;padding:2px;}
- h1 {font-size:1.5em}
- h2 {font-size:1.2em}
- td,th {min-width:70px;border:solid 1px #999;}
- th {background-color:#99f;}
- table {min-width:600px;}
- sub,sup {font-size:0.8em}
- pre {font-size:0.8em;font-family:Consolas,'Couirer New';color:#00c;}
- .center {text-align:center}
- code {font-family:'Times New Roman',georgia,serif;font-style:italic;}
- </style>
- </head>
- <body>
- <h1>DSS WP Method</h1>
- <h2>Pendahuluan</h2>
- <p>
- Metode Weighted Product (WP) menggunakan perkalian untuk menghubungkan rating atribut,dimana rating
- setiap atribut harus dipangkatkan dulu dengan bobot atribut yang bersangkutan
- (<code>Yoon,1989</code>). Proses ini sama halnya dengan proses normalisasi(<code>Kusumadewi, dkk.,
- 2006:79</code>) Preferensi untuk alternatif <code>A<sub>i</sub></code> diberikan sebagai berikut:
- </p>
- <p>
- <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAABBCAIAAACVc/fgAAACXklEQVR42u2b247DIAxEnf//6G61lSJaLrWNPWDqeaii3QIzR5QAIdfj8aCUv64EjVGCBilBg3QI6Ou6np+vLOX1PjoENP3zfWYpP1c7ere3myF9kvdOvVuu7QzpkxRwE7RnkgSNiLE3ZToVNOWs42eVoEFK0CAlaJASNEgJWqZ6/cmc5MQA/QpjqJnU91SyvhiVCgH6Tnhfi2yrC/ZqOxw0Fch0oE3CfowYTcr1H7mgm50Cv9jdBDQViJkQeF96H+9tf4mKkNJ2/UDXdfbujYzBpVdyxZbCJqDHQ3N7MJkBjR/fdwDNaS5BuxvudnMmaIxLTgyFGVGpumOJBkk9aHU8D7mC/lgWlc/UOS2OJyHi6Z2aNWd15/TzkpYaz5G/lmr/V1qRNKStkKBtk4pvaGsfFIF7tKXzQXW9xaUiqpld1KzDnLUYtIcJgd0jhw5b0FFuhqJdZoGH7l2yb66xNYVavIBBUzX3UB8g+Q6aJmbv5nIC3ZzPGe+QDNpmbtch0buCpm9dauZwsM1P/qShg5/UZujQte2ttaA/kiZom1LjpNLUCVqZFA0avCu9EPTMuEEmoCcDKJqTtmgFuqxhwdCB1PJZx12heGGcoKUGdG99RQLdfALiVGpcm6KSGKAHG1LjTTFFKa8IIUAfoAQNUoIG6VdAL3/5MDZo7knODd48jA1akDN7tN66xUktnNu4oEmCL0HPue88b7u1z5v4gUFLD8YlaK31aoO4/k72aAvr2aNB1iV3wtfFynOwQUEv76Fiw7Hs0sTW+2LbsezSHutpje1wjoMqQYOUoEH6A6fxHax5NDBKAAAAAElFTkSuQmCC"/>
- </p>
- <p>
- dengan <code>i=1,2,...,m</code>;<br>dimana :
- </p>
- <p>
- <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAAUCAIAAABeYcl+AAAAw0lEQVR42t2X3QrAIAiF8/0fug2CsCx3dP2sdRHBtPN1EGsUYwynDcrQRISn7T0qcfnErQMhMUuhA/NbwbpjVkJLuYb8I/cy6B4JKWRhdxlkEhT6O9w2aJBbxiSZx1ylX8ndDNABq+CKL6cMqX6P06AqB80HOANaznpK75O/PEw+SYMbYi7jDdBWAR4/tu2g0A5LKujmReuzOS2KgmneiENayvuU7lZ/gHZ05cXENTT+pN5ocwE96ScA7NlO6EljxqvrAoUOAehEbyXXAAAAAElFTkSuQmCC"/>
- </p>
- <p><code>w<sub>j</sub></code> adalah pangkat bernilai positif untuk atribut keuntungan,
- dan bernilai negatif untuk atribut biaya.
- </p>
- <p>
- Preferensi relatif dari setiap alternatif, diberikan sebagai:
- </p>
- <p>
- <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJUAAACCCAIAAADAEx07AAAEpElEQVR42u2d63LrIAyE5fd/6J7OSRo7Nsa6ARLs/uhkWkRYvmJjwLD9/PwQlFYb+KUW+OXWKvy2bfv9+TJ7/Jxdq/Cj/9h+zR5/ji6Rh6k5bLCsfjfBOYxPYoNl9cAM/PIJ/BJrSni0LD9C/xOKIPDLLfDLLfDLLfDLLfBz1nWUp2l3dxJ+rzpylKVaPs8q1w/+xufg9zZzoCjypQ68yw38tH7+SOj4udTG6bJZhOdFFPz0UfXc+sxVgZ8+qp7bXc/FtzsDfvqoSm71255jiwQ/fZSlkOB34yc8P9/bIfiJo643MNEtDfyqflryO40SHFezcb6xRXcU/DRR9We7xyhPv+CniOrc36mVZHgJnP30bX+j7YKfNioIQvDTROH62cxPl+eH1rN6gpIPL4Gzn7786NIL7bzQFPxYUcUHhghXUfBjRRUT1Adi+lxgwU8fdZcVrp8GP0P5nYCBn9xPGH593pIBP31UMR/ws/kZx6//xZPAzxJVzATtz+ZndP/zk2GnpRjgp466y6rn/hZT8SvOjzeKqufWrVYn4Vd5/6FiUBcVSpPwW1bgl1vgl1vg91bSTWFSFlpgj0clyGS6xmDGQrcQ2l84DVzW3s9jxkIL7LGpgF9EFZerHJV9U7uUheZ6E76ckLEqyq/Wn35zXaJT/FM0XSfkrmmmbX+Vm3+EdXMsb2u2v48fqvKL71bUeXl9iG/qXHIpv/ngpZaGX/B6meyEgAezIn4pKiXLFcLHLJ9fCniricvPAo+zOSD+M3TamD1MNL6YYvEDvLB65jcWnvvGrNl17lHW+aHlBdfWYYQM/Zd2svJDAx0rbv8TiinTBqPAPFzWqx+un2Nlqv0g8GY9m5jlfQJ+9D3nEKdUPYxPw49iDDj0Nm4ZlY5TTbMej/ps3DirEKSmwC+xloVHU/Ij722UgmRVzn8Cfr5y3h8e/DrLvcZxflU/NaprnP/XSX34OZ6xCn67jGu0Hs9uKa4nMp7RCX67lDXIG7pbml+H44ktDx6c6e7ikjD7Gas5+J2qibTbm1UC9Xcgdvujb37kccZqJn7E+0/XRRl7Lqy2UhpnMJ6xCn57muZ7VZfG+YxnrILfnqADP/63gJ8gKho/wZun4Efg103T85N2R8FvTyB6FVJaBmaUNGfw2xM8bqVyXOImLQO1aeXgtyfgjJ7Y32MFP5LWghc/6fdKv0WTJ/iRpP3ZCw9+JK0Fl/6nvfbBD9fPS57gR4znB8sUOfNblHmC3ycNhx8ZputaDJGD356m+IRe3AFWPc0Lfg35HRMUQyx7MjYaogO/rzTtpnDBb68FaUUwo5pOwbdamQh+x2Td1g+6VQj4nVK26Jtg/fVeEa8P4PfOGfyuidWrCB0z5H4v+F0TKyb2Rq1sA79yelHKUY2PcvHTHR3S9MCR4ZsA5OBXef+BM2kgisqlHPygO4FfboFfbi3Bb+JNYXIbY761RRN1WM7uZjX2ZRLtL6BavA6STrmN8fd5Tm2zZi21seNbrNe/rrCpXWJj0lHK0eVtUwl5jRVXhh2F9hdaaH+0Aj/fs4CiKSu/iZuUrB7S1cKChwTUaiNdLcw9HibVPz3UoVf6Qr/5AAAAAElFTkSuQmCC"/>
- </p>
- <p>
- dengan <code>i=1,2,...,m</code>
- </p>
- <h2>Contoh Kasus</h2>
- <p>
- Sebuah perusahaan IT membutuhkan seorang senior web application programmer yang menguasai bahasa pemrograman PHP, database Mysql, menguasai HTML5, javascript dan CSS3. Ada 5 kandidat yang akan dipilih dari hasil interview yang sudah dilakukan oleh tim HRD dan IT yang akan dijadikan alternatif; yaitu A<sub>1</sub>: Alfian, A<sub>2</sub>: Bilqiz, A<sub>3</sub>: Carlie, A<sub>4</sub>: Dewi dan A<sub>5</sub>: Enrico. Ada 5 kriteria dasar yang menjadi acuan dalam pengambilan keputusan, yaitu:
- <ul>
- <li>C<sub>1</sub>: Penguasaan Aspek Teknis (skala 1-10)</li>
- <li>C<sub>2</sub>: Pengalaman Kerja (dalam tahun)</li>
- <li>C<sub>3</sub>: Interpersonal Skill (skala 1-10)</li>
- <li>C<sub>4</sub>: Usia (dalam tahun)</li>
- <li>C<sub>5</sub>: Status Perkawinan (5:blm menikah, 8:menikah tanpa tanggungan, 10: menikah dgn tanggungan)</li>
- </ul>
- </p>
- <p>
- Tabel 1 menunjukkan rating kecocokan dari setiap alternatif dengan setiap kriteria. Nilai setiap alternatif pada setiap atribut diberikan berdasarkan data riil.<br>
- <?php
- $criterias=array(
- 1=>array('desc'=>'Penguasaan Aspek teknis','weight'=>3,'attribute'=>'benefit'),
- 2=>array('desc'=>'Pengalaman Kerja','weight'=>2,'attribute'=>'benefit'),
- 3=>array('desc'=>'Interpersonal Skill','weight'=>2,'attribute'=>'benefit'),
- 4=>array('desc'=>'Usia','weight'=>1.5,'attribute'=>'cost'),
- 5=>array('desc'=>'Status Perkawinan','weight'=>1.5,'attribute'=>'cost')
- );
- $evaluations=array(
- array(1,1,7.5),
- array(1,2,5),
- array(1,3,6.5),
- array(1,4,30),
- array(1,5,10),
- array(2,1,9),
- array(2,2,3.5),
- array(2,3,8),
- array(2,4,22),
- array(2,5,5),
- array(3,1,8),
- array(3,2,1.5),
- array(3,3,7),
- array(3,4,27),
- array(3,5,8),
- array(4,1,9),
- array(4,2,5),
- array(4,3,8),
- array(4,4,23),
- array(4,5,8),
- array(5,1,8.5),
- array(5,2,3.5),
- array(5,3,7),
- array(5,4,25),
- array(5,5,10)
- );
- //--- inisialisasi jumlah kriteria 'n'
- $n=0;
- foreach($criterias as $id_criteria=>$criteria){
- $W[$id_criteria]=$criteria['weight'];
- ++$n;
- }
- $X=array();
- $alternative='';
- //--- inisialisasi jumlah alternative 'm'
- $m=0;
- foreach($evaluations as $row){
- if($row[0]!=$alternative){
- $X[$row[0]]=array();
- $alternative=$row[0];
- ++$m;
- }
- $X[$row[0]][$row[1]]=$row[2];
- }
- ?>
- <table>
- <caption>
- TABEL 1: Rating kecocokan dari setiap alternatif pada setiap kriteria
- </captioN
- <tr>
- <th rowspan='2'>Alternative</th>
- <th colspan='<?php echo $n;?>'>Criteria</th>
- </tr>
- <tr>
- <?php
- for($j=1;$j<=$n;$j++){
- echo "<th>C{$j}</th>";
- }
- ?>
- </tr>
- <?php
- for($i=1;$i<=$m;$i++){
- echo "<tr class='center'>
- <th>A{$i}</th>";
- for($j=1;$j<=$n;$j++){
- echo "<td>{$X[$i][$j]}</td>";
- }
- echo "</tr>\n";
- }
- ?>
- </table>
- </p>
- Pengambil keputusan memberi bobot preferensi dari setiap kriteria sebagai: <code>W=(3,2,2,1.5,1.5)</code> dengan masing-masing jenisnya (keuntungan/benefit atau biaya/cost) seperti dalam tabel 2 berikut:
- </p>
- <p>
- <table>
- <caption>
- TABEL 2: Kriteria yang ditentukan
- </caption>
- <tr>
- <th>Criteria</th>
- <th>Description</th>
- <th>Weight</th>
- <th>Attribute</th>
- </tr>
- <?php
- for($j=1;$j<=$n;$j++){
- echo "<tr>
- <td class='center'>C<sub>{$j}</sub></td>
- <td>{$criterias[$j]['desc']}</td>
- <td class='center'>{$criterias[$j]['weight']}</td>
- <td>{$criterias[$j]['attribute']}</td>
- </tr>\n";
- }
- ?>
- </table>
- </p>
- <h2>
- Persiapan Data
- </h2>
- <p>
- Sebagai bahan pembelajaran aplikasi WP ini; dibuat database sebagai berikut:
- <pre>
- CREATE DATABASE IF NOT EXISTS db_dss;
- USE db_dss;
- 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',3,'benefit'),
- (2,'Pengalaman Kerja',2,'benefit'),
- (3,'Interpersonal Skill',2,'benefit'),
- (4,'Usia',1.5,'cost'),
- (5,'Status Perkawinan',1.5,'cost');
- 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
- ('Alfian'),
- ('Bilqiz'),
- ('Carlie'),
- ('Dewi'),
- ('Enrico');
- 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,7.5),
- (1,2,5),
- (1,3,6.5),
- (1,4,30),
- (1,5,10),
- (2,1,9),
- (2,2,3.5),
- (2,3,8),
- (2,4,22),
- (2,5,5),
- (3,1,8),
- (3,2,1.5),
- (3,3,7),
- (3,4,27),
- (3,5,8),
- (4,1,9),
- (4,2,5),
- (4,3,8),
- (4,4,23),
- (4,5,8),
- (5,1,8.5),
- (5,2,3.5),
- (5,3,7),
- (5,4,25),
- (5,5,10);
- </pre>
- Untuk koneksi ke database mysql <code>db_dss</code> dengan php dan extension mysqli, bisa dilakukan sebagai berikut:
- <pre>
- <?php
- //-- database configurations
- $dbhost='localhost';
- $dbuser='root';
- $dbpass='';
- $dbname='db_dss';
- //-- database connections
- $db=new mysqli($dbhost,$dbuser,$dbpass,$dbname);
- ?>
- </pre>
- </p>
- <h2>[1] Normalisasi bobot W</h2>
- <p>
- Bobot awal W=(<?php echo implode(',',$W);?>) akan diperbaiki sehingga total
- bobot sigma w<sub>j</sub>=1, dengan cara w<sub>j</sub>=w<sub>j</sub>/sigma
- w<sub>j</sub>
- </p>
- <p>
- <?php
- $i=0;
- $sigma_w=array_sum($W);
- foreach($W as $j=>$w){
- echo "w<sub>".(++$i)."</sub>= {$w} /(".implode('+',$W).") = {$w} / {$sigma_w} = ".($w/$sigma_w)."<br>";
- $W[$j]=$w/$sigma_w;
- }
- ?>
- </p>
- <p>
- Bobot ternormalisasi w=(<?php echo implode(',',$W);?>)
- </p>
- <h2>[2] Menghitung nilai vektor S</h2>
- <p>
- <?php
- $S=array();
- foreach($X as $alternative=>$x){
- $S[$alternative]=1;
- echo "S<sub>{$alternative}</sub> = ";
- foreach($x as $j=>$value){
- $S[$alternative]*=pow($value,($criterias[$j]['attribute']=='cost'?-$W[$j]:$W[$j]));
- echo "({$value}<sup>".($criterias[$j]['attribute']=='cost'?-$W[$j]:$W[$j])."</sup>)";
- };
- echo " = {$S[$alternative]}<br>";
- }
- ?>
- </p>
- <h2>[3] Menghitung nilai vektor V</h2>
- <?php
- $V=array();
- $sigma_s=array_sum($S);
- $devider=implode(' + ',$S);
- foreach($S as $alternative=>$s){
- echo "<p>V<sub>{$alternative}</sub> = $s/({$devider})<br>= ";
- $V[$alternative]=$s/$sigma_s;
- echo $V[$alternative]."</p>";
- }
- ?>
- <h2>[4] Perangkingan nilai vektor V</h2>
- <p>
- <table>
- <tr>
- <th>No</th>
- <th>Alternative</th>
- <th>Result</th>
- </tr>
- <?php
- arsort($V);
- $no=0;
- foreach($V as $alternative=>$result){
- echo "<tr class='center'>
- <td>".(++$no)."</td>
- <td>A<sub>{$alternative}<sub></td>
- <td>{$result}</td>
- </tr>";
- }
- ?>
- </table>
- </p>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment