ELECTRE

Contoh implementasi DSS (Decision Support System) dengan metode ELECTRE menggunakan PHP dan MySQL untuk pemilihan lokasi gudang

Metode ELECTRE merupakan salah satu metode untuk menyelesaikan masalah Multi-Attribute Decision Making (MADM) yang didasarkan pada konsep perangkingan melalui perbandingan berpasangan antar alternatif pada kriteria yang sesuai.

[ author : cahya dsn, published on : February 5, 2015 updated on : July 3, 2018 ]

minerva minerva donasi donation

Mau lihat artikel lainya? Dapatkan artikel-artikel lain seputar pemrograman website di sini, dan dapatkan ide-ide baru
This document using Dynamic Content Technology for enrichment sample case and reading experience
  • Data yang digunakan BUKAN merupakan data real, tapi data yang digenerate secara otomatis dari sistem
  • Data dan Nilai Perhitungan yang ditampilkan akan SELALU BERBEDA jika halaman di refresh/reload
  • Jumlah dan Tempat Gudang alternatif ditampilkan secara acak/random antara 5 s.d 9
  • Nilai Bobot dari masing-masing kriteria ditampilkan secara acak/random

Sebuah perusahaan manufaktur yang sedang berkembang membutuhkan ruang penyimpanan/gudang untuk tempat penyimpanan sementara hasil produksinya. Dari hasil survey; ada 9 alternatif tempat yang tersedia dan bisa dijadikan pilihan, yaitu A1 : Cibitung, A2 : Grogol, A3 : Cakung, A4 : Pulo Gebang, A5 : Kelapa Gading, A6 : Pluit, A7 : Pulomas, A8 : Pulo Gadung, dan A9 : Cikarang. Ada 5 kriteria yang dijadikan acuan dalam pengambilan keputusan, yaitu:

  • C1:jarak dengan pusat niaga terdekat(km)
  • C2:kepadatan penduduk disekitar lokasi (orang/km2)
  • C3:jarak dari pabrik(km)
  • C4:jarak dengan gudang yang sudah ada (km)
  • C5:harga tanah untuk lokasi (x1000 Rp/m2)

Tabel Rating Kecocokan Alternatif vs Kriteria

Tabel 1 menunjukkan rating kecocokan dari setiap alternatif dengan setiap kriteria. Nilai setiap alternatif pada setiap atribut diberikan berdasarkan data kecocokan (nilai terbesar adalah nilai terbaik) maka semua kriteria yang diberikan diasumsikan sebagai kriteria keuntungan/benefit.

TABEL 1 : Rating kecocokan dari setiap alternatif pada setiap kriteria
Alternative Criteria
C1C2C3C4C5
A1 Cibitung55115
A2 Grogol45414
A3 Cakung52212
A4 Pulo Gebang51323
A5 Kelapa Gading22134
A6 Pluit22344
A7 Pulomas24325
A8 Pulo Gadung21551
A9 Cikarang35341

Tabel Kriteria

Pengambil keputusan memberi bobot preferensi dari setiap kriteria sebagai: W=(7,4,3,3,2) seperti dalam Tabel 2 berikut:

TABEL 2 : Kriteria yang ditentukan
Criteria Description Weight
C1 jarak dengan pusat niaga terdekat(km) 7
C2 kepadatan penduduk disekitar lokasi (orang/km2) 4
C3 jarak dari pabrik(km) 3
C4 jarak dengan gudang yang sudah ada (km) 3
C5 harga tanah untuk lokasi (x1000 Rp/m2) 2

Sebagai bahan pembelajaran aplikasi ELECTRE ini; dibuat database (dalam hal ini menggunakan MySQL/MariaDB Database server) sebagai berikut:

CREATE DATABASE IF NOT EXISTS db_dss;
USE db_dss;

Membuat Data Tabel Kriteria

Berdasarkan contoh kasus di atas dibuatkan tabel untuk data-data kriteria sebagai berikut:

DROP TABLE IF EXISTS electre_criterias;
CREATE TABLE IF NOT EXISTS electre_criterias(
  id_criteria TINYINT(3) UNSIGNED NOT NULL,
  criteria VARCHAR(100) NOT NULL,
  weight FLOAT NOT NULL,
  PRIMARY KEY(id_criteria)
)ENGINE=MyISAM;

INSERT INTO electre_criterias
VALUES
(1,'jarak dengan pusat niaga terdekat(km)',7),
(2,'kepadatan penduduk disekitar lokasi (orang/km2)',4),
(3,'jarak dari pabrik(km)',3),
(4,'jarak dengan gudang yang sudah ada (km)',3),
(5,'harga tanah untuk lokasi (x1000 Rp/m2)',2);

Membuat Data Tabel Alternatif

Data-data mengenai kandidat yang akan dievaluasi seperti yang tertera pada contoh kasus di atas dapat di representasikan dalam tabel database sebagai berikut:

DROP TABLE IF EXISTS electre_alternatives;
CREATE TABLE IF NOT EXISTS electre_alternatives(
  id_alternative SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
  name VARCHAR(30) NOT NULL,
  PRIMARY KEY(id_alternative)
) ENGINE=MyISAM;

INSERT INTO electre_alternatives
VALUES
(1,'Cibitung'),
(2,'Grogol'),
(3,'Cakung'),
(4,'Pulo Gebang'),
(5,'Kelapa Gading'),
(6,'Pluit'),
(7,'Pulomas'),
(8,'Pulo Gadung'),
(9,'Cikarang');

Membuat Data Tabel Hasil Evaluasi

