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 Enrico, Hilmi, Kevin, Bella, Zaki, dan Oscar. 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 = 70%:30%) 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 = 65%:35%) 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 = 70%:30%) 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
1Enrico2433224323
2Hilmi5324224234
3Kevin3331253254
4Bella4433432332
5Zaki3543443543
6Oscar3433234244

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
1Enrico343131
2Hilmi233342
3Kevin454353
4Bella422452
5Zaki155552
6Oscar455141

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
1Enrico4444
2Hilmi3453
3Kevin4335
4Bella4552
5Zaki3345
6Oscar4344

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 Enrico untuk aspek Kecerdasan pada faktor Common Sense mempunyai nilai ProfilKaryawan = 2 , sedangkan nilai target yang diharapkan/ditetapkan adalah ProfilJabatan = 3. Sehingga dari [GAP-01] diperoleh nilai gap sebesar : 2 - 3 = -1

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
1Enrico(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
2Hilmi(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
3Kevin(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
4Bella(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
5Zaki(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
6Oscar(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

Perhitungan Pemetaan GAP untuk Aspek Sikap Kerja

Tabel 6 Nilai Pemetaan Gap untuk Aspek Sikap Kerja
NoNamaS1S2S3S4S5S6
1Enrico(3-3) = 0(4-4) = 0(3-2) = 1(1-3) = -2(3-3) = 0(1-5) = -4
2Hilmi(2-3) = -1(3-4) = -1(3-2) = 1(3-3) = 0(4-3) = 1(2-5) = -3
3Kevin(4-3) = 1(5-4) = 1(4-2) = 2(3-3) = 0(5-3) = 2(3-5) = -2
4Bella(4-3) = 1(2-4) = -2(2-2) = 0(4-3) = 1(5-3) = 2(2-5) = -3
5Zaki(1-3) = -2(5-4) = 1(5-2) = 3(5-3) = 2(5-3) = 2(2-5) = -3
6Oscar(4-3) = 1(5-4) = 1(5-2) = 3(1-3) = -2(4-3) = 1(1-5) = -4

Perhitungan Pemetaan GAP untuk Aspek Perilaku

Tabel 7 Nilai Pemetaan Gap untuk Aspek Perilaku
NoNamaP1P2P3P4
1Enrico(4-3) = 1(4-3) = 1(4-4) = 0(4-5) = -1
2Hilmi(3-3) = 0(4-3) = 1(5-4) = 1(3-5) = -2
3Kevin(4-3) = 1(3-3) = 0(3-4) = -1(5-5) = 0
4Bella(4-3) = 1(5-3) = 2(5-4) = 1(2-5) = -3
5Zaki(3-3) = 0(3-3) = 0(4-4) = 0(5-5) = 0
6Oscar(4-3) = 1(3-3) = 0(4-4) = 0(4-5) = -1

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 Enrico untuk aspek Kecerdasan pada faktor Common Sense mempunayi nilai gap/selisih sebesar -1 yang jika dipetakan dengan data pada Tabel 8 maka akan mendapatkan nilai bobot sebesar 4 (Kompetensi individu kekurangan 1 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]
1Enrico44.544435344
2Hilmi3.5535435255
3Kevin554244.5423.55
4Bella4.54.5444.543353
5Zaki53.5544.55454.54
6Oscar54.54444524.55

Pembobotan untuk Aspek Sikap Kerja

Tabel 10 Nilai Pembobotan Aspek Sikap Kerja
NoNamaS1 [s]S2 [c]S3 [s]S4 [s]S5 [s]S6 [c]
1Enrico554.5351
2Hilmi444.554.52
3Kevin4.54.53.553.53
4Bella4.5354.53.52
5Zaki34.52.53.53.52
6Oscar4.54.52.534.51

Pembobotan untuk Aspek Perilaku

Tabel 11 Nilai Pembobotan Aspek Perilaku
NoNamaP1 [s]P2 [s]P3 [c]P4 [c]
1Enrico4.54.554
2Hilmi54.54.53
3Kevin4.5545
4Bella4.53.54.52
5Zaki5555
6Oscar4.5554

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 Enrico
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) = 70% * NCF(i) + 30% * NSF(i) =0.7 * 3.8333333333333 + 0.3 * 4.125 = 3.9208333333333
Perhitungan nilai Aspek Kecerdasan untuk Alternatif Hilmi
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) = 70% * NCF(i) + 30% * NSF(i) =0.7 * 3.8333333333333 + 0.3 * 4.375 = 3.9958333333333
Perhitungan nilai Aspek Kecerdasan untuk Alternatif Kevin
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) = 70% * NCF(i) + 30% * NSF(i) =0.7 * 3.5833333333333 + 0.3 * 4.375 = 3.8208333333333
Perhitungan nilai Aspek Kecerdasan untuk Alternatif Bella
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) = 70% * NCF(i) + 30% * NSF(i) =0.7 * 3.5 + 0.3 * 4.625 = 3.8375
Perhitungan nilai Aspek Kecerdasan untuk Alternatif Zaki
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) = 70% * NCF(i) + 30% * NSF(i) =0.7 * 4.5 + 0.3 * 4.375 = 4.4625
Perhitungan nilai Aspek Kecerdasan untuk Alternatif Oscar
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) = 70% * NCF(i) + 30% * NSF(i) =0.7 * 4 + 0.3 * 4.5 = 4.15

