Decision Support System Series

VIšekriterijumsko KOmpromisno Rangiranje (VIKOR) Method

Contoh implementasi DSS (Decision Support System) dengan metode VIKOR menggunakan PHP dan MySQL untuk Seleksi Penerima Beasiswa

VIšekriterijumsko KOmpromisno Rangiranje(VIKOR) merupakan salah satu metode yang digunakan pada Multi Attribute Decision Making (MADM) dengan melihat solusi/alternatif terdekat sebagai pendekatan kepada solusi ideal dalam perangkingan.

author : cahya dsn, published on : March 20th, 2018 updated on : March 11th, 2019

minerva minerva donasi donation

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

Ide perangkingan kompromi diperkenalkan oleh Yu (Yu 1973) dan Zeleny (Zeleny 1982). Kemudian, Opricovic dan Tzeng memperkenalkan metode VIKOR sebagai metode perangkingan kompromi (Opricovic and Tzeng, 2007 ). Solusi kompromi merupakan sebuah solusi yang layak yang terdekat pada solusi ideal, sedangkan kompromi berarti persetujuan yang dibuat dengan saling mengizinkan (Rao 2008).

VIšekriterijumsko KOmpromisno Rangiranje (VIKOR) merupakan salah satu metode yang digunakan pada Multi Atribute Decision Making (MADM) dengan melihat solusi/alternatif terdekat sebagai pendekatan kepada solusi ideal dalam perangkingan (Rao, 2008). Metode ini berfokus pada perankingan dan pemilihan dari sejumlah alternatif walaupun kriterianya saling bertentangan (Yin-Yu, 2011).

VIKOR (VIšekriterijumsko KOmpromisno Rangiranje dalam bahasa Serbia, yang artinya Perangkingan Kompromis MultiKriteria) adalah metode perankingan dengan menggunakan indeks peringkat multikriteria berdasarkan ukuran tertentu dari kedekatan dengan solusi yang ideal. Metode VIKOR merupakan salah satu metode yang dapat dikategorisasikan dalam Multi-Criteria Decision Analysis/MCDA (Opricovic 1998). Metode VIKOR dikembangkan sebagai metode Multi-Criteria Decision Making/MCDM untuk menyelesaikan pengambilan keputusan bersifat diskrit pada kriteria yang bertentangan dan non-commensurable(tidak ada cara yang tepat untuk menentukan mana yang lebih akurat) (Opricovic and Tzeng 2007).

Metode VIKOR fokus pada perankingan dan memilih dari satu set sampel dengan kriteria yang saling bertentangan, yang dapat membantu para pengambil keputusan untuk mendapatkan keputusan akhir (Opricovic and Tzeng 2007). Metode ini sangat berguna pada situasi dimana pengambil keputusan tidak memiliki kemampuan untuk menentukan pilihan pada saat desain sebuah sistem dimulai (Sayadi and Heydari 2009).

Metode VIKOR adalah sebuah metode untuk optimisasi/optimalisasi kriteria majemuk dalam suatu sistem yang kompleks (Khezrian and Kadir, et al. 2011). Konsep dasar VIKOR adalah menentukan ranking dari sampel-sampel yang ada dengan melihat hasil dari nilai-nilai sesalan atau regrets (R) dari setiap sampel. Metode VIKOR telah digunakan oleh beberapa peneliti dalam MCDM, seperti dalam pemilihan vendor (Datta and Mahapatra, et al. 2010), perbandingan metode-metode outranking (Opricovic and Tzeng 2007), pemilihan bahan dalam industri (Cristobal and Biezma, et al. 2009). Dan masih banyak lagi penelitian-penelitian yang menggunakan metode VIKOR ini.

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. Langkah-langkah VIKOR

Langkah-langkah yang digunakan dalam Metode VIKOR adalah sebagai berikut (Kusdiantoro 2012): :

  • Membuat Matriks Keputusan (F)
  • Menentukan Bobot Kriteria (W)
  • Membuat Matriks Normalisasi (N)
  • Normalisasi Bobot (F*)
  • Menghitung Utility Measures(S) dan Regret Measures(R)
  • Menghitung indeks VIKOR (Q)
  • Perankingan alternatif

Dari data yang didapat dijadikan data untuk matriks Keputusan F). Pada langkah ini setiap kriteria dan alternatif disusun ke dalam bentuk matriks F; Aj menyatakan alternatif ke i=1,2,3,...m; dan Cxn menyatakan kriteria ke j=1,2,3,... n.

$F=\begin{array}{cc} {\begin{array}{c}\\A_1\\A_2\\\vdots\\A_n\end{array}} {\begin{bmatrix} C_{x1}&C_{x2}&\cdots&C_{xn}\\ a_{11}&x_{12}&\cdots&x_{1n}\\ a_{21}&x_{22}&\cdots&x_{2n}\\ \vdots&\vdots&\ddots&\vdots\\ a_{m1}&x_{m2}&\cdots&x_{mn}\\ \end{bmatrix}}\end{array}$
.. [VIK-01]

Keterangan

  • xij : Respon alternatif i pada kriteria j
  • i : 1,2,3, ..., m adalah nomor urutan alternatif
  • j : 1,2,3, ..., n adalah nomor urutan atribut atau kriteria
  • Ai : Alternatif ke -i
  • Cj : Kriteria ke -j
  • F : Matriks Keputusan

Menentukan bobot kriteria yang diperoleh dari pengguna sistem sesuai dengan kebutuhan atau kriteria yang diinginkan. Rumusan umum untuk bobot kriteria adalah berlaku persamaan :

$\sum_{j = 1}^{n} w_j=1$
.. [VIK-02]

Keterangan

  • wj : bobot kriteria j
  • j : 1,2,3, ..., n adalah nomor urutan atribut atau kriteria

Matrik F tersebut kemudian di normalisasikan dengan persamaan sebagai berikut :

$N_{ij}=\frac{(f^+\ -\ f_{ij})}{(f_j^+\ -\ f_j^-)}$
.. [VIK-03]

Keterangan

  • fij : Fungsi respon alternatif i pada kriteria j
  • f+j : nilai terbaik/positif dalam satu kriteria j
  • f-j : nilai terjelek/negatif dalam satu kriteria j
  • i : 1,2,3, ..., m adalah nomor urutan alternatif
  • j : 1,2,3, ..., n adalah nomor urutan atribut atau kriteria
  • N : Matriks Ternormalisasi

Penentuan nilai data terbaik/positif (f+j) dan terburuk/negatif (f-j) atau dengan istilah Cost dan Benefit dalam satu variabel penelitian ditentukan oleh jenis data variabel penelitian higher-the-better (HB) atau lower-the-better (LB) (Kusdiantoro 2012). Nilai (f+j) dan (f-j) tersebut dinyatakan sebagai berikut :

$f_j^+=\max(f_{1j},f_{2j},f_{3j},\cdots,f_{mj})$
.. [VIK-04]
$f_j^-=\min(f_{1j},f_{2j},f_{3j},\cdots,f_{mj})$
.. [VIK-05]

Keterangan

  • f+j : nilai terbaik/positif dalam satu kriteria j
  • f-j : nilai terjelek/negatif dalam satu kriteria j
  • i : 1,2,3, ..., m adalah nomor urutan alternatif
  • j : 1,2,3, ..., n adalah nomor urutan atribut atau kriteria

