Metode COmbinative Distance-based Assessment (CODAS) merupakan salah satu metode pengambilan keputusan multikriteria berdasarkan pada jarak Euclidian dan Taxicab dari nilai ideal negatif.
author : cahya dsn
,
published on : July 23rd, 2020
updated on : June 15th, 2022
Metode COmbinative Distance-based Assessment CODAS diperkenalakan oleh Keshavarz-Ghorabaee untuk menyelesaikan permasalahan Multi-Criteria Decision-Making (MCDM) pada tahun 2016
Dalam metode ini, suatu alternatif yang diinginkan ditentukan dengan enggunakan dua pengukuran. Pengukuran yang pertama dan utama adalah dengan perhitungan jarak Euclidian dari suatu alternatif dengan alternatif ideal negatif.(Keshavarz-Ghorabaee 2016
).
Metode COmbinative Distance-based Assessment CODAS diperkenalkan oleh Keshavaraz - Ghorabaee,et all pada tahun 2016. Dalam melakukan menyelesaikan masalah dan perangkingan, metode CODAS memiliki beberapa langkah yaitu:
Pada matriks keputusan (X), baris menunjukkan Alternatif dan kolom menunjukkan kriteria. Matriks keputusan menunjukkan kinerja dari masing-masing alternatif terhadap berbagai kriteria
xij ($x_{ij}\geq0$) menunjukkan nilai kinerja alternatif ke-i
pada kriteria ke-j
, m adalah banyaknya alternatif sedangkan n adalah banyaknya kriteria ($i \in \{1,2,3,.. m\}$ dan $j \in \{1,2,3,..,m\}$).
Dari matriks keputusan (X
) yang diperoleh, dibuat matriks Normalisasi (N
)-nya dengan persamaan:
dimana nilai dari Nb
dan Nc
adalah masing-masing untuk kriteria benefit dan cost
Nilai normalisasi terbobot (R
) dihitung dengan persamaan sebagai berikut :
dimana $w_{j} (0 < w_{j}<1)$ merupakan nilai bobot (weight) dari kriteria ke $j$, sedangkan :
Tahap berikutnya adalah menentukan nilai Ideal Negatif (NS
) untuk tiap-tiap kriteria, yang diperhitungakan dari data semua alternatif. Matriks Nilai Ideal Negatif yang terbentuk adalah :
dimana nilai dari $ns_{j}$ adalah merupakan nilai ternormalisasi terbobot (R
) terkecil/minimum untuk setiap kriteria ke $j$:
Jarak Euclidian (E
) untuk setiap alternatif ke-$i$ diperhitungkan dengan persamaan sebagai berikut :
Sedangkan Jarak Taxicab (T
) untuk setiap alternatif ke-$i$ diperhitungkan dengan persamaan :
dimana nilai $k \in \{1,2, ... , n\}$ dan $\psi$ menunjukkan fungsi ambang batas untuk mengenali perbandingan jarak Euclidean dari dua alternatif, dan dirumuskan sebagai berikut :
Dalam fungsi tersebut, nilai $\tau$ adalah nilai parameter ambang batas yang dapat ditentukan oleh pengambil keputusan. Nilai yang disarankan untuk nilai parameter ini adalah antara $0.01$ sampai dengan $0.05$. Sedangkan nilai $|x|$ adalah nilai absolute dari selisih nilai jarak Euclidean dari alternatif ke-i
($E_i$) dengan alternatif ke-k
($E_k$)
Berikutnya adalah menghitung nilai Assessment Score H
untuk setiap alternatif sebagai berikut:
Tahap yang terakhir adalah perangkingan dari nilai Assessment Score H
dari nilai yang tertinggi hingga yang terendah. Alternatif dengan nilai yang tertinggi menunjukkan alternatif yang terbaik.
Penerapan metode CODAS (COmbinative Distance-based ASsesmen) diharapkan mampu membantu dalam menentukan supplier yang terbaik dari beberapa alternatif supplier yang ditawarkan.
PT Loba Rasa Cakery (LRC) yang bergerak dalam bidang produksi Cake & Bakery memerlukan pasokan bahan baku roti dan kue yang berkelanjutan untuk usahanya. Seiring dengan semakin meningkatnya permintaan pasar terhadap produknya, LRC memerlukan dukungan pasokan dari supplier yang memenuhi 8 kriteria yang diharapkan, yaitu Fleksibilitas, Pengiriman, Biaya langsung, Transportasi, Kebijakan Garansi, Histori Performansi, Kualitas, dan Responsibilitas
.
Penggunaan metode COmbinative Distance-based ASsesmen (CODAS) diharapkan dapat membantu pembuat kebijakan untuk menentukan supplier yang terbaik, berdasarkan kritera-kriteria yang sudah ditentukan dan alternatif-alternatif supplier yang ada. Alternatif lokasi yang akan dipilih ada 10 supplier, yaitu Boga Utama, Pangan Sejahtera, Rasa Sejahtera, Rasa Prima, Organik Utama, Fresh Prima, Boga Mandiri, Pangan Inti, Pangan Prima, dan Boga Extra
Pada kasus penentuan pemilihan supplier terbaik ini telah ditentukan 8 buah kriteria yang diperhitungkan, yaitu Fleksibilitas, Pengiriman, Biaya langsung, Transportasi, Kebijakan Garansi, Histori Performansi, Kualitas, dan Responsibilitas dengan rincian bobot penilaian seperti pada TABEL 1 berikut :
Kode | Kriteria | Tipe[1] | Bobot[2] |
---|---|---|---|
C1 | Fleksibilitas | benefit | 0.115 |
C2 | Pengiriman | benefit | 0.180 |
C3 | Biaya langsung | cost | 0.164 |
C4 | Transportasi | cost | 0.131 |
C5 | Kebijakan Garansi | benefit | 0.098 |
C6 | Histori Performansi | benefit | 0.082 |
C7 | Kualitas | benefit | 0.230 |
C8 | Responsibilitas | benefit | 0.066 |
Data-data awal yang akan diperhitungkan dengan metoda CODAS ini adalah seperti yang tercantum dalam TABEL 2 berikut ini [3]
Alternatif | Kriteria | ||||||||
---|---|---|---|---|---|---|---|---|---|
Kode | Nama | C1 | C2 | C3 | C4 | C5 | C6 | C7 | C8 |
A1 | Boga Utama | 3 | 5 | 7 | 8 | 4 | 3 | 5 | 4 |
A2 | Pangan Sejahtera | 4 | 5 | 6 | 7 | 8 | 5 | 5 | 2 |
A3 | Rasa Sejahtera | 2 | 3 | 6 | 7 | 5 | 4 | 5 | 2 |
A4 | Rasa Prima | 1 | 4 | 8 | 8 | 6 | 4 | 3 | 4 |
A5 | Organik Utama | 1 | 5 | 8 | 9 | 4 | 4 | 3 | 3 |
A6 | Fresh Prima | 3 | 4 | 6 | 9 | 6 | 3 | 5 | 4 |
A7 | Boga Mandiri | 3 | 4 | 6 | 7 | 5 | 3 | 4 | 2 |
A8 | Pangan Inti | 1 | 5 | 5 | 7 | 4 | 5 | 3 | 3 |
A9 | Pangan Prima | 3 | 4 | 8 | 6 | 4 | 4 | 4 | 2 |
A10 | Boga Extra | 1 | 4 | 4 | 6 | 4 | 4 | 4 | 2 |
Keterangan
Berikut ini akan dijabarkan perhitungan dengan metoda CODAS secara manual lengkah demi langkah untuk memudahkan pemahaman terhadap metoda CODAS ini
X
)Langkah pertama adalah membuat matriks keputusan (X
) dari data awal yang ada. Dari data pada TABEL 2 dapat dibuat matriks keputusan sebagai berikut :
Pada matriks keputusan (X
) tersebut, data pada baris ke-i
adalah menunjukan data dari Alternatif ke-i
; scodngkan data pada kolom ke-j
menunjukkan kriteria ke-j
. Misalnya untuk data x6,4
menunjukkan data untuk alternatif ke 6 yaitu Fresh Prima untuk kriteria ke 4 (Transportasi) dengan nilai 9
Secara lengkap, matriks keputusan (X
) yang diperoleh dapat ditampilkan dalam bentuk tabel sebagai berikut
Alternatif | Kriteria | ||||||||
---|---|---|---|---|---|---|---|---|---|
Kode | Nama | C1 | C2 | C3 | C4 | C5 | C6 | C7 | C8 |
A1 | Boga Utama | 3 | 5 | 7 | 8 | 4 | 3 | 5 | 4 |
A2 | Pangan Sejahtera | 4 | 5 | 6 | 7 | 8 | 5 | 5 | 2 |
A3 | Rasa Sejahtera | 2 | 3 | 6 | 7 | 5 | 4 | 5 | 2 |
A4 | Rasa Prima | 1 | 4 | 8 | 8 | 6 | 4 | 3 | 4 |
A5 | Organik Utama | 1 | 5 | 8 | 9 | 4 | 4 | 3 | 3 |
A6 | Fresh Prima | 3 | 4 | 6 | 9 | 6 | 3 | 5 | 4 |
A7 | Boga Mandiri | 3 | 4 | 6 | 7 | 5 | 3 | 4 | 2 |
A8 | Pangan Inti | 1 | 5 | 5 | 7 | 4 | 5 | 3 | 3 |
A9 | Pangan Prima | 3 | 4 | 8 | 6 | 4 | 4 | 4 | 2 |
A10 | Boga Extra | 1 | 4 | 4 | 6 | 4 | 4 | 4 | 2 |
N
)Matrik Normalisai (N
) untuk dari data tiap-tiap alternatif dan kriteria diperhitungkan berdasarkan persamaan COD-02. Untuk data yang bertipe benefit, sebagai contoh untuk data $x_{6,6}$ diperhitungkan sebagai berikut
$\begin{align} n_{6,6}&=\frac{x_{6,6}}{max_{6}} \\ &=\frac{3}{5} \\ &=0.600\end{align}$
Sedangkan untuk kriteria yang bertipe cost diperhitungkan seperti untuk data $x_{6,4}$ sebagai berikut
$\begin{align} n_{6,4}&=\frac{min_{4}}{x_{6,4}} \\ &=\frac{6}{9} \\ &=0.667\end{align}$
Dengan perhitungan yang sama, dilakukan perhitungan nilai normalisai N
untuk data-data yang lain sehingga diperoleh matriks Normalisasi N
sebagai berikut:
$N=\left[\begin{array}{cccccccc} \\ 0.750 & 1.000 & 0.571 & 0.750 & 0.500 & 0.600 & 1.000 & 1.000 \\ 1.000 & 1.000 & 0.667 & 0.857 & 1.000 & 1.000 & 1.000 & 0.500 \\ 0.500 & 0.600 & 0.667 & 0.857 & 0.625 & 0.800 & 1.000 & 0.500 \\ 0.250 & 0.800 & 0.500 & 0.750 & 0.750 & 0.800 & 0.600 & 1.000 \\ 0.250 & 1.000 & 0.500 & 0.667 & 0.500 & 0.800 & 0.600 & 0.750 \\ 0.750 & 0.800 & 0.667 & 0.667 & 0.750 & 0.600 & 1.000 & 1.000 \\ 0.750 & 0.800 & 0.667 & 0.857 & 0.625 & 0.600 & 0.800 & 0.500 \\ 0.250 & 1.000 & 0.800 & 0.857 & 0.500 & 1.000 & 0.600 & 0.750 \\ 0.750 & 0.800 & 0.500 & 1.000 & 0.500 & 0.800 & 0.800 & 0.500 \\ 0.250 & 0.800 & 1.000 & 1.000 & 0.500 & 0.800 & 0.800 & 0.500 \\ \end{array}\right] $
Secara lengkap, matriks Normalisasi (N) yang diperoleh dapat ditampilkan dalam bentuk tabel sebagai berikut
Alternatif | Kriteria | ||||||||
---|---|---|---|---|---|---|---|---|---|
Kode | Nama | C1 | C2 | C3 | C4 | C5 | C6 | C7 | C8 |
A1 | Boga Utama | 0.750 | 1.000 | 0.571 | 0.750 | 0.500 | 0.600 | 1.000 | 1.000 |
A2 | Pangan Sejahtera | 1.000 | 1.000 | 0.667 | 0.857 | 1.000 | 1.000 | 1.000 | 0.500 |
A3 | Rasa Sejahtera | 0.500 | 0.600 | 0.667 | 0.857 | 0.625 | 0.800 | 1.000 | 0.500 |
A4 | Rasa Prima | 0.250 | 0.800 | 0.500 | 0.750 | 0.750 | 0.800 | 0.600 | 1.000 |
A5 | Organik Utama | 0.250 | 1.000 | 0.500 | 0.667 | 0.500 | 0.800 | 0.600 | 0.750 |
A6 | Fresh Prima | 0.750 | 0.800 | 0.667 | 0.667 | 0.750 | 0.600 | 1.000 | 1.000 |
A7 | Boga Mandiri | 0.750 | 0.800 | 0.667 | 0.857 | 0.625 | 0.600 | 0.800 | 0.500 |
A8 | Pangan Inti | 0.250 | 1.000 | 0.800 | 0.857 | 0.500 | 1.000 | 0.600 | 0.750 |
A9 | Pangan Prima | 0.750 | 0.800 | 0.500 | 1.000 | 0.500 | 0.800 | 0.800 | 0.500 |
A10 | Boga Extra | 0.250 | 0.800 | 1.000 | 1.000 | 0.500 | 0.800 | 0.800 | 0.500 |
R
)Setelah didapat nilai normalisasinya (N
), berikutnya adalah membuat Matriks Normalisasi Terbobot (R
) maka berdasarkan persamaan COD-03 dan COD-04 dapat dicari nilai R
-nya. Sebagai contoh untuk kriteria ke-4
(Transportasi) pada alternatif ke-6 (Fresh Prima) bisa dihitung nilai r6,4
sebagai berikut:
$\begin{align} r_{6,4}&= w_{4} \times n_{6,4} \\ &=0.131 \times 0.667 \\ &=0.087 \\ \end{align}$
Dengan perhitungan yang sama untuk semua data dari matriks normalisasi (N
) diperoleh data matriks normalisasi terbobot (R
) seperti dalam TABEL 5 berikut ini:
No. | Alternatif | R | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
Kode | Nama | C1 | C2 | C3 | C4 | C5 | C6 | C7 | C8 | |
1 | A1 | Boga Utama | 0.086 | 0.180 | 0.094 | 0.098 | 0.049 | 0.049 | 0.230 | 0.066 |
2 | A2 | Pangan Sejahtera | 0.115 | 0.180 | 0.109 | 0.112 | 0.098 | 0.082 | 0.230 | 0.033 |
3 | A3 | Rasa Sejahtera | 0.057 | 0.108 | 0.109 | 0.112 | 0.061 | 0.066 | 0.230 | 0.033 |
4 | A4 | Rasa Prima | 0.029 | 0.144 | 0.082 | 0.098 | 0.074 | 0.066 | 0.138 | 0.066 |
5 | A5 | Organik Utama | 0.029 | 0.180 | 0.082 | 0.087 | 0.049 | 0.066 | 0.138 | 0.049 |
6 | A6 | Fresh Prima | 0.086 | 0.144 | 0.109 | 0.087 | 0.074 | 0.049 | 0.230 | 0.066 |
7 | A7 | Boga Mandiri | 0.086 | 0.144 | 0.109 | 0.112 | 0.061 | 0.049 | 0.184 | 0.033 |
8 | A8 | Pangan Inti | 0.029 | 0.180 | 0.131 | 0.112 | 0.049 | 0.082 | 0.138 | 0.049 |
9 | A9 | Pangan Prima | 0.086 | 0.144 | 0.082 | 0.131 | 0.049 | 0.066 | 0.184 | 0.033 |
10 | A10 | Boga Extra | 0.029 | 0.144 | 0.164 | 0.131 | 0.049 | 0.066 | 0.184 | 0.033 |
NS
)Nilai NS
merupakan adalah merupakan nilai ternormalisasi terbobot (R
) terkecil/minimum untuk setiap kriteria ke j
. Sebagai contoh, sesuai dengan persamaan COD-05 dan COD-06 didapat nilai NS4
, yaitu nilai Ideal Negatif untuk kriteria ke-4
(Transportasi)) sebagai berikut :
$\begin{align} ns_{4}&= \substack{\text{min} \\i} r_{i,4}\\ &=\text{min}\{r_{1,4}, r_{2,4}, r_{3,4}, r_{4,4}, r_{5,4}, r_{6,4}, r_{7,4}, r_{8,4}, r_{9,4}, r_{10,4}\}\\ &=\text{min}\{0.098, 0.112, 0.112, 0.098, 0.087, 0.087, 0.112, 0.112, 0.131, 0.131\}\\ &=0.087\\ \end{align}$
Nilai dari ns4
diambil dari nilai minimum (terkecil) dari nilai ternormalisasi terbobot R
dari setiap alternatif untuk kriteria ke-4
Setelah dilakukan perhitungan yang sama untuk kriteria-kriteria yang lain, maka diperoleh nilai Ideal Negatif NS
seperti dalam TABEL 6 berikut ini :
No. | Kriteria | NS | |
---|---|---|---|
Kode | Nama | ||
1 | C1 | Fleksibilitas | 0.029 |
2 | C2 | Pengiriman | 0.108 |
3 | C3 | Biaya langsung | 0.082 |
4 | C4 | Transportasi | 0.087 |
5 | C5 | Kebijakan Garansi | 0.049 |
6 | C6 | Histori Performansi | 0.049 |
7 | C7 | Kualitas | 0.138 |
8 | C8 | Responsibilitas | 0.033 |
E/T
)Berdasarkan persamaan COD-07 Jarak Euclidian (E
) untuk setiap alternatif ke-i dapat dihitung, semisal untuk alternatif ke-6
(Fresh Prima) dapat ditentukan nilai Jarak Euclidian-nya (E6
) seperti perhitungan berikut:
$\begin{align} E_{6}&=\sqrt{\sum^{m}_{j=1}(r_{6,j}-ns_{j})^2}\\ &=\sqrt{(r_{6,1}-ns_{1})^2+(r_{6,2}-ns_{2})^2+(r_{6,3}-ns_{3})^2+(r_{6,4}-ns_{4})^2+(r_{6,5}-ns_{5})^2+(r_{6,6}-ns_{6})^2+(r_{6,7}-ns_{7})^2+(r_{6,8}-ns_{8})^2}\\ &=\sqrt{(0.086-0.029)^2+(0.144-0.108)^2+(0.109-0.082)^2+(0.087-0.087)^2+(0.074-0.049)^2+(0.049-0.049)^2+(0.230-0.138)^2+(0.066-0.033)^2}\\ &=\sqrt{(0.057)^2+(0.036)^2+(0.027)^2+(0.000)^2+(0.025)^2+(0.000)^2+(0.092)^2+(0.033)^2}\\ &=\sqrt{0.003+0.001+0.001+0.000+0.001+0.000+0.008+0.001}\\ &=\sqrt{0.015446863149094}\\ &=0.12428541004114\end{align}$
Sedangkan nilai Jarak Taxicab (T
) dari alternatif ke 6
(Fresh Prima) yaitu nilai T6
-nya di perhitungkan sebagai berikut:
$\begin{align} T_{6}&=\sum^{m}_{j=1} |r_{6,j}-ns_{j}|\\ &=|r_{6,1}-ns_{1}|+|r_{6,2}-ns_{2}|+|r_{6,3}-ns_{3}|+|r_{6,4}-ns_{4}|+|r_{6,5}-ns_{5}|+|r_{6,6}-ns_{6}|+|r_{6,7}-ns_{7}|+|r_{6,8}-ns_{8}|\\ &=|0.086-0.029|+|0.144-0.108|+|0.109-0.082|+|0.087-0.087|+|0.074-0.049|+|0.049-0.049|+|0.230-0.138|+|0.066-0.033|\\ &=|0.057|+|0.036|+|0.027|+|0.000|+|0.025|+|0.000|+|0.092|+|0.033|\\ &=0.057+0.036+0.027+0.000+0.025+0.000+0.092+0.033\\ &=0.26994535519126\end{align}$
Untuk alternatif-alternatif yang lain bisa dihitung nilai E
/T
-nya dengan cara yang sama, dan hasilnya adalah sebagai berikut:
No. | Alternatif | E | T | |
---|---|---|---|---|
Kode | Nama | |||
1 | A1 | Boga Utama | 0.13511 | 0.27674 |
2 | A2 | Pangan Sejahtera | 0.16094 | 0.38427 |
3 | A3 | Rasa Sejahtera | 0.10508 | 0.20148 |
4 | A4 | Rasa Prima | 0.05804 | 0.12076 |
5 | A5 | Organik Utama | 0.07577 | 0.10492 |
6 | A6 | Fresh Prima | 0.12429 | 0.26995 |
7 | A7 | Boga Mandiri | 0.09067 | 0.20394 |
8 | A8 | Pangan Inti | 0.09793 | 0.19547 |
9 | A9 | Pangan Prima | 0.09423 | 0.19945 |
10 | A10 | Boga Extra | 0.11093 | 0.22404 |
RA
)Matriks Relative Assessment (RA
) dibentuk berdasarkan pada persamaan COD-09, COD-10, dan COD-11. Nilai parameter ambang batas ($\tau$) pada contoh kasus ini adalah sebesar 0.01
[4] . Sebagai contoh perhitungan, untuk nilai $h_{6,1}$ diperhitungkan sebagai berikut:
$\begin{align} h_{6,1}&=(E_{i}-E_{1})+(\psi (E_{6}-E_{1})\times(T_{6}-T_{1})) \\ &=(0.124-0.135)+(\psi (0.124-0.135)\times(0.270-0.277)) \\ &=(-0.011)+(\psi (-0.011)\times(-0.007)) \\ &\text{dengan nilai }\tau=0.01,\text{ maka diperoleh nilai } \psi (-0.011) = 1, \text{ sehingga diperoleh } \\ h_{6,1}&=-0.011+(1 \times -0.007) \\ &=-0.011+-0.007 \\ &=-0.018\end{align}$
Dengan menghitung semua nilai hi,k
dari semua alternatif yang ada, diperoleh hasil seperti terlihat di TABEL 8 berikut ini:
No | Alternatif | A1 | A2 | A3 | A4 | A5 | A6 | A7 | A8 | A9 | A10 |
---|---|---|---|---|---|---|---|---|---|---|---|
1 | A1 | 0.000 | -0.133 | 0.105 | 0.233 | 0.231 | 0.018 | 0.117 | 0.118 | 0.118 | 0.077 |
2 | A2 | 0.133 | 0.000 | 0.239 | 0.366 | 0.365 | 0.151 | 0.251 | 0.252 | 0.252 | 0.210 |
3 | A3 | -0.105 | -0.239 | 0.000 | 0.128 | 0.126 | -0.088 | 0.012 | 0.007 | 0.013 | -0.006 |
4 | A4 | -0.233 | -0.366 | -0.128 | 0.000 | -0.002 | -0.215 | -0.116 | -0.115 | -0.115 | -0.156 |
5 | A5 | -0.231 | -0.365 | -0.126 | 0.002 | 0.000 | -0.214 | -0.114 | -0.113 | -0.113 | -0.154 |
6 | A6 | -0.018 | -0.151 | 0.088 | 0.215 | 0.214 | 0.000 | 0.100 | 0.101 | 0.101 | 0.059 |
7 | A7 | -0.117 | -0.251 | -0.012 | 0.116 | 0.114 | -0.100 | 0.000 | -0.007 | -0.004 | -0.040 |
8 | A8 | -0.118 | -0.252 | -0.007 | 0.115 | 0.113 | -0.101 | 0.007 | 0.000 | 0.004 | -0.042 |
9 | A9 | -0.118 | -0.252 | -0.013 | 0.115 | 0.113 | -0.101 | 0.004 | -0.004 | 0.000 | -0.041 |
10 | A10 | -0.077 | -0.210 | 0.006 | 0.156 | 0.154 | -0.059 | 0.040 | 0.042 | 0.041 | 0.000 |
H
)Langkah berikutnya dalam metode CODAS ini adalah menghitung Nilai Assessment Score (H
) berdasarkan persamaan COD-12. Semisal untuk nilai Assessment Score untuk alternatif ke-6
(Fresh Prima) adalah sebagai berikut:
$\begin{align} H_{6}&=\sum_{k=1}^{10}h_{6,k}\\ &=h_{6,1}+h_{6,2}+h_{6,3}+h_{6,4}+h_{6,5}+h_{6,6}+h_{6,7}+h_{6,8}+h_{6,9}+h_{6,10}\\ &=(-0.018)+(-0.151)+0.088+0.215+0.214+0.000+0.100+0.101+0.101+0.059\\ &=0.70829605002314\end{align}$
Melalui perhitungan yang serupa dapat dihitung untuk nilai Assessment Score dari alternatif-alternatif yang lainnya, sehingga diperoleh hasil seperti terlihat pada TABEL 9 berikut ini:
No | Alternatif | Assessment Score (H) | |
---|---|---|---|
Kode | Nama | ||
1 | A1 | Boga Utama | 0.88444635041747 |
2 | A2 | Pangan Sejahtera | 2.2181070173426 |
3 | A3 | Rasa Sejahtera | -0.15185273857605 |
4 | A4 | Rasa Prima | -1.4459676020449 |
5 | A5 | Organik Utama | -1.4271775033965 |
6 | A6 | Fresh Prima | 0.70829605002314 |
7 | A7 | Boga Mandiri | -0.30082196329181 |
8 | A8 | Pangan Inti | -0.28157399392652 |
9 | A9 | Pangan Prima | -0.29665066779598 |
10 | A10 | Boga Extra | 0.093195051248448 |
Nilai skor penilaian Assessment Score (H
) yang diperoleh dari hasil perhitungan sebelumnya selanjutnya diurutkan dari yang terbesar hingga yang terendah seperti terlihat dalam TABEL 10 seperti berikut ini :
No | Alternatif | Assessment Score (H) | Ranking | |
---|---|---|---|---|
Kode | Nama | |||
1 | A2 | Pangan Sejahtera | 2.2181070173426 | 1 |
2 | A1 | Boga Utama | 0.88444635041747 | 2 |
3 | A6 | Fresh Prima | 0.70829605002314 | 3 |
4 | A10 | Boga Extra | 0.093195051248448 | 4 |
5 | A3 | Rasa Sejahtera | -0.15185273857605 | 5 |
6 | A8 | Pangan Inti | -0.28157399392652 | 6 |
7 | A9 | Pangan Prima | -0.29665066779598 | 7 |
8 | A7 | Boga Mandiri | -0.30082196329181 | 8 |
9 | A5 | Organik Utama | -1.4271775033965 | 9 |
10 | A4 | Rasa Prima | -1.4459676020449 | 10 |
Dari hasil perankingan nilai skor penilaian (AS
) tersebut, diperoleh bahwa lokasi ke-2 (Pangan Sejahtera) dengan skor penilaian sebesar 2.2181070173426
terpilih sebagai pemasok bahan baku yang paling baik, berdasar kriteria-kriteria dan bobot yang sudah ditentukan.
Sebagai pelengkap artikel Metode Evaluation based on Distance from Average Solution (CODAS) pada bagian ini akan dibahas langkah-langkah dalam implementasinya dengan bahasa pemrograman PHP dan database MySQL/MariaDB.
Data-data yang digunakan dalam aplikasi ini adalah data-data yang ada pada contoh kasus sebelumnya
Sebagai bahan pembelajaran aplikasi CODAS 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;
Berdasarkan contoh kasus di atas dibuatkan tabel untuk data-data kriteria sebagai berikut:
-- menghapus tabel cod_criterias jika sudah ada DROP TABLE IF EXISTS cod_criterias; -- membuat tabel cod_criterias jika tidak ada CREATE TABLE IF NOT EXISTS cod_criterias( id_criteria TINYINT(3) UNSIGNED NOT NULL, criteria VARCHAR(100) NOT NULL, weight FLOAT NOT NULL, attribute SET('benefit','cost'), PRIMARY KEY(id_criteria) )ENGINE=MyISAM; -- memasukkan data-data kriteria INSERT INTO cod_criterias(id_criteria,criteria,weight,attribute) VALUES (1,'Fleksibilitas',0.1150,'benefit'), (2,'Pengiriman',0.1800,'benefit'), (3,'Biaya langsung',0.1640,'cost'), (4,'Transportasi',0.1310,'cost'), (5,'Kebijakan Garansi',0.0980,'benefit'), (6,'Histori Performansi',0.0820,'benefit'), (7,'Kualitas',0.2300,'benefit'), (8,'Responsibilitas',0.0660,'benefit');
Data-data mengenai kandidat yang akan dievaluasi seperti yang tertera pada contoh kasus di atas dapat di representasikan dalam tabel database sebagai berikut:
-- menghapus tabel cod_alternatives jika sudah ada DROP TABLE IF EXISTS cod_alternatives; -- membuat tabel cod_alternatives jika tidak ada CREATE TABLE IF NOT EXISTS cod_alternatives( id_alternative SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT, name VARCHAR(30) NOT NULL, PRIMARY KEY(id_alternative) ) ENGINE=MyISAM; -- memasukkan data-data alternatif INSERT INTO cod_alternatives(id_alternative,name) VALUES (1,'Boga Utama'), (2,'Pangan Sejahtera'), (3,'Rasa Sejahtera'), (4,'Rasa Prima'), (5,'Organik Utama'), (6,'Fresh Prima'), (7,'Boga Mandiri'), (8,'Pangan Inti'), (9,'Pangan Prima'), (10,'Boga Extra');
Dalam tabel cod_alternatives
tersebut hanya disimpan id dan nama alternatif-nya; dalam pengembangannya dapat ditambahkan atribut/properti data lainnya, semisal alamat, nomor telepon, email, dan sebagainya sesuai kebutuhan. Namun dalam contoh ini hanya diperlukan namanya saja.
Berikutnya adalah membuat tabel yang berisi hasil evaluasi dari tiap-tiap kandidat(alternatif) terhadap kriteria-kriteria yang diberikan. Data-data yang ada pada contoh kasus di atas dapat di representasikan dalam tabel relasi antara tabel cod_criterias
dengan tabel cod_alternatives
, yaitu tabel cod_evaluations
sebagai berikut:
-- menghapus tabel cod_evaluations jika sudah ada DROP TABLE IF EXISTS cod_evaluations; -- membuat tabel cod_evaluations jika tidak ada CREATE TABLE IF NOT EXISTS cod_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 cod_evaluations(id_alternative,id_criteria,value) VALUES (1,1,3),(1,2,5),(1,3,7),(1,4,8),(1,5,4),(1,6,3),(1,7,5),(1,8,4), (2,1,4),(2,2,5),(2,3,6),(2,4,7),(2,5,8),(2,6,5),(2,7,5),(2,8,2), (3,1,2),(3,2,3),(3,3,6),(3,4,7),(3,5,5),(3,6,4),(3,7,5),(3,8,2), (4,1,1),(4,2,4),(4,3,8),(4,4,8),(4,5,6),(4,6,4),(4,7,3),(4,8,4), (5,1,1),(5,2,5),(5,3,8),(5,4,9),(5,5,4),(5,6,4),(5,7,3),(5,8,3), (6,1,3),(6,2,4),(6,3,6),(6,4,9),(6,5,6),(6,6,3),(6,7,5),(6,8,4), (7,1,3),(7,2,4),(7,3,6),(7,4,7),(7,5,5),(7,6,3),(7,7,4),(7,8,2), (8,1,1),(8,2,5),(8,3,5),(8,4,7),(8,5,4),(8,6,5),(8,7,3),(8,8,3), (9,1,3),(9,2,4),(9,3,8),(9,4,6),(9,5,4),(9,6,4),(9,7,4),(9,8,2), (10,1,1),(10,2,4),(10,3,4),(10,4,6),(10,5,4),(10,6,4),(10,7,4),(10,8,2);
Koneksi ke database server serta pengambilan data-data dari database diperlukan untuk selanjutnya diproses menggunakan metode CODAS.
Dari databse yang sudah dibuat, kita bisa membuat script php untuk membuat koneksi ke database server dengan extension mysqli sebagai berikut:
<?php
//-- konfigurasi database
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$dbname = 'db_dss';
//-- koneksi ke database server dengan extension mysqli
$db = new mysqli($dbhost,$dbuser,$dbpass,$dbname);
//-- hentikan program dan tampilkan pesan kesalahan jika koneksi gagal
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.
Sebelum masuk kebagian inti perhitungan dengan metode CODAS, sebelumnya diambil terlebih dahulu data-data yang akan digunakan dari database. Yang pertama ada data Alternatif. Data ini diambil dari tabel cod_alternatives
dan dimasukkan ke dalam variabel $alternatif
dengan kode script PHP seperti berikut
<?php
//-- inisialisasi variabel array alternatif
$alternatif=array();
$sql='SELECT * FROM cod_alternatives';
$data=$db->query($sql);
while($row = $data->fetch_object()){
$alternatif[$row->id_alternative]=$row->name;
}
?>
Data nama alternatif dimasukkan ke dalam variabel $alternatif
dengan index/key array-nye merupakan id_alternatif
-nya
Data kriteria dan bobot diambil dari tabel cod_criterias
dan dimasukkan dalam variabel array $kriteria
dan $w
sebagai berikut:
<?php
//-- inisialisasi variabel array kriteria dan bobot (W)
$kriteria=Array=array();
$sql='SELECT * FROM cod_criterias';
$data=$db->query($sql);
while($row = $data->fetch_object()){
$kriteria[$row->id_criteria]=array($row->name,$row->attribute);
$w[$row->id_kriteria]=$row->weight;
}
?>
Data kriteria berupa nama kriteria dan atribut/tipe-nya dimasukkan ke dalam variabel array dua dimensi id_criteria
-nya scodngkan index/key yang kedua, jika '0' maka adalah nama kriteria-nya sendangkan jika '1' maka merupakan atribut/tipe-nya. Sebagai contoh untuk $kriteria[2][0]
berisi data nama dari kriteria ke-2 yaitu 'Pengiriman' dengan atribut/tipe 'benefit'
Scodngkan untuk data nilai bobot-nya dimasukkan ke dalam variabel $w
dengan index/key-nya berupa id_kriteria
yang bersesuaian
Bagian berikutnya adalah bagian inti dari perhitungan dengan metode CODAS. Di sini dijelaskan langkah per langkah-nya untuk kode PHP-nya, sesuai dengan langkah-langkah perhitungan CODAS secara manual sebelumnya.
Mengacu pada persamaan COD-01 kita dapat membuat matriks keputusan (X) dengan mengambil data dari tabel cod_evaluations
yang kemudian dimasukkan dalam variable array $X
dengan kode PHP sebagai berikut:
<?php
//-- inisialisasi variabel array matriks keputusan X
$X=array();
//-- ambil nilai dari tabel
$sql='SELECT * FROM cod_evaluations';
$data=$db->query($sql);
while($row = $data->fetch_object()){
$i=$row->id_alternative;
$j=$row->id_criteria;
$X[$i][$j]=$aij;
}
?>
Variable array $X
merupakan array dua dimensi, dimana dimensi yang pertama merupakan index dari alternatif-nya, scodngkan dimensi yang kedua merupakan index kriteria-nya.$X[$i][$j]
berarti merupakan data matrik keputusan untuk alternatif ke $i
dan kriteria ke $j
Dari matrik keputusan X
yang sudah ditentukan dilangkah sebelumnya, kemudian dicari nilai Normalisasinya (N
) dengan script berikut:
<?php
//-- inisialisasi array nilai normalisasi (N)
$N=array();
//-- proses untuk setiap data alternatif ke-i
foreach($X as $i=>$xi){
$N[$i]=array();
//-- proses untuk setiap data alternatif ke-i kriteria ke-j
foreach($xi as $j=>$xij){
if($kriteria[$j][1]=='benefit'){
//-- normalisasi utk kriteria benefit
$N[$i][$j]=$xij/$x_max[$j];
}else{
//-- normalisasi utk kriteria cost
$N[$i][$j]=$x_min[$j]/$xij;
}
}
}
?>
Sesuai dengan persamaan COD-02, untuk normalisasi dari data berkriteria benefit maka nilainya dibagi dengan nilai maksimum $x_max
pada kriteria tersebut; sedangkan untuk data yang berkriteria cost maka nilai normalisasinya adalah merupkan hasil pembagian nilai minimum $x_min
pada kriteria tersebut dibagi dengan nilai datanya.
Nilai-nilai maksimum $x_max
dan minimum $x_min
untuk masing-masing kriteria sebelumnya dicari dengan script sebagai berikut:
<?php
//-- inisialisasi Nilai Min dan Max
$x_min=$x_max=array();
//-- proses untuk setiap data alternatif ke-i
foreach($X as $i=>$xi){
//-- proses untuk setiap data alternatif ke-i kriteria ke-j
foreach($xi as $j=>$xij){
//-- inisialisasi Nilai Min dan Max utk kriteria ke-j
if(!isset($x_min[$j])){
$x_min[$j]=9;
$x_max[$j]=1;
}
//-- menentukan nilai min/max tiap kriteria
$x_min[$j]=($x_min[$j]>$xij)?$xij:$x_min[$j];
$x_max[$j]=($x_max[$j]<$xij)?$xij:$x_max[$j];
}
}
?>
Dalam mencari nilai maksimum $x_max
dan minimum $x_min
untuk tiap-tiap kriteria sebelumnya diinisialisasi dengan nilai sebagai berikut:
$x_min
diinisialisasi dengan nilai yang tertinggi (dalam contoh ini memakai nilai 9, sesuaikan dengan nilai data terbesar yang ada dalam matriks keputusan X
yang diolah)$x_max
diinisialisasi dengan nilai yang terendah (dalam contoh ini memakai nilai 1, sesuaikan dengan nilai data terkecil yang ada dalam matriks keputusan X
yang diolah)Nilai maksimum/minimum untuk setiap kriteria diperoleh dengan membandingkan nilai $x_max
/$x_min
dengan nilai data matriks keputusan X
untuk alternatif ke-i
dan kriteria ke-j
, yaitu nilai variable $xij
dalam script tersebut
R
)Berdasarkan persamaan COD-03 dan COD-04 dibuat script sebagai berikut :
<?php
//-- inisialisasi Nilai Normalisasi Terbobot (R)
$R=array();
foreach($N as $i=>$ni){
//-- inisialisasi Nilai Normalisasi Terbobot Alternatif ke-i (Ri)
$R[$i]=array();
foreach($ni as $j=>$nij){
//-- menentukan Nilai Normalisasi Terbobot Alternatif ke-i kriteria ke-j (Rij)
$R[$i][$j]=$nij*$w[$j];
}
}
?>
Dalam script di atas, nilai normalisasi terbobot R
didapat dari nilai matriks normalisasi N
dikali dengan nilai bobot w
ditiap kriteria-nya.
NS
)Langkah selanjutnya adalah menghitung nilai Ideal Negatif NS
sebagai berikut:
<?php
//-- inisialisasi array NS
$ns=array();
foreach($N as $i=>$ni){
foreach($ni as $j=>$nij){
//-- inisialisasi nilai Ideal Negatif kriteria ke-j (NSj)
if(!isset($ns[$j])) $ns[$j]=1;
//-- menentukan nilai minimum per kriteria
$ns[$j]=$ns[$j]>$R[$i][$j]?$R[$i][$j]:$ns[$j];
}
}
?>
Nilai Ideal Negatif NS
adalah nilai terkecil (minimum) untuk setiap kriteria. Sebelumnya untuk tiap-tiap kriteria nilai Ideal NEgatif untuk kriteria ke-j ($ns[$j]
) diinisialisasi dengan nilai tertinggi yang mungkin yaitu 1
, untuk kemudian dibandingan dengan nilai Normalisasi Terbobot untuk kriteria-j
dari setiap alternatif ke-i
($R[$i][$j]
) untuk diambil nilai yang lebih kecil.
E/T
)Langkah berikutnya adalah menghitung Jarak Euclidian dan Taxicab T
dengan script berikut ini:
<?php
//-- inisialisasi array nilai jarak Euclidean dan Taxicab (E/T)
$E=$T=array();
foreach($R as $i=>$ri){
//-- inisialisasi nilai jarak Euclidean dan Taxicab (E/T) alternatif ke-i
$E[$i]=0;
$T[$i]=0;
foreach($ri as $j=>$rij){
//-- menghitung jumlah kuadrat selisih nilai
$E[$i]+=($rij-$ns[$j])*($rij-$ns[$j]);
//-- menghitung jarak Taxicab
//-- menhitung jumlah absolute selisih nilai
$T[$i]+=abs($rij-$ns[$j]);
}
}
//-- menghitung akar kuadarat jumlah kuadrat nilai selisih
foreach($E as $i=>$e){
$E[$i]=sqrt($e);
}
?>
RA
)Berdasarkan persamaan COD-09 sampai dengan COD-11 kemudian dicari nilai Relative Assessments dengan script berikut:
<?php
//-- fungsi ambang batas Jarak Euclidean
function f_tau($x,$tau){
$v_tau=abs($x)<$tau?0:1;
return $v_tau;
}
//-- membuat matriks ralative Assessment RA
$h=array();
for($i=1;$i<=$jml_alternative;$i++){
$h[$i]=array();
for($k=1;$k<=$jml_alternative;$k++){
//-- menghitung selisih jarak Euclidian antara alternatif ke-i dan ke-k
$delta=$E[$i]-$E[$k];
//-- menghitung nilai item Relative Assessment
$h[$i][$k]=$delta+f_tau($delta,$tau)*($T[$i]-$T[$k]);
}
}
?>
Pada dasarnya nilai item matriks Relative Assessment (RA
) untuk alternatif ke-i
terhadap alternatif ke-k
adalah nilai hi,k
adalah merupakan nilai selisih jarak Euclidian alternatif ke-i
dengan alternatif ke-K
(Ei-Ek
) dalam ambang batas tertentu ($\tau$); di luar (ambang batas) tersebut maka merupakan nilai selisih jarak Taxicab dari alternatif ke-i
dengan alternatif ke-k
(Ti-Tk
).
Mengacu pada persamaan COD-12 dicari Nilai assessment Score (H
) dengan script sebagai berikut:
<?php
//-- menghitung nilai Assessment score H
$H=array();
for($i=1;$i<=$jml_alternative;$i++){
$H[$i]=0;
foreach($h[$i] as $hi){
$H[$i]+=$hi;
}
}
?>
Nilai assessment Score untuk alternatif kei
($H[$i]
) merupakan jumlah keselurah nilai item matriks Relative Assessment dari alternatif $i
terhadap alternatif-alternatif yang lain.
<?php
//-- mengurutkan secara descending
arsort($H);
//-- ambil key-index yang pertama
$terpilih=key($H);
echo "Dari hasil perhitungan dipilih alternatif ke-{$terpilih}"
." ({$alternatif[$terpilih]}) <br>dengan nilai skor penilaian "
." sebesar {$H[$terpilih]}";
?>
Data nilai skor penilaian $H
diurutkan secara descending dengan fungsi arsort()
untuk mengurutkan berdasarkan nilay array namun tetap mempertahankan key-index-nya. Setelah diurutkan, maka item array yang pertama adalah nilai skor penilaian H
yang terpilih, dan key-index-nya menunjukkan alternatif ke-i
. Key-index ini diambil dengan fungsi key()
, dan selanjutnya ditampilkan hasilnya dengan mengambil nilai dari variabel array $alternatif
dengan key-index yang didapat dari baris sebelumnya, yaitu dalam variabel $terpilih
. Hasil yang ditampilkan kurang lebih, sebagai berikut :
Dari hasil perhitungan dipilih alternatif ke-2 (Pangan Sejahtera)
dengan nilai skor penilaian sebesar 2.2181070173426
Source code selengkapnya bisa dilihat di tautan ini source
Beberapa simpulan yang bisa diambil dari contoh kasus pemilihan supplier terbaik dengan metoda Combinative Distance-Based Assessment (CODAS) ini adalah: