Read 280 times | Created 2016-04-23 00:08:35 | Updated 2016-04-23 00:08:35 | | |

 

<?php
/*
-- ----------------------------
-- DSS CPI METHOD
-- CREATED BY : CAHYA DSN
-- CREATED ON : 2015-12-15
-- UPDATED ON : 2015-12-15
-- ----------------------------
*/
//-- build criteria data array
$criterias=array(
    1=>array('Kecakapan',0.5,'positif'),
    2=>array('Emosi',0.3,'negatif'),
    3=>array('Kecerdasan',0.2,'positif')
  );
$evaluations=array(
  array(1,1,7),
  array(1,2,6),
  array(1,3,8),
  array(2,1,7),
  array(2,2,6.5),
  array(2,3,7),
  array(3,1,8.5),
  array(3,2,6),
  array(3,3,6)
 
);
//-- defined 'n' number of criterias
$n=count($criterias);
 
function print_matrix($M){
  $n=count($M);
  echo "<table class='matrix'>";
  for($r=0;$r<$n;$r++){
    echo "<tr align='center'>";
    for($c=0;$c<$n;$c++){
      echo "<td>".(isset($M[$r+1][$c+1])?round($M[$r+1][$c+1],4):'-')."</td>";
    }
    echo "</tr>";
  }
  echo "</table>";
}
?>
<!doctype html>
<html>
<head>
  <title>DSS CPI Method</title>
  <style>
    * {font-family:georgia,verdana,arial,sans-serif;font-size:1em;padding:2px;}
    ol{margin-left:20px;}
    h1 {font-size:1.5em}
    h2 {font-size:1.2em}
    td,th {min-width:100px;border:solid 1px #999;}
    th {background-color:#99f;}
    table {min-width:600px;}
    code {font-family:'Times New Roman',georgia,serif;font-style:italic;}
    .center {text-align:center}
    .u {text-decoration:underline;}
    .matrix {border-left:solid 1px #999;border-right:solid 1px #999;border-radius:5px;}
    .matrix td {border:none;}
  </style>
</head>
<body>
  <h1>DSS CPI Method</h1>
  <h2>CPI (<em>Composit Performance Index</em>)</h2>
  <p>
    <em>Composit Performance Index</em> yang merupakan indeks
gabungan (<em>Composite Index</em>) yang dapat digunakan untuk menentukan penilaian
atau peringkat dari berbagai alternatif (i) berdasarkan beberapa kriteria (j). Metode
<em>Composite Performance Index</em> merupakan salah satu metode perhitungan dari
pengambilan keputusan berbasis indeks kinerja, metode <em>Composite Performance
Index</em> digunakan untuk penilaian dengan kriteria yang tidak seragam.
  </p>
  <p>
    Index gabungan (composite index) dapat digunakan untuk menentukan
penentuan atau peringkat dari berbagai alternatif berdasarkan beberapa kriteria.
  </p>
  <p>
    Prosedur di Composite Performance Index disebutkan sebagai berikut.
    <ol>
    <li>Identifikasi kriteria tren yaitu positif (semakin tinggi nilainya semakin baik), dan negatif (semakin rendah nilainya semakin baik).</li>
    <li>Untuk kriteria tren positif, nilai minimum pada setiap kriteria ditransformasi ke seratus, sedangkan nilai lainnya ditransformasi secara proporsional lebih tinggi.</li>
    <li>Untuk kriteria tren negatif, nilai minimum pada setiap kriteria ditransformasi ke seratus, sedangkan nilai lainnya ditransformasikan lebih rendah.</li>
    <li>Perhitungan nilai alternatif merupakan jumlah dari perkalian antara nilai kriteria dengan bobot kriteria.</li>
    </ol>
  </p>
  <p>
    <table>
      <caption>
        Perbandingan Berpasangan (X)
      </caption>
      <tr>
        <th rowspan='2'>Alternatif</th>
        <th colspan='<?php echo $n;?>'>Criteria</th>
      </tr>
      <tr>  
      <?php
      for($j=1;$j<=$n;$j++){
        echo "<th>C{$j} {$criterias[$j][0]}</th>";
      }
      ?>
      </tr>
      <?php
      $X=array();
      $alternative='';
      $m=0; //-- inisialiasi nilai jumlah alternatif 'm'
      foreach($evaluations as $row){
        if($alternative!=$row[0]){
          ++$m;
          $alternative=$row[0];
          $X[$row[0]]=array();
        }
        $X[$row[0]][$row[1]]=$row[2];
      }
      for($j=1;$j<=$m;$j++){
        $min[$j]=100;
      }
      foreach($X as $i=>$x){
        echo "<tr align='center'>
             <td>A{$i}</td>";
        foreach($x as $j=>$value){
          echo "<td>{$value}</td>";
          if($min[$j]>$value) $min[$j]=$value;
        }
        echo "</tr>n";
      }
      echo "<tr align='center'><td>Nilai min</td><td>".implode('</td><td>',$min)."</td></tr>";
      ?>
    </table>
  </p>
  <p>
    <table>
      <caption>
        Bobot Kepentingan (P) dan Tren-nya
      </caption>
      <tr>
        <th>Criteria</th>
        <?php
        for($j=1;$j<=$n;$j++){
          echo "<th>C{$j} {$criterias[$j][0]}</th>";
        }
        ?>
      </tr>
      <tr class='center'>
        <th>Weight</th>
        <?php
        foreach($criterias as $c){
        echo "<td>{$c[1]}</td>";
        }
        ?>
      </tr>
      <tr class='center'>
        <th>Tren</th>
        <?php
        foreach($criterias as $c){
        echo "<td>{$c[2]}</td>";
        }
        ?>
      </tr>
    </table>
  </p>
<?php
$V=$R=array();
$alternative='';
foreach($X as $i=>$r){
  if($alternative!=$i){
    $alternative=$i;
    $V[$i]=$R[$i]=array();
  }
  foreach($r as $j=>$value){
    $V[$i][$j]=$criterias[$j][2]=='positif'?$value/$min[$j]:$min[$j]/$value;
    $R[$i][$j]=$V[$i][$j]*$criterias[$j][1]*100;
  }
}
$r=array();
for($i=1;$i<=$n;$i++){
  $r[$i]=array_sum($R[$i]);
  ?>
  <p>
    <?php
    echo "[{$i}]<strong> Penghitungan nilai {$criterias[$i][0]}</strong><br>Tren pada kriteria {$criterias[$i][0]} adalah"
        .($criterias[$i][2]=='positif'?'(+)':'(-)')
        ." dimana semakin ".($criterias[$i][2]=='positif'?'tinggi':'rendah')." nilai, akan semakin baik<br>"
        .($criterias[$i][2]=='positif'?"Tren (+) = Nilai N / Nilai Min * 100 ":"Tren (-) =  Nilai Min/ Nilai N * 100 ")
        ; ?>
     <table>
      <caption>
        Tabel Penghitungan Nilai <?=$criterias[$i][0]?>
      </caption>
      <tr>
        <th>No</th>
        <th>Alternatif</th>
        <th><?=$criterias[$i][0]?></th>
        <th><?=($criterias[$i][2]=='positif'?'N/Min':'Min/N')?></th>
        <th><?=($criterias[$i][2]=='positif'?'N/Min':'Min/N')?>*100</th>
      </tr>
      <?php
        for($j=1;$j<=$m;$j++){
          echo "
         <tr align='center'>
           <td>{$j}</td>
           <td>A{$j}</td>
           <td>{$X[$j][$i]}</td>
           <td>".round($V[$j][$i],4)."</td>
           <td>".round($V[$j][$i]*100,2)."</td>
         </tr>
         ";
        }
      ?>
    </table>
  </p>
<?php
}
?>
[<?=$i?>] <strong>Penghitungan CPI</strong><br>
CPI=
<?php
$rumus=array();
foreach($criterias as $i=>$c) $rumus[]="nilai_kriteria_".strtolower($c[0])." * bobot_".strtolower($c[0]);
echo implode(' <br>+ ',$rumus);
/*
for($i=1;$i<=$n;$i++){
echo "<p>[".chr(96+$i)."] Penghitungan CPI Alternatif A{$i}</p>";
//-- tulis detail perhitungannya disini
}
*/
?>
<p>
<strong> Hasil Penghitungan CPI</strong>
<table>
  <tr>
    <th>No</th>
    <th>Alternatif</th>
    <th>CPI</th>
  </tr>
<?php
arsort($r);
$i=0;
foreach($r as $j=>$h){
  echo "<tr><td>".++$i."</td><td>A{$j}</td><td>{$h}</td></tr>";
}
?>
</tabel>
</p>
</body>
</html>