cahyadsn

DSS MDAM WP Method

Nov 16th, 2015
762
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 12.00 KB | None | 0 0
  1. <?php
  2. /*
  3. -- ----------------------------
  4. -- DSS WP METHOD
  5. -- CREATED BY : CAHYA DSN
  6. -- CREATED ON : 2015-01-28
  7. -- UPDATED ON : 2015-01-29
  8. -- ----------------------------
  9. */
  10. ?>
  11. <!doctype html>
  12. <html>
  13. <head>
  14.   <title>DSS WP Method</title>
  15.   <style>
  16.     * {font-family:georgia,verdana,arial,sans-serif;font-size:1em;padding:2px;}
  17.     h1 {font-size:1.5em}
  18.     h2 {font-size:1.2em}
  19.     td,th {min-width:70px;border:solid 1px #999;}
  20.     th {background-color:#99f;}
  21.     table {min-width:600px;}
  22.     sub,sup {font-size:0.8em}
  23.     pre {font-size:0.8em;font-family:Consolas,'Couirer New';color:#00c;}
  24.     .center {text-align:center}
  25.     code {font-family:'Times New Roman',georgia,serif;font-style:italic;}
  26.   </style>
  27. </head>
  28. <body>
  29.   <h1>DSS WP Method</h1>
  30.   <h2>Pendahuluan</h2>
  31.   <p>
  32. Metode Weighted Product (WP) menggunakan perkalian untuk menghubungkan rating atribut,dimana rating
  33. setiap atribut harus dipangkatkan dulu dengan bobot atribut yang bersangkutan
  34. (<code>Yoon,1989</code>). Proses ini sama halnya dengan proses normalisasi(<code>Kusumadewi, dkk.,
  35. 2006:79</code>) Preferensi untuk alternatif <code>A<sub>i</sub></code> diberikan sebagai berikut:
  36. </p>
  37. <p>
  38.   <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"/>
  39. </p>
  40. <p>
  41.   dengan <code>i=1,2,...,m</code>;<br>dimana :
  42. </p>
  43. <p>
  44.   <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAAUCAIAAABeYcl+AAAAw0lEQVR42t2X3QrAIAiF8/0fug2CsCx3dP2sdRHBtPN1EGsUYwynDcrQRISn7T0qcfnErQMhMUuhA/NbwbpjVkJLuYb8I/cy6B4JKWRhdxlkEhT6O9w2aJBbxiSZx1ylX8ndDNABq+CKL6cMqX6P06AqB80HOANaznpK75O/PEw+SYMbYi7jDdBWAR4/tu2g0A5LKujmReuzOS2KgmneiENayvuU7lZ/gHZ05cXENTT+pN5ocwE96ScA7NlO6EljxqvrAoUOAehEbyXXAAAAAElFTkSuQmCC"/>
  45. </p>
  46. <p><code>w<sub>j</sub></code> adalah pangkat bernilai positif untuk atribut keuntungan,
  47.  dan bernilai negatif untuk atribut biaya.
  48. </p>
  49. <p>
  50.  Preferensi relatif dari setiap alternatif, diberikan sebagai:
  51. </p>
  52. <p>
  53. <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"/>
  54. </p>
  55. <p>
  56.   dengan <code>i=1,2,...,m</code>
  57. </p>
  58. <h2>Contoh Kasus</h2>
  59. <p>
  60.   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:
  61.   <ul>
  62.     <li>C<sub>1</sub>: Penguasaan Aspek Teknis (skala 1-10)</li>
  63.     <li>C<sub>2</sub>: Pengalaman Kerja (dalam tahun)</li>
  64.     <li>C<sub>3</sub>: Interpersonal Skill (skala 1-10)</li>
  65.     <li>C<sub>4</sub>: Usia (dalam tahun)</li>
  66.     <li>C<sub>5</sub>: Status Perkawinan (5:blm menikah, 8:menikah tanpa tanggungan, 10: menikah dgn tanggungan)</li>
  67.   </ul>
  68. </p>
  69. <p>
  70.   Tabel 1 menunjukkan rating kecocokan dari setiap alternatif dengan setiap kriteria. Nilai setiap alternatif pada setiap atribut diberikan berdasarkan data riil.<br>
  71.   <?php
  72.     $criterias=array(
  73.       1=>array('desc'=>'Penguasaan Aspek teknis','weight'=>3,'attribute'=>'benefit'),
  74.       2=>array('desc'=>'Pengalaman Kerja','weight'=>2,'attribute'=>'benefit'),
  75.       3=>array('desc'=>'Interpersonal Skill','weight'=>2,'attribute'=>'benefit'),
  76.       4=>array('desc'=>'Usia','weight'=>1.5,'attribute'=>'cost'),
  77.       5=>array('desc'=>'Status Perkawinan','weight'=>1.5,'attribute'=>'cost')
  78.     );
  79.     $evaluations=array(
  80.       array(1,1,7.5),
  81.       array(1,2,5),
  82.       array(1,3,6.5),
  83.       array(1,4,30),
  84.       array(1,5,10),
  85.       array(2,1,9),
  86.       array(2,2,3.5),
  87.       array(2,3,8),
  88.       array(2,4,22),
  89.       array(2,5,5),
  90.       array(3,1,8),
  91.       array(3,2,1.5),
  92.       array(3,3,7),
  93.       array(3,4,27),
  94.       array(3,5,8),
  95.       array(4,1,9),
  96.       array(4,2,5),
  97.       array(4,3,8),
  98.       array(4,4,23),
  99.       array(4,5,8),
  100.       array(5,1,8.5),
  101.       array(5,2,3.5),
  102.       array(5,3,7),
  103.       array(5,4,25),
  104.       array(5,5,10)
  105.     );
  106.  
  107.     //--- inisialisasi jumlah kriteria 'n'
  108.     $n=0;
  109.     foreach($criterias as $id_criteria=>$criteria){
  110.       $W[$id_criteria]=$criteria['weight'];
  111.       ++$n;
  112.     }
  113.     $X=array();
  114.     $alternative='';
  115.     //--- inisialisasi jumlah alternative 'm'
  116.     $m=0;
  117.     foreach($evaluations as $row){
  118.       if($row[0]!=$alternative){
  119.         $X[$row[0]]=array();
  120.         $alternative=$row[0];
  121.         ++$m;
  122.       }
  123.       $X[$row[0]][$row[1]]=$row[2];
  124.     }
  125.   ?>
  126.   <table>
  127.     <caption>
  128.       TABEL 1: Rating kecocokan dari setiap alternatif pada setiap kriteria
  129.     </captioN
  130.     <tr>
  131.       <th rowspan='2'>Alternative</th>
  132.       <th colspan='<?php echo $n;?>'>Criteria</th>
  133.     </tr>
  134.     <tr>
  135.       <?php
  136.       for($j=1;$j<=$n;$j++){
  137.         echo "<th>C{$j}</th>";
  138.       }
  139.       ?>
  140.     </tr>
  141.     <?php
  142.     for($i=1;$i<=$m;$i++){
  143.       echo "<tr class='center'>
  144.              <th>A{$i}</th>";
  145.       for($j=1;$j<=$n;$j++){
  146.         echo "<td>{$X[$i][$j]}</td>";
  147.       }
  148.       echo "</tr>\n";
  149.     }
  150.     ?>
  151.   </table>
  152. </p>
  153.   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:
  154. </p>
  155. <p>
  156.   <table>
  157.     <caption>
  158.       TABEL 2: Kriteria yang ditentukan
  159.     </caption>
  160.     <tr>
  161.       <th>Criteria</th>
  162.       <th>Description</th>
  163.       <th>Weight</th>
  164.       <th>Attribute</th>
  165.     </tr>
  166.     <?php
  167.     for($j=1;$j<=$n;$j++){
  168.       echo "<tr>
  169.              <td class='center'>C<sub>{$j}</sub></td>
  170.              <td>{$criterias[$j]['desc']}</td>
  171.              <td class='center'>{$criterias[$j]['weight']}</td>
  172.              <td>{$criterias[$j]['attribute']}</td>
  173.            </tr>\n";
  174.     }
  175.     ?>
  176.   </table>
  177. </p>
  178. <h2>
  179.   Persiapan Data
  180. </h2>
  181. <p>
  182.   Sebagai bahan pembelajaran aplikasi WP ini; dibuat database sebagai berikut:
  183. <pre>
  184. CREATE DATABASE IF NOT EXISTS db_dss;
  185. USE db_dss;
  186.  
  187. DROP TABLE IF EXISTS wp_criterias;
  188. CREATE TABLE IF NOT EXISTS wp_criterias(
  189.   id_criteria TINYINT(3) UNSIGNED NOT NULL,
  190.   criteria VARCHAR(100) NOT NULL,
  191.   weight FLOAT NOT NULL,
  192.   attribute SET('benefit','cost'),
  193.   PRIMARY KEY(id_criteria)
  194. )ENGINE=MyISAM;
  195.  
  196. INSERT INTO wp_criterias(id_criteria,criteria,weight,attribute)
  197. VALUES
  198. (1,'Penguasaan Aspek teknis',3,'benefit'),
  199. (2,'Pengalaman Kerja',2,'benefit'),
  200. (3,'Interpersonal Skill',2,'benefit'),
  201. (4,'Usia',1.5,'cost'),
  202. (5,'Status Perkawinan',1.5,'cost');
  203.  
  204. DROP TABLE IF EXISTS wp_alternatives;
  205. CREATE TABLE IF NOT EXISTS wp_alternatives(
  206.   id_alternative SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
  207.   name VARCHAR(30) NOT NULL,
  208.   PRIMARY KEY(id_alternative)
  209. ) ENGINE=MyISAM;
  210.  
  211. INSERT INTO wp_alternatives(name)
  212. VALUES
  213. ('Alfian'),
  214. ('Bilqiz'),
  215. ('Carlie'),
  216. ('Dewi'),
  217. ('Enrico');
  218.  
  219. DROP TABLE IF EXISTS wp_evaluations;
  220. CREATE TABLE IF NOT EXISTS wp_evaluations(
  221.   id_alternative SMALLINT(5) UNSIGNED NOT NULL,
  222.   id_criteria TINYINT(3) UNSIGNED NOT NULL,
  223.   value FLOAT NOT NULL,
  224.   PRIMARY KEY (id_alternative,id_criteria)
  225. )ENGINE=MyISAM;
  226.  
  227. INSERT INTO wp_evaluations(id_alternative,id_criteria,value)
  228. VALUES
  229. (1,1,7.5),
  230. (1,2,5),
  231. (1,3,6.5),
  232. (1,4,30),
  233. (1,5,10),
  234. (2,1,9),
  235. (2,2,3.5),
  236. (2,3,8),
  237. (2,4,22),
  238. (2,5,5),
  239. (3,1,8),
  240. (3,2,1.5),
  241. (3,3,7),
  242. (3,4,27),
  243. (3,5,8),
  244. (4,1,9),
  245. (4,2,5),
  246. (4,3,8),
  247. (4,4,23),
  248. (4,5,8),
  249. (5,1,8.5),
  250. (5,2,3.5),
  251. (5,3,7),
  252. (5,4,25),
  253. (5,5,10);
  254. </pre>
  255. Untuk koneksi ke database mysql <code>db_dss</code> dengan php dan extension mysqli, bisa dilakukan sebagai berikut:
  256. <pre>
  257. &lt;?php
  258. //-- database configurations
  259. $dbhost='localhost';
  260. $dbuser='root';
  261. $dbpass='';
  262. $dbname='db_dss';
  263. //-- database connections
  264. $db=new mysqli($dbhost,$dbuser,$dbpass,$dbname);
  265. ?&gt;
  266. </pre>
  267. </p>
  268. <h2>[1] Normalisasi bobot W</h2>
  269.   <p>
  270.    Bobot awal W=(<?php echo implode(',',$W);?>) akan diperbaiki sehingga total
  271.    bobot sigma w<sub>j</sub>=1, dengan cara w<sub>j</sub>=w<sub>j</sub>/sigma
  272.    w<sub>j</sub>
  273.   </p>
  274.   <p>
  275.     <?php
  276.     $i=0;
  277.     $sigma_w=array_sum($W);
  278.     foreach($W as $j=>$w){
  279.       echo "w<sub>".(++$i)."</sub>= {$w} /(".implode('+',$W).") = {$w} / {$sigma_w} = ".($w/$sigma_w)."<br>";
  280.       $W[$j]=$w/$sigma_w;
  281.     }
  282.     ?>
  283.   </p>
  284.   <p>
  285.     Bobot ternormalisasi w=(<?php echo implode(',',$W);?>)
  286.   </p>
  287.   <h2>[2] Menghitung nilai vektor S</h2>
  288.   <p>
  289.     <?php
  290.     $S=array();
  291.     foreach($X as $alternative=>$x){
  292.       $S[$alternative]=1;
  293.       echo "S<sub>{$alternative}</sub> = ";
  294.       foreach($x as $j=>$value){
  295.          $S[$alternative]*=pow($value,($criterias[$j]['attribute']=='cost'?-$W[$j]:$W[$j]));
  296.          echo "({$value}<sup>".($criterias[$j]['attribute']=='cost'?-$W[$j]:$W[$j])."</sup>)";
  297.       };
  298.       echo " = {$S[$alternative]}<br>";
  299.     }
  300.     ?>
  301.   </p>
  302.   <h2>[3] Menghitung nilai vektor V</h2>
  303.   <?php
  304.      $V=array();
  305.      $sigma_s=array_sum($S);
  306.      $devider=implode(' + ',$S);
  307.      foreach($S as $alternative=>$s){
  308.        echo "<p>V<sub>{$alternative}</sub> = $s/({$devider})<br>= ";
  309.        $V[$alternative]=$s/$sigma_s;
  310.        echo $V[$alternative]."</p>";
  311.      }
  312.   ?>
  313.   <h2>[4] Perangkingan nilai vektor V</h2>
  314.   <p>
  315.     <table>
  316.       <tr>
  317.         <th>No</th>
  318.         <th>Alternative</th>
  319.         <th>Result</th>
  320.       </tr>
  321.       <?php
  322.       arsort($V);
  323.       $no=0;
  324.       foreach($V as $alternative=>$result){
  325.       echo "<tr class='center'>
  326.              <td>".(++$no)."</td>
  327.              <td>A<sub>{$alternative}<sub></td>
  328.              <td>{$result}</td>
  329.            </tr>";
  330.       }
  331.       ?>
  332.     </table>
  333.   </p>
  334. </body>
  335. </html>
Advertisement
Add Comment
Please, Sign In to add comment