DSS Profile Matching Method

Contoh implementasi DSS (Decision Support System) dengan metode Profile Matching menggunakan PHP dan MySQL untuk promosi jabatan berdasarkan evaluasi kinerja karyawan

Profile matching adalah sebuah mekanisme pengambilan keputusan dengan mengasumsikan bahwa terdapat tingkat variabel prediktor yang ideal yang harus dipenuhi oleh subyek yang diteliti, bukannya tingkat minimal yang harus dipenuhi atau dilewati

[ author : cahya dsn, published on : November 16, 2014 updated on : April 5, 2018 ]

minerva minerva donasi donation

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

Profile matching adalah sebuah mekanisme pengambilan keputusan dengan mengasumsikan bahwa terdapat tingkat variabel prediktor yang ideal yang harus dipenuhi oleh subyek yang diteliti, bukannya tingkat minimal yang harus dipenuhi atau dilewati. (Kusrini, 2007).

Menurut Rachma (2003:101),Profile matching merupakan suatu proses yang sangat penting dalam manajemen SDM dimana terlebih dahulu ditentukan kompetensi (kemampuan) yang diperlukan oleh suatu jabatan. Kompetensi/kemampuan tersebut haruslah dapat dipenuhi oleh pemegang/calon pemegang jabatan.

Contoh penerapannya :

  • Evaluasi kinerja karyawan untuk promosi jabatan
  • Manajemen football player
  • Penerima beasiswa yang layak
  • dan lain-lain

Dalam proses profile matching secara garis besar merupakan proses membandingkan antara kompetensi individu kedalam kompetensi jabatan sehingga dapat diketahui perbedaan kompetensinya (disebut juga gap), semakin kecil gap yang dihasilkan maka bobot nilainya semakin besar yang berarti memiliki peluang lebih besar untuk karyawan menempati posisi tersebut.

Untuk menganalisis karyawan yang sesuai dengan jabatan tertentu dilakukan dengan metode profile matching, dimana dalam proses ini terlebih dahulu menentukan kompetensi (kemampuan) yang diperlukan oleh suatu jabatan. Dalam proses profile matching secara garis besar merupakan proses membandingkan antara kompetensi individu ke dalam kompetensi jabatan sehingga dapat diketahui perbedaan kompetensinya (disebut juga gap)

Kelebihan dan Kekurangan Menggunakan Profile Matching

Layaknya sebuah analisis, Profile Matching tentu juga memiliki kekurangan dan kelebihan di dalam sistem analisisnya antara lain :

Kekurangan

  1. Profile Matching. tidak memperhitungkan daya tahan atau ketahanan output analisis sensitivitas pengambilan keputusan
  2. Profile Matching tidak mempunyai kemampuan untuk memecahkan masalah yang diteliti multi objek dan multi kriteria yang berdasar pada perbandingan preferensi dari tiap elemen dalam hierarki.

Kelebihan

  1. Metode Profile Matching merupakan sebuah metode yang paling tepat digunakan dalam proses membandingkan antar kompetensi individu ke dalam kompetensi suatu jabatan sehingga dapat di ketahui perbedaan kompetensi nya
  2. Profile Matching merupakan metode yang sangat sesuai di gunakan untuk pengambilan keputusan yang berhubungan dengan nilai prestasi jabatan dan kompetensi karena perhitungan yang di lakukan dengan pembobotan dan perhitungan gap dengan demikian untuk calon kandidat yang memiliki gap lebih kecil maka nilai bobotnya akan semakin besar.
  3. Profile Matching mempertimbangkan konsistensi yang logis dalam penilaian yang di gunakan untuk menentukan prioritas sehingga menghasilkan alternatif yang tidak banyak.

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
This document using Dynamic Content Technology for enrichment sample case and reading experience
  • Data yang digunakan BUKAN merupakan data real, tapi data yang digenerate secara otomatis dari sistem
  • Data dan Nilai Perhitungan yang ditampilkan akan SELALU BERBEDA jika halaman di refresh/reload
  • Jumlah dan Nama kandidat/alternatif ditampilkan secara acak/random antara 3 s.d 7 dengan data di shuffle
  • Bobot antara core factor dan secondary factor pada tiap aspek digenerate secara acak/random

Evaluasi kinerja karyawan untuk promosi jabatan yang diambil dari 6 karyawan yang akan dipromosikan. Akan dipilih satu orang terbaik berdasarkan kriteria-kriteria yang telah ditentukan. Konsepnya adalah Mencari orang yang memiliki profil sedekat mungkin dengan jabatan yang sedang kosong.

PT Prima Teknologi sedang memerlukan seorang Senior Programmer di bidang web application. Saat ini ada 6 karyawan yang berstatus Junior Programmer, yaitu Dewi, Pandu, Firza, Enrico, Alfian, dan Mirza. Dari ke 6 orang Junior Programmer tersebut akan dipilih satu orang untuk dipromosikan menjadi Senior Programmer.

Langkah-langkah pada metode profil matching yaitu :

  • Menentukan Variabel-variabel Pemetaan Gap Kompetensi
  • Pemilihan Kandidat
  • Menghitung Hasil Pemetaan Gap Kompetensi
  • Menghitung Bobot Dari Pemetaan Gap Kompetensi
  • Menghitung dan Mengelompokan Core Factor dan Secondary Factor
  • Menghitung Nilai Total Tiap Aspek
  • Menghitung Hasil Akhir (Ranking)