Perhitungan Aspek Sikap Kerja

Perhitungan nilai Aspek Sikap Kerja untuk Alternatif Enrico
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) = 65% * NCF(s) + 35% * NSF(s) =0.65 * 3 + 0.35 * 4.375 = 3.48125
Perhitungan nilai Aspek Sikap Kerja untuk Alternatif Hilmi
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) = 65% * NCF(s) + 35% * NSF(s) =0.65 * 3 + 0.35 * 4.5 = 3.525
Perhitungan nilai Aspek Sikap Kerja untuk Alternatif Kevin
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) = 65% * NCF(s) + 35% * NSF(s) =0.65 * 3.75 + 0.35 * 4.125 = 3.88125
Perhitungan nilai Aspek Sikap Kerja untuk Alternatif Bella
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) = 65% * NCF(s) + 35% * NSF(s) =0.65 * 2.5 + 0.35 * 4.375 = 3.15625
Perhitungan nilai Aspek Sikap Kerja untuk Alternatif Zaki
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) = 65% * NCF(s) + 35% * NSF(s) =0.65 * 3.25 + 0.35 * 3.125 = 3.20625
Perhitungan nilai Aspek Sikap Kerja untuk Alternatif Oscar
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) = 65% * NCF(s) + 35% * NSF(s) =0.65 * 2.75 + 0.35 * 3.625 = 3.05625

Perhitungan Aspek Perilaku

Perhitungan nilai Aspek Perilaku untuk Alternatif Enrico
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) = 70% * NCF(p) + 30% * NSF(p) =0.7 * 4.5 + 0.3 * 4.5 = 4.5
Perhitungan nilai Aspek Perilaku untuk Alternatif Hilmi
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) = 70% * NCF(p) + 30% * NSF(p) =0.7 * 3.75 + 0.3 * 4.75 = 4.05
Perhitungan nilai Aspek Perilaku untuk Alternatif Kevin
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) = 70% * NCF(p) + 30% * NSF(p) =0.7 * 4.5 + 0.3 * 4.75 = 4.575
Perhitungan nilai Aspek Perilaku untuk Alternatif Bella
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) = 70% * NCF(p) + 30% * NSF(p) =0.7 * 3.25 + 0.3 * 4 = 3.475
Perhitungan nilai Aspek Perilaku untuk Alternatif Zaki
Core Factor NCF(p) = (5+5)/2 = 10/2=5
Secondary Factor NSF(p) = (5+5)/2 = 10/2=5
Nilai Total N(p) = 70% * NCF(p) + 30% * NSF(p) =0.7 * 5 + 0.3 * 5 = 5
Perhitungan nilai Aspek Perilaku untuk Alternatif Oscar
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) = 70% * NCF(p) + 30% * NSF(p) =0.7 * 4.5 + 0.3 * 4.75 = 4.575

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 Enrico = 30% * NI + 30% * NS + 40% * NP
= 0.3 * 3.9208333333333 + 0.3 * 3.48125 + 0.4 * 4.5
= 4.020625
Nilai Akhir Hilmi = 30% * NI + 30% * NS + 40% * NP
= 0.3 * 3.9958333333333 + 0.3 * 3.525 + 0.4 * 4.05
= 3.87625
Nilai Akhir Kevin = 30% * NI + 30% * NS + 40% * NP
= 0.3 * 3.8208333333333 + 0.3 * 3.88125 + 0.4 * 4.575
= 4.140625
Nilai Akhir Bella = 30% * NI + 30% * NS + 40% * NP
= 0.3 * 3.8375 + 0.3 * 3.15625 + 0.4 * 3.475
= 3.488125
Nilai Akhir Zaki = 30% * NI + 30% * NS + 40% * NP
= 0.3 * 4.4625 + 0.3 * 3.20625 + 0.4 * 5
= 4.300625
Nilai Akhir Oscar = 30% * NI + 30% * NS + 40% * NP
= 0.3 * 4.15 + 0.3 * 3.05625 + 0.4 * 4.575
= 3.991875

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