Melakukan perkalian antara nilai data yang telah dinormalisasi (N) dengan nilai bobot kriteria (W) yang telah ditentukan, dengan perhitungan sebagai berikut :

$F_{ij}^{*}=w_j.N_{ij}$
.. [VIK-06]

Keterangan

  • F*ij : nilai data ternormalisasi yg sudah terbobot untuk alternatif i pada kriteria j
  • wj : nilai bobot pada kriteria j
  • Nij : nilai data ternormalisasi untuk alternatif i pada kriteria j
  • i : 1,2,3, ..., m adalah nomor urutan alternatif
  • j : 1,2,3, ..., n adalah nomor urutan atribut atau kriteria

Utility measures (S) dan Regret measures (R) dari setiap alternatif dihitung menggunakan rumus sebagai berikut :

$S_i=\sum_{j=1}^{n}w_j\frac{(f_j^{+}-f_{ij})}{(f_j^{+}-f_j^{-})}$
.. [VIK-07]

$S_i$ merupakan jarak Manhattan (Manhattan distance) yang terbobot dan dinormalisasi

$R_i=max_j\left[w_j\frac{(f_j^{+}-f_{ij})}{(f_j^{+}-f_j^{-})}\right]$
.. [VIK-08]

$R_i$ merupakan jarak Chebyshev (Chebyshev distance) yang terbobot dan dinormalisasi.

Si (maximum group utility) dan Ri (minimum individual regret of the opponent), keduanya menyatakan utility measures yang diukur dari titik terjauh dan titik terdekat dari solusi ideal, sedangkan wj adalah bobot yang diberikan pada setiap kriteria ke-j

Setiap alternatif i dihitung indeks VIKOR-nya menggunakan rumus sebagai berikut

$Q_i=v\left[\frac{S_i-S^{-}}{S^{+}-S^{-}}\right]+(1-v)\left[\frac{R_i-R^{-}}{R^{+}-R^{-}}\right]$
.. [VIK-09]

Dimana,
$S^{-}=min_i(S_i)$
$S^{+}=max_i(S_i)$
$R^{-}=min_i(R_i)$
$R^{+}=max_i(R_i)$
dan v merupakan bobot berkisar antara 0-1 (umumnya bernilai 0.5). Nilai v adalah merupakan nilai bobot strategy of the maximum group utility, sedangkan nilai 1-v adalah bobot dari individual regret

Semakin kecil nilai indeks VIKOR (Qi) maka semakin baik pula solusi alternatif tersebut.

Setelah Qi dihitung, maka akan terdapat 3 macam perangkingan yaitu Si, Ri dan Qi . Solusi kompromi dilihat pada perangkingan Qi.

Pengurutan perankingan ditentukan dari nilai yang paling rendah dengan solusi kompromi sebagai solusi ideal dilihat dari perankingan Qi dengan nilai terendah. Karena nilai Si merupakan solusi yang diukur dari titik terjauh solusi ideal, sedangkan nilai Ri merupakan solusi yang diukur dari titik terdekat solusi ideal

Solusi kompromi ditentukan dari alternatif yang memiliki peringkat terbaik dengan mengukur indeks VIKOR yang minimum, apabila 2 kondisi berikut terpenuhi:

1.1.7.1. Kondisi 1 : Acceptable Advantage

$Q_{(A_2)}-Q_{(A_1)}\ge DQ$
.. [VIK-10]
$DQ=\frac{1}{(m-1)}$
.. [VIK-11]

Di mana m adalah banyaknya alternatif, alternatif A1 adalah peringkat pertama danA2 adalah peringkat kedua dari perankingan Qi.

1.1.7.2. Kondisi 2 : Acceptable Stability in Decision Making

Alternatif A1 juga harus menjadi peringkat terbaik dalam perankingan. Solusi kompromi ini stabil dalam proses pengambilan keputusan, yang dapat menjadi: voting by majority rule (saat v > 0,5), atau by concensus (v ≈ 0,5), atau with veto (v < 0,5).

1.1.7.3. Solusi Kompromi

Jika salah satu kondisi tidak memuaskan, maka solusi kompromi dapat diajukan sebagai berikut :

  • Memilih alternatif A1 dan A2 jika hanya kondisi 2 tidak memuaskan, atau
  • Memilih alternatif A1, A2, ... , Am jika kondisi 1 tidak memuaskan.

Am merupakan alternatif yang ditentukan dengan menggunakan persamaan :

$Q_{(A_m)}-Q_{(A_1)}\lt DQ$
.. [VIK-12]

Di mana m maksimum adalah alternatif yang posisinya berada pada kondisi yang saling berdekatan.

1.2. Kelebihan dan Kekurangan

Metode VIKOR memiliki kelebihan dan kekurangan sebagai berikut (Lengkong, SP - 2016):

1.2.1. Kelebihan

Beberapa kelebihan Metode VIKOR adalah:

  • metode VIKOR memiliki kelebihan pada proses pemeringkatan dengan memiliki nilai preferensi untuk pemeringkatan dan dapat mengatasi pemeringkatan banyak alternatif dengan lebih mudah.
  • Selain itu, metode VIKOR memiliki kelebihan mengatasi kriteria yang bertentangan dalam pemeringkatan. Kriteria bertentangan yang dimaksud adalah terdapat beberapa kriteria tetapi masing-masing kriteria tersebut menggunakan penilaian berbeda. Penilaian itu dapat melihat nilai tertinggi semakin baik atau nilai terendah semakin baik.

1.2.2. Kekurangan

Sedangkan pada metode VIKOR memiliki kekurangan :

  • pada tahap pembobotan, proses pembobotan hanya diberikan begitu saja oleh atasan/pengambil keputusan tanpa adanya cek konsistensi pembobotan seperti metode AHP
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/random/acak dari sistem
  • Data dan Nilai Perhitungan yang ditampilkan akan SELALU BERBEDA jika halaman di refresh/reload
  • Jumlah dan Nama alternatif ditampilkan secara acak/random antara 10 s.d 20

Masalah penyeleksian penerima beasiswa merupakan masalah yang dapat diselesaikan dengan teknik MADM dengan menggunakan metode VIKOR. Metode VIKOR menyediakan perankingan kepada solusi terdekat meskipun terdapat kriteria yang bertentangan, sehingga pembuat keputusan dalam hal ini bagian kemahasiswaan dapat memilih perankingan yang tepat sesuai dengan alternatif yang ada.

Dalam contoh kasus ini ada 17 calon penerima beasiswa, yaitu Oscar, Shinta, Usman S., Gatot, Nina, P. Vicky, Pandu H., S. Kevin, H. Reza, L. Lina, Yuna R., Firza, Zaki, K. Mirza, M. Enrico, Carlie, dan D. James

2.1. Penentuan Kriteria

