Decision Support System Series

ELimination Et Choix TRaduisant la realitE

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 5th, 2015 updated on : May 8th, 2022

minerva minerva donasi donation

Mau lihat artikel lainya? Dapatkan artikel-artikel lain seputar pemrograman website di sini, dan dapatkan ide-ide baru

1.3 Kelebihan dan Kekurangan

Berikut ini kelebihan dan kekurangan yang dimiliki oleh Metode ELECTRE

1.3.1 Kelebihan

Kelebihan utama dari metode ELECTRE adalah metode ini dibutuhkan dalam ketidakjelasan dan ketidakpastian dalam sebuah kasus. Selain itu dalam sistem pendukung keputusan metode ini sering diimplementasikan sebagai solusi untuk mengatasi masalah. Metode ELECTRE cocok untuk kasus-kasus yang memiliki banyak alternatif.

1.3.2 Kekurangan

Salah satu kekurangan metode ELECTRE adalah proses dari hasilnya sulit dijelaskan dalam istilah umum.Metode ELECTRE hanya melibatkan sedikit kriteria.

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 : Pulo Gebang, A2 : Ancol, A3 : Cengkareng, A4 : Kelapa Gading, A5 : Pulomas, A6 : Sunter, A7 : Cikarang, A8 : Cibitung, dan A9 : Pluit. 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)

2.1. 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 Pulo Gebang41351
A2 Ancol15342
A3 Cengkareng15233
A4 Kelapa Gading33533
A5 Pulomas12321
A6 Sunter31312
A7 Cikarang44231
A8 Cibitung25333
A9 Pluit31452

2.2. Bobot Kriteria

Pengambil keputusan memberi bobot preferensi dari setiap kriteria sebagai: W=(7,3,5,3,3) 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) 3
C3 jarak dari pabrik(km) 5
C4 jarak dengan gudang yang sudah ada (km) 3
C5 harga tanah untuk lokasi (x1000 Rp/m2) 3

2.3.1. Membentuk Perbandingan Berpasangan (X)

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

Perbandingan Berpasangan (X)
Alternatif Kriteria
C1C2C3C4C5
A141351
A215342
A315233
A433533
A512321
A631312
A744231
A825333
A931452

Nilai perbandingan berpasangan antara setiap alternatif dengan setiap kriteria ini merupakan representasi dari data pada TABEL 1, yaitu menggambarkan rating kecocokan alternatif dengan kriteria.

2.3.2. Perbandingan Berpasangan Ternormalisasi (R)

Nilai X ini harus dinormalisasikan ke dalam suatu skala yang dapat diperbandingkan (rij) sesuai persamaan [EL-01]. Sebagai contoh, untuk alternatif A4 dan kriteria C2 dapat dihitung nilai perbandingan ternormalisasi r2,4-nya sebagai berikut

$\begin{align}r_{2,4} &= \frac{x_{2,4}}{\sqrt{\sum_{i=1}^{m}x_{i,4}^2}}\\ &=\frac{4}{\sqrt{(5)^2+(4)^2+(3)^2+(3)^2+(2)^2+(1)^2+(3)^2+(3)^2+(5)^2}}\\ &=\frac{4}{\sqrt{25+16+9+9+4+1+9+9+25}}\\ &=\frac{4}{\sqrt{107}}\\ &=\frac{4}{10.344080432789}\\ r_{2,4}&=0.3866\end{align}$

Dengan perhitungan yang sama untuk semua pasangan alternatif dan kriteria maka diperoleh matrik R sebagai berikut:

Perbandingan Berpasangan Ternormalisasi (R)
Alternatif Kriteria
C1C2C3C4C5
A10.49240.09670.30940.48340.1543
A20.12310.48340.30940.38670.3086
A30.12310.48340.20630.290.4629
A40.36930.290.51570.290.4629
A50.12310.19330.30940.19330.1543
A60.36930.09670.30940.09670.3086
A70.49240.38670.20630.290.1543
A80.24620.48340.30940.290.4629
A90.36930.09670.41260.48340.3086

2.3.3. 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 73533

2.3.4. 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.44660.291.54711.45010.4629
A20.86161.45011.54711.16010.9258
A30.86161.45011.03140.87011.3887
A42.58490.87012.57860.87011.3887
A50.86160.581.54710.580.4629
A62.58490.291.54710.290.9258
A73.44661.16011.03140.87010.4629
A81.72331.45011.54710.87011.3887
A92.58490.292.06281.45010.9258

2.3.5. Menentukan Concordance Index (Ckl)

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

TABEL : Concordance Index
CklHimpunan
C1,2{ 1 , 3 , 4 }
C1,3{ 1 , 3 , 4 }
C1,4{ 1 , 4 }
C1,5{ 1 , 3 , 4 , 5 }
C1,6{ 1 , 2 , 3 , 4 }
C1,7{ 1 , 3 , 4 , 5 }
C1,8{ 1 , 3 , 4 }
C1,9{ 1 , 2 , 4 }
C2,1{ 2 , 3 , 5 }
C2,3{ 1 , 2 , 3 , 4 }
C2,4{ 2 , 4 }
C2,5{ 1 , 2 , 3 , 4 , 5 }
C2,6{ 2 , 3 , 4 , 5 }
C2,7{ 2 , 3 , 4 , 5 }
C2,8{ 2 , 3 , 4 }
C2,9{ 2 , 5 }
C3,1{ 2 , 5 }
C3,2{ 1 , 2 , 5 }
C3,4{ 2 , 4 , 5 }
C3,5{ 1 , 2 , 4 , 5 }
C3,6{ 2 , 4 , 5 }
C3,7{ 2 , 3 , 4 , 5 }
C3,8{ 2 , 4 , 5 }
C3,9{ 2 , 5 }
C4,1{ 2 , 3 , 5 }
C4,2{ 1 , 3 , 5 }
C4,3{ 1 , 3 , 4 , 5 }
C4,5{ 1 , 2 , 3 , 4 , 5 }
C4,6{ 1 , 2 , 3 , 4 , 5 }
C4,7{ 3 , 4 , 5 }
C4,8{ 1 , 3 , 4 , 5 }
C4,9{ 1 , 2 , 3 , 5 }
C5,1{ 2 , 3 , 5 }
C5,2{ 1 , 3 }
C5,3{ 1 , 3 }
C5,4{}
C5,6{ 2 , 3 , 4 }
C5,7{ 3 , 5 }
C5,8{ 3 }
C5,9{ 2 }
C6,1{ 2 , 3 , 5 }
C6,2{ 1 , 3 , 5 }
C6,3{ 1 , 3 }
C6,4{ 1 }
C6,5{ 1 , 3 , 5 }
C6,7{ 3 , 5 }
C6,8{ 1 , 3 }
C6,9{ 1 , 2 , 5 }
C7,1{ 1 , 2 , 5 }
C7,2{ 1 }
C7,3{ 1 , 3 , 4 }
C7,4{ 1 , 2 , 4 }
C7,5{ 1 , 2 , 4 , 5 }
C7,6{ 1 , 2 , 4 }
C7,8{ 1 , 4 }
C7,9{ 1 , 2 }
C8,1{ 2 , 3 , 5 }
C8,2{ 1 , 2 , 3 , 5 }
C8,3{ 1 , 2 , 3 , 4 , 5 }
C8,4{ 2 , 4 , 5 }
C8,5{ 1 , 2 , 3 , 4 , 5 }
C8,6{ 2 , 3 , 4 , 5 }
C8,7{ 2 , 3 , 4 , 5 }
C8,9{ 2 , 5 }
C9,1{ 2 , 3 , 4 , 5 }
C9,2{ 1 , 3 , 4 , 5 }
C9,3{ 1 , 3 , 4 }
C9,4{ 1 , 4 }
C9,5{ 1 , 3 , 4 , 5 }
C9,6{ 1 , 2 , 3 , 4 , 5 }
C9,7{ 3 , 4 , 5 }
C9,8{ 1 , 3 , 4 }

Concordance Index (Ckl) ditentukan dengan membandingkan nilai preferensi dari dua alternatif ( k dan l) untuk kriteria yang sama. Untuk Concordance index Ckl, pada kriteria ke j, maka jika nilai preferensi Vkj lebih besar dari Vlj maka index kriteria-nya (j) dimasukkan dalam himpunan Concordance index Ckl tersebut.

2.3.6. Menentukan Discordance Index (Dkl)

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

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

Penentuan nilai Discordance Index (Dkl) serupa dengan penentuan niai Concordance Index (Ckl) di atas, yaitu ditentukan dengan membandingkan nilai preferensi dari dua alternatif ( k dan l) untuk kriteria yang sama. Untuk nilai Discordance index Dkl, pada kriteria ke j, maka jika nilai preferensi Vkj lebih kecil dari Vlj maka index kriteria-nya (j) dimasukkan dalam himpunan Discordance index Dkl tersebut.

2.3.7. 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], diperoleh hasil berupa matriks Concordance (C) sebagai berikut:

$\begin{equation*}C=\left[ \begin{array}{ccccccccc}&-&15&15&10&18&18&18&15&13\\&11&-&18&6&21&14&14&11&6\\&6&13&-&9&16&9&14&9&6\\&11&15&18&-&21&21&11&18&18\\&11&12&12&-&-&11&8&5&3\\&11&15&12&7&15&-&8&12&13\\&13&7&15&13&16&13&-&10&10\\&11&18&21&9&21&14&14&-&6\\&14&18&15&10&18&21&11&15&-\\\end{array} \right]\end{equation*}$

Sebagai contoh perhitungan, untuk mendapatkan nilai c2,8=11 seperti pada matriks Concordance tersebut adalah sebagai berikut

$\begin{align}c_{2,8} &=\sum_{j \in C_{2,8}}w_j\\ &=\sum_{j \in \{2 , 3 , 4\}} w_j\\ &=w_{2}+w_{3}+w_{4}\\ &=3+5+3\\ &=11\\ \end{align}$

2.3.8. Membentuk Matriks Discordance (D)

Dengan mengacu pada persamaan [EL-08], maka dapat ditentukan nilai-nilai elemen matriks Discordance (D)-nya. Sebagai contoh untuk nilai elemen matriks Discondance d2,8 adalah sebagai berikut ini:
$\begin{align} d_{2,8}&=\frac{max\{\mid v_{2j} - v_{8j}\mid \} j\in D_{2,8}}{max\{\mid v_{2j} - v_{8j}\mid\} \forall j} \\ &=\frac{max\{\mid v_{2j} - v_{8j}\mid \} j\in {\{1,5\}}}{max\{\mid v_{2,1}-v_{8,1} \mid ,\mid v_{2,2}-v_{8,2} \mid ,\mid v_{2,3}-v_{8,3} \mid ,\mid v_{2,4}-v_{8,4} \mid ,\mid v_{2,5}-v_{8,5} \mid\}} \\ &=1\end{align}$

Dan terbentuk matriks Discordance(D) sebagai berikut:
$\begin{equation*}D=\left[ \begin{array}{ccccccccc}&-&0.4488&0.4488&1&0.1122&0.399&1&0.6732&0.5985\\&1&-&0.8976&1&0&1&1&1&1\\&1&1&-&1&0.557&1&1&1&1\\&0.8354&0.3366&0.3366&-&0&0&0.5569&0.5624&1\\&1&1&1&1&-&1&1&1&1\\&1&0.6732&0.6732&1&0.1683&-&1&1&1\\&0.6667&0.1995&0.3582&1&0.1995&0.5927&-&0.5372&1\\&1&0.3366&0&1&0&0.7427&1&-&0.7427\\&1&0.6732&0.6732&1&0.1683&0&0.8436&1&-\\\end{array} \right]\end{equation*}$

2.3.9. Menghitung Threshold c

Nilai ambang (threshold) c dihitung berdasarkan persamaan EL-09 sebagai berikut

$\begin{align} \underline{c}&=\frac{\sum_{k=1}^{9}.\sum_{l=1}^{9}c_{kl}}{9(9-1)} \\ &=\frac{\sum_{k=1}^{9}(c_{k1}+c_{k2}+c_{k3}+c_{k4}+c_{k5}+c_{k6}+c_{k7}+c_{k8}+c_{k9})}{9*8} \\ &=\frac{926}{72} \\ &= 12.861111111111\end{align}$

2.3.10. Menghitung Threshold d

Perhitungan nilai ambang (threshold) d menurut persamaan EL-12 diperoleh hasil sebagai berikut:

$\begin{align} \underline{d}&=\frac{\sum_{k=1}^{9}.\sum_{l=1}^{9}d_{kl}}{9(9-1)} \\ &=\frac{\sum_{k=1}^{9}(d_{k1}+d_{k2}+d_{k3}+d_{k4}+d_{k5}+d_{k6}+d_{k7}+d_{k8}+d_{k9})}{9*8} \\ &=\frac{52.011799041459}{72} \\ &= 0.72238609779804\end{align}$

2.3.11. Membentuk Matrik Concordance Dominan(F)

Matrik Concordance Dominan F dibentuk menurut persamaan EL-11, nilai fkl akan bernilai 1 jika nilai concordance index ckl lebih besar dari nilai threshold c, dan sebaliknya maka akan bernilai 0. Selengkapnya akan terbentuk matrik cocordance dominan F seperti ini :

$\begin{equation*}F=\left[ \begin{array}{ccccccccc}&-&1&1&0&1&1&1&1&1\\&0&-&1&0&1&1&1&0&0\\&0&1&-&0&1&0&1&0&0\\&0&1&1&-&1&1&0&1&1\\&0&0&0&-&-&0&0&0&0\\&0&1&0&0&1&-&0&0&1\\&1&0&1&1&1&1&-&0&0\\&0&1&1&0&1&1&1&-&0\\&1&1&1&0&1&1&0&1&-\\\end{array} \right]\end{equation*}$