Tabel 12 Nilai Perangkingan
RangkingAlternatifNilai Total
1Zaki4.300625
2Kevin4.140625
3Enrico4.020625
4Oscar3.991875
5Hilmi3.87625
6Bella3.488125

Dari hasil perhitungan dengan method Profile Matching tersebut maka diperoleh hasil keputusan alternatif Zaki dengan nilai 4.300625 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,70,30),
(2,'Sikap Kerja',30,65,35),
(3,'Perilaku',40,70,30);

SELECT * FROM tbl_aspek;
+----------+-------------+------------+------------+-----------------+
| id_aspek | aspek       | prosentase | bobot_core | bobot_secondary |
+----------+-------------+------------+------------+-----------------+
|        1 | Kecerdasan  |         30 |         70 |              30 |
|        2 | Sikap Kerja |         30 |         65 |              35 |
|        3 | Perilaku    |         40 |         70 |              30 |
+----------+-------------+------------+------------+-----------------+
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
('Enrico'),
('Hilmi'),
('Kevin'),
('Bella'),
('Zaki'),
('Oscar');

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,2),(1,2,4),(1,3,3),(1,4,3),(1,5,2),(1,6,2),(1,7,4),(1,8,3),(1,9,2),(1,10,3),(1,11,3),(1,12,4),(1,13,3),(1,14,1),(1,15,3),(1,16,1),(1,17,4),(1,18,4),(1,19,4),(1,20,4),(2,1,5),(2,2,3),(2,3,2),(2,4,4),(2,5,2),(2,6,2),(2,7,4),(2,8,2),(2,9,3),(2,10,4),(2,11,2),(2,12,3),(2,13,3),(2,14,3),(2,15,4),(2,16,2),(2,17,3),(2,18,4),(2,19,5),(2,20,3),(3,1,3),(3,2,3),(3,3,3),(3,4,1),(3,5,2),(3,6,5),(3,7,3),(3,8,2),(3,9,5),(3,10,4),(3,11,4),(3,12,5),(3,13,4),(3,14,3),(3,15,5),(3,16,3),(3,17,4),(3,18,3),(3,19,3),(3,20,5),(4,1,4),(4,2,4),(4,3,3),(4,4,3),(4,5,4),(4,6,3),(4,7,2),(4,8,3),(4,9,3),(4,10,2),(4,11,4),(4,12,2),(4,13,2),(4,14,4),(4,15,5),(4,16,2),(4,17,4),(4,18,5),(4,19,5),(4,20,2),(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,3),(6,2,4),(6,3,3),(6,4,3),(6,5,2),(6,6,3),(6,7,4),(6,8,2),(6,9,4),(6,10,4),(6,11,4),(6,12,5),(6,13,5),(6,14,1),(6,15,4),(6,16,1),(6,17,4),(6,18,3),(6,19,4),(6,20,4);

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['Enrico'][1] menunjukkan nilai dari hasil penilaian dari alternatif/kandidat Enrico 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 Zaki dengan nilai akhir 4.300625 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.