Hal yang penting dalam proses Metoda Profile Matching (dan juga pada semua implementasi Sistem Pengambilan Keputusan/SPK (Decision Support System/DSS) adalah menentukan variabel-variabel dan besarannya yang berperan dalam permasalahan yang akan diselesaikan.

Pada umumnya kriteria/aspek yang diukur dan nilai pembobotan yang digunakan adalan satu set variabel yang sudah ditentukan oleh pakar atau orang/lembaga yang berwenang. (Jenis kriteria, aspek,faktor, bobot, skala penilaian, dan besaran-besaran lain yang diperhitungkan BUKAN kewenangan/ditentukan oleh pemrogram). Untuk kasus-kasus yang lain, jenis kriteria,aspek, skala penilaian, pembototan dan lainya bisa berbeda; sebaiknya konsultasikan dengan pakar/orang/lembaga yang berwenang atau dari literatur yang sudah menjadi standar acuan.

Penentuan Aspek-aspek Penilaian

Hal yang sangat penting dalam penggunaan metode Profile Matching adalah penentuan aspek-aspek apa saja yang akan digunakan sebagai perbandingan. Dalam kasus ini, dicontohkan 3 aspek penilaian yang digunakan, yaitu:

  • Aspek Kecerdasan (bobot 30% , perbadingan core factor:secondary factor = 65%:35%) yang memiliki 10 faktor :
    • Common Sense
    • Verbalisasi Ide
    • Sistematika Berpikir
    • Penalaran dan Solusi Real
    • Konsentrasi
    • Logika Praktis
    • Fleksibilitas Berpikir
    • Imajinasi Kreatif
    • Antisipasi
    • Potensi Kecerdasan
  • Aspek Sikap Kerja (bobot 30% , perbadingan core factor:secondary factor = 60%:40%) yang memiliki 6 faktor :
    • Energi Psikis
    • Ketelitian dan tanggung jawab
    • Kehati-hatian
    • Pengendalian Perasaan
    • Dorongan Berprestasi
    • Vitalitas dan Perencanaan
  • Aspek Perilaku (bobot 40% , perbadingan core factor:secondary factor = 65%:35%) yang memiliki 4 faktor :
    • Dominance (Kekuasaan)
    • Influences (Pengaruh)
    • Steadiness (Keteguhan Hati)
    • Compliance (Pemenuhan)

Penentuan Nilai Target

Berdasarkan aspek-aspek dan faktor-faktor yang telah ditentukan sebelumnya, selanjutnya adalah menentukan nilai target untuk masing-masing point penilaian tersebut. Berikut ini adalah nilai-nilai yang diharapkan/target pada contoh kasus ini:

Tabel 1 Nilai Target
Aspek Faktor Penilaian Nilai Target Tipe
KecerdasanCommon Sense3Secondary Factor
Verbalisasi Ide3Secondary Factor
Sistematika Berpikir4Core Factor
Penalaran dan Solusi Real4Core Factor
Konsentrasi3Secondary Factor
Logika Praktis4Core Factor
Fleksibilitas Berpikir4Core Factor
Imajinasi Kreatif5Core Factor
Antisipasi3Secondary Factor
Potensi Kecerdasan4Core Factor
Sikap KerjaEnergi Psikis3Secondary Factor
Ketelitian dan tanggung jawab4Core Factor
Kehati-hatian2Secondary Factor
Pengendalian Perasaan3Secondary Factor
Dorongan Berprestasi3Secondary Factor
Vitalitas dan Perencanaan5Core Factor
PerilakuDominance (Kekuasaan)3Secondary Factor
Influences (Pengaruh)3Secondary Factor
Steadiness (Keteguhan Hati)4Core Factor
Compliance (Pemenuhan)5Core Factor

Besarnya nilai target yang ditentukan tersebut dapat bervariasi tergantung kebutuhan dan posisi jabatan yang ditawarkan. Penilaian diukur dalam skala penilaian yang sudah ditentukan sebelumnya.

Skala penilaian tiap-tiap faktor bisa berbeda-beda tergantung kebutuhan, keputusan, dan/atau acuan yang diberikan. Pada contoh kasus ini digunakan skala penilaian yang sama untuk semua faktor, yaitu memakai skala LIKERT dengan range antara 1 s.d. 5 (yaitu berturut-turut: 1 adalah Sangat Kurang, 2 adalah Kurang, 3 adalah Cukup, 4 adalah Baik, dan 5 adalah merepresentasikan penilaian Sangat Baik)

Tahap berikutnya adalah pemilihan kandidat yang akan dilakukan penilaian. Masing-masing kandidat dinilai berdasarkan point-point faktor dalam aspek-aspek yang telah ditentukan sebelumnya

Nilai untuk tiap faktor dalam contoh kasus ini adalah nilai yang telah dikuantisasi/dinormalisasi dengan Skala Penilaian yang diberikan; bukan merupakan nilai dari pengukuran/penilaian langsung

Sebagai contoh diperoleh data kandidat beserta penilaiannya dalam tabel-tabel sebagai berikut:

Tabel Nilai Untuk Aspek Kecerdasan

Tabel 2 Nilai Aspek Kecerdasan
NoNamaI1I2I3I4I5I6I7I8I9I10
1Dewi5324224234
2Pandu2433224323
3Firza3433234244
4Enrico3331253254
5Alfian3543443543
6Mirza4433432332

Keterangan
I1 : Common Sense
I2 : Verbalisasi Ide
I3 : Sistematika Berpikir
I4 : Penalaran dan Solusi Real
I5 : Konsentrasi
I6 : Logika Praktis
I7 : Fleksibilitas Berpikir
I8 : Imajinasi Kreatif
I9 : Antisipasi
I10 : Potensi Kecerdasan

Tabel Nilai Untuk Aspek Sikap Kerja

Tabel 3 Nilai Aspek Sikap Kerja
NoNamaS1S2S3S4S5S6
1Dewi233342
2Pandu343131
3Firza455141
4Enrico454353
5Alfian155552
6Mirza422452

Keterangan
S1 : Energi Psikis
S2 : Ketelitian dan tanggung jawab
S3 : Kehati-hatian
S4 : Pengendalian Perasaan
S5 : Dorongan Berprestasi
S6 : Vitalitas dan Perencanaan

Tabel Nilai Untuk Aspek Perilaku

Tabel 4 Nilai Aspek Perilaku
NoNamaP1P2P3P4
1Dewi3453
2Pandu4444
3Firza4344
4Enrico4335
5Alfian3345
6Mirza4552

Keterangan
P1 : Dominance (Kekuasaan)
P2 : Influences (Pengaruh)
P3 : Steadiness (Keteguhan Hati)
P4 : Compliance (Pemenuhan)

Setelah proses pemilihan kandidat, proses berikutnya adalah menentukan kandidat mana yang paling cocok menduduki jabatan yang diajukan oleh perusahaan. Dalam kasus ini penulis menggunakan perhitungan pemetaan gap kompetensi dimana yang dimaksud dengan gap disini adalah beda antara profil jabatan dengan profil karyawan atau dapat ditunjukkan pada rumus di bawah ini:

Gap = Profil Karyawan – Profil Jabatan

.. [GAP-01]

Dengan menggunakan persamaan [GAP-01], dapat ditentukan nilai-nilai pemetaan GAP Kompetensi untuk tiap aspek dan alternatif yang diberikan.

Sebagai contoh dengan data kandidat Dewi untuk aspek Kecerdasan pada faktor Common Sense mempunyai nilai ProfilKaryawan = 5 , sedangkan nilai target yang diharapkan/ditetapkan adalah ProfilJabatan = 3. Sehingga dari [GAP-01] diperoleh nilai gap sebesar : 5 - 3 = 2

Perhitungan untuk faktor-faktor dan kandidat yang lain secara lengkap dapat dilihat dalam tabel-tabel berikut ini :

Perhitungan Pemetaan GAP untuk Aspek Kecerdasan

Tabel 5 Nilai Pemetaan Gap untuk Aspek Kecerdasan
NoNamaI1I2I3I4I5I6I7I8I9I10
1Dewi(5-3) = 2(3-3) = 0(2-4) = -2(4-4) = 0(2-3) = -1(2-4) = -2(4-4) = 0(2-5) = -3(3-3) = 0(4-4) = 0
2Pandu(2-3) = -1(4-3) = 1(3-4) = -1(3-4) = -1(2-3) = -1(2-4) = -2(4-4) = 0(3-5) = -2(2-3) = -1(3-4) = -1
3Firza(3-3) = 0(4-3) = 1(3-4) = -1(3-4) = -1(2-3) = -1(3-4) = -1(4-4) = 0(2-5) = -3(4-3) = 1(4-4) = 0
4Enrico(3-3) = 0(3-3) = 0(3-4) = -1(1-4) = -3(2-3) = -1(5-4) = 1(3-4) = -1(2-5) = -3(5-3) = 2(4-4) = 0
5Alfian(3-3) = 0(5-3) = 2(4-4) = 0(3-4) = -1(4-3) = 1(4-4) = 0(3-4) = -1(5-5) = 0(4-3) = 1(3-4) = -1
6Mirza(4-3) = 1(4-3) = 1(3-4) = -1(3-4) = -1(4-3) = 1(3-4) = -1(2-4) = -2(3-5) = -2(3-3) = 0(2-4) = -2

Perhitungan Pemetaan GAP untuk Aspek Sikap Kerja

Tabel 6 Nilai Pemetaan Gap untuk Aspek Sikap Kerja
NoNamaS1S2S3S4S5S6
1Dewi(2-3) = -1(3-4) = -1(3-2) = 1(3-3) = 0(4-3) = 1(2-5) = -3
2Pandu(3-3) = 0(4-4) = 0(3-2) = 1(1-3) = -2(3-3) = 0(1-5) = -4
3Firza(4-3) = 1(5-4) = 1(5-2) = 3(1-3) = -2(4-3) = 1(1-5) = -4
4Enrico(4-3) = 1(5-4) = 1(4-2) = 2(3-3) = 0(5-3) = 2(3-5) = -2
5Alfian(1-3) = -2(5-4) = 1(5-2) = 3(5-3) = 2(5-3) = 2(2-5) = -3
6Mirza(4-3) = 1(2-4) = -2(2-2) = 0(4-3) = 1(5-3) = 2(2-5) = -3

Perhitungan Pemetaan GAP untuk Aspek Perilaku

Tabel 7 Nilai Pemetaan Gap untuk Aspek Perilaku
NoNamaP1P2P3P4
1Dewi(3-3) = 0(4-3) = 1(5-4) = 1(3-5) = -2
2Pandu(4-3) = 1(4-3) = 1(4-4) = 0(4-5) = -1
3Firza(4-3) = 1(3-3) = 0(4-4) = 0(4-5) = -1
4Enrico(4-3) = 1(3-3) = 0(3-4) = -1(5-5) = 0
5Alfian(3-3) = 0(3-3) = 0(4-4) = 0(5-5) = 0
6Mirza(4-3) = 1(5-3) = 2(5-4) = 1(2-5) = -3

Setelah diperoleh Gap pada masing-masing karyawan, setiap profil karyawan diberi bobot nilai sesuai ketentuan pada Tabel Bobot Nilai Gap seperti yang ditunjukkan pada Tabel 8 berikut ini

Tabel 8 Bobot Nilai Gap
Selisih Bobot Nilai Keterangan
05Tidak ada selisih (kompetensi sesuai dgn yg dibutuhkan)
14.5Kompetensi individu kelebihan 1 tingkat
-14Kompetensi individu kekurangan 1 tingkat
23.5Kompetensi individu kelebihan 2 tingkat
-23Kompetensi individu kekurangan 2 tingkat
32.5Kompetensi individu kelebihan 3 tingkat
-32Kompetensi individu kekurangan 3 tingkat
41.5Kompetensi individu kelebihan 4 tingkat
-41Kompetensi individu kekurangan 4 tingkat

Dari data-data pada Tabel 5,Tabel 6,Tabel 7, dan Tabel 8 dapat ditentukan nilai pembobotan untuk tiap faktor untuk masing-masing kandidat.

Sebagai contoh, dari Tabel 5 kandidat Dewi untuk aspek Kecerdasan pada faktor Common Sense mempunayi nilai gap/selisih sebesar 2 yang jika dipetakan dengan data pada Tabel 8 maka akan mendapatkan nilai bobot sebesar 3.5 (Kompetensi individu kelebihan 2 tingkat)

Dengan perhitungan yang sama diperoleh nilai pembobotan untuk semua kandidat seperti dalam tabel-tabel di bawah ini

Pembobotan untuk Aspek Kecerdasan

Tabel 9 Nilai Pembobotan Aspek Kecerdasan
NoNamaI1 [s]I2 [s]I3 [c]I4 [c]I5 [s]I6 [c]I7 [c]I8 [c]I9 [s]I10 [c]
1Dewi3.5535435255
2Pandu44.544435344
3Firza54.54444524.55
4Enrico554244.5423.55
5Alfian53.5544.55454.54
6Mirza4.54.5444.543353

Pembobotan untuk Aspek Sikap Kerja

Tabel 10 Nilai Pembobotan Aspek Sikap Kerja
NoNamaS1 [s]S2 [c]S3 [s]S4 [s]S5 [s]S6 [c]
1Dewi444.554.52
2Pandu554.5351
3Firza4.54.52.534.51
4Enrico4.54.53.553.53
5Alfian34.52.53.53.52
6Mirza4.5354.53.52

Pembobotan untuk Aspek Perilaku

Tabel 11 Nilai Pembobotan Aspek Perilaku
NoNamaP1 [s]P2 [s]P3 [c]P4 [c]
1Dewi54.54.53
2Pandu4.54.554
3Firza4.5554
4Enrico4.5545
5Alfian5555
6Mirza4.53.54.52

Setelah menentukan bobot nilai gap untuk ketiga aspek yaitu aspek kapasitas intelektual, sikap kerja dan perilaku dengan cara yang sama. Kemudian tiap aspek dikelompokkan menjadi 2 (dua) kelompok yaitu kelompok Core Factor dan Secondary Factor.

Core Factor

Core factor merupakan aspek (kompetensi) yang paling menonjol atau paling dibutuhkan oleh suatu jabatan yang diperkirakan dapat menghasilkan kinerja optimal. Core factor dapat dirumuskan dalam persamaan berikut:

.. [GAP-02]

Keterangan

  • NCF : Nilai rata-rata core factor
  • NC(i,s,p) : Jumlah total nilai core factor (kecerdasan,sikap kerja, perilaku)
  • IC : Jumlah Item core factor

Secondary Factor

Secondary factor adalah item-item selain aspek yang ada pada core factor atau bisa juga disebut sebagai faktor pendukung. Secondary factor dapat dituliskan dalam rumusan sebagai berikut:

.. [GAP-03]

Keterangan

  • NSF : Nilai rata-rata secondary factor
  • NS(i,s,p) : Jumlah total nilai secondary factor (kecerdasan,sikap kerja, perilaku)
  • IS : Jumlah Item secondary factor

Dari hasil perhitungan dari tiap aspek tersebut kemudian dihitung nilai total berdasarkan presentase dari core factor dan secondary factor yang diperkirakan berpengaruh terhadap kinerja tiap-tiap profil.

Perhitungan Nilai Total dapat dilihat pada rumus di bawah ini:

.. [GAP-04]

Keterangan

  • NCF(i,s,p) : Nilai rata-rata core factor(kecerdasan,sikap kerja, perilaku)
  • NSF(i,s,p) : Nilai rata-rata secondary factor (kecerdasan,sikap kerja, perilaku)
  • N(i,s,p) : Nilai Total dari aspek (kecerdasan,sikap kerja, perilaku)
  • x : Nilai prosentase yang diinputkan untuk core factor
  • y : Nilai prosentase yang diinputkan untuk secondary factor

Berdasarkan persamaan-persamaan [GAP-02],[GAP-03] dan [GAP-04] dapat dihitung nilai total untuk setiap aspek untuk masing-masing kandidat sebagai berikut :

Perhitungan Aspek Kecerdasan

Perhitungan nilai Aspek Kecerdasan untuk Alternatif Dewi
Core Factor NCF(i) = (3+5+3+5+2+5)/6 = 23/6=3.8333333333333
Secondary Factor NSF(i) = (3.5+5+4+5)/4 = 17.5/4=4.375
Nilai Total N(i) = 65% * NCF(i) + 35% * NSF(i) =0.65 * 3.8333333333333 + 0.35 * 4.375 = 4.0229166666667
Perhitungan nilai Aspek Kecerdasan untuk Alternatif Pandu
Core Factor NCF(i) = (4+4+3+5+3+4)/6 = 23/6=3.8333333333333
Secondary Factor NSF(i) = (4+4.5+4+4)/4 = 16.5/4=4.125
Nilai Total N(i) = 65% * NCF(i) + 35% * NSF(i) =0.65 * 3.8333333333333 + 0.35 * 4.125 = 3.9354166666667
Perhitungan nilai Aspek Kecerdasan untuk Alternatif Firza
Core Factor NCF(i) = (4+4+4+5+2+5)/6 = 24/6=4
Secondary Factor NSF(i) = (5+4.5+4+4.5)/4 = 18/4=4.5
Nilai Total N(i) = 65% * NCF(i) + 35% * NSF(i) =0.65 * 4 + 0.35 * 4.5 = 4.175
Perhitungan nilai Aspek Kecerdasan untuk Alternatif Enrico
Core Factor NCF(i) = (4+2+4.5+4+2+5)/6 = 21.5/6=3.5833333333333
Secondary Factor NSF(i) = (5+5+4+3.5)/4 = 17.5/4=4.375
Nilai Total N(i) = 65% * NCF(i) + 35% * NSF(i) =0.65 * 3.5833333333333 + 0.35 * 4.375 = 3.8604166666667
Perhitungan nilai Aspek Kecerdasan untuk Alternatif Alfian
Core Factor NCF(i) = (5+4+5+4+5+4)/6 = 27/6=4.5
Secondary Factor NSF(i) = (5+3.5+4.5+4.5)/4 = 17.5/4=4.375
Nilai Total N(i) = 65% * NCF(i) + 35% * NSF(i) =0.65 * 4.5 + 0.35 * 4.375 = 4.45625
Perhitungan nilai Aspek Kecerdasan untuk Alternatif Mirza
Core Factor NCF(i) = (4+4+4+3+3+3)/6 = 21/6=3.5
Secondary Factor NSF(i) = (4.5+4.5+4.5+5)/4 = 18.5/4=4.625
Nilai Total N(i) = 65% * NCF(i) + 35% * NSF(i) =0.65 * 3.5 + 0.35 * 4.625 = 3.89375

Perhitungan Aspek Sikap Kerja

Perhitungan nilai Aspek Sikap Kerja untuk Alternatif Dewi
Core Factor NCF(s) = (4+2)/2 = 6/2=3
Secondary Factor NSF(s) = (4+4.5+5+4.5)/4 = 18/4=4.5
Nilai Total N(s) = 60% * NCF(s) + 40% * NSF(s) =0.6 * 3 + 0.4 * 4.5 = 3.6
Perhitungan nilai Aspek Sikap Kerja untuk Alternatif Pandu
Core Factor NCF(s) = (5+1)/2 = 6/2=3
Secondary Factor NSF(s) = (5+4.5+3+5)/4 = 17.5/4=4.375
Nilai Total N(s) = 60% * NCF(s) + 40% * NSF(s) =0.6 * 3 + 0.4 * 4.375 = 3.55
Perhitungan nilai Aspek Sikap Kerja untuk Alternatif Firza
Core Factor NCF(s) = (4.5+1)/2 = 5.5/2=2.75
Secondary Factor NSF(s) = (4.5+2.5+3+4.5)/4 = 14.5/4=3.625
Nilai Total N(s) = 60% * NCF(s) + 40% * NSF(s) =0.6 * 2.75 + 0.4 * 3.625 = 3.1
Perhitungan nilai Aspek Sikap Kerja untuk Alternatif Enrico
Core Factor NCF(s) = (4.5+3)/2 = 7.5/2=3.75
Secondary Factor NSF(s) = (4.5+3.5+5+3.5)/4 = 16.5/4=4.125
Nilai Total N(s) = 60% * NCF(s) + 40% * NSF(s) =0.6 * 3.75 + 0.4 * 4.125 = 3.9
Perhitungan nilai Aspek Sikap Kerja untuk Alternatif Alfian
Core Factor NCF(s) = (4.5+2)/2 = 6.5/2=3.25
Secondary Factor NSF(s) = (3+2.5+3.5+3.5)/4 = 12.5/4=3.125
Nilai Total N(s) = 60% * NCF(s) + 40% * NSF(s) =0.6 * 3.25 + 0.4 * 3.125 = 3.2
Perhitungan nilai Aspek Sikap Kerja untuk Alternatif Mirza
Core Factor NCF(s) = (3+2)/2 = 5/2=2.5
Secondary Factor NSF(s) = (4.5+5+4.5+3.5)/4 = 17.5/4=4.375
Nilai Total N(s) = 60% * NCF(s) + 40% * NSF(s) =0.6 * 2.5 + 0.4 * 4.375 = 3.25

Perhitungan Aspek Perilaku

Perhitungan nilai Aspek Perilaku untuk Alternatif Dewi
Core Factor NCF(p) = (4.5+3)/2 = 7.5/2=3.75
Secondary Factor NSF(p) = (5+4.5)/2 = 9.5/2=4.75
Nilai Total N(p) = 65% * NCF(p) + 35% * NSF(p) =0.65 * 3.75 + 0.35 * 4.75 = 4.1
Perhitungan nilai Aspek Perilaku untuk Alternatif Pandu
Core Factor NCF(p) = (5+4)/2 = 9/2=4.5
Secondary Factor NSF(p) = (4.5+4.5)/2 = 9/2=4.5
Nilai Total N(p) = 65% * NCF(p) + 35% * NSF(p) =0.65 * 4.5 + 0.35 * 4.5 = 4.5
Perhitungan nilai Aspek Perilaku untuk Alternatif Firza
Core Factor NCF(p) = (5+4)/2 = 9/2=4.5
Secondary Factor NSF(p) = (4.5+5)/2 = 9.5/2=4.75
Nilai Total N(p) = 65% * NCF(p) + 35% * NSF(p) =0.65 * 4.5 + 0.35 * 4.75 = 4.5875
Perhitungan nilai Aspek Perilaku untuk Alternatif Enrico
Core Factor NCF(p) = (4+5)/2 = 9/2=4.5
Secondary Factor NSF(p) = (4.5+5)/2 = 9.5/2=4.75
Nilai Total N(p) = 65% * NCF(p) + 35% * NSF(p) =0.65 * 4.5 + 0.35 * 4.75 = 4.5875
Perhitungan nilai Aspek Perilaku untuk Alternatif Alfian
Core Factor NCF(p) = (5+5)/2 = 10/2=5
Secondary Factor NSF(p) = (5+5)/2 = 10/2=5
Nilai Total N(p) = 65% * NCF(p) + 35% * NSF(p) =0.65 * 5 + 0.35 * 5 = 5
Perhitungan nilai Aspek Perilaku untuk Alternatif Mirza
Core Factor NCF(p) = (4.5+2)/2 = 6.5/2=3.25
Secondary Factor NSF(p) = (4.5+3.5)/2 = 8/2=4
Nilai Total N(p) = 65% * NCF(p) + 35% * NSF(p) =0.65 * 3.25 + 0.35 * 4 = 3.5125

Hasil akhir dari proses Profile Matching adalah ranking dari kandidat yang dapat dijadikan karyawan yang dapat mengisi suatu jabatan tertentu. Perangkingan ditentukan dari nilai total penilaian yang diurutkan dari nilai terbesar sampai dengan yang terkecil, dimana alternatif dengan nilai total terbesar yang dipilih sebagai hasil akhirnya.

Penentuan ranking mengacu pada hasil perhitungan tertentu, sebagai berikut:

.. [GAP-05]

Keterangan

  • NI : Nilai Kecerdasan
  • NS : Nilai Sikap kerja
  • NP : Nilai Perilaku
  • x : Nilai prosentase yang diinputkan untuk aspek Kecerdasan
  • y : Nilai prosentase yang diinputkan untuk aspek Sikap kerja
  • z : Nilai prosentase yang diinputkan untuk aspek Perilaku

Berdasarkan persamaan [GAP-05] dapat dihitung nilai total dari masing-masing alternatif sebagai berikut:

Nilai Akhir Dewi = 30% * NI + 30% * NS + 40% * NP
= 0.3 * 4.0229166666667 + 0.3 * 3.6 + 0.4 * 4.1
= 3.926875
Nilai Akhir Pandu = 30% * NI + 30% * NS + 40% * NP
= 0.3 * 3.9354166666667 + 0.3 * 3.55 + 0.4 * 4.5
= 4.045625
Nilai Akhir Firza = 30% * NI + 30% * NS + 40% * NP
= 0.3 * 4.175 + 0.3 * 3.1 + 0.4 * 4.5875
= 4.0175
Nilai Akhir Enrico = 30% * NI + 30% * NS + 40% * NP
= 0.3 * 3.8604166666667 + 0.3 * 3.9 + 0.4 * 4.5875
= 4.163125
Nilai Akhir Alfian = 30% * NI + 30% * NS + 40% * NP
= 0.3 * 4.45625 + 0.3 * 3.2 + 0.4 * 5
= 4.296875
Nilai Akhir Mirza = 30% * NI + 30% * NS + 40% * NP
= 0.3 * 3.89375 + 0.3 * 3.25 + 0.4 * 3.5125
= 3.548125

Sehingga diperoleh hasil perangkingan dengan mengurutkan nilai data hasil perhitungan dari yang terbesar ke yang terkecil sebagai berikut :

Tabel 12 Nilai Perangkingan
RangkingAlternatifNilai Total
1Alfian4.296875
2Enrico4.163125
3Pandu4.045625
4Firza4.0175
5Dewi3.926875
6Mirza3.548125

Dari hasil perhitungan dengan method Profile Matching tersebut maka diperoleh hasil keputusan alternatif Alfian dengan nilai 4.296875 yang terpilih

Bagian ini sebenarnya tidak termasuk dalam proses pembuatan aplikasi Metode Profile Matching dengan PHP, namun untuk keperluan menjelaskan proses perhitungannya dengan memakai database server MySQL/MariaDB dan bahasa pemrograman PHP dalam artikel ini maka perlu disiapkan satu buah database. Sebagai contoh 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 aspek-aspek yang berperan dalam permasalahan ini dalam bentuk tabel database, yaitu tabel pm_aspek sebagai berikut:

DROP TABLE IF EXISTS pm_aspek;
CREATE TABLE IF NOT EXISTS pm_aspek(
  id_aspek TINYINT(3) UNSIGNED AUTO_INCREMENT,
  aspek VARCHAR(100) NOT NULL,
  prosentase FLOAT NOT NULL,
  bobot_core FLOAT NOT NULL,
  bobot_secondary FLOAT NOT NULL,
  PRIMARY KEY(id_aspek)
)ENGINE=MyISAM;

INSERT INTO pm_aspek(id_aspek,aspek,prosentase,bobot_core,bobot_secondary)
VALUES
(1,'Kecerdasan',30,65,35),
(2,'Sikap Kerja',30,60,40),
(3,'Perilaku',40,65,35);

SELECT * FROM tbl_aspek;
+----------+-------------+------------+------------+-----------------+
| id_aspek | aspek       | prosentase | bobot_core | bobot_secondary |
+----------+-------------+------------+------------+-----------------+
|        1 | Kecerdasan  |         30 |         65 |              35 |
|        2 | Sikap Kerja |         30 |         60 |              40 |
|        3 | Perilaku    |         40 |         65 |              35 |
+----------+-------------+------------+------------+-----------------+
3 rows in set (0.00 sec)

DROP TABLE IF EXISTS pm_faktor;
CREATE TABLE IF NOT EXISTS pm_faktor(
  id_faktor TINYINT(3) UNSIGNED AUTO_INCREMENT,
  id_aspek TINYINT(3) UNSIGNED NOT NULL,
  faktor VARCHAR(30) NOT NULL,
  target TINYINT(3) NOT NULL,
  type SET('core','secondary'),
  PRIMARY KEY(id_faktor)
)ENGINE=MyISAM;

INSERT INTO pm_faktor(id_aspek,faktor,target,type)
VALUES
(1,'Common Sense',3,'secondary'),
(1,'Verbalisasi Ide',3,'secondary'),
(1,'Sistematika Berpikir',4,'core'),
(1,'Penalaran dan Solusi Real',4,'core'),
(1,'Konsentrasi',3,'secondary'),
(1,'Logika Praktis',4,'core'),
(1,'Fleksibilitas Berpikir',4,'core'),
(1,'Imajinasi Kreatif',5,'core'),
(1,'Antisipasi',3,'secondary'),
(1,'Potensi Kecerdasan',4,'core'),
(2,'Energi Psikis',3,'secondary'),
(2,'Ketelitian dan tanggung jawab',4,'core'),
(2,'Kehati-hatian',2,'secondary'),
(2,'Pengendalian Perasaan',3,'secondary'),
(2,'Dorongan Berprestasi',3,'secondary'),
(2,'Vitalitas dan Perencanaan',5,'core'),
(3,'Dominance (Kekuasaan)',3,'secondary'),
(3,'Influences (Pengaruh)',3,'secondary'),
(3,'Steadiness (Keteguhan Hati)',4,'core'),
(3,'Compliance (Pemenuhan)',5,'core');

Tabel pm_bobot digunakan untuk menyimpan nilai-nilai yang digunakan untuk pembobotan nilai gap dari tiap faktor untuk masing-masing kandidat/alternatif. Tabel ini mengacu pada nilai yang ada pada bagian pembobotan dalam contoh kasus di atas.

DROP TABLE IF EXISTS pm_bobot;
CREATE TABLE IF NOT EXISTS pm_bobot(
  selisih TINYINT(3) NOT NULL,
  bobot FLOAT NOT NULL,
  keterangan VARCHAR(100) NOT NULL,
  PRIMARY KEY(selisih)
)ENGINE=MyISAM;

INSERT INTO pm_bobot(selisih,bobot,keterangan)
VALUES
(0,5,'Tidak ada selisih (kompetensi sesuai dgn yg dibutuhkan)'),
(1,4.5,'Kompetensi individu kelebihan 1 tingkat'),
(-1,4,'Kompetensi individu kekurangan 1 tingkat'),
(2,3.5,'Kompetensi individu kelebihan 2 tingkat'),
(-2,3,'Kompetensi individu kekurangan 2 tingkat'),
(3,2.5,'Kompetensi individu  kelebihan 3 tingkat'),
(-3,2,'Kompetensi individu  kekurangan 3 tingkat'),
(4,1.5,'Kompetensi individu kelebihan 4 tingkat'),
(-4,1,'Kompetensi individu kekurangan 4 tingkat');

SELECT * FROM pm_bobot;
+---------+-------+------------------------------------------------------------+
| selisih | bobot | keterangan                                                 |
+---------+-------+------------------------------------------------------------+
|       0 |     5 | Tidak ada selisih (kompetensi sesuai dgn yg dibutuhkan)    |
|       1 |   4.5 | Kompetensi individu kelebihan 1 tingkat                    |
|      -1 |     4 | Kompetensi individu kekurangan 1 tingkat                   |
|       2 |   3.5 | Kompetensi individu kelebihan 2 tingkat                    |
|      -2 |     3 | Kompetensi individu kekurangan 2 tingkat                   |
|       3 |   2.5 | Kompetensi individu  kelebihan 3 tingkat                   |
|      -3 |     2 | Kompetensi individu  kekurangan 3 tingkat                  |
|       4 |   1.5 | Kompetensi individu kelebihan 4 tingkat                    |
|      -4 |     1 | Kompetensi individu kekurangan 4 tingkat                   |
+---------+-------+------------------------------------------------------------+
9 rows in set (0.01 sec)

Data kandidat/alternatif dimasukkan dalam tabel pm_alternatif. Pada contoh ini hanya menyimpan data Nama saja, untuk keperluan/kebutuhan yang lain bisa ditambahkan atribut-atribut lain semisal jabatan, tempat/tanggal lahir, alamat, nomor telepon dan sebagainya dengan menambahkan field/column pada tabel pm_alternatif yang diperlukan. Pembuatan tabel pm_alternatif dan pengisian nilai record-nya (sesuai dengan contoh kasus di atas) adalah sebagai berikut:

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

INSERT INTO pm_alternatif(alternatif)
VALUES
('Dewi'),
('Pandu'),
('Firza'),
('Enrico'),
('Alfian'),
('Mirza');

Semua data penilaian untuk setiap faktor dari masing-masing kandidat/alternatif di simpan pada tabel pm_sample. Proses pembuatan dan pengisian data record sesuai dengan data kandidat dalam contoh kasus di atas dituliskan dalam query sebagai berikut:

DROP TABLE IF EXISTS pm_sample;
CREATE TABLE IF NOT EXISTS pm_sample(
  id_sample INT(11) UNSIGNED AUTO_INCREMENT,
  id_alternatif TINYINT(3) UNSIGNED NOT NULL,
  id_faktor TINYINT(3) UNSIGNED NOT NULL,
  value TINYINT(3) UNSIGNED NOT NULL,
  PRIMARY KEY(id_sample)
)ENGINE=MyISAM;

INSERT INTO pm_sample(id_alternatif,id_faktor,value)
VALUES
(1,1,5),(1,2,3),(1,3,2),(1,4,4),(1,5,2),(1,6,2),(1,7,4),(1,8,2),(1,9,3),(1,10,4),(1,11,2),(1,12,3),(1,13,3),(1,14,3),(1,15,4),(1,16,2),(1,17,3),(1,18,4),(1,19,5),(1,20,3),(2,1,2),(2,2,4),(2,3,3),(2,4,3),(2,5,2),(2,6,2),(2,7,4),(2,8,3),(2,9,2),(2,10,3),(2,11,3),(2,12,4),(2,13,3),(2,14,1),(2,15,3),(2,16,1),(2,17,4),(2,18,4),(2,19,4),(2,20,4),(3,1,3),(3,2,4),(3,3,3),(3,4,3),(3,5,2),(3,6,3),(3,7,4),(3,8,2),(3,9,4),(3,10,4),(3,11,4),(3,12,5),(3,13,5),(3,14,1),(3,15,4),(3,16,1),(3,17,4),(3,18,3),(3,19,4),(3,20,4),(4,1,3),(4,2,3),(4,3,3),(4,4,1),(4,5,2),(4,6,5),(4,7,3),(4,8,2),(4,9,5),(4,10,4),(4,11,4),(4,12,5),(4,13,4),(4,14,3),(4,15,5),(4,16,3),(4,17,4),(4,18,3),(4,19,3),(4,20,5),(5,1,3),(5,2,5),(5,3,4),(5,4,3),(5,5,4),(5,6,4),(5,7,3),(5,8,5),(5,9,4),(5,10,3),(5,11,1),(5,12,5),(5,13,5),(5,14,5),(5,15,5),(5,16,2),(5,17,3),(5,18,3),(5,19,4),(5,20,5),(6,1,4),(6,2,4),(6,3,3),(6,4,3),(6,5,4),(6,6,3),(6,7,2),(6,8,3),(6,9,3),(6,10,2),(6,11,4),(6,12,2),(6,13,2),(6,14,4),(6,15,5),(6,16,2),(6,17,4),(6,18,5),(6,19,5),(6,20,2);

Koneksi ke Database Server

Dari database yang sudah dibuat, kita bisa membuat script php untuk membuat koneksi ke database server dengan extension mysqli secara sederhana 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.

Pengambilan Nilai

Sebelum dilakukan perhitungan-perhitungan menggunakan metoda Profile Matching 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 aspek, faktor, dan data bobot -- serta data-data sekunder yaitu data kandidat/alternatif beserta data penilaiannya (sample)

Mengambil Nilai Aspek Penilaian

Data kriteria aspek yang tersimpan pada tabel pm_aspek dan data faktor pada tabel pm_faktor, masing-masing di-fetching dan di-assign ke variabel array dua dimensi $aspek dan $faktor. Pengkodean dalam bahasa pemrograman PHP-nya seperti berikut ini :

<?php
//-- query untuk mendapatkan semua data aspek di tabel pm_aspek
$sql 'SELECT * FROM pm_aspek';
$result $db->query($sql);
//-- menyiapkan variable penampung berupa array
$aspek=array();
//-- melakukan iterasi pengisian array untuk tiap record data yang didapat
foreach ($result as $row) {
    
$aspek[$row['id_aspek']]=array($row['aspek'],$row['prosentase'],$row['bobot_core'],$row['bobot_secondary']);
}
//-- query untuk mendapatkan semua data faktor di tabel pm_faktor
$sql 'SELECT * FROM pm_faktor';
$result $db->query($sql);
//-- menyiapkan variable penampung berupa array
$faktor=array();
//-- melakukan iterasi pengisian array untuk tiap record data yang didapat
foreach ($result as $row) {
    
$faktor[$row['id_faktor']]=array($row['id_aspek'],$row['faktor'],$row['target'],$row['type']);
}
?>;

Kita dapat menggabung dua routine tersebut dengan memakai klausa JOIN tabel dalam query sehingga cukup memakai satu request query ke database server, contohnya adalah sebagai berikut:

<?php
//-- query untuk mendapatkan semua data aspek dan faktor di tabel pm_aspek/pm_faktor
$sql 'SELECT * FROM pm_aspek a JOIN pm_faktor b USING(id_aspek) ORDER BY a.id_aspek';
$result $db->query($sql);
//-- menyiapkan variable penampung berupa array
$aspek=$faktor=array();
//-- melakukan iterasi pengisian array untuk tiap record data yang didapat
foreach ($result as $row) {
    
$aspek[$row['id_aspek']]=array($row['aspek'],$row['prosentase'],$row['bobot_core'],$row['bobot_secondary']);
    
$faktor[$row['id_faktor']]=array($row['id_aspek'],$row['faktor'],$row['target'],$row['type']);
}
?>

Mengambil Nilai Bobot

Data bobot yang yang digunakan dalam perhitungan pembobotan nilai gap dan tersimpan pada tabel pm_bobot di-fetching dan di-assign ke variabel array $bobot dengan menggunakan script PHP seperti di bawah ini :

<?php
//-- query untuk mendapatkan semua data bobot di tabel pm_bobot
$sql 'SELECT * FROM pm_bobot';
$result $db->query($sql);
//-- menyiapkan variabel penampung berupa array
$bobot=array();
//-- melakukan iterasi pengisian array untuk tiap record data yang didapat
foreach ($result as $row) {
    
//-- $row['selisih'] merupakan nilai gap/selisih
    
$bobot[$row['selisih']] = $row;
}
?>

Index/key dari variabel $bobot adalah merupakan nilai gap/selisih; sebagai contoh $bobot[-1] adalah berisi data bobot untuk nilai gap/selisih sebesar -1 yang dalam hal ini berisi data array [-1,4,'Kompetensi individu kekurangan 1 tingkat']. Dari data array tersebut dapat dibaca bahwa untuk nilai gap/selisih = -1 mempunyai nilai bobot = 4 dan memiliki makna : 'Kompetensi individu kekurangan 1 tingkat'.

Mengambil Nilai Sample

Data sample yang tersimpan pada tabel pm_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 di tabel pm_sample
$sql 'SELECT * FROM pm_sample a JOIN pm_alternatif b USING(id_alternatif) ORDER BY a.id_alternatif,a.id_faktor';
$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['alternatif']] belum ada maka buat baru
    //-- $row['alternatif'] adlah nama kandidat/alternatif
    