Dalam contoh kasus ini, kriteria-kriteria yang dipertimbangkan untuk penerima beasiswa adalah sebagai berikut :

  • Indeks Prestasi (IP) - semakin tinggi lebih baik; bobot : 50%
    IP yang tinggi memperlihatkan kemampuan akademik dari mahasiswa. Sehingga kriteria IP menjadi bobot penilaian tertinggi dalam penentuan beasiswa berprestasi ini
  • Semester (II-VII) - semakin rendah semakin baik; bobot : 20%
    Tingkat semester yang rendah dinilai oleh pimpinan dapat memacu semangat mahasiswa yang masih muda untuk mencetak prestasi sehingga kriteria semester menjadi pertimbangan dalam penentuan beasiswa berprestasi ini.
  • Daya listrik (VA) - semakin rendah semakin baik; bobot : 5%
    Daya listrik memperlihatkan asupan energi bangunan yang ditempati. Daya listrik bangunan mencerminkan tingkat ekonomi mahasiswa tersebut, sehingga kriteria daya listrik yang rendah menjadi satu kriteria dalam melakukan penilaian calon penerima beasiswa.
  • Jumlah tagihan listrik (Rp) - semakin rendah semakin baik; bobot : 25%
    Kriteria jumlah tagihan listrik dimasukkan sebagai salah satu kriteria penilaian karena jumlah tagihan listrik dapat melihat pengeluaran dari penggunaan listrik

2.2. Contoh Data

Data-data awal yang akan diperhitungakan dengan metoda VIKOR ini adalah seperti yang tercantum dalam TABEL 1 berikut ini

TABEL 1 : Contoh Data
Alternatif Kriteria
Kode Nama C1 C2 C3 C4
A1Oscar3.235900770336
A2Shinta3.592450658003
A3Usman S.2.9422200637691
A4Gatot3.284900241072
A5Nina3.465900976604
A6P. Vicky3.7242200957469
A7Pandu H.3.6241300331327
A8S. Kevin3.6622200107995
A9H. Reza2.545900380003
A10L. Lina3.0062200163145
A11Yuna R.3.0372200673882
A12Firza2.8941300729486
A13Zaki2.927450666588
A14K. Mirza2.693900692414
A15M. Enrico3.073900188398
A16D. James3.6962200407197
A17Carlie2.927900296435

Keterangan

  • C1 : Indeks Prestasi (IP)
  • C2 : Semester (II-VII)
  • C3 : Daya listrik (VA)
  • C4 : Jumlah tagihan listrik (Rp)

2.3. Perhitungan

Langkah pertama : menyusun alternatif dan kriteria ke dalam bentuk matriks keputusan (F) sebagai berikut:

$F=\begin{vmatrix} 3.23 & 5 & 900 & 770336 \\ 3.59 & 2 & 450 & 658003 \\ 2.94 & 2 & 2200 & 637691 \\ 3.28 & 4 & 900 & 241072 \\ 3.46 & 5 & 900 & 976604 \\ 3.72 & 4 & 2200 & 957469 \\ 3.62 & 4 & 1300 & 331327 \\ 3.66 & 2 & 2200 & 107995 \\ 2.54 & 5 & 900 & 380003 \\ 3.00 & 6 & 2200 & 163145 \\ 3.03 & 7 & 2200 & 673882 \\ 2.89 & 4 & 1300 & 729486 \\ 2.92 & 7 & 450 & 666588 \\ 2.69 & 3 & 900 & 692414 \\ 3.07 & 3 & 900 & 188398 \\ 3.69 & 6 & 2200 & 407197 \\ 2.92 & 7 & 900 & 296435\end{vmatrix}$

Langkah kedua : menentukan bobot kriteria. Berdasarkan data yang diberikan di atas, maka diperoleh data bobot kriteria (W) sebagai berikut:

$W = [ 0.50\ ,\ 0.20\ ,\ 0.05\ ,\ 0.25 ]$

Langkah ketiga : membuat matriks Normalisasi (N) berdasarkan persamaan [VIK-03], dengan sebelumnya dihitung dulu nilai positif dan negatif dari masing-masing kriterianya. Dalam penentuan nilai postif dan negatif ini perlu diperhatikan tipe dari tiap kriteria (min/max) untuk menentukan nilai terbaik untuk kriteria tersebut merupakan nilai minimal atau maksimal-nya. Setiap kriteria yang dinilai berdasarkan ukuran terendah semakin baik (min), maka nilai terbaiknya adalah -1. Sedangkan, Setiap kriteria yang dinilai berdasarkan ukuran tertinggi semakin baik (max), maka nilai terbaiknya adalah 1.

Untuk menghitung nilai positif dan negatif sebagai solusi ideal dari setiap kriteria ini digunakan persamaan [VIK-04] dan [VIK-05].

$\begin{align} f_1^+&= max\{\ f_{1,1}\ ;\ f_{2,1}\ ;\ f_{3,1}\ ;\ ...\ ;\ f_{17,1}\ \} \\ &= max\{\ 3.23\ ;\ 3.59\ ;\ 2.94\ ;\ ...\ ;\ 2.92\ \}\\ &= 3.72\end{align}$
dan seterusnya hingga $f_{4}^{+}$

$\begin{align} f_1^-&= min\{\ f_{1,1}\ ;\ f_{2,1}\ ;\ f_{3,1}\ ;\ ...\ ;\ f_{17,1}\ \} \\ &= min\{\ 3.23\ ;\ 3.59\ ;\ 2.94\ ;\ ...\ ;\ 2.92\ \}\\ &= 2.54\end{align}$
dan seterusnya hingga $f_{4}^{-}$

Setelah nilai positif dan negatif diperoleh maka selanjutnya menghitung normalisasi matriks keputusan $N$ sesuai dengan persamaan [VIK-03], untuk masing-masing alternatif dan kriteria sebagai berikut

Untuk semua alternatif pada kriteria ke-1 dihitung nilai normalisasi $N_{1,1}$ sampai dengan $N_{17,1}$ seperti ini:

$\begin{align} N_{1,1}&=\frac{(f_1^{+}-f_{1,1})}{f_1^{+}-f_1^{-}}\\ &=\frac{(3.72 - 3.23)}{(3.72 - 2.54)} \\ &=0.415\end{align}$

$\begin{align} N_{2,1}&=\frac{(f_1^{+}-f_{2,1})}{f_1^{+}-f_1^{-}}\\ &=\frac{(3.72 - 3.59)}{(3.72 - 2.54)} \\ &=0.110\end{align}$

... dan seterusnya hingga

$\begin{align} N_{17,1}&=\frac{(f_1^{+}-f_{17,1})}{f_1^{+}-f_1^{-}}\\ &=\frac{(3.72 - 2.92)}{(3.72 - 2.54)} \\ &=0.678\end{align}$

demikian juga dilakukan cara yang sama untuk semua alternatif untuk kriteria ke-2 hingga kriteria ke-4 ($N_{1,2},..,N_{17,2}$ s.d. $N_{1,4},..,N_{17,4}$) dan diperoleh matriks normalisasi (N) sebagai berikut :

$N=\begin{vmatrix} 0.415 & 0.600 & 0.257 & 0.763 \\ 0.110 & 0.000 & 0.000 & 0.633 \\ 0.661 & 0.000 & 1.000 & 0.610 \\ 0.373 & 0.400 & 0.257 & 0.153 \\ 0.220 & 0.600 & 0.257 & 1.000 \\ 0.000 & 0.400 & 1.000 & 0.978 \\ 0.085 & 0.400 & 0.486 & 0.257 \\ 0.051 & 0.000 & 1.000 & 0.000 \\ 1.000 & 0.600 & 0.257 & 0.313 \\ 0.610 & 0.800 & 1.000 & 0.063 \\ 0.585 & 1.000 & 1.000 & 0.651 \\ 0.703 & 0.400 & 0.486 & 0.716 \\ 0.678 & 1.000 & 0.000 & 0.643 \\ 0.873 & 0.200 & 0.257 & 0.673 \\ 0.551 & 0.200 & 0.257 & 0.093 \\ 0.025 & 0.800 & 1.000 & 0.344 \\ 0.678 & 1.000 & 0.257 & 0.217\end{vmatrix}$