DROP TABLE IF EXISTS electre_evaluations;
CREATE TABLE IF NOT EXISTS electre_evaluations(
  id_alternative SMALLINT(5) UNSIGNED NOT NULL,
  id_criteria TINYINT(3) UNSIGNED NOT NULL,
  value FLOAT NOT NULL,
  PRIMARY KEY (id_alternative,id_criteria)
)ENGINE=MyISAM;

INSERT INTO electre_evaluations
VALUES
(1,1,5),
(1,2,5),
(1,3,1),
(1,4,1),
(1,5,5),
(2,1,4),
(2,2,5),
(2,3,4),
(2,4,1),
(2,5,4),
(3,1,5),
(3,2,2),
(3,3,2),
(3,4,1),
(3,5,2),
(4,1,5),
(4,2,1),
(4,3,3),
(4,4,2),
(4,5,3),
(5,1,2),
(5,2,2),
(5,3,1),
(5,4,3),
(5,5,4),
(6,1,2),
(6,2,2),
(6,3,3),
(6,4,4),
(6,5,4),
(7,1,2),
(7,2,4),
(7,3,3),
(7,4,2),
(7,5,5),
(8,1,2),
(8,2,1),
(8,3,5),
(8,4,5),
(8,5,1),
(9,1,3),
(9,2,5),
(9,3,3),
(9,4,4),
(9,5,1);

Koneksi ke Database Server

Dari databse yang sudah dibuat, kita bisa membuat script php untuk membuat koneksi ke database server dengan extension mysqli secara sederhana sebagai berikut:

<?php
//-- database configurations
$dbhost='localhost';
$dbuser='root';
$dbpass='';
$dbname='db_dss';
//-- database connections
$db=new mysqli($dbhost,$dbuser,$dbpass,$dbname);
//-- halt and show error message if connection fail
if ($db->connect_error) {
    die(
'Connect Error ('.$db->connect_errno.')'.$db->connect_error);
}
?>

Membentuk Perbandingan Berpasangan (X)

ELECTRE dimulai dari membentuk perbandingan berpasangan setiap alternatif di setiap kriteria (xij)

Perbandingan Berpasangan (X)
Alternatif Criteria
C1C2C3C4C5
A155115
A245414
A352212
A451323
A522134
A622344
A724325
A821551
A935341

Script PHP yang digunakan untuk mengambil data Perbandingan Berpasangan X dari tabel electre_evaluations adalah sebagai berikut :

<?php
   
//-- query untuk mengambil data jumlah kriteria 'n'
  
$sql="SELECT COUNT(*) 
        FROM electre_criterias"
;
  
$result=$db->query($sql);
  
$row=$result->fetch_row();
  
//--- inisialisasi jumlah kriteria 'n'
  
$n=$row[0];
  
//-- query untuk mengambil data Perbandingan Berpasangan X
  
$sql="SELECT * 
        FROM electre_evaluations 
        ORDER BY id_alternative,id_criteria"
;
  
$result=$db->query($sql);
  
$X=array();
  
$alternative='';
  
//--- inisialisasi jumlah alternative 'm'
  
$m=0;
  while(
$row=$result->fetch_row() as $row){
    if(
$row[0]!=$alternative){
      
$X[$row[0]]=array();
      
$alternative=$row[0];
      ++
$m;
    }
    
$X[$row[0]][$row[1]]=$row[2];
  }
?>

Perbandingan Berpasangan Ternormalisasi (R)

Nilai X ini harus dinormalisasikan ke dalam suatu skala yang dapat diperbandingkan (rij) sesuai persamaan [EL-01] sehingga diperoleh matrik R sebagai berikut:

Perbandingan Berpasangan Ternormalisasi (R)
Alternatif Criteria
C1C2C3C4C5
A10.46420.4880.10980.1140.4704
A20.37140.4880.43910.1140.3763
A30.46420.19520.21950.1140.1881
A40.46420.09760.32930.22790.2822
A50.18570.19520.10980.34190.3763
A60.18570.19520.32930.45580.3763
A70.18570.39040.32930.22790.4704
A80.18570.09760.54880.56980.0941
A90.27850.4880.32930.45580.0941

Persamaan [EL-01] dapat dituliskan dalam kode-kode php sebagai berikut:

<?php
//-- menentukan nilai rata-rata kuadrat per-kriteria
$x_rata=array();
foreach(
$X as $i=>$x){
  foreach(
$x as $j=>$value){
    
$x_rata[$j]=(isset($x_rata[$j])?$x_rata[$j]:0)+pow($value,2);
  }
}
for(
$j=1;$j<=$n;$j++){
  
$x_rata[$j]=sqrt($x_rata[$j]);
}
//-- menormalisasi matriks X menjadi matriks R
$R=array();
$alternative='';
foreach(
$X as $i=>$x){
  if(
$alternative!=$i){
    
$alternative=$i;
    
$R[$i]=array();
  }
  foreach(
$x as $j=>$value){
    
$R[$i][$j]=$value/$x_rata[$j];
  }
}
?>

Menentukan Bobot tiap-tiap Kriteria (W)

Selanjutnya pengambil keputusan harus memberikan faktor kepentingan (bobot) pada setiap kriteria yang mengekspresikan kepentingan relatifnya (wj)

Bobot Kriteria (W)
Criteria C1C2C3C4C5
Weight 74332

Berikut ini adalah script PHP untuk mengambil data nilai bobot criteria dari tabel electre_criterias :

<?php
  
//-- query untuk mengambil data nilai bobot criteria
  
$sql="SELECT id_criteria, weight 
        FROM electre_criterias 
        ORDER BY id_criteria"