if (!isset($sample[$row['alternatif']])) {
        
$sample[$row['alternatif']] = array();
    }
    
$sample[$row['alternatif']][$row['id_faktor']] = $row['value'];
}
?>

Index/key dari dimensi array $sample yang pertama adalah menunjukan nama dari alternatif/kandidat sedangkan yang kedua adalah id dari faktor-nya. Sebagai contoh $sample['Dewi'][1] menunjukkan nilai dari hasil penilaian dari alternatif/kandidat Dewi untuk faktor ke-1 (Common Sense).

Penghitungan Nilai

Bagian utama dari proses metoda Profile Matching adalah perhitungan nilai gap, pembobotan berdasarkan nilai gap, mencari nilai rata-rata core factor dan secondary factor serta nilai totalnya untuk tiap-tiap aspek; dan perangkingan dari nilai akhirnya.

Setelah proses pengambilan nilai-nilai primer dan sekunder dari database dilakukan pada proses sebelumnya, bagian ini akan menjelaskan proses perhitungan metode Profile Matching dengan menggunakan PHP. Data-data variabel yang dideklarasikan pada proses sebelumnya akan digunakan kembali dalam proses-proses berikut.

Menghitung Nilai GAP

Dalam menghitung nilai GAP, kita mengacu pada persamaan [GAP-01], variabel yang diolah adalah $sample dibandingkan dengan data target yang ada di variabel $faktor. Perhitungan dalam PHP adalah sebagai berikut :

<?php
//-- menyiapkan variable penampung berupa array
$gap=array();
//-- melakukan iterasi perhitungan gap untuk tiap data $sample yang ada
foreach ($sample as $id_alternatif=>$data) {
    
//-- inisialisai variabel $gap[$id_alternatif]
    
$gap[$id_alternatif] = array();
    
//-- lakukan iterasi untuk menghitung gap dari setiap faktor yang ada
    
foreach ($faktor as $id_faktor=>$value) {
        
$gap[$id_alternatif][$id_faktor] = $data[$id_faktor]-$value;
    }
}
?>

Pembototan Nilai GAP

Proses selanjutnya setelah nilai gap dari tiap faktor untuk masing-masing kandidat/alternatif diperoleh adalah menetapkan pembobotan untuk tiap-tiap nilai gap tersebut. Nilai yang sudah dilakukan pembobotan disimpan dalam variabel $terbobot. Nilainya diambil dari array $bobot dengan index/key sesuai dengan nilai gap-nya. Kode PHP-nya dituliskan dalam script di bawah ini :

<?php
//-- menyiapkan variable penampung berupa array
$terbobot=array();
//-- melakukan iterasi pembobotan untuk tiap data $gap yang ada
foreach ($gap as $id_alternatif=>$data) {
    
//-- inisialisai variabel $terbobot[$id_alternatif]
    
$terbobot[$id_alternatif] = array();
    
//-- lakukan iterasi untuk pembobotan gap dari setiap faktor yang ada
    
foreach ($data as $id_faktor=>$value) {
        
$terbobot[$id_alternatif][$id_faktor] = $bobot[$value];
    }
}
?>