Langkah keempat : Matriks keputusan yang telah dinormalisasi (N) selanjutnya dikalikan dengan bobot kriteria sebagai berikut:

$\begin{align} F_{1,1}^{*}&=N_{1,1}*w_1 \\ &=0.415 * 0.50 \\ &=0.208\end{align}$

$\begin{align} F_{2,1}^{*}&=N_{2,1}*w_1 \\ &=0.110 * 0.50 \\ &=0.055\end{align}$

... dan seterusnya hingga

$\begin{align} F_{17,1}^{*}&=N_{17,1}*w_1 \\ &=0.678 * 0.50 \\ &=0.339\end{align}$

demikian juga dilakukan cara yang sama hingga kriteria ke-4 dan diperoleh matriks normalisasi terbobot ($F^{*}$) sebagai berikut :

$F^{*}=\begin{vmatrix} 0.208 & 0.120 & 0.013 & 0.191 \\ 0.055 & 0.000 & 0.000 & 0.158 \\ 0.331 & 0.000 & 0.050 & 0.152 \\ 0.186 & 0.080 & 0.013 & 0.038 \\ 0.110 & 0.120 & 0.013 & 0.250 \\ 0.000 & 0.080 & 0.050 & 0.244 \\ 0.042 & 0.080 & 0.024 & 0.064 \\ 0.025 & 0.000 & 0.050 & 0.000 \\ 0.500 & 0.120 & 0.013 & 0.078 \\ 0.305 & 0.160 & 0.050 & 0.016 \\ 0.292 & 0.200 & 0.050 & 0.163 \\ 0.352 & 0.080 & 0.024 & 0.179 \\ 0.339 & 0.200 & 0.000 & 0.161 \\ 0.436 & 0.040 & 0.013 & 0.168 \\ 0.275 & 0.040 & 0.013 & 0.023 \\ 0.013 & 0.160 & 0.050 & 0.086 \\ 0.339 & 0.200 & 0.013 & 0.054\end{vmatrix}$

Langkah kelima : Menghitung utility measure dari setiap alternatif. Ada 2 utility measure yang dihitung, yaitu nilai S dan R

Perhitungan nilai Utility Measures $S$ sesuai persamaan [VIK-07] untuk setiap alternatif adalah sebagai berikut:

$\begin{align} S_{1}&=F_{1,1}^{*}+F_{1,2}^{*}+F_{1,3}^{*}+F_{1,4}^{*} \\ &=0.208 + 0.120 + 0.013 + 0.191 \\ &=0.531\end{align}$

$\begin{align} S_{2}&=F_{2,1}^{*}+F_{2,2}^{*}+F_{2,3}^{*}+F_{2,4}^{*} \\ &=0.055 + 0.000 + 0.000 + 0.158 \\ &=0.213\end{align}$

... dan seterusnya hingga

$\begin{align} S_{17}&=F_{17,1}^{*}+F_{17,2}^{*}+F_{17,3}^{*}+F_{17,4}^{*} \\ &=0.339 + 0.200 + 0.013 + 0.054 \\ &=0.606\end{align}$

Perhitungan nilai Regret measures $R$ sesuai persamaan [VIK-08] untuk setiap alternatif adalah sebagai berikut:

$\begin{align} R_{1}&=max\{\ F_{1,1}^{*}\ ;\ F_{1,2}^{*}\ ;\ F_{1,3}^{*}\ ;\ F_{1,4}^{*}\} \\ &=max\{0.208\ ;\ 0.120\ ;\ 0.013\ ;\ 0.191\} \\ &=0.208\end{align}$

$\begin{align} R_{2}&=max\{\ F_{2,1}^{*}\ ;\ F_{2,2}^{*}\ ;\ F_{2,3}^{*}\ ;\ F_{2,4}^{*}\} \\ &=max\{0.055\ ;\ 0.000\ ;\ 0.000\ ;\ 0.158\} \\ &=0.158\end{align}$

... dan seterusnya hingga

$\begin{align} R_{17}&=max\{\ F_{17,1}^{*}\ ;\ F_{17,2}^{*}\ ;\ F_{17,3}^{*}\ ;\ F_{17,4}^{*}\} \\ &=max\{0.339\ ;\ 0.200\ ;\ 0.013\ ;\ 0.054\} \\ &=0.339\end{align}$

Langkah keenam : Menghitung nilai indeks VIKOR (Q)

Sebelum menghitung nilai indeks VIKOR (Q) dari tiap alternatif, perlu dihitung terlebih dahulu nilai-nilai S+, S-, R+, dan R- sebagai berikut :

$\begin{align} S^{+}&=max\{S_1\ ;\ S_2\ ;\ S_3\ ;\ ...\ ;\ S_{17}\} \\ &=max\{0.531\ ;\ 0.213\ ;\ 0.533\ ;\ ...\ ;\ 0.606\} \\ &= 0.711\end{align}$

$\begin{align} S^{-}&=min\{S_1\ ;\ S_2\ ;\ S_3\ ;\ ...\ ;\ S_{17}\} \\ &=min\{0.531\ ;\ 0.213\ ;\ 0.533\ ;\ ...\ ;\ 0.606\} \\ &= 0.075\end{align}$

$\begin{align} R^{+}&=max\{R_1\ ;\ R_2\ ;\ R_3\ ;\ ...\ ;\ R_{17}\} \\ &=max\{0.208\ ;\ 0.158\ ;\ 0.331\ ;\ ...\ ;\ 0.339\} \\ &= 0.500\end{align}$

$\begin{align} R^{-}&=min\{R_1\ ;\ R_2\ ;\ R_3\ ;\ ...\ ;\ R_{17}\} \\ &=min\{0.208\ ;\ 0.158\ ;\ 0.331\ ;\ ...\ ;\ 0.339\} \\ &= 0.050\end{align}$

Perhitungan nilai indeks VIKOR dari setiap alternatif (dari $Q_1$ sampai dengan $Q_{17}$ sesuai dengan persamaan [VIK-09]) adalah sebagai berikut:

$\begin{align} Q_{1}&=v\left[\frac{S_{1}-S^{-}}{S^{+}-S^{-}}\right]+(1-v)\left[\frac{R_{1}-R^{-}}{R^{+}-R^{-}}\right]\\ &=0.5\left[\frac{0.531 - 0.075}{0.711 - 0.075}\right]+(1-0.5)\left[\frac{0.208 - 0.050}{0.500 - 0.050}\right]\\ &=0.534\end{align}$

$\begin{align} Q_{2}&=v\left[\frac{S_{2}-S^{-}}{S^{+}-S^{-}}\right]+(1-v)\left[\frac{R_{2}-R^{-}}{R^{+}-R^{-}}\right]\\ &=0.5\left[\frac{0.213 - 0.075}{0.711 - 0.075}\right]+(1-0.5)\left[\frac{0.158 - 0.050}{0.500 - 0.050}\right]\\ &=0.229\end{align}$

... dan seterusnya sampai dengan