;
  
$result=$db->query($sql);
  
$criteria=array();
  while(
$row=$result->fetch_row($result))
    
$criteria[$row[0]]=$row[1];
?>

Membentuk Matrik Preferensi (V)

Bobot ini selanjutnya dikalikan dengan matriks perbandingan berpasangan(R), sesuai dengan persamaan [EL-04] sehingga membentuk matriks Preferensi (V) seperti berikut ini :


Nilai Preferensi (V)
Alternatif Criteria
C1C2C3C4C5
A13.24971.95180.32930.34190.9407
A22.59971.95181.31720.34190.7526
A33.24970.78070.65860.34190.3763
A43.24970.39040.98790.68380.5644
A51.29990.78070.32931.02560.7526
A61.29990.78070.98791.36750.7526
A71.29991.56140.98790.68380.9407
A81.29990.39041.64651.70940.1881
A91.94981.95180.98791.36750.1881

Pembentukan matrik Preferensi V sesuai dengan persamaan [EL-04] tersebut dapat dituliskan dalam kode PHP sebagai berikut:

<?php
//-- inisialisasi matrik preferensi V dan himpunan bobot kriteria w
$V=$w=array();
//-- memasukkan data bobot ke dalam $w
foreach($criteria as $j=>$weight)
  
$w[$j]=$weight;
$alternative='';
//-- menghitung nilai Preferensi V
foreach($R as $i=>$r){
  if(
$alternative!=$i){
    
$alternative=$i;
    
$V[$i]=array();
  }
  foreach(
$r as $j=>$value){
    
$V[$i][$j]=$w[$j]*$value;
  }
}  
?>

Menentukan Concordance Index (Ckl)

Berdasarkan dengan persamaan [EL-05] didapatkan himpunan concordance index sebagai berikut:

C12={ 1 , 2 , 4 , 5 }
C13={ 1 , 2 , 4 , 5 }
C14={ 1 , 2 , 5 }
C15={ 1 , 2 , 3 , 5 }
C16={ 1 , 2 , 5 }
C17={ 1 , 2 , 5 }
C18={ 1 , 2 , 5 }
C19={ 1 , 2 , 5 }
C21={ 2 , 3 , 4 }
C23={ 2 , 3 , 4 , 5 }
C24={ 2 , 3 , 5 }
C25={ 1 , 2 , 3 , 5 }
C26={ 1 , 2 , 3 , 5 }
C27={ 1 , 2 , 3 }
C28={ 1 , 2 , 5 }
C29={ 1 , 2 , 3 , 5 }
C31={ 1 , 3 , 4 }
C32={ 1 , 4 }
C34={ 1 , 2 }
C35={ 1 , 2 , 3 }
C36={ 1 , 2 }
C37={ 1 }
C38={ 1 , 2 , 5 }
C39={ 1 , 5 }
C41={ 1 , 3 , 4 }
C42={ 1 , 4 }
C43={ 1 , 3 , 4 , 5 }
C45={ 1 , 3 }
C46={ 1 , 3 }
C47={ 1 , 3 , 4 }
C48={ 1 , 2 , 5 }
C49={ 1 , 3 , 5 }
C51={ 3 , 4 }
C52={ 4 , 5 }
C53={ 2 , 4 , 5 }
C54={ 2 , 4 , 5 }
C56={ 1 , 2 , 5 }
C57={ 1 , 4 }
C58={ 1 , 2 , 5 }
C59={ 5 }
C61={ 3 , 4 }
C62={ 4 , 5 }
C63={ 2 , 3 , 4 , 5 }
C64={ 2 , 3 , 4 , 5 }
C65={ 1 , 2 , 3 , 4 , 5 }
C67={ 1 , 3 , 4 }
C68={ 1 , 2 , 5 }
C69={ 3 , 4 , 5 }
C71={ 3 , 4 , 5 }
C72={ 4 , 5 }
C73={ 2 , 3 , 4 , 5 }
C74={ 2 , 3 , 4 , 5 }
C75={ 1 , 2 , 3 , 5 }
C76={ 1 , 2 , 3 , 5 }
C78={ 1 , 2 , 5 }
C79={ 3 , 5 }
C81={ 3 , 4 }
C82={ 3 , 4 }
C83={ 3 , 4 }
C84={ 2 , 3 , 4 }
C85={ 1 , 3 , 4 }
C86={ 1 , 3 , 4 }
C87={ 1 , 3 , 4 }
C89={ 3 , 4 , 5 }
C91={ 2 , 3 , 4 }
C92={ 2 , 4 }
C93={ 2 , 3 , 4 }
C94={ 2 , 3 , 4 }
C95={ 1 , 2 , 3 , 4 }
C96={ 1 , 2 , 3 , 4 }
C97={ 1 , 2 , 3 , 4 }
C98={ 1 , 2 , 5 }

Penulisan dalam script PHP untuk mencari himpunan concordance index adalah sebagai berikut:

<?php
  
/* mencari himpunan concordance index
     $n = jumlah kriteria
     $m = jumlah alternatif
     $V = matrik preferensi
     $c = himpunan concordance index
  */
  
$c=array();
  
$c_index='';
  for(
$k=1;$k<=$m;$k++){
    if(
$c_index!=$k){
      
$c_index=$k;
      
$c[$k]=array();
    }
    for(
$l=1;$l<=$m;$l++){
      if(
$k!=$l){
        for(
$j=1;$j<=$n;$j++){
          if(!isset(
$c[$k][$l]))$c[$k][$l]=array();
          if(
$V[$k][$j]>=$V[$l][$j]){
            
array_push($c[$k][$l],$j);
          }
        }
      }
    }
  }
?>

Menentukan Discordance Index (Dkl)

Himpunan disconcordance index diperoleh berdasarkan persamaan [EL-06] dan didapatkan sebagai berikut:

D12={ 3 }
D13={ 3 }
D14={ 3 , 4 }
D15={ 4 }
D16={ 3 , 4 }
D17={ 3 , 4 }
D18={ 3 , 4 }
D19={ 3 , 4 }
D21={ 1 , 5 }
D23={ 1 }
D24={ 1 , 4 }
D25={ 4 }
D26={ 4 }
D27={ 4 , 5 }
D28={ 3 , 4 }
D29={ 4 }
D31={ 2 , 5 }
D32={ 2 , 3 , 5 }
D34={ 3 , 4 , 5 }
D35={ 4 , 5 }
D36={ 3 , 4 , 5 }
D37={ 2 , 3 , 4 , 5 }
D38={ 3 , 4 }
D39={ 2 , 3 , 4 }
D41={ 2 , 5 }
D42={ 2 , 3 , 5 }
D43={ 2 }
D45={ 2 , 4 , 5 }
D46={ 2 , 4 , 5 }
D47={ 2 , 5 }
D48={ 3 , 4 }
D49={ 2 , 4 }
D51={ 1 , 2 , 5 }
D52={ 1 , 2 , 3 }
D53={ 1 , 3 }
D54={ 1 , 3 }
D56={ 3 , 4 }
D57={ 2 , 3 , 5 }
D58={ 3 , 4 }
D59={ 1 , 2 , 3 , 4 }
D61={ 1 , 2 , 5 }
D62={ 1 , 2 , 3 }
D63={ 1 }
D64={ 1 }
D65={}
D67={ 2 , 5 }
D68={ 3 , 4 }
D69={ 1 , 2 }
D71={ 1 , 2 }
D72={ 1 , 2 , 3 }
D73={ 1 }
D74={ 1 }
D75={ 4 }
D76={ 4 }
D78={ 3 , 4 }
D79={ 1 , 2 , 4 }
D81={ 1 , 2 , 5 }
D82={ 1 , 2 , 5 }
D83={ 1 , 2 , 5 }
D84={ 1 , 5 }
D85={ 2 , 5 }
D86={ 2 , 5 }
D87={ 2 , 5 }
D89={ 1 , 2 }
D91={ 1 , 5 }
D92={ 1 , 3 , 5 }
D93={ 1 , 5 }
D94={ 1 , 5 }
D95={ 5 }
D96={ 5 }
D97={ 5 }
D98={ 3 , 4 }

Berdasarkan persamaan [EL-06] dapat dituliskan script PHP untuk mencari himpunan discordance index sebagai berikut:

<?php

  
/* mencari himpunan discordance index
     $n = jumlah kriteria
     $m = jumlah alternatif
     $V = matrik preferensi
     $c = himpunan discordance index
  */
  
$d=array();
  
$d_index='';
  for(
$k=1;$k<=$m;$k++){
    if(
$d_index!=$k){
      
$d_index=$k;
      
$d[$k]=array();
    }
    for(
$l=1;$l<=$m;$l++){
      if(
$k!=$l){
        for(
$j=1;$j<=$n;$j++){
          if(!isset(
$d[$k][$l]))$d[$k][$l]=array();
          if(
$V[$k][$j]<$V[$l][$j]){
            
array_push($d[$k][$l],$j);
          }
        }
      }
    }
  }
?>

Membentuk Matriks Concordance (C)

Pembentukan matriks Concordance (C) dilakukan dengan terlebih dahulu menghitung nilai elemen-elemennya yang diperoleh dari perhitungan nilai concordance index dengan bobot atribut seperti yang dirumuskan pada persamaan [EL-07], yang diperoleh hasil sebagai berikut:

C12=w1+w2+w4+w5=16
C13=w1+w2+w4+w5=16
C14=w1+w2+w5=13
C15=w1+w2+w3+w5=16
C16=w1+w2+w5=13
C17=w1+w2+w5=13
C18=w1+w2+w5=13
C19=w1+w2+w5=13
C21=w2+w3+w4=10
C23=w2+w3+w4+w5=12
C24=w2+w3+w5=9
C25=w1+w2+w3+w5=16
C26=w1+w2+w3+w5=16
C27=w1+w2+w3=14
C28=w1+w2+w5=13
C29=w1+w2+w3+w5=16
C31=w1+w3+w4=13
C32=w1+w4=10
C34=w1+w2=11
C35=w1+w2+w3=14
C36=w1+w2=11
C37=w1=7
C38=w1+w2+w5=13
C39=w1+w5=9
C41=w1+w3+w4=13
C42=w1+w4=10
C43=w1+w3+w4+w5=15
C45=w1+w3=10
C46=w1+w3=10
C47=w1+w3+w4=13
C48=w1+w2+w5=13
C49=w1+w3+w5=12
C51=w3+w4=6
C52=w4+w5=5
C53=w2+w4+w5=9
C54=w2+w4+w5=9
C56=w1+w2+w5=13
C57=w1+w4=10
C58=w1+w2+w5=13
C59=w5=2
C61=w3+w4=6
C62=w4+w5=5
C63=w2+w3+w4+w5=12
C64=w2+w3+w4+w5=12
C65=w1+w2+w3+w4+w5=19
C67=w1+w3+w4=13
C68=w1+w2+w5=13
C69=w3+w4+w5=8
C71=w3+w4+w5=8
C72=w4+w5=5
C73=w2+w3+w4+w5=12
C74=w2+w3+w4+w5=12
C75=w1+w2+w3+w5=16
C76=w1+w2+w3+w5=16
C78=w1+w2+w5=13
C79=w3+w5=5
C81=w3+w4=6
C82=w3+w4=6
C83=w3+w4=6
C84=w2+w3+w4=10
C85=w1+w3+w4=13
C86=w1+w3+w4=13
C87=w1+w3+w4=13
C89=w3+w4+w5=8
C91=w2+w3+w4=10
C92=w2+w4=7
C93=w2+w3+w4=10
C94=w2+w3+w4=10
C95=w1+w2+w3+w4=17
C96=w1+w2+w3+w4=17
C97=w1+w2+w3+w4=17
C98=w1+w2+w5=13

Sehingga diperoleh matriks Concordance (C) sebagai berikut:

-1616131613131313
10-1291616141316
1310-1114117139
131015-1010131312
6599-1310132
65121219-13138
8512121616-135
66610131313-8
107101017171713-

Dalam script PHP perhitungan untuk membentuk data matriks Concondance (C) berdasarkan pada persamaan [EL-07], bisa dituliskan seperti ini :

<?php
$C
=array();
$c_index='';
for(
$k=1;$k<=$m;$k++){
  if(
$c_index!=$k){
    
$c_index=$k;
    
$C[$k]=array();
  }
  for(
$l=1;$l<=$m;$l++){
    if(
$k!=$l && count($c[$k][$l])){
      
$f=0;
      foreach(
$c[$k][$l] as $j){
        
$C[$k][$l]=(isset($C[$k][$l])?$C[$k][$l]:0)+$w[$j];
      }
    } 
  }
}
?>

Membentuk Matriks Discordance (D)

Dengan mengacu pada persamaan [EL-08], maka dapat ditentukan nilai-nilai elemen matriks Discordance (D) berikut ini:

D12=max(|0.33-1.32|)/max(|3.25-2.6|;|1.95-1.95|;|0.33-1.32|;|0.34-0.34|;|0.94-0.75|)
=1
D13=max(|0.33-0.66|)/max(|3.25-3.25|;|1.95-0.78|;|0.33-0.66|;|0.34-0.34|;|0.94-0.38|)
=0.28118724199409
D14=max(|0.33-0.99|;|0.34-0.68|)/max(|3.25-3.25|;|1.95-0.39|;|0.33-0.99|;|0.34-0.68|;|0.94-0.56|)
=0.42178086299113
D15=max(|0.34-1.03|)/max(|3.25-1.3|;|1.95-0.78|;|0.33-0.33|;|0.34-1.03|;|0.94-0.75|)
=0.35068370614354
D16=max(|0.33-0.99|;|0.34-1.37|)/max(|3.25-1.3|;|1.95-0.78|;|0.33-0.99|;|0.34-1.37|;|0.94-0.75|)
=0.52602555921532
D17=max(|0.33-0.99|;|0.34-0.68|)/max(|3.25-1.3|;|1.95-1.56|;|0.33-0.99|;|0.34-0.68|;|0.94-0.94|)
=0.33777064570151
D18=max(|0.33-1.65|;|0.34-1.71|)/max(|3.25-1.3|;|1.95-0.39|;|0.33-1.65|;|0.34-1.71|;|0.94-0.19|)
=0.70136741228709
D19=max(|0.33-0.99|;|0.34-1.37|)/max(|3.25-1.95|;|1.95-1.95|;|0.33-0.99|;|0.34-1.37|;|0.94-0.19|)
=0.78903833882297
D21=max(|2.6-3.25|;|0.75-0.94|)/max(|2.6-3.25|;|1.95-1.95|;|1.32-0.33|;|0.34-0.34|;|0.75-0.94|)
=0.65790862838508
D23=max(|2.6-3.25|)/max(|2.6-3.25|;|1.95-0.78|;|1.32-0.66|;|0.34-0.34|;|0.75-0.38|)
=0.55498653809914
D24=max(|2.6-3.25|;|0.34-0.68|)/max(|2.6-3.25|;|1.95-0.39|;|1.32-0.99|;|0.34-0.68|;|0.75-0.56|)
=0.41623990357435
D25=max(|0.34-1.03|)/max(|2.6-1.3|;|1.95-0.78|;|1.32-0.33|;|0.34-1.03|;|0.75-0.75|)
=0.52602555921532
D26=max(|0.34-1.37|)/max(|2.6-1.3|;|1.95-0.78|;|1.32-0.99|;|0.34-1.37|;|0.75-0.75|)
=0.78903833882298
D27=max(|0.34-0.68|;|0.75-0.94|)/max(|2.6-1.3|;|1.95-1.56|;|1.32-0.99|;|0.34-0.68|;|0.75-0.94|)
=0.26301277960766
D28=max(|1.32-1.65|;|0.34-1.71|)/max(|2.6-1.3|;|1.95-0.39|;|1.32-1.65|;|0.34-1.71|;|0.75-0.19|)
=0.87581131218171
D29=max(|0.34-1.37|)/max(|2.6-1.95|;|1.95-1.95|;|1.32-0.99|;|0.34-1.37|;|0.75-0.19|)
=1
D31=max(|0.78-1.95|;|0.38-0.94|)/max(|3.25-3.25|;|0.78-1.95|;|0.66-0.33|;|0.34-0.34|;|0.38-0.94|)
=1
D32=max(|0.78-1.95|;|0.66-1.32|;|0.38-0.75|)/max(|3.25-2.6|;|0.78-1.95|;|0.66-1.32|;|0.34-0.34|;|0.38-0.75|)
=1
D34=max(|0.66-0.99|;|0.34-0.68|;|0.38-0.56|)/max(|3.25-3.25|;|0.78-0.39|;|0.66-0.99|;|0.34-0.68|;|0.38-0.56|)
=0.87581131218171
D35=max(|0.34-1.03|;|0.38-0.75|)/max(|3.25-1.3|;|0.78-0.78|;|0.66-0.33|;|0.34-1.03|;|0.38-0.75|)
=0.35068370614354
D36=max(|0.66-0.99|;|0.34-1.37|;|0.38-0.75|)/max(|3.25-1.3|;|0.78-0.78|;|0.66-0.99|;|0.34-1.37|;|0.38-0.75|)
=0.52602555921532
D37=max(|0.78-1.56|;|0.66-0.99|;|0.34-0.68|;|0.38-0.94|)/max(|3.25-1.3|;|0.78-1.56|;|0.66-0.99|;|0.34-0.68|;|0.38-0.94|)
=0.40041011261885
D38=max(|0.66-1.65|;|0.34-1.71|)/max(|3.25-1.3|;|0.78-0.39|;|0.66-1.65|;|0.34-1.71|;|0.38-0.19|)
=0.70136741228709
D39=max(|0.78-1.95|;|0.66-0.99|;|0.34-1.37|)/max(|3.25-1.95|;|0.78-1.95|;|0.66-0.99|;|0.34-1.37|;|0.38-0.19|)
=0.90092275339242
D41=max(|0.39-1.95|;|0.56-0.94|)/max(|3.25-3.25|;|0.39-1.95|;|0.99-0.33|;|0.68-0.34|;|0.56-0.94|)
=1
D42=max(|0.39-1.95|;|0.99-1.32|;|0.56-0.75|)/max(|3.25-2.6|;|0.39-1.95|;|0.99-1.32|;|0.68-0.34|;|0.56-0.75|)
=1
D43=max(|0.39-0.78|)/max(|3.25-3.25|;|0.39-0.78|;|0.99-0.66|;|0.68-0.34|;|0.56-0.38|)
=1
D45=max(|0.39-0.78|;|0.68-1.03|;|0.56-0.75|)/max(|3.25-1.3|;|0.39-0.78|;|0.99-0.33|;|0.68-1.03|;|0.56-0.75|)
=0.20020505630943
D46=max(|0.39-0.78|;|0.68-1.37|;|0.56-0.75|)/max(|3.25-1.3|;|0.39-0.78|;|0.99-0.99|;|0.68-1.37|;|0.56-0.75|)
=0.35068370614354
D47=max(|0.39-1.56|;|0.56-0.94|)/max(|3.25-1.3|;|0.39-1.56|;|0.99-0.99|;|0.68-0.68|;|0.56-0.94|)
=0.60061516892828
D48=max(|0.99-1.65|;|0.68-1.71|)/max(|3.25-1.3|;|0.39-0.39|;|0.99-1.65|;|0.68-1.71|;|0.56-0.19|)
=0.52602555921532
D49=max(|0.39-1.95|;|0.68-1.37|)/max(|3.25-1.95|;|0.39-1.95|;|0.99-0.99|;|0.68-1.37|;|0.56-0.19|)
=1
D51=max(|1.3-3.25|;|0.78-1.95|;|0.75-0.94|)/max(|1.3-3.25|;|0.78-1.95|;|0.33-0.33|;|1.03-0.34|;|0.75-0.94|)
=1
D52=max(|1.3-2.6|;|0.78-1.95|;|0.33-1.32|)/max(|1.3-2.6|;|0.78-1.95|;|0.33-1.32|;|1.03-0.34|;|0.75-0.75|)
=1
D53=max(|1.3-3.25|;|0.33-0.66|)/max(|1.3-3.25|;|0.78-0.78|;|0.33-0.66|;|1.03-0.34|;|0.75-0.38|)
=1
D54=max(|1.3-3.25|;|0.33-0.99|)/max(|1.3-3.25|;|0.78-0.39|;|0.33-0.99|;|1.03-0.68|;|0.75-0.56|)
=1
D56=max(|0.33-0.99|;|1.03-1.37|)/max(|1.3-1.3|;|0.78-0.78|;|0.33-0.99|;|1.03-1.37|;|0.75-0.75|)
=1
D57=max(|0.78-1.56|;|0.33-0.99|;|0.75-0.94|)/max(|1.3-1.3|;|0.78-1.56|;|0.33-0.99|;|1.03-0.68|;|0.75-0.94|)
=1
D58=max(|0.33-1.65|;|1.03-1.71|)/max(|1.3-1.3|;|0.78-0.39|;|0.33-1.65|;|1.03-1.71|;|0.75-0.19|)
=1
D59=max(|1.3-1.95|;|0.78-1.95|;|0.33-0.99|;|1.03-1.37|)/max(|1.3-1.95|;|0.78-1.95|;|0.33-0.99|;|1.03-1.37|;|0.75-0.19|)
=1
D61=max(|1.3-3.25|;|0.78-1.95|;|0.75-0.94|)/max(|1.3-3.25|;|0.78-1.95|;|0.99-0.33|;|1.37-0.34|;|0.75-0.94|)
=1
D62=max(|1.3-2.6|;|0.78-1.95|;|0.99-1.32|)/max(|1.3-2.6|;|0.78-1.95|;|0.99-1.32|;|1.37-0.34|;|0.75-0.75|)
=1
D63=max(|1.3-3.25|)/max(|1.3-3.25|;|0.78-0.78|;|0.99-0.66|;|1.37-0.34|;|0.75-0.38|)
=1
D64=max(|1.3-3.25|)/max(|1.3-3.25|;|0.78-0.39|;|0.99-0.99|;|1.37-0.68|;|0.75-0.56|)
=1
D65=0/max(|1.3-1.3|;|0.78-0.78|;|0.99-0.33|;|1.37-1.03|;|0.75-0.75|)
=0
D67=max(|0.78-1.56|;|0.75-0.94|)/max(|1.3-1.3|;|0.78-1.56|;|0.99-0.99|;|1.37-0.68|;|0.75-0.94|)
=1
D68=max(|0.99-1.65|;|1.37-1.71|)/max(|1.3-1.3|;|0.78-0.39|;|0.99-1.65|;|1.37-1.71|;|0.75-0.19|)
=1
D69=max(|1.3-1.95|;|0.78-1.95|)/max(|1.3-1.95|;|0.78-1.95|;|0.99-0.99|;|1.37-1.37|;|0.75-0.19|)
=1
D71=max(|1.3-3.25|;|1.56-1.95|)/max(|1.3-3.25|;|1.56-1.95|;|0.99-0.33|;|0.68-0.34|;|0.94-0.94|)
=1
D72=max(|1.3-2.6|;|1.56-1.95|;|0.99-1.32|)/max(|1.3-2.6|;|1.56-1.95|;|0.99-1.32|;|0.68-0.34|;|0.94-0.75|)
=1
D73=max(|1.3-3.25|)/max(|1.3-3.25|;|1.56-0.78|;|0.99-0.66|;|0.68-0.34|;|0.94-0.38|)
=1
D74=max(|1.3-3.25|)/max(|1.3-3.25|;|1.56-0.39|;|0.99-0.99|;|0.68-0.68|;|0.94-0.56|)
=1
D75=max(|0.68-1.03|)/max(|1.3-1.3|;|1.56-0.78|;|0.99-0.33|;|0.68-1.03|;|0.94-0.75|)
=0.43790565609086
D76=max(|0.68-1.37|)/max(|1.3-1.3|;|1.56-0.78|;|0.99-0.99|;|0.68-1.37|;|0.94-0.75|)
=0.87581131218171
D78=max(|0.99-1.65|;|0.68-1.71|)/max(|1.3-1.3|;|1.56-0.39|;|0.99-1.65|;|0.68-1.71|;|0.94-0.19|)
=0.87581131218171
D79=max(|1.3-1.95|;|1.56-1.95|;|0.68-1.37|)/max(|1.3-1.95|;|1.56-1.95|;|0.99-0.99|;|0.68-1.37|;|0.94-0.19|)
=0.90856315850194
D81=max(|1.3-3.25|;|0.39-1.95|;|0.19-0.94|)/max(|1.3-3.25|;|0.39-1.95|;|1.65-0.33|;|1.71-0.34|;|0.19-0.94|)
=1
D82=max(|1.3-2.6|;|0.39-1.95|;|0.19-0.75|)/max(|1.3-2.6|;|0.39-1.95|;|1.65-1.32|;|1.71-0.34|;|0.19-0.75|)
=1
D83=max(|1.3-3.25|;|0.39-0.78|;|0.19-0.38|)/max(|1.3-3.25|;|0.39-0.78|;|1.65-0.66|;|1.71-0.34|;|0.19-0.38|)
=1
D84=max(|1.3-3.25|;|0.19-0.56|)/max(|1.3-3.25|;|0.39-0.39|;|1.65-0.99|;|1.71-0.68|;|0.19-0.56|)
=1
D85=max(|0.39-0.78|;|0.19-0.75|)/max(|1.3-1.3|;|0.39-0.78|;|1.65-0.33|;|1.71-1.03|;|0.19-0.75|)
=0.42851874939619
D86=max(|0.39-0.78|;|0.19-0.75|)/max(|1.3-1.3|;|0.39-0.78|;|1.65-0.99|;|1.71-1.37|;|0.19-0.75|)
=0.85703749879237
D87=max(|0.39-1.56|;|0.19-0.94|)/max(|1.3-1.3|;|0.39-1.56|;|1.65-0.99|;|1.71-0.68|;|0.19-0.94|)
=1
D89=max(|1.3-1.95|;|0.39-1.95|)/max(|1.3-1.95|;|0.39-1.95|;|1.65-0.99|;|1.71-1.37|;|0.19-0.19|)
=1
D91=max(|1.95-3.25|;|0.19-0.94|)/max(|1.95-3.25|;|1.95-1.95|;|0.99-0.33|;|1.37-0.34|;|0.19-0.94|)
=1
D92=max(|1.95-2.6|;|0.99-1.32|;|0.19-0.75|)/max(|1.95-2.6|;|1.95-1.95|;|0.99-1.32|;|1.37-0.34|;|0.19-0.75|)
=0.63368276976992
D93=max(|1.95-3.25|;|0.19-0.38|)/max(|1.95-3.25|;|1.95-0.78|;|0.99-0.66|;|1.37-0.34|;|0.19-0.38|)
=1
D94=max(|1.95-3.25|;|0.19-0.56|)/max(|1.95-3.25|;|1.95-0.39|;|0.99-0.99|;|1.37-0.68|;|0.19-0.56|)
=0.83247980714871
D95=max(|0.19-0.75|)/max(|1.95-1.3|;|1.95-0.78|;|0.99-0.33|;|1.37-1.03|;|0.19-0.75|)
=0.48197602114187
D96=max(|0.19-0.75|)/max(|1.95-1.3|;|1.95-0.78|;|0.99-0.99|;|1.37-1.37|;|0.19-0.75|)
=0.48197602114187
D97=max(|0.19-0.94|)/max(|1.95-1.3|;|1.95-1.56|;|0.99-0.99|;|1.37-0.68|;|0.19-0.94|)
=1
D98=max(|0.99-1.65|;|1.37-1.71|)/max(|1.95-1.3|;|1.95-0.39|;|0.99-1.65|;|1.37-1.71|;|0.19-0.19|)
=0.42178086299113