2.3.12. Membentuk Matrik Discordance Dominan(G)

$\begin{equation*}G=\left[ \begin{array}{ccccccccc}&-&0&0&1&0&0&1&0&0\\&1&-&1&1&0&1&1&1&1\\&1&1&-&1&0&1&1&1&1\\&1&0&0&-&0&0&0&0&1\\&1&1&1&1&-&1&1&1&1\\&1&0&0&1&0&-&1&1&1\\&0&0&0&1&0&0&-&0&1\\&1&0&0&1&0&1&1&-&1\\&1&0&0&1&0&0&1&1&-\\\end{array} \right]\end{equation*}$

2.3.13. Membentuk Matrik Agregasi Dominan(E)

$\begin{equation*}E=\left[ \begin{array}{ccccccccc}&-&0&0&0&0&0&1&0&0\\&0&-&1&0&0&1&1&0&0\\&0&1&-&0&0&0&1&0&0\\&0&0&0&-&0&0&0&0&1\\&0&0&0&-&-&0&0&0&0\\&0&0&0&0&0&-&0&0&1\\&0&0&0&1&0&0&-&0&0\\&0&0&0&0&0&1&1&-&0\\&1&0&0&0&0&0&0&1&-\\\end{array} \right]\end{equation*}$

Matriks E memberikan urutan pilihan dari setiap alternatif , yaitu bilaEkl = 1 maka alternatif Ak merupakan alternatif yang lebih baik daripada Al. Sehingga , baris dalam matriks E yang memiliki jumlah Ekl = 1 paling sedikit dapat di eleminasi. Dengan demikian baris pertama, kedua, dan keempat dapat dieleminasi dan tersisa baris ketiga. Nilai E32 = 1 menunjukkan bahwa alternatif ketiga lebih baik dari alternatif kesatu, kedua, dan keempat. Sehingga pengambil keputusan akan mengambil alternatif ketiga ( 3 ).

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;

Awalnya membuat dulu database dengan nama db_dss jika belum ada database dengan nama tersebut, kemudian gunakan database tersebut dengan memakai sintak USE db_dss;

3.1.1. 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)',3),
(3,'jarak dari pabrik(km)',5),
(4,'jarak dengan gudang yang sudah ada (km)',3),
(5,'harga tanah untuk lokasi (x1000 Rp/m2)',3);

3.1.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,'Pulo Gebang'),
(2,'Ancol'),
(3,'Cengkareng'),
(4,'Kelapa Gading'),
(5,'Pulomas'),
(6,'Sunter'),
(7,'Cikarang'),
(8,'Cibitung'),
(9,'Pluit');

3.1.3. 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,4),(1,2,1),(1,3,3),(1,4,5),(1,5,1),
(2,1,1),(2,2,5),(2,3,3),(2,4,4),(2,5,2),
(3,1,1),(3,2,5),(3,3,2),(3,4,3),(3,5,3),
(4,1,3),(4,2,3),(4,3,5),(4,4,3),(4,5,3),
(5,1,1),(5,2,2),(5,3,3),(5,4,2),(5,5,1),
(6,1,3),(6,2,1),(6,3,3),(6,4,1),(6,5,2),
(7,1,4),(7,2,4),(7,3,2),(7,4,3),(7,5,1),
(8,1,2),(8,2,5),(8,3,3),(8,4,3),(8,5,3),
(9,1,3),(9,2,1),(9,3,4),(9,4,5),(9,5,2);

3.2. 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);
}
?>

Sesuaikan nilai-nilai $dbhost,$dbuser,$dbpass dan $dbname dengan konfigurasi database yg digunakan.

3.3. Langkah-langkah ELECTRE

3.3.1. Membentuk Perbandingan Berpasangan (X)

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];
  }
?>

3.3.2. Membuat Matriks Perbandingan Berpasangan Ternormalisasi (R)

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)

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)

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)

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)

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)

Dalam script PHP perhitungan untuk membentuk data matriks Concordance (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)

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

<?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

<?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)

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

Membentuk Matrik Discordance Dominan(G)

<?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)

<?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->A7 (A7 didominasi oleh A1)
A2->A3 (A3 didominasi oleh A2)
A2->A6 (A6 didominasi oleh A2)
A2->A7 (A7 didominasi oleh A2)
A3->A2 (A2 didominasi oleh A3)
A3->A7 (A7 didominasi oleh A3)
A4->A9 (A9 didominasi oleh A4)
A6->A9 (A9 didominasi oleh A6)
A7->A4 (A4 didominasi oleh A7)
A8->A6 (A6 didominasi oleh A8)
A8->A7 (A7 didominasi oleh A8)
A9->A1 (A1 didominasi oleh A9)
A9->A8 (A8 didominasi oleh A9)

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