$\begin{align} Q_{17}&=v\left[\frac{S_{17}-S^{-}}{S^{+}-S^{-}}\right]+(1-v)\left[\frac{R_{17}-R^{-}}{R^{+}-R^{-}}\right]\\ &=0.5\left[\frac{0.606 - 0.075}{0.711 - 0.075}\right]+(1-0.5)\left[\frac{0.339 - 0.050}{0.500 - 0.050}\right]\\ &=0.738\end{align}$

Pada perhitungan indeks VIKOR ini digunakan nilai voting by majority rule yaitu v = 0.5

Langkah ketujuh : Meranking alternatif dengan mengurutkan mulai dari nilai Q terkecil. Hasil pemeringkatan selengkapnya adalah sebagai berikut:

TABEL 2 : Perangkingan
RangkingAlternatifNilai Q
kodeNamakodeNilai
1$A_{8}$S. Kevin$Q_{8}$0.000
2$A_{7}$Pandu H.$Q_{7}$0.140
3$A_{2}$Shinta$Q_{2}$0.229
4$A_{16}$D. James$Q_{16}$0.306
5$A_{4}$Gatot$Q_{4}$0.342
6$A_{6}$P. Vicky$Q_{6}$0.451
7$A_{15}$M. Enrico$Q_{15}$0.468
8$A_{1}$Oscar$Q_{1}$0.534
9$A_{5}$Nina$Q_{5}$0.551
10$A_{10}$L. Lina$Q_{10}$0.642
11$A_{3}$Usman S.$Q_{3}$0.672
12$A_{17}$Carlie$Q_{17}$0.738
13$A_{11}$Yuna R.$Q_{11}$0.765
14$A_{12}$Firza$Q_{12}$0.775
15$A_{13}$Zaki$Q_{13}$0.812
16$A_{14}$K. Mirza$Q_{14}$0.887
17$A_{9}$H. Reza$Q_{9}$1.000

Langkah kedelapan : Langkah terakhir adalah mengusulkan solusi kompromi. Solusi kompromi dapat diusulkan dengan membuktikan kedua kondisi. Dalam pembuktian solusi kompromi ini digunakan nilai v (nilai bobot strategy of the maximum group utility) masing-masing adalah v=0.41(with veto), v=0.5(by concensus), dan v=0.59(voting by majority rule)

Pembuktian I : Pembuktian kondisi Acceptable advantage dengan menggunakan persamaan [VIK-10] dan [VIK-11], yaitu :

$\begin{align} DQ &= \frac{1}{(m - 1)} \\ &=\frac{1}{(17-1)} \\ &=0.062\end{align}$

$\begin{align} Q_{A_2}-Q_{A_1}&=0.140 - 0.000 \\ &=0.140\end{align}$

Nilai selisih yang dihasilkan lebih besar dari nilai DQ, sehingga kondisi Acceptable advantage terpenuhi

Pembuktian II : Pembuktian kondisi Acceptable stability in decision making.

Hasil peringkat terbaik dari perankingan dengan v=0.59 adalah S. Kevin yang sama dengan peringkat terbaik dari perankingan Q. Hasil peringkat terbaik dari perankingan dengan 0.41 dan 0.5 adalah keduanya S. Kevin yang sama dengan peringkat terbaik dari perankingan Q. Berdasarkan hasil yang diperoleh dapat dibuktikan bahwa kondisi Acceptable stability in decision making terpenuhi.

TABEL 3 : Perangkingan dengan v=0.41, v=0.5 dan v=0.59
RankingAlternatif, dengan DQ=0.0625
SRv=0.41v=0.5v=0.59
NamaQQm-Q1NamaQQm-Q1NamaQQm-Q1
188S. Kevin0.0000.000S. Kevin0.0000.000S. Kevin0.0000.000
277Pandu H.0.1270.127Pandu H.0.1400.140Pandu H.0.1530.153
322Shinta0.2310.231Shinta0.2290.229Shinta0.2270.227
41616D. James0.2950.295D. James0.3060.306D. James0.3170.317
544Gatot0.3350.335Gatot0.3420.342Gatot0.3490.349
6151P. Vicky0.4480.448P. Vicky0.4510.451P. Vicky0.4550.455
766M. Enrico0.4740.474M. Enrico0.4680.468M. Enrico0.4620.462
855Oscar0.5010.501Oscar0.5340.534Oscar0.5670.567
91015Nina0.5320.532Nina0.5510.551Nina0.5700.570
10111L. Lina0.6280.628L. Lina0.6420.642L. Lina0.6550.655
11310Usman S.0.6630.663Usman S.0.6720.672Usman S.0.6800.680
12173Carlie0.7210.721Carlie0.7380.738Carlie0.7560.756
131213Yuna R.0.7240.724Yuna R.0.7650.765Firza0.7940.794
141417Firza0.7560.756Firza0.7750.775Yuna R.0.8050.805
151312Zaki0.7820.782Zaki0.8120.812Zaki0.8430.843
161114K. Mirza0.8820.882K. Mirza0.8870.887K. Mirza0.8920.892
1799H. Reza1.0001.000H. Reza1.0001.000H. Reza1.0001.000

Berdasarkan hasil pembuktian kedua kondisi dapat diketahui bahwa kedua kondisi tersebut terpenuhi. S. Kevin dapat diusulkan menjadi solusi kompromi dan merupakan peringkat terbaik dari perankingan penerima beasiswa dengan metode VIKOR.

Uraian diberikan secara langkah per langkah agar memudahkan pemahaman dalam pembuatan aplikasinya. Dimulai dari rancangan schema database-nya hingga langkah-langkah implemantasi proses sesuai Metode VIKOR yang sudah dijelaskan sebelumnya, dengan menggunakan data sesuai dengan contoh kasus yang diberikan.

Untuk menyimpan data-data kriteria, alternatif dan data sample ; disini digunakan database bernama db_dss yang dibuat dengan sintak SQL 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

Dari data pada fakta di atas, dapat di representasikan kriteria dan parameter yang berperan dalam permasalahan ini dalam bentuk tabel database, yaitu tabel vik_kriteria sebagai berikut:

DROP TABLE IF EXISTS vik_kriteria;
CREATE TABLE IF NOT EXISTS vik_kriteria(
  id_kriteria TINYINT(3) UNSIGNED AUTO_INCREMENT,
  kriteria VARCHAR(100) NOT NULL,
  bobot FLOAT NOT NULL,
  tipe SET('max','min') NOT NULL,
  PRIMARY KEY(id_kriteria)
)ENGINE=MyISAM;

INSERT INTO vik_kriteria(id_kriteria,kriteria,bobot,tipe)
VALUES
(1,'Indeks Prestasi','50','max'),
(2,'Semester','20','min'),
(3,'Daya listrik','5','min'),
(4,'Jumlah tagihan listrik','25','min');

Berikutnya adalah data mengenai nama-nama alternatif yang akan diperhitungkan -- sesuai dengan contoh kasus di atas -- dengan dibuatkan satu tabel baru bernama vik_alternatif. Dalam contoh ini atribut yang disimpan hanya `nama` dari alternatifnya. Atribut-atribut (field/kolom) lain bisa ditambahkan disesuaikan dengan kebutuhan sistem/aplikasi yang dibuat

DROP TABLE IF EXISTS vik_alternatif;
CREATE TABLE IF NOT EXISTS vik_alternatif(
  id_alternatif TINYINT(3) UNSIGNED AUTO_INCREMENT,
  alternatif  VARCHAR(100) NOT NULL,
  PRIMARY KEY(id_alternatif)
)ENGINE=MyISAM;

INSERT INTO vik_alternatif(alternatif)
VALUES
('Oscar'),
('Shinta'),
('Usman S.'),
('Gatot'),
('Nina'),
('P. Vicky'),
('Pandu H.'),
('S. Kevin'),
('H. Reza'),
('L. Lina'),
('Yuna R.'),
('Firza'),
('Zaki'),
('K. Mirza'),
('M. Enrico'),
('D. James'),
('Carlie');

Data-data penilaian yang didapat dalam contoh kasus sebelumnya dimasukkan dalam tabel baru bernama vik_sample

DROP TABLE IF EXISTS vik_sample;
CREATE TABLE IF NOT EXISTS vik_sample(
  id_sample INT(11) UNSIGNED AUTO_INCREMENT,
  id_alternatif TINYINT(3) UNSIGNED NOT NULL,
  id_kriteria TINYINT(3) UNSIGNED NOT NULL,
  nilai FLOAT NOT NULL,
  PRIMARY KEY(id_sample)
)ENGINE=MyISAM;

INSERT INTO vik_sample(id_alternatif,id_kriteria,nilai)
VALUES
(1,1,3.23),(1,2,5),(1,3,900),(1,4,770336),
(2,1,3.59),(2,2,2),(2,3,450),(2,4,658003),
(3,1,2.94),(3,2,2),(3,3,2200),(3,4,637691),
(4,1,3.28),(4,2,4),(4,3,900),(4,4,241072),
(5,1,3.46),(5,2,5),(5,3,900),(5,4,976604),
(6,1,3.72),(6,2,4),(6,3,2200),(6,4,957469),
(7,1,3.62),(7,2,4),(7,3,1300),(7,4,331327),
(8,1,3.66),(8,2,2),(8,3,2200),(8,4,107995),
(9,1,2.54),(9,2,5),(9,3,900),(9,4,380003),
(10,1,3.00),(10,2,6),(10,3,2200),(10,4,163145),
(11,1,3.03),(11,2,7),(11,3,2200),(11,4,673882),
(12,1,2.89),(12,2,4),(12,3,1300),(12,4,729486),
(13,1,2.92),(13,2,7),(13,3,450),(13,4,666588),
(14,1,2.69),(14,2,3),(14,3,900),(14,4,692414),
(15,1,3.07),(15,2,3),(15,3,900),(15,4,188398),
(16,1,3.69),(16,2,6),(16,3,2200),(16,4,407197),
(17,1,2.92),(17,2,7),(17,3,900),(17,4,296435);

3.2. Pengambilan Nilai

Sebelum dilakukan perhitungan-perhitungan menggunakan metoda VIKOR dengan menggunakan PHP, maka terlebih dahulu kita menyiapkan data yang akan diolah dengan mengambil (fetching) data dari database, dan disimpan (assign) ke dalam variabel-variabel PHP.

Data-data yang diambil tersebut meliputi data-data primer -- yaitu data kriteria dan bobot -- serta data-data sekunder yaitu data kandidat/alternatif beserta data penilaiannya (nilai)

3.2.1. Koneksi ke Database

Sebelum melalukan operasi dengan data dari database, perlu dibuat script untuk koneksi ke database terlebih dahulu. Dari database 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.2. Pengambilan Nilai Kriteria

Data parameter kriteria dan bobot yang akan digunakan dalam perhitungan metode VIKOR ini diambil dari tabel vik_kriteria dan dimasukkan ke dalam variabel $kriteria dan $bobot yang berupa array multidimensi. Variabel $kriteria dan $bobot ini mempunyai index berupa id_kriteria dan berisi item data array yang menyimpan data-data nama kriteria dan type (benefit/cost), serta bobot dari masing-masing kriteria tersebut.

<?php
//-- query untuk mendapatkan semua data kriteria di tabel vik_kriteria
$sql 'SELECT * FROM vik_kriteria';
$result $db->query($sql);
//-- menyiapkan variable penampung berupa array
$kriteria=array();
$bobot=array();
//-- melakukan iterasi pengisian array untuk tiap record data yang didapat
foreach ($result as $row) {
  
$kriteria[$row['id_kriteria']]=array($row['kriteria'],$row['type']);
  
$bobot[$row['id_kriteria']]=$row['bobot']/100;
}
?>;

Pada contoh kasus yang disajikan, variabel $kriteria[1] berisi nilai berupa array('Indeks Prestasi','max') , Sedangkan variabel $bobot[1] berisi nilai 0.5

3.2.3. Pengambilan Nilai Alternatif

Kode PHP berikutnya adalah merupakan script untuk mengambil nilai data alternatif yang tersimpan pada tabel vik_alternatif dan menyimpannya ke dalam variabel $alternatif

<?php
//-- query untuk mendapatkan semua data kriteria di tabel vik_alternatif
$sql 'SELECT * FROM vik_alternatif';
$result $db->query($sql);
//-- menyiapkan variable penampung berupa array
$alternatif=array();
//-- melakukan iterasi pengisian array untuk tiap record data yang didapat
foreach ($result as $row) {
  
$alternatif[$row['id_alternatif']]=$row['alternatif'];
}
?>;

3.2.4. Pengambilan Nilai Penilaian

Data sample penilaian yang tersimpan pada tabel vik_sample di-fetching dan di-assign ke variabel array dua dimensi $sample. Kode script PHP-nya adalah seperti berikut ini :

<?php
//-- query untuk mendapatkan semua data sample penilaian di tabel vik_sample
$sql 'SELECT * FROM vik_sample ORDER BY id_alternatif,id_kriteria';
$result $db->query($sql);
//-- menyiapkan variable penampung berupa array
$sample=array();
//-- melakukan iterasi pengisian array untuk tiap record data yang didapat
foreach ($result as $row) {
  
//-- jika array $sample[$row['id_alternatif']] belum ada maka buat baru
  //-- $row['id_alternatif'] adalah id kandidat/alternatif
  
if (!isset($sample[$row['id_alternatif']])) {
    
$sample[$row['id_alternatif']] = array();
  }
  
$sample[$row['id_alternatif']][$row['id_kriteria']] = $row['nilai'];
}
?>

Nilai dari variabel $sample ini adalah merupakan representasi dari matriks keputusan (lihat Membuat Matriks Keputusan]

3.3. Perhitungan

Setalah data-data yang diperlukan dalam perhitungan diambil dari database, kemudian data-data tersebut diolah sebagai berikut:

3.3.1. Membuat Matrik Keputusan (F)

Matrik keputusan F, seperti dalam bagian sebelumnya direpresentasikan dalam variable $sample (lihat Pengambilan Nilai Penilaian). Data ini dapat ditampilkan dengan kode PHP sebagai berikut:

<table border='1'>
<?php
//-- melakukan iterasi utk setiap alternatif
foreach ($sample as $id_altenatif=>$kriteria) {
  echo 
"<tr>";
  
//-- melakukan iterasi utk setiap kriteria
  
foreach($kriteria as $id_kriteria=>$nilai){
    echo 
"<td>{$nilai}</td>";
  }
  echo 
"</tr>";
}
?>
</table>

3.3.2. Membuat Matrik Normalisasi (N)