Menghitung Nilai Total

Nilai total tiap Aspek dihitung dari penjumlahan perkalian nilai rata-rata core factor dan secondary factor dengan bobot-nya masing-masing. Perhitungan nilai rata-rata core factor dan secondary factor mengacu pada persamaan [GAP-02] dan [GAP-03], sedangkan untuk menghitung Nilai Totalnya menggunakan persamaan [GAP-04]. Perhitungan-perhitungan tersebut dapat di tuliskan dalam bahasa pemrograman PHP sebagai berikut:

<?php
//-- menyiapkan variable penampung berupa array $hasil
$hasil=array();
//-- lakukan iterasi untuk tiap alternatif/kandidat
foreach($terbobot as $nm_alternatif=>$data){
    
$core=$secondary=array();
    
//-- lakukan iterasi untuk setiap faktor
    
foreach($data as $id_faktor=>$value){
        
//-- ambil id_aspek-nya
        
$id_aspek $core[$faktor[$id_faktor][0]];
        
//-- cek apakah $core[$id_aspek] sudah ada atau belum
        //-- jika belum ada maka buat baru
        
if(!isset($core[$id_aspek])){
            
$core[$id_aspek]=array();
            
$secondary[$id_aspek]=array();
        }
        
//-- cek datanya apakah core atau secondary factor
        
if($faktor[$id_faktor][3]=='core'){
            
$core[$id_aspek][]=$value;
        } else {
            
$secondary[$id_aspek][]=$value;
        }
    }
    
//-- menghitung nilai total tiap aspek utk masing-masing alternatif/kandidat
    
foreach($aspek as $id_aspek=>$value) {
        
$hasil[$nm_alternatif][$id_aspek]=array_sum($core[$id_aspek])/count($core[$id_aspek]) * $value[2]/100 
                    
array_sum($secondary[$id_aspek])/count($secondary[$id_aspek]) * $value[3]/100;
    }
}
?>