Dan terbentuk matriks Discordance(D) sebagai berikut:

-10.28120.42180.35070.5260.33780.70140.789
0.6579-0.5550.41620.5260.7890.2630.87581
11-0.87580.35070.5260.40040.70140.9009
111-0.20020.35070.60060.5261
1111-1111
11110-111
11110.43790.8758-0.87580.9086
11110.42850.8571-1
10.633710.83250.4820.48210.4218-

Pembentukan matriks Discordance(D) dapat dirumuskan dalam PHP sebagai berikut:

<?php
$D
=array();
$d_index='';
for(
$k=1;$k<=$m;$k++){
  if(
$d_index!=$k){
    
$d_index=$k;
    
$D[$k]=array();
  }
  for(
$l=1;$l<=$m;$l++){
    if(
$k!=$l){
      
$max_d=0;
      
$max_j=0;
      if(
count($d[$k][$l])){
        
$mx=array();
        foreach(
$d[$k][$l] as $j){
          if(
$max_d&lt;abs($V[$k][$j]-$V[$l][$j])) 
            
$max_d=abs($V[$k][$j]-$V[$l][$j]);
        }
      }
      
$mx=array();
      for(
$j=1;$j<=$n;$j++){
        if(
$max_j&lt;abs($V[$k][$j]-$V[$l][$j])) 
          
$max_j=abs($V[$k][$j]-$V[$l][$j]);
      }
      
$D[$k][$l]=$max_d/$max_j;
    }
  }
}
?>

