Decision Support System Series

COmplex PRoportional Assessment (COPRAS)

Contoh implementasi DSS (Decision Support System) dengan dengan Metode COmplex PRoportional Assessment (COPRAS) menggunakan PHP dan MySQL untuk pemilihan supplier terbaik

Metode COmplex PRoportional Assessment (COPRAS) mengasumsikan ketergantungan langsung dan proporsional dari tingkat signifikansi dan utilitas dari alternatif yang ada dengan adanya kriteria yang saling bertentangan. Ini memperhitungkan kinerja alternatif sehubungan dengan kriteria yang berbeda dan juga bobot kriteria yang sesuai.

author : cahya dsn, published on : July 2nd, 2023 updated on : August 20th, 2023

minerva minerva donasi donation

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

Pre-requisites

  • Pemahaman terhadap dasar-dasar Sistem Pengambilan Keputusan
  • Pemahaman terhadap dasar-dasar teknologi Web,HTML dan CSS
  • Pemahaman terhadap dasar-dasar basis data/database, terutama query SQL pada MySQL/mariaDB
  • Pemahaman terhadap dasar-dasar pemrograman PHP, terutama fungsi-fungsi koneksi database dan pengelolaan tipe data array

1.1. Tahapan Metode COPRAS

Metode COmplex PRoportional Assessment COPRAS memiliki kemampuan untuk memperhitungkan kriteria positif (menguntungkan) dan negatif (tidak menguntungkan), yang dapat dinilai secara terpisah dalam proses evaluasi. Fitur terpenting yang membuat metode COPRAS lebih unggul dari metode lainnya adalah dapat digunakan untuk menghitung tingkat utilitas alternatif yang menunjukkan sejauh mana alternatif yang diambil untuk perbandingan. (Sihite, 2020)

Langkah-langkah metode COPRAS adalah sebagai berikut:

1.1.1. Pembentukan Matriks Keputusan (Decision Making Matrix - X)

Pada matriks keputusan (X), baris menunjukkan Alternatif dan kolom menunjukkan kriteria. Matriks keputusan menunjukkan kinerja dari masing-masing alternatif terhadap berbagai kriteria

$X=[x_{ij}]_{m*n}=\left[\begin{array}{ccccc} x_{11} & \ldots & x_{1j} & \ldots & x_{1n} \\ \vdots & \ddots & \vdots & \ddots & \vdots \\ x_{i1} & \ldots & x_{ij} & \ldots & x_{in} \\ \vdots & \ddots & \vdots & \ddots & \vdots \\ x_{m1} & \ldots & x_{m2} & \ldots & x_{mn} \\ \end{array}\right] (i=1,2,...,m; j=1,2,...,n)$
.. [COP-01]

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\}$).

1.1.2. Membentuk Matriks Normalisasi (R)

Dari matriks keputusan (X) yang diperoleh, dibuat matriks Normalisasi (R)-nya dengan persamaan:

$R=[r_{ij}]_{m*n}=\frac{x_{ij}}{\Sigma_{j=1}^n x_{ij}}$
.. [COP-02]

1.1.3. Menentukan Matriks Normalisasi Terbobot (D)

Nilai normalisasi terbobot (D) dihitung dengan persamaan sebagai berikut :

$D=[d_{ij}]_{m*n}=r_{ij}\times w_{j} \ \ (i=1,2,...,m; j=1,2,...,n)$
.. [COP-03]

dimana $w_{j} (0 < w_{j}<1)$ merupakan nilai bobot (weight) dari kriteria ke $j$, sedangkan :

$\sum_{i=1}^{m}d_{ij}=w_{j}$
.. [COP-04]

1.1.4. Menentukan Nilai Signifikansi (S) Positif dan Negatif

Tahap berikutnya adalah menentukan nilai Signifikansi (S) untuk tiap-tiap alternatif, yang diperhitungakan dari data semua alternatif. Nilai Signifikansi Positif (Si+) yang terbentuk adalah :

$S_{i}^{+}=\sum_{j=1}^{n}d_{ij}^{+}$
.. [COP-05]

dimana nilai dari $d_{ij}^{+}$ adalah merupakan nilai ternormalisasi terbobot (D) untuk setiap kriteria ke $j$ yang mempunyai atribut maksimum/benefit dari alternatif ke-$i$. Sedangkan nilai Signifikansi Negatif (Si-) dapat dicari dari

$S_{i}^{-}=\sum_{j=1}^{n}d_{ij}^{-}$
.. [COP-06]

dimana nilai dari $d_{ij}^{-}$ adalah merupakan nilai ternormalisasi terbobot (D) untuk setiap kriteria ke $j$ yang mempunyai atribut minimum/cost dari alternatif ke-$i$.

1.1.5. Menentukan Nilai Signifikansi Relatif (Q)

Nilai Signifikansi Relatif (Q) untuk setiap alternatif ke-$i$ diperhitungkan dengan persamaan sebagai berikut :

$Q_{i}=S_i^{+} + \frac{\text{min}(S^{-})\Sigma_{n=1}^m S_n^{-}}{S_n^{-} \Sigma_{n=1}^m\frac{\text{min}(S^{-})}{S_n^{-}} }$
.. [COP-07]

Dimana

  • $Q_i$ : nilai Siginifikansi Relatif dari alternatif ke-$i$
  • $S_i^{+}$ : nilai Siginifikansi Positif dari alternatif ke-$i$
  • $S_i^{-}$ : nilai Siginifikansi Negatif dari alternatif ke-$i$
  • $\text{min}(S^{-})$ : nilai Signifikansi Negatif $S^{-}$ terkecil/minimum dari semua alternatif
  • $S_n^{-}$ : nilai Siginifikansi Negatif dari alternatif ke-$n ; n=1,2,3, .. m;$ dengan $m$ adalah jumlah alternatif

1.1.6. Menghitung Nilai Tingkat Utilitas (N)

TIngkat Utilitas (N) dari setiap alternatif ke-$i$ ditentukan dengan persamaan berikut :

$N_i=\frac{Q_i}{\text{max}(Q)} * 100\%$
.. [COP-08]

dimana nilai alternatif dengan nilai Tingkat Utilitas $N$ yang lebih besar/tinggi merupakan alternatif yang lebik baik

1.1.7. Perankingan

Tahap yang terakhir adalah perangkingan dari Nilai Tingkat Utilitas N dari nilai yang tertinggi hingga yang terendah. Alternatif dengan nilai $N$ yang tertinggi menunjukkan alternatif yang terbaik.

2.1. Kriteria dan Bobot

Pada kasus penentuan pemilihan supplier terbaik ini telah ditentukan 10 buah kriteria yang diperhitungkan, yaitu Kapasitas Produksi, Fleksibilitas, Sistem Komunikasi, Waktu Produksi, Harga, Responsibilitas, Jarak, Jumlah Produk, Histori Performansi, dan Transportasi dengan rincian bobot penilaian seperti pada TABEL 1 berikut :

TABEL 1 : Kriteria dan Bobot Pemilihan Pemasok
KodeKriteriaTipe[1]Bobot[2]
C1Kapasitas Produksibenefit0.137
C2Fleksibilitasbenefit0.096
C3Sistem Komunikasibenefit0.027
C4Waktu Produksicost0.082
C5Hargacost0.192
C6Responsibilitasbenefit0.055
C7Jarakçost0.096
C8Jumlah Produkbenefit0.110
C9Histori Performansibenefit0.068
C10Transportasibenefit0.151
[1] `benefit` menandakan lebih besar lebih baik (Benefit Criteria) sedangkan `cost` menandakan lebih kecil lebih baik (Cost Criteria)
[2] Nilai bobot ditentukan oleh pakar/orang yang berwenang/kompeten untuk memberi pembobotan; atau bisa diperoleh dari hasil kuisioner -- pada rtikel ini nilai bobot dibuat oleh sistem secara acak

2.2. Contoh Data

Data-data awal yang akan diperhitungkan dengan metoda COPRAS ini adalah seperti yang tercantum dalam TABEL 2 berikut ini [3]

TABEL 2 : Contoh Data
Alternatif Kriteria
Kode Nama C1C2C3C4C5C6C7C8C9C10
A1Organik Mandiri3489534453
A2Organik Sejahtera2588854353
A3Fresh Utama3348645233
A4Rasa Extra3358844244
A5Organik Prima2348744454
A6Fresh Inti4489734434
A7Fresh Mandiri4388663353
A8Pangan Mandiri4369443233
A9Boga Inti2556864454
A10Pangan Sejahtera23410464434
A11Sari Utama3386644453
A12Organik Utama3478865233
A13Sari Mandiri4579534333

Keterangan

  • C1 : Kapasitas Produksi
  • C2 : Fleksibilitas
  • C3 : Sistem Komunikasi
  • C4 : Waktu Produksi
  • C5 : Harga
  • C6 : Responsibilitas
  • C7 : Jarak
  • C8 : Jumlah Produk
  • C9 : Histori Performansi
  • C10 : Transportasi

[3] Data yang diberikan merupakan data yang sudah dikuantisasi, bukan berupa data mentah. Data dalam contoh di generate secara otomatis dari nilai acak/random

2.3. Perhitungan

Berikut ini akan dijabarkan perhitungan dengan metoda COPRAS secara manual lengkah demi langkah untuk memudahkan pemahaman terhadap metoda COPRAS ini

2.3.1. Matriks Keputusan (X)

Langkah pertama adalah membuat matriks keputusan (X) dari data awal yang ada. Dari data pada TABEL 2 dapat dibuat matriks keputusan sebagai berikut :

$X=\left[ \begin{array}{ccccccccccc}\\ 3 & 4 & 8 & 9 & 5 & 3 & 4 & 4 & 5 & 3 \\2 & 5 & 8 & 8 & 8 & 5 & 4 & 3 & 5 & 3 \\3 & 3 & 4 & 8 & 6 & 4 & 5 & 2 & 3 & 3 \\3 & 3 & 5 & 8 & 8 & 4 & 4 & 2 & 4 & 4 \\2 & 3 & 4 & 8 & 7 & 4 & 4 & 4 & 5 & 4 \\4 & 4 & 8 & 9 & 7 & 3 & 4 & 4 & 3 & 4 \\4 & 3 & 8 & 8 & 6 & 6 & 3 & 3 & 5 & 3 \\4 & 3 & 6 & 9 & 4 & 4 & 3 & 2 & 3 & 3 \\2 & 5 & 5 & 6 & 8 & 6 & 4 & 4 & 5 & 4 \\2 & 3 & 4 & 10 & 4 & 6 & 4 & 4 & 3 & 4 \\3 & 3 & 8 & 6 & 6 & 4 & 4 & 4 & 5 & 3 \\3 & 4 & 7 & 8 & 8 & 6 & 5 & 2 & 3 & 3 \\4 & 5 & 7 & 9 & 5 & 3 & 4 & 3 & 3 & 3\end{array} \right]$

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 x7,10 menunjukkan data untuk alternatif ke 7 yaitu Fresh Mandiri untuk kriteria ke 10 (Transportasi) dengan nilai 3

Secara lengkap, matriks keputusan (X) yang diperoleh dapat ditampilkan dalam bentuk tabel sebagai berikut

TABEL 3 : Matriks Keputusan (X)
Alternatif Kriteria
KodeNama C1C2C3C4C5C6C7C8C9C10
A1Organik Mandiri3489534453
A2Organik Sejahtera2588854353
A3Fresh Utama3348645233
A4Rasa Extra3358844244
A5Organik Prima2348744454
A6Fresh Inti4489734434
A7Fresh Mandiri4388663353
A8Pangan Mandiri4369443233
A9Boga Inti2556864454
A10Pangan Sejahtera23410464434
A11Sari Utama3386644453
A12Organik Utama3478865233
A13Sari Mandiri4579534333

2.3.2. Matriks Normalisasi (R)

Matrik Normalisai (R) untuk dari data tiap-tiap alternatif dan kriteria diperhitungkan berdasarkan persamaan COP-02. Sebagai contoh untuk data $x_{7,8}$, nilai normalisai $r_{7,8}$ diperhitungkan sebagai berikut

$\begin{align} r_{7,8}&=\frac{x_{7,8}}{\Sigma_{j=1}^n x_{7,j}} \\ &=\frac{x_{7,8}}{x_{7,1}+x_{7,2}+x_{7,3}+x_{7,4}+x_{7,5}+x_{7,6}+x_{7,7}+x_{7,8}+x_{7,9}+x_{7,10}} \\ &=\frac{3}{4+3+8+8+6+6+3+3+5+3} \\ &=\frac{3}{49} \\ &=0.061\end{align}$

Dengan perhitungan yang sama, dilakukan perhitungan nilai normalisai R untuk data-data yang lain sehingga diperoleh matriks Normalisasi R sebagai berikut:

$R=\left[\begin{array}{cccccccccc} \\ 0.062 & 0.083 & 0.167 & 0.188 & 0.104 & 0.062 & 0.083 & 0.083 & 0.104 & 0.062 \\ 0.039 & 0.098 & 0.157 & 0.157 & 0.157 & 0.098 & 0.078 & 0.059 & 0.098 & 0.059 \\ 0.073 & 0.073 & 0.098 & 0.195 & 0.146 & 0.098 & 0.122 & 0.049 & 0.073 & 0.073 \\ 0.067 & 0.067 & 0.111 & 0.178 & 0.178 & 0.089 & 0.089 & 0.044 & 0.089 & 0.089 \\ 0.044 & 0.067 & 0.089 & 0.178 & 0.156 & 0.089 & 0.089 & 0.089 & 0.111 & 0.089 \\ 0.080 & 0.080 & 0.160 & 0.180 & 0.140 & 0.060 & 0.080 & 0.080 & 0.060 & 0.080 \\ 0.082 & 0.061 & 0.163 & 0.163 & 0.122 & 0.122 & 0.061 & 0.061 & 0.102 & 0.061 \\ 0.098 & 0.073 & 0.146 & 0.220 & 0.098 & 0.098 & 0.073 & 0.049 & 0.073 & 0.073 \\ 0.041 & 0.102 & 0.102 & 0.122 & 0.163 & 0.122 & 0.082 & 0.082 & 0.102 & 0.082 \\ 0.045 & 0.068 & 0.091 & 0.227 & 0.091 & 0.136 & 0.091 & 0.091 & 0.068 & 0.091 \\ 0.065 & 0.065 & 0.174 & 0.130 & 0.130 & 0.087 & 0.087 & 0.087 & 0.109 & 0.065 \\ 0.061 & 0.082 & 0.143 & 0.163 & 0.163 & 0.122 & 0.102 & 0.041 & 0.061 & 0.061 \\ 0.087 & 0.109 & 0.152 & 0.196 & 0.109 & 0.065 & 0.087 & 0.065 & 0.065 & 0.065 \\ \end{array}\right] $

Secara lengkap, matriks Normalisasi (R) yang diperoleh dapat ditampilkan dalam bentuk tabel sebagai berikut

TABEL 4 : Matriks Normalisasi (R)
Alternatif Kriteria
KodeNama C1C2C3C4C5C6C7C8C9C10
A1-0.0620.0830.1670.1880.1040.0620.0830.0830.1040.062
A2Organik Mandiri0.0390.0980.1570.1570.1570.0980.0780.0590.0980.059
A3Organik Sejahtera0.0730.0730.0980.1950.1460.0980.1220.0490.0730.073
A4Fresh Utama0.0670.0670.1110.1780.1780.0890.0890.0440.0890.089
A5Rasa Extra0.0440.0670.0890.1780.1560.0890.0890.0890.1110.089
A6Organik Prima0.0800.0800.1600.1800.1400.0600.0800.0800.0600.080
A7Fresh Inti0.0820.0610.1630.1630.1220.1220.0610.0610.1020.061
A8Fresh Mandiri0.0980.0730.1460.2200.0980.0980.0730.0490.0730.073
A9Pangan Mandiri0.0410.1020.1020.1220.1630.1220.0820.0820.1020.082
A10Boga Inti0.0450.0680.0910.2270.0910.1360.0910.0910.0680.091
A11Pangan Sejahtera0.0650.0650.1740.1300.1300.0870.0870.0870.1090.065
A12Sari Utama0.0610.0820.1430.1630.1630.1220.1020.0410.0610.061
A13Organik Utama0.0870.1090.1520.1960.1090.0650.0870.0650.0650.065

2.3.3. Membuat Matriks Normalisasi Terbobot (D)

Setelah didapat nilai normalisasinya (R), berikutnya adalah membuat Matriks Normalisasi Terbobot (D) maka berdasarkan persamaan COP-03 dan COP-04 dapat dicari nilai R-nya. Sebagai contoh untuk kriteria ke-10 (Transportasi) pada alternatif ke-7 (Fresh Mandiri) bisa dihitung nilai d7,10 sebagai berikut:

$\begin{align} d_{7,10}&= r_{7,10} \times w_{10} \\ &=0.061 \times 0.151 \\ &=0.009 \\ \end{align}$

Dengan perhitungan yang sama untuk semua data dari matriks normalisasi (R) diperoleh data matriks normalisasi terbobot (D) seperti dalam TABEL 5 berikut ini:

TABEL 5 : Matriks Normalisasi Terbobot (D)
No.AlternatifD
KodeNamaC1C2C3C4C5C6C7C8C9C10
1A1Organik Mandiri0.0090.0080.0050.0150.0200.0030.0080.0090.0070.009
2A2Organik Sejahtera0.0050.0090.0040.0130.0300.0050.0080.0060.0070.009
3A3Fresh Utama0.0100.0070.0030.0160.0280.0050.0120.0050.0050.011
4A4Rasa Extra0.0090.0060.0030.0150.0340.0050.0090.0050.0060.013
5A5Organik Prima0.0060.0060.0020.0150.0300.0050.0090.0100.0080.013
6A6Fresh Inti0.0110.0080.0040.0150.0270.0030.0080.0090.0040.012
7A7Fresh Mandiri0.0110.0060.0040.0130.0230.0070.0060.0070.0070.009
8A8Pangan Mandiri0.0130.0070.0040.0180.0190.0050.0070.0050.0050.011
9A9Boga Inti0.0060.0100.0030.0100.0310.0070.0080.0090.0070.012
10A10Pangan Sejahtera0.0060.0070.0020.0190.0170.0070.0090.0100.0050.014
11A11Sari Utama0.0090.0060.0050.0110.0250.0050.0080.0100.0070.010
12A12Organik Utama0.0080.0080.0040.0130.0310.0070.0100.0040.0040.009
13A13Sari Mandiri0.0120.0100.0040.0160.0210.0040.0080.0070.0040.010

2.3.4. Menentukan Nilai Signifikansi (S) Posisitf dan Negatif

Nilai Signifikansi S adalah merupakan jumlah nilai ternormalisasi terbobot (D) untuk setiap alternatif ke i, dikelompokkan berdasarkan atribut kriteria-nya. Sebagai contoh, sesuai dengan persamaan COP-05 dan COP-06 didapat nilai S7+ dan S7- , yaitu nilai Signifikansi Positif dan Negatif untuk alternatif ke-7 (Fresh Mandiri)) sebagai berikut :