Dalam pembuatan matrik Normalisasi (N) perlu dicari dulu nilai f+ dan f- untuk masing-masing kriteria. Nilai fj+ adalah nilai maksimum/terbesar dari semua nilai matrik keputusan F pada kriteria ke-j. Sedangkan fj- adalah nilai minimum/terkecil dari semua nilai matrik keputusan F pada kriteria ke-j; perhitungannya adalah sebagai berikut:

<?php
$f_plus
=$f_min=array();
//-- melakukan iterasi utk setiap alternatif
foreach ($sample as $id_altenatif=>$kriteria) {
  
//-- melakukan iterasi utk setiap kriteria
  
foreach($kriteria as $j=>$nilai){
    
//-- inisialisai nilai f_plus dan f_min
    
if(!isset($f_plus[$j])) {
      
$f_plus[$j]=0;
      
$f_min[$j]=9999999;
    }
    
$f_plus[$j] = ($f_plus[$j] < $nilai $nilai $f_plus[$j]);
    
$f_min[$j] = ($f_min[$j] > $nilai $nilai $f_min[$j]);
  }
}
?>

Setelah nilai positif f+ dan negatif f- diperoleh maka selanjutnya menghitung normalisasi matriks keputusan N sebagai berikut:

<?php
$N
=array();
//-- melakukan iterasi utk setiap alternatif
foreach ($sample as $i=>$kriteria) {
  
$N[$i]=array();
  
//-- melakukan iterasi utk setiap kriteria
  
foreach($kriteria as $j=>$nilai){
    
$N[$i][$j]=($f_plus[$j] - $nilai)/($f_plus[$j]-$f_min[$j]);
  }
}
?>

3.3.3. Membuat Matrik Normalisasi Terbobot (F*)

Matriks keputusan yang telah dinormalisasi N selanjutnya dikalikan dengan bobot kriteria untuk mendapatkan nilai matrik normalisasi terbobot F* sebagai berikut:

<?php
$F_star
=array();
//-- melakukan iterasi utk setiap alternatif
foreach ($N as $i=>$kriteria) {
  
$F_star[$i]=array();
  
//-- melakukan iterasi utk setiap kriteria
  
foreach($kriteria as $j=>$nilai){
    
$F_star[$i][$j]=$nilai $bobot[$j];
  }
}
?>

3.3.4. Menghitung Utility Measure (S dan R)

Langkah berikutnya adalah menghitung nilai Utility Measure yaitu nilai S dan R; Nilai Si merupakan jumlah nilai F* untuk alternatif ke -i, sedangkan nilai Ri merupakan nilai maksimum / terbesar di antara nilai-nilai yang ada pada F* untuk alternatif ke -i. Kode script PHP-nya dapat dituliskan sebagai berikut:

<?php
$S
=$R=array();
//-- melakukan iterasi utk setiap alternatif
foreach ($F_star as $i=>$kriteria) {
  
$S[$i]=$R[$i]=0;
  
//-- melakukan iterasi utk setiap kriteria
  
foreach($kriteria as $j=>$nilai){
    
$S[$i]+=$nilai;
    
$R[$i]=($R[$i]<$nilai $nilai $R[$i]);
  }
}
?>

3.3.5. Menghitung Nilai Indeks VIKOR (Q)

Dalam perhitungan Nilai Indeks VIKOR Q terlebih dahulu dicari nilai untuk S+ ,S- ,R+ , dan nilai R-. Untuk mendapatkan nilai-nilai tersebut, karena nilai S dan R sudah dalam bentuk array, maka dapat digunakan fungsi max() dan min(). Dalam menghiutng nilai indeks VIKOR (Q) ini dibuatkan fungsi tersendiri dalam PHP (function get_Q()) seperti berikut:

<?php
//-- inisialisasi nilai index VKOR (Q)
$Q=array();
//-- deklarasi fungsi untuk mencari nilai index VIKOR (Q)
function get_Q($S,$R,$v=0.5)
{
  
//-- mencari nilai S_plus,S_min,R_plus dan R_min
  
$S_plus=max($S);
  
$S_min=min($S);
  
$R_plus=max($R);
  
$R_min=min($R);
  
$Q=array();
  foreach(
$R as $i=>$r){
    
$Q[$i]=$v*(($S[$i]-$S_min[$i])/($S_plus[$i]-$S_min[$i]))
        +(
1-$v)*(($R[$i]-$R_min[$i])/($R_plus[$i]-$R_min[$i]));
  }
  return 
$Q;
}
//-- inisiasi nilai v untuk nilai by vote, by consensus, dan voting by majority rule
$v=array(0.41,0.5,0.59);
//-- menghitung nilai index VIKOR (Q) untuk v=0.5 (by consensus)
$Q[$v[1]]=get_Q($S,$R);
?>

3.3.6. Perangkingan

Perankingan alternatif dibuat dengan mengurutkan mulai dari nilai Q terkecil hingga yang terbesar. Di sini bisa memanfaatkan fungsi asort() yang merupakan fungsi buit-in dalam PHP. Source code-nya adalah sebagai berikut:

<?php
//-- mengurutkan nilai indeks VIKOR Q
asort($Q[$v[1]]);
//-- inisialisasi variabel array sQ
$sQ=array();
function 
get_sQ($Q)
{
  
$s_Q=array();
  foreach(
$Q as $i=>$v)
    
$s_Q[]=array($i,$v);
  return 
$s_Q;
}
$sQ[$v[1]]=get_sQ($Q[$v[1]]);
?>

3.3.7. Solusi Kompromi

Solusi kompromi ditentukan dari alternatif yang memiliki peringkat terbaik dengan mengukur indeks VIKOR yang minimum, apabila 2 kondisi yaitu Acceptable Advantage dan Acceptable Stability in Decision Making terpenuhi.

3.3.7.1. Pembuktian kondisi Acceptable Advantage

Berdasarkan persamaan VIK-10 dan VIK-11 dapat dibuat kode PHP sebagai berikut:

<?php
//-- inisialisasi kondisi_1
$kondisi_1=0;
//-- m adalah jumlah alternatif
$m count($sample);
//-- menghitung nilai DQ
$DQ / ($m 1);
//-- pengecekan kondisi Acceptable Advantage
if( ($sQ[$v[1]][1][1]-$sQ[$v[1]][0][1]) >= $DQ ){
  
$kondisi_1=1;
  echo 
'kondisi 1 terpenuhi<br>';
}else{
  echo 
'kondisi 1 tidak terpenuhi<br>';
}
?>

3.3.7.2. Pembuktian kondisi Acceptable Stability in Decision Making

Dengan menggunakan persamaan VIK-12 dan menggunakan nilai v = 0.41, v = 0.5, dan v = 0.59 dibuat script sebagai berikut:

<?php
//-- inisialisasi kondisi_2
$kondisi_2=0;
//-- menghitung nilai Q untuk v=$V[0] (by vote)
$Q[$v[0]]=get_Q($S,$R,$v[0]);
asort($Q[$v[0]]);
$sQ[$v[0]]=get_sQ($Q[$v[0]]);
//-- menghitung nilai Q untuk v=$V[2] (voting by majority rule)
$Q[$v[2]]=get_Q($S,$R,$v[2]);
asort($Q[$v[2]]);
$sQ[$v[2]]=get_sQ($Q[$v[2]]);
//-- pengecekan kondisi Acceptable Stability in Decision Making
if(($sQ[$v[1]][0][1]==$sQ[$v[0]][0][1]) && ($sQ[$v[1]][0][1]==$sQ[$v[2]][0][1])){
    
$kondisi_2=1;
    echo 
'kondisi 2 terpenuhi<br>';
}else{
    echo 
'kondisi 2 tidak terpenuhi<br>';
}
?>

3.3.7.3. Solusi Kompromi

Jika salah satu atau kedua kondisi tidak terpenuhi maka maka dapat diajukan suatu solusi kompromi, sesuai dengan penjelasan pada poin 1.1.7.3 dan persamaan VIK-12 dapat dinyatakan dalam kode PHP sebagai berikut:

<?php
echo "Berdasarkan hasil pembuktian kedua kondisi dapat diketahui bahwa "
  
.($kondisi_1==1?($kondisi_2==1?"kedua kondisi tersebut":"kondisi dua tidak"):"kondisi satu tidak")
  .
" terpenuhi.";
if(
$kondisi_1==1){
  if(
$kondisi_2==1){
    echo 
"<b>{$alternatif[$sQ[$v[1]][0][0]]}</b> dapat diusulkan menjadi solusi kompromi "
      
."dan merupakan peringkat terbaik dari perankingan penerima beasiswa dengan metode VIKOR.";
  }else{
    echo 
"Sehingga <b>{$alternatif[$sQ[$v[1]][0][0]]}</b> dan <b>{$alternatif[$Q[$v[1]][1][0]]}</b> "
      
."dapat diusulkan menjadi solusi kompromi penerima beasiswa dengan metode VIKOR.";
  }
} else{
  echo 
"Berdasarkan persamaan [<a href='#vik12'>VIK-12</a>] diperoleh nilai m={$m}, sehingga alternatif ";
  if(
$m>1){
    echo 
"A<sub>1</sub>, ..., A<sub>{$m}; yaitu ";
    
$nm=array();
    for(
$i=0;$i<$m;$i++) $nm[]=$alternatif[$sQ[$v[1]][$i][0]];
    
$nm_a=array_pop($nm);
    echo 
"<b>".implode(', ',$nm)."</b> dan <b>{$nm_a}</b> ";
  }else{
    echo 
"A<sub>1</sub>; yaitu <b>{$alternatif[$sQ[$v[1]][0][0]]}</b> ";
  }
  echo 
"dapat diusulkan menjadi solusi kompromi penerima beasiswa dengan metode VIKOR.";
}
?>

Beberapa simpulan yang bisa diperoleh adalah

  • Penggunaan metode VIKOR dapat membantu proses seleksi dan menentukan penerima beasiswa berdasarkan kriteria yang telah ditetapkan dan diberi bobot oleh pengambil keputusan, yaitu : IP,semester, daya listrik dan tagihan listrik rumah.
  • Metode VIKOR merupakan metode yang sangat berguna dalam membantu pembuat keputusan untuk membuat keputusan dalam penyeleksian karena dapat membuat pemeringkatan alternatif kompromi dari sejumlah alternatif yang ada

  • Alemi,M., Kalbasi, M., and Rashidi, F. (2013) A Mathematical Prediction Based on VIKOR Model, Middle-East J. Sci. Res., vol. 16, no. 1, pp. 114–121
  • Chatterjee,P., Athawale,V. M. , and Chakraborty,S. (2010)Selection of Industrial Robots Using Compromise Ranking and Outranking Methods, Robot. Comput. Integr. Manuf., vol. 26,no. 5, pp. 483–489
  • Civic,A. and Vucijak,B. ,(2014) Multi-criteria Optimization of Insulation Options for Warmth of Buildings to Increase Energy Efficiency, Procedia Eng., vol. 69, pp. 911–920
  • Cristobal, J.R.S., Biezma,M.V., et al. (2009). Selection of Materials Under Aggressive Environments: The VIKORMethod.
  • Datta, S., Mahapatra, S.S., et al. (2010). Comparative Study on Application of Utility Concept and VIKOR Method for Vendor Selection
  • El-Santawy M.F. and Ahmed A.N. (2012), A VIKOR Approach for Project Selection Problem, Life Science Journal, vol. 9, no. 4, pp. 5878–5880.
  • El-Santawy, M.F. and Ahmed, A.N., (2012) Evaluating Consulting Firms Using VIKOR Life Science Journal, vol. 9, no. 4, pp. 27–31,
  • Khezrian, M., Kadir,W.W., et al. (2011). Service Selection Base on VIKOR Method. International Journal of Research and Reviews in Computer Science 2(5).
  • Kusdiantoro. (2012). Analisis Usability Website Akademik Di Indonesia Menggunakan Metode Promethee, Vikor, dan Electree. Universitas Negri Yogyakarta
  • Kusumadewi, S., Hartati, S., Harjoko, A., and Wardoyo, R. (2006) Fuzzy Multi-Attribute Decision Making (FUZZY MADM).Yogyakarta: Graha Ilmu
  • Lengkong, Salvius Paulus (2016), Sistem Pendukung Keputusan Dinamis Untuk Seleksi Penerima Beasiswa Menggunakan Kombinasi Metode AHP dan VIKOR. Thesis, Program Pascasarjana, Fakultas Teknik, Universitas Gadjah Mada, Yogyakarta
  • Perdana, N.G., and Widodo,T. , (2013) Sistem Pendukung Keputusan Pemberian Beasiswa Kepada Peserta Didik Baru Menggunakan Metode TOPSIS, in SEMANTIK, pp. 265–272.
  • Opricovic, S. (1998). Multicriteria Optimization of Civil Engineering Systems. Faculty of Civil Engineering, Belgrade 2(1): 5-21.
  • Opricovic S. and Tzeng, G.H., (2004)Compromise Solution by MCDM Methods: A Comparative Analysis of VIKOR and TOPSIS, Eur. J. Oper. Res., vol. 156, no. 2, pp. 445–455
  • Opricovic S. and Tzeng, G.H., (2007) Extended VIKOR Method in Comparison with Outranking Methods, Eur. J. Oper. Res.,vol. 178, no. 2, pp. 514–529
  • Rao,R. Venkanta, (2008) Decision Making in the Manufacturing Environement
  • Sayadi, M. K., Heydari, et al. (2009). Extension of VIKOR Method for Decision Making Problem with Interval Number. Applied Mathematical Modelling 33(5): 2257-2262
  • Vučijak, B., Kupusović, T., MidŽić-Kurtagić, S., and Cerić, A. (2013) Applicability of Multicriteria Decision Aid to Sustainable Hydropower, Appl. Energy, vol. 101, no. June 2009, pp. 261–267
  • Ying-Yu, W and De-Jian Y.,(2011) Extended VIKOR for Multicriteria Decision Making Problems Under Intuitionistic Environment, International Conference of Management and Science Engineering, Annual Conference Proceeding,pp.118–122,
  • Yu ,P. L, (1973) A Class of Solutions for Group Decision Problems, Management Science., vol. 19, no. 8, pp. 936–946
  • Zeleny, M. and Cochrane, J. L. (1982), Multiple Criteria Decision Making, vol. 25. New York: McGraw-Hill
  • Zimmermann, H., (1992) Fuzzy Set Theory and Its Applications Second, Revised Edition