Menghitung Threshold c

c=11.402777777778

<?php
$sigma_c
=0;
foreach(
$C as $k=>$cl){
  foreach(
$cl as $l=>$value){
    
$sigma_c+=$value;
  }
}
$threshold_c=$sigma_c/($m*($m-1));
?>

Menghitung Threshold d

d=0.77998847698355

<?php
$sigma_d
=0;
foreach(
$D as $k=>$dl){
  foreach(
$dl as $l=>$value){
    
$sigma_d+=$value;
  }
}
$threshold_d=$sigma_d/($m*($m-1));
?>

Membentuk Matrik Concordance Dominan(F)

-11111111
0-1011111
10-010010
101-00111
0000-1010
00111-110
001111-10
0000111-0
00001111-

<?php
  $F
=array();
  foreach(
$C as $k=>$cl){
    
$F[$k]=array();
    foreach(
$cl as $l=>$value){
      
$F[$k][$l]=($value&gt;=$threshold_c?1:0);
    }
  }
?>

Membentuk Matrik Discordance Dominan(G)

-10000001
0-0001011
11-100001
111-00001
1111-1111
11110-111
111101-11
1111011-1
10110010-

<?php
  $G
=array();
  foreach(
$D as $k=>$dl){
    
$G[$k]=array();
    foreach(
$dl as $l=>$value){
      
$G[$k][$l]=($value&gt;=$threshold_d?1:0);
    }
  }
?>

Membentuk Matrik Agregasi Dominan(E)

-10000001
0-0001011
10-000000
101-00001
0000-1010
00110-110
001101-10
0000011-0
00000010-

<?php
  $E
=array();
  foreach(
$F as $k=>$sl){
    
$E[$k]=array();
    foreach(
$sl as $l=>$value){
      
$E[$k][$l]=$F[$k][$l]*$G[$k][$l];
    }
  }
?>

Sehingga dapat disimpulkan bahwa :

A1->A2 (A2 didominasi oleh A1)
A1->A9 (A9 didominasi oleh A1)
A2->A6 (A6 didominasi oleh A2)
A2->A8 (A8 didominasi oleh A2)
A2->A9 (A9 didominasi oleh A2)
A3->A1 (A1 didominasi oleh A3)
A4->A1 (A1 didominasi oleh A4)
A4->A3 (A3 didominasi oleh A4)
A4->A9 (A9 didominasi oleh A4)
A5->A6 (A6 didominasi oleh A5)
A5->A8 (A8 didominasi oleh A5)
A6->A3 (A3 didominasi oleh A6)
A6->A4 (A4 didominasi oleh A6)
A6->A7 (A7 didominasi oleh A6)
A6->A8 (A8 didominasi oleh A6)
A7->A3 (A3 didominasi oleh A7)
A7->A4 (A4 didominasi oleh A7)
A7->A6 (A6 didominasi oleh A7)
A7->A8 (A8 didominasi oleh A7)
A8->A6 (A6 didominasi oleh A8)
A8->A7 (A7 didominasi oleh A8)
A9->A7 (A7 didominasi oleh A9)

Namun kita tidak dapat menyimpulkan apapun tentang hubungan antara:
A1 dengan A5,
A1 dengan A6,
A1 dengan A7,
A1 dengan A8,
A2 dengan A3,
A2 dengan A4,
A2 dengan A5,
A2 dengan A7,
A3 dengan A5,
A3 dengan A8,
A3 dengan A9,
A4 dengan A5,
A4 dengan A8,
A5 dengan A7,
A5 dengan A9,
A6 dengan A9,
A8 dengan A9