Perangkingan

Proses perangkingan dilakukan dengan menjumlahkan perkalian Nilai Total dengan bobot prosentasenya masing-masing dari tiap Aspek unntuk semua kandidat/alternatif yang ada(lihat persamaan [GAP-05]). Hasilnya ($ranking) kemudian diurutkan berdasarkan besar nilainya, dari yang terbesar sampai dengan yang terkecil; dimana kandidat/alternatif dengan nilai ranking yang terbesar adalah yang terpilih. Proses perangkingan ini dituliskan dalam PHP seperti berikut ini :

<?php
//-- menyiapkan variabel penampung data ranking
$ranking=array();
//-- melakukan iterasi penghitungan ranking utk tiap alternatif
foreach ($hasil as $nm_alternatif=>$data_nilai) {
    if (!isset(
$ranking[$nm_alternatif])) {
        
$ranking[$nm_alternatif]=0;
    }
    
//-- penjumlahan secara akumulatif nilai total dengan prosentasenya utk tiap aspek
    
foreach($data_nilai as $id_aspek=>$nilai_total) {
        
$ranking[$nm_alternatif] += $nilai_total $aspek[$id_aspek][1] / 100;
    }
}
//--mengurutkan data secara descending dengan tetap mempertahankan key/index array-nya
arsort($ranking);
//-- mendapatkan key/index item array yang pertama
$index=key($ranking);
//-- menampilkan hasil akhir:
echo "Hasilnya adalah kandidat <b>{$index}</b> dengan nilai akhir <b>{$ranking[$index]}</b> yang terpilih";
?>

Hasil akhir dari aplikasi PHP ini adalah berupa teks :
'Hasilnya adalah kandidat Alfian dengan nilai akhir 4.296875 yang terpilih '.

Beberapa simpulan yang bisa diperoleh adalah

  • Dalam metode Profile Matching, nilai target bukanlah nilai minimal yang harus dipenuhi atau dilewati
  • Nilai yang lebih tinggi dari nilai target (gap > 0) tidak berarti lebih baik dari nilai yang lebih rendah dari nilai target (gap < 0), nilai terbaik/ideal adalah nilai yang sama sengan nilai target (gap/selisih =0)

  • Hermawan (2005) Perancangan Sistem Pendukung Keputusan, Jakarta : Penerbit PT Elex Media Komputindo
  • Kusrini. (2007). Konsep dan Aplikasi Sistem Pendukung Keputusan. Yogyakarta: Penerbit Andi.
  • Kusumadewi, S., Hartati, S., Harjoko, A., dan Wardoyo, R. (2006). Fuzzy Multi-Atribute Decision Making (FUZZY MADM). Yogyakarta: Penerbit Graha Ilmu.