$\begin{align} S_{7}^{+}&= \Sigma^n_{j=1} d_{7,j}^{+}\\ &=d_{7,1}+ d_{7,2}+ d_{7,3}+ d_{7,6}+ d_{7,7}+ d_{7,8}+ d_{7,9}+ d_{7,10}\\ &=0.011+0.006+0.004+0.007+0.006+0.007+0.007+0.009\\ &=0.057\\ \end{align}$

$\begin{align} S_{7}^{-}&= \Sigma^n_{j=1} d_{7,j}^{-}\\ &=d_{7,4}+ d_{7,5}\\ &=0.013+ 0.023\\ &=0.036\\ \end{align}$

Nilai dari S7+ diambil dari penjumlahan semua nilai dengan kriteria yang mempunyai atribut maksimum/benefit dari nilai ternormalisasi terbobot D untuk alternatif ke-7. Sedangkan nilai dari S7- diambil dari penjumlahan semua nilai dengan kriteria yang mempunyai atribut minimum/cost dari nilai ternormalisasi terbobot D untuk alternatif ke-7
Setelah dilakukan perhitungan yang sama untuk alternatif-alternatif yang lain, maka diperoleh nilai Signifikansi Posisif Si+ dan Signifikansi Negatif Si- seperti dalam TABEL 6 berikut ini :

TABEL 6 : Nilai Signifikansi (S)
No.Alternatif$S_i^{+}$$S_i^{-}$
KodeNama
1A1Organik Mandiri0.0580.035
2A2Organik Sejahtera0.0540.043
3A3Fresh Utama0.0580.044
4A4Rasa Extra0.0560.049
5A5Organik Prima0.0590.044
6A6Fresh Inti0.0590.042
7A7Fresh Mandiri0.0570.037
8A8Pangan Mandiri0.0580.037
9A9Boga Inti0.0610.041
10A10Pangan Sejahtera0.0600.036
11A11Sari Utama0.0600.036
12A12Organik Utama0.0550.045
13A13Sari Mandiri0.0600.037

2.3.5. Menentukan Nilai Signifikansi Relatif (Q)

Berdasarkan persamaan COP-07 penentuan Nilai Signifikansi Relatif (Q) untuk setiap alternatif ke-$i$ dapat dihitung, semisal untuk alternatif ke-7 (Fresh Mandiri) dapat ditentukan Nilai Signifikansi Relatif-nya (Q7) seperti perhitungan berikut:

$\begin{align} Q_{7}&=S_{7}^{+} + \frac{\text{min}(S^{-})\Sigma_{i=1}^m S_i^{-}}{S_{7}^{-} \Sigma_{i=1}^m\frac{\text{min}(S^{-})}{S_i^{-}} }\\ &=S_{7}^{+} + \frac{S_{1}^{-}\Sigma_{i=1}^m S_i^{-}}{S_{7}^{-} \Sigma_{i=1}^m\frac{S_{1}^{-}}{S_i^{-}} }\\ &=S_{7}^{+} + \frac{S_{1}^{-} (S_{1}^{-}+S_{2}^{-}+S_{3}^{-}+S_{4}^{-}+S_{5}^{-}+S_{6}^{-}+S_{7}^{-}+S_{8}^{-}+S_{9}^{-}+S_{10}^{-}+S_{11}^{-}+S_{12}^{-}+S_{13}^{-}) }{S_{7}^{-} (\frac{S_{1}^{-}}{S_{1}^{-}}+\frac{S_{1}^{-}}{S_{2}^{-}}+\frac{S_{1}^{-}}{S_{3}^{-}}+\frac{S_{1}^{-}}{S_{4}^{-}}+\frac{S_{1}^{-}}{S_{5}^{-}}+\frac{S_{1}^{-}}{S_{6}^{-}}+\frac{S_{1}^{-}}{S_{7}^{-}}+\frac{S_{1}^{-}}{S_{8}^{-}}+\frac{S_{1}^{-}}{S_{9}^{-}}+\frac{S_{1}^{-}}{S_{10}^{-}}+\frac{S_{1}^{-}}{S_{11}^{-}}+\frac{S_{1}^{-}}{S_{12}^{-}}+\frac{S_{1}^{-}}{S_{13}^{-}})}\\ &=0.06 + \frac{0.04 * (0.04+0.04+0.04+0.05+0.04+0.04+0.04+0.04+0.04+0.04+0.04+0.04+0.04) }{0.04 * (\frac{0.04}{0.04}+\frac{0.04}{0.04}+\frac{0.04}{0.04}+\frac{0.04}{0.05}+\frac{0.04}{0.04}+\frac{0.04}{0.04}+\frac{0.04}{0.04}+\frac{0.04}{0.04}+\frac{0.04}{0.04}+\frac{0.04}{0.04}+\frac{0.04}{0.04}+\frac{0.04}{0.04}+\frac{0.04}{0.04})}\\ &=0.10089482713649\end{align}$

Untuk alternatif-alternatif yang lain bisa dihitung nilai Q-nya dengan cara yang sama, dan hasilnya adalah sebagai berikut:

TABEL 7 : Nilai Signifikansi Relatif (Q)
No.AlternatifQ
KodeNama
1A1Organik Mandiri0.10396
2A2Organik Sejahtera0.09165
3A3Fresh Utama0.09484
4A4Rasa Extra0.08955
5A5Organik Prima0.09548
6A6Fresh Inti0.09777
7A7Fresh Mandiri0.10089
8A8Pangan Mandiri0.10218
9A9Boga Inti0.10007
10A10Pangan Sejahtera0.10460
11A11Sari Utama0.10515
12A12Organik Utama0.09070
13A13Sari Mandiri0.10369

2.3.6. Menghitung Nilai Tingkat Utilitas (N)

Nilai Tingkat Utilitas (N) dibentuk berdasarkan pada persamaan COP-08. Sebagai contoh perhitungan, untuk nilai $N_{7}$ diperhitungkan sebagai berikut:

$\begin{align} N_{7}&=\frac{Q_{7}}{\text{max}(Q)} \times 100\% \\ &=\frac{Q_{7}}{Q_{11}} \times 100\% \\ &=\frac{0.10089}{0.10515} \times 100\% \\ &=95.95037\end{align}$

Dengan menghitung semua nilai Ni dari semua alternatif yang ada, diperoleh hasil seperti terlihat di TABEL 8 berikut ini:

TABEL 8 : Nilai Tingkat Utilitas (N)
NoAlternatifTingkat Utilitas (N)
KodeNama
1A1Organik Mandiri98.86530 %
2A2Organik Sejahtera87.16182 %
3A3Fresh Utama90.19037 %
4A4Rasa Extra85.16163 %
5A5Organik Prima90.79770 %
6A6Fresh Inti92.98224 %
7A7Fresh Mandiri95.95037 %
8A8Pangan Mandiri97.17112 %
9A9Boga Inti95.16282 %
10A10Pangan Sejahtera99.47069 %
11A11Sari Utama100.00000 %
12A12Organik Utama86.25761 %
13A13Sari Mandiri98.61044 %

2.3.7. Perangkingan

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 :

TABEL 10 : Perangkingan
NoAlternatifTingkat Utilitas (N)Ranking
KodeNama
1A11Sari Utama100.00000 %1
2A10Pangan Sejahtera99.47069 %2
3A1Organik Mandiri98.86530 %3
4A13Sari Mandiri98.61044 %4
5A8Pangan Mandiri97.17112 %5
6A7Fresh Mandiri95.95037 %6
7A9Boga Inti95.16282 %7
8A6Fresh Inti92.98224 %8
9A5Organik Prima90.79770 %9
10A3Fresh Utama90.19037 %10
11A2Organik Sejahtera87.16182 %11
12A12Organik Utama86.25761 %12
13A4Rasa Extra85.16163 %13

Dari hasil perankingan nilai tingkat utilitas (Q) tersebut, diperoleh bahwa supplier ke-11 (Sari Utama) dengan nilai signifikansi relatif ($Q$) sebesar 0.10515 dan tingkat utilitas ($N$) sebesar 100 % terpilih sebagai pemasok bahan baku yang paling baik, berdasar kriteria-kriteria dan bobot yang sudah ditentukan.

3.1. Persiapan Database

Sebagai bahan pembelajaran aplikasi COPRAS 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;

Dalam hal ini, pembuatan database memakai command console dari database server yang bersangkutan

3.1.1. Membuat Data Tabel Kriteria

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

-- menghapus tabel cop_criterias jika sudah ada
DROP TABLE IF EXISTS cop_criterias;
-- membuat tabel cop_criterias jika tidak ada
CREATE TABLE IF NOT EXISTS cop_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 cop_criterias(id_criteria,criteria,weight,attribute)
VALUES
(1,'Kapasitas Produksi',0.1370,'benefit'),
(2,'Fleksibilitas',0.0960,'benefit'),
(3,'Sistem Komunikasi',0.0270,'benefit'),
(4,'Waktu Produksi',0.0820,'cost'),
(5,'Harga',0.1920,'cost'),
(6,'Responsibilitas',0.0550,'benefit'),
(7,'Jarak',0.0960,'çost'),
(8,'Jumlah Produk',0.1100,'benefit'),
(9,'Histori Performansi',0.0680,'benefit'),
(10,'Transportasi',0.1510,'benefit');

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:

-- menghapus tabel cop_alternatives jika sudah ada
DROP TABLE IF EXISTS cop_alternatives;
-- membuat tabel cop_alternatives jika tidak ada
CREATE TABLE IF NOT EXISTS cop_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 cop_alternatives(id_alternative,name)
VALUES
(1,'Organik Mandiri'),
(2,'Organik Sejahtera'),
(3,'Fresh Utama'),
(4,'Rasa Extra'),
(5,'Organik Prima'),
(6,'Fresh Inti'),
(7,'Fresh Mandiri'),
(8,'Pangan Mandiri'),
(9,'Boga Inti'),
(10,'Pangan Sejahtera'),
(11,'Sari Utama'),
(12,'Organik Utama'),
(13,'Sari Mandiri');

Dalam tabel cop_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.

3.1.3. Membuat Data Tabel Hasil Evaluasi

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 cop_criterias dengan tabel cop_alternatives, yaitu tabel cop_evaluations sebagai berikut:

-- menghapus tabel cop_evaluations jika sudah ada
DROP TABLE IF EXISTS cop_evaluations;
-- membuat tabel cop_evaluations jika tidak ada
CREATE TABLE IF NOT EXISTS cop_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 cop_evaluations(id_alternative,id_criteria,value)
VALUES
(1,1,3),(1,2,4),(1,3,8),(1,4,9),(1,5,5),(1,6,3),(1,7,4),(1,8,4),(1,9,5),(1,10,3),
(2,1,2),(2,2,5),(2,3,8),(2,4,8),(2,5,8),(2,6,5),(2,7,4),(2,8,3),(2,9,5),(2,10,3),
(3,1,3),(3,2,3),(3,3,4),(3,4,8),(3,5,6),(3,6,4),(3,7,5),(3,8,2),(3,9,3),(3,10,3),
(4,1,3),(4,2,3),(4,3,5),(4,4,8),(4,5,8),(4,6,4),(4,7,4),(4,8,2),(4,9,4),(4,10,4),
(5,1,2),(5,2,3),(5,3,4),(5,4,8),(5,5,7),(5,6,4),(5,7,4),(5,8,4),(5,9,5),(5,10,4),
(6,1,4),(6,2,4),(6,3,8),(6,4,9),(6,5,7),(6,6,3),(6,7,4),(6,8,4),(6,9,3),(6,10,4),
(7,1,4),(7,2,3),(7,3,8),(7,4,8),(7,5,6),(7,6,6),(7,7,3),(7,8,3),(7,9,5),(7,10,3),
(8,1,4),(8,2,3),(8,3,6),(8,4,9),(8,5,4),(8,6,4),(8,7,3),(8,8,2),(8,9,3),(8,10,3),
(9,1,2),(9,2,5),(9,3,5),(9,4,6),(9,5,8),(9,6,6),(9,7,4),(9,8,4),(9,9,5),(9,10,4),
(10,1,2),(10,2,3),(10,3,4),(10,4,10),(10,5,4),(10,6,6),(10,7,4),(10,8,4),(10,9,3),(10,10,4),
(11,1,3),(11,2,3),(11,3,8),(11,4,6),(11,5,6),(11,6,4),(11,7,4),(11,8,4),(11,9,5),(11,10,3),
(12,1,3),(12,2,4),(12,3,7),(12,4,8),(12,5,8),(12,6,6),(12,7,5),(12,8,2),(12,9,3),(12,10,3),
(13,1,4),(13,2,5),(13,3,7),(13,4,9),(13,5,5),(13,6,3),(13,7,4),(13,8,3),(13,9,3),(13,10,3);

3.2. Koneksi Ke Database Server

Koneksi ke database server serta pengambilan data-data dari database diperlukan untuk selanjutnya diproses menggunakan metode COPRAS.

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.

3.2.1 Mengambil Data Alternatif

Sebelum masuk kebagian inti perhitungan dengan metode COPRAS, sebelumnya diambil terlebih dahulu data-data yang akan digunakan dari database. Yang pertama ada data Alternatif. Data ini diambil dari tabel cop_alternatives dan dimasukkan ke dalam variabel $alternatif dengan kode script PHP seperti berikut

<?php
//-- inisialisasi variabel array alternatif
$alternatif=array();
$sql='SELECT * FROM cop_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

3.2.2 Mengambil Data Kriteria dan Bobot

Data kriteria dan bobot diambil dari tabel cop_criterias dan dimasukkan dalam variabel array $kriteria dan $w sebagai berikut:

<?php
//-- inisialisasi variabel array kriteria dan bobot (W)
$kriteria=$w=array();
$sql='SELECT * FROM cop_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 $kriteria, key/index yang pertama merupakan 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 'Fleksibilitas' dengan atribut/tipe 'benefit'

Scodngkan untuk data nilai bobot-nya dimasukkan ke dalam variabel $w dengan index/key-nya berupa id_kriteria yang bersesuaian

3.3. Langkah-Langkah COPRAS

Bagian berikutnya adalah bagian inti dari perhitungan dengan metode COPRAS. Di sini dijelaskan langkah per langkah-nya untuk kode PHP-nya, sesuai dengan langkah-langkah perhitungan COPRAS secara manual sebelumnya.

3.3.1. Menentukan Matriks Keputusan (X)

Mengacu pada persamaan COP-01 kita dapat membuat matriks keputusan (X) dengan mengambil data dari tabel cop_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 cop_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

3.3.2. Matriks Normalisasi (R)

Dari matrik keputusan X yang sudah ditentukan dilangkah sebelumnya, kemudian dicari nilai Normalisasinya (R) dengan script berikut:

<?php
//-- inisialisasi array nilai normalisasi (R)
$R=array();
//-- proses untuk setiap data alternatif ke-i
foreach($X as $i=>$xi){
    
$R[$i]=array();
    
//-- proses untuk setiap data alternatif ke-i kriteria ke-j
    
foreach($xi as $j=>$xij){
        
$R[$i][$j]=$xij/array_sum($xi);
    }
}
?>

Sesuai dengan persamaan COP-02, untuk normalisasi dari data matrik keputusan X untuk alternatif ke-i dan kriteria ke-i (xi,j), yaitu nilai ri,j diperoleh dengan membagi nilai xi,j dengan jumlah seluruh nilai matrik keputusan alternatif ke-i tersebut.

3.3.3. Matriks Normalisasi Terbobot (D)

Berdasarkan persamaan COP-03 dan COP-04 untuk perhitungan nilai normalisasi terbobot (D) dibuat script sebagai berikut :

<?php
//-- inisialisasi Nilai Normalisasi Terbobot (D)
$D=array();
foreach(
$R as $i=>$ri){
    
//-- inisialisasi Nilai Normalisasi Terbobot Alternatif ke-i (Di)
    
$D[$i]=array();
    foreach(
$ri as $j=>$nij){
        
//-- menentukan Nilai Normalisasi Terbobot Alternatif ke-i kriteria ke-j (Dij)
        
$D[$i][$j]=$rij*$w[$j];
    }
}
?>

Dalam script di atas, nilai normalisasi terbobot D didapat dari nilai matriks normalisasi R dikali dengan nilai bobot w ditiap kriteria-nya.

3.3.4. Menentukan Nilai Signifikansi (S) Positif dan Negatif

Langkah selanjutnya adalah menghitung nilai Signifikansi (S) Positif dan Negatif sebagai berikut:

<?php
//-- inisialisasi array Spos & Sneg
$Spos=$Sneg=array();
foreach(
$D as $i=>$di){
    
//-- inisialilasi nilai signifikasni positif/negatif utk alternatif ke-i
    
$Spos[$i]=0;
    
$Sneg[$i]=0;
    foreach(
$di as $j=>$dij){
        
$Spos[$i]+=($kriteria[$j][1]=='benefit')?$dj:0;
        
$Sneg[$i]+=($kriteria[$j][1]=='cost')?$dj:0;
    }
}
?>

Nilai Signifikasi positif untuk alternatif ke-i yaitu $Spos[$i] merupakan jumlah semua nilai normalisasi terbobot D dari alternatif ke-i yang mempunyai atribut benefit/maksimum; sedangkan nilai Signifikasi negatif untuk alternatif ke-i yaitu $Sneg[$i] merupakan jumlah semua nilai normalisasi terbobot D dari alternatif ke-i yang mempunyai atribut cost/minimum

3.3.5. Nilai Signifikansi Relatif (Q)

Langkah berikutnya adalah menghitung Nilai Signifikansi Relatif Q dengan script berikut ini:

<?php
//-- inisialisasi array nilai Signifikansi Relatif (Q)
$Q=array();
//-- inisialisasi nilai normalisasi signifikansi negatif
$spneg=0;
//-- menghitung jumlah nilai normalisasi siginifikansi negatif
foreach($Sneg as $i=>$sni){
    
$spneg+=min($Sneg)/$sni;
}
foreach(
$Spos as $i=>$spi){
    
//-- menghitung nilai Signifikansi Relatif (Q) alternatif ke-i
    
$Q[$i]=$spi+(min($Sneg)*array_sum($Sneg))/($Sneg[$i]*$spneg);
}
?>

3.3.6. Menghitung Nilai Tingkat Utilitas (N)

Berdasarkan persamaan COP-08 kemudian dicari nilai Tingkat Utilitas (N) dengan script berikut:

<?php
//-- inisialisasi array nilai tingkat utilitas N
$N=array();
for(
$i=1;$i<=$jml_alternative;$i++){
    
$N[$i]=$Q[$i]/max($Q)*100;
}
?>

3.3.7. Perangkingan

Bagian terakhir dari proses metode COPRAS adalah perankingan, dimana data tingkat utilitas $N diurutkan dari yang terbesar hingga yang terkecil. Berikut adalah contoh script PHP-nya

<?php
//-- mengurutkan secara descending
arsort($N);
//-- ambil key-index yang pertama
$terpilih=key($N);
echo 
"Dari hasil perhitungan dipilih alternatif ke-{$terpilih}"
    
." ({$alternatif[$terpilih]}) <br>dengan nilai signifikansi relatif "
    
." sebesar {$Q[$terpilih]}";
?>

Data nilai skor penilaian $H diurutkan secara descending dengan fungsi arsort() untuk mengurutkan berdasarkan nilai 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-11 (Sari Utama)
dengan nilai signifikansi relatif sebesar 0.10515314051975

Source code selengkapnya bisa dilihat di tautan ini source source