Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?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>
Advertisement
Add Comment
Please, Sign In to add comment