cahyadsn

DSS CPI Method

Dec 15th, 2015
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.84 KB | None | 0 0
  1. <?php
  2. /*
  3. -- ----------------------------
  4. -- DSS CPI METHOD
  5. -- CREATED BY : CAHYA DSN
  6. -- CREATED ON : 2015-12-15
  7. -- UPDATED ON : 2015-12-15
  8. -- ----------------------------
  9. */
  10. //-- build criteria data array
  11. $criterias=array(
  12.     1=>array('Kecakapan',0.5,'positif'),
  13.     2=>array('Emosi',0.3,'negatif'),
  14.     3=>array('Kecerdasan',0.2,'positif')
  15.   );
  16. $evaluations=array(
  17.   array(1,1,7),
  18.   array(1,2,6),
  19.   array(1,3,8),
  20.   array(2,1,7),
  21.   array(2,2,6.5),
  22.   array(2,3,7),
  23.   array(3,1,8.5),
  24.   array(3,2,6),
  25.   array(3,3,6)
  26.  
  27. );
  28. //-- defined 'n' number of criterias
  29. $n=count($criterias);
  30.  
  31. function print_matrix($M){
  32.   $n=count($M);
  33.   echo "<table class='matrix'>";
  34.   for($r=0;$r<$n;$r++){
  35.     echo "<tr align='center'>";
  36.     for($c=0;$c<$n;$c++){
  37.       echo "<td>".(isset($M[$r+1][$c+1])?round($M[$r+1][$c+1],4):'-')."</td>";
  38.     }
  39.     echo "</tr>";
  40.   }
  41.   echo "</table>";
  42. }
  43. ?>
  44. <!doctype html>
  45. <html>
  46. <head>
  47.   <title>DSS CPI Method</title>
  48.   <style>
  49.     * {font-family:georgia,verdana,arial,sans-serif;font-size:1em;padding:2px;}
  50.     ol{margin-left:20px;}
  51.     h1 {font-size:1.5em}
  52.     h2 {font-size:1.2em}
  53.     td,th {min-width:100px;border:solid 1px #999;}
  54.     th {background-color:#99f;}
  55.     table {min-width:600px;}
  56.     code {font-family:'Times New Roman',georgia,serif;font-style:italic;}
  57.     .center {text-align:center}
  58.     .u {text-decoration:underline;}
  59.     .matrix {border-left:solid 1px #999;border-right:solid 1px #999;border-radius:5px;}
  60.     .matrix td {border:none;}
  61.   </style>
  62. </head>
  63. <body>
  64.   <h1>DSS CPI Method</h1>
  65.   <h2>CPI (<em>Composit Performance Index</em>)</h2>
  66.   <p>
  67.     <em>Composit Performance Index</em> yang merupakan indeks
  68. gabungan (<em>Composite Index</em>) yang dapat digunakan untuk menentukan penilaian
  69. atau peringkat dari berbagai alternatif (i) berdasarkan beberapa kriteria (j). Metode
  70. <em>Composite Performance Index</em> merupakan salah satu metode perhitungan dari
  71. pengambilan keputusan berbasis indeks kinerja, metode <em>Composite Performance
  72. Index</em> digunakan untuk penilaian dengan kriteria yang tidak seragam.
  73.   </p>
  74.   <p>
  75.     Index gabungan (composite index) dapat digunakan untuk menentukan
  76. penentuan atau peringkat dari berbagai alternatif berdasarkan beberapa kriteria.
  77.   </p>
  78.   <p>
  79.     Prosedur di Composite Performance Index disebutkan sebagai berikut.
  80.     <ol>
  81.     <li>Identifikasi kriteria tren yaitu positif (semakin tinggi nilainya semakin baik), dan negatif (semakin rendah nilainya semakin baik).</li>
  82.     <li>Untuk kriteria tren positif, nilai minimum pada setiap kriteria ditransformasi ke seratus, sedangkan nilai lainnya ditransformasi secara proporsional lebih tinggi.</li>
  83.     <li>Untuk kriteria tren negatif, nilai minimum pada setiap kriteria ditransformasi ke seratus, sedangkan nilai lainnya ditransformasikan lebih rendah.</li>
  84.     <li>Perhitungan nilai alternatif merupakan jumlah dari perkalian antara nilai kriteria dengan bobot kriteria.</li>
  85.     </ol>
  86.   </p>
  87.   <p>
  88.     <table>
  89.       <caption>
  90.         Perbandingan Berpasangan (X)
  91.       </caption>
  92.       <tr>
  93.         <th rowspan='2'>Alternatif</th>
  94.         <th colspan='<?php echo $n;?>'>Criteria</th>
  95.       </tr>
  96.       <tr>  
  97.       <?php
  98.       for($j=1;$j<=$n;$j++){
  99.         echo "<th>C{$j} {$criterias[$j][0]}</th>";
  100.       }
  101.       ?>
  102.       </tr>
  103.       <?php
  104.       $X=array();
  105.       $alternative='';
  106.       $m=0; //-- inisialiasi nilai jumlah alternatif 'm'
  107.       foreach($evaluations as $row){
  108.         if($alternative!=$row[0]){
  109.           ++$m;
  110.           $alternative=$row[0];
  111.           $X[$row[0]]=array();
  112.         }
  113.         $X[$row[0]][$row[1]]=$row[2];
  114.       }
  115.       for($j=1;$j<=$m;$j++){
  116.         $min[$j]=100;
  117.       }
  118.       foreach($X as $i=>$x){
  119.         echo "<tr align='center'>
  120.              <td>A{$i}</td>";
  121.         foreach($x as $j=>$value){
  122.           echo "<td>{$value}</td>";
  123.           if($min[$j]>$value) $min[$j]=$value;
  124.         }
  125.         echo "</tr>\n";
  126.       }
  127.       echo "<tr align='center'><td>Nilai min</td><td>".implode('</td><td>',$min)."</td></tr>";
  128.       ?>
  129.     </table>
  130.   </p>
  131.   <p>
  132.     <table>
  133.       <caption>
  134.         Bobot Kepentingan (P) dan Tren-nya
  135.       </caption>
  136.       <tr>
  137.         <th>Criteria</th>
  138.         <?php
  139.         for($j=1;$j<=$n;$j++){
  140.           echo "<th>C{$j} {$criterias[$j][0]}</th>";
  141.         }
  142.         ?>
  143.       </tr>
  144.       <tr class='center'>
  145.         <th>Weight</th>
  146.         <?php
  147.         foreach($criterias as $c){
  148.         echo "<td>{$c[1]}</td>";
  149.         }
  150.         ?>
  151.       </tr>
  152.       <tr class='center'>
  153.         <th>Tren</th>
  154.         <?php
  155.         foreach($criterias as $c){
  156.         echo "<td>{$c[2]}</td>";
  157.         }
  158.         ?>
  159.       </tr>
  160.     </table>
  161.   </p>
  162. <?php
  163. $V=$R=array();
  164. $alternative='';
  165. foreach($X as $i=>$r){
  166.   if($alternative!=$i){
  167.     $alternative=$i;
  168.     $V[$i]=$R[$i]=array();
  169.   }
  170.   foreach($r as $j=>$value){
  171.     $V[$i][$j]=$criterias[$j][2]=='positif'?$value/$min[$j]:$min[$j]/$value;
  172.     $R[$i][$j]=$V[$i][$j]*$criterias[$j][1]*100;
  173.   }
  174. }
  175. $r=array();
  176. for($i=1;$i<=$n;$i++){
  177.   $r[$i]=array_sum($R[$i]);
  178.   ?>
  179.   <p>
  180.     <?php
  181.     echo "[{$i}]<strong> Penghitungan nilai {$criterias[$i][0]}</strong><br>Tren pada kriteria {$criterias[$i][0]} adalah"
  182.         .($criterias[$i][2]=='positif'?'(+)':'(-)')
  183.         ." dimana semakin ".($criterias[$i][2]=='positif'?'tinggi':'rendah')." nilai, akan semakin baik<br>"
  184.         .($criterias[$i][2]=='positif'?"Tren (+) = Nilai N / Nilai Min * 100 ":"Tren (-) =  Nilai Min/ Nilai N * 100 ")
  185.         ; ?>
  186.      <table>
  187.       <caption>
  188.         Tabel Penghitungan Nilai <?=$criterias[$i][0]?>
  189.       </caption>
  190.       <tr>
  191.         <th>No</th>
  192.         <th>Alternatif</th>
  193.         <th><?=$criterias[$i][0]?></th>
  194.         <th><?=($criterias[$i][2]=='positif'?'N/Min':'Min/N')?></th>
  195.         <th><?=($criterias[$i][2]=='positif'?'N/Min':'Min/N')?>*100</th>
  196.       </tr>
  197.       <?php
  198.         for($j=1;$j<=$m;$j++){
  199.           echo "
  200.          <tr align='center'>
  201.            <td>{$j}</td>
  202.            <td>A{$j}</td>
  203.            <td>{$X[$j][$i]}</td>
  204.            <td>".round($V[$j][$i],4)."</td>
  205.            <td>".round($V[$j][$i]*100,2)."</td>
  206.          </tr>
  207.          ";
  208.         }
  209.       ?>
  210.     </table>
  211.   </p>
  212. <?php
  213. }
  214. ?>
  215. [<?=$i?>] <strong>Penghitungan CPI</strong><br>
  216. CPI=
  217. <?php
  218. $rumus=array();
  219. foreach($criterias as $i=>$c) $rumus[]="nilai_kriteria_".strtolower($c[0])." * bobot_".strtolower($c[0]);
  220. echo implode(' <br>+ ',$rumus);
  221. /*
  222. for($i=1;$i<=$n;$i++){
  223. echo "<p>[".chr(96+$i)."] Penghitungan CPI Alternatif A{$i}</p>";
  224. //-- tulis detail perhitungannya disini
  225. }
  226. */
  227. ?>
  228. <p>
  229. <strong> Hasil Penghitungan CPI</strong>
  230. <table>
  231.   <tr>
  232.     <th>No</th>
  233.     <th>Alternatif</th>
  234.     <th>CPI</th>
  235.   </tr>
  236. <?php
  237. arsort($r);
  238. $i=0;
  239. foreach($r as $j=>$h){
  240.   echo "<tr><td>".++$i."</td><td>A{$j}</td><td>{$h}</td></tr>";
  241. }
  242. ?>
  243. </tabel>
  244. </p>
  245. </body>
  246. </html>
Advertisement
Add Comment
Please, Sign In to add comment