Read 896 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>