12 Agt 2013

Menghitung Rumus TOPSIS pada VB

Sekarang saya akan menjelaskan cara menghitung TOPSIS pada Sistem Fuzzy. Untuk kasus ini saya tidak ... thumbnail 1 summary
Sekarang saya akan menjelaskan cara menghitung TOPSIS pada Sistem Fuzzy. Untuk kasus ini saya tidak share source code Visual Basic.Net nya (di sini). Akan tetapi saya akan menjelaskan bagaimana proses perhitungannya. Agar bisa dibikin sendiri dan sesuai selera hehe

Kasusnya seperti berikut :
Pada sebuah perusahaan PT Bonsai Food (ngarang :D) akan ditentukan 5 karyawan yang berprestasi. Kriteria penilaiannya adalah C1 Tes Tertulis,Tes C2 Wawancara, C3 Umur, C4 Masa Kerja, C5 Pendidikan dan C6 Kedisiplinan. Lalu untuk ranking kecocokannya adalah Sangat Buruk, Buruk, Cukup, Baik, Sangat Baik.

Jadi kalau ditabelkan seperti ini


Nik
Nama
Kriteria (Bobot)
C1
C2
C3
C4
C5
C6
1
Susanto
3
3
3
4
4
2
2
Sigit Purnomo
4
4
5
3
3
5
3
Bekti susilo
2
3
4
5
5
3
4
Gazali Rahman
5
5
4
3
3
4
5
Bahrina Fauzi
3
3
5
4
4
3


Keterangan :
C1 - C6 adalah KRITERIA PENILAIAN
Nilai 1-5 adalah RANKING PENILAIAN

1. Langkah pertama mari kita cari pembaginya setiap kriteria semua karyawan
C1 adalah Tes Tertulis :
SQRT((C1Susanto^2)+(C1Sigit^2)+(C1Bekti^2)+(C1Gazali^2)+(C1Bahrina^2))
Jadi nilai pembagi C1 adalah 3,4,2,5,3
Source Code mencari pembagi C1 :

dim bagiC1 as double
bagiC1=Math.Sqrt((3^2)+(4^2)+(2^2)+(5^2)+(3^2))
Dan hitung sampai C6

2. Setelah mendapatkan pembaginya, maka lakukan normalisasi pada kriteria setiap karyawan
Normalisasi C1Susanto = C1Susanto/bagiC1
Source code mencari normalisasi C1Susanto :
dim normalC1_1 as double
normalC1_1= CDbl(3) / CDbl(bagiC1)
Hitung normalC1_1 sampai normalC1_5 , hitung (normalC2_1 sampai normalC2_5) (normalC3_1 sampai normalC3_5) (normalC4_1 sampai normalC4_5) (normalC5_1 sampai normalC5_5) (normalC6_1 sampai normalC6_5)

3. Cari bobot nilai pada kriteria setiap pegawai (sama seperti normalisasi)
Bobot C1Susanto= C1Susanto x normalC1_1
Source code mencari bobot C1Susanto

dim bobotC1_1 as double
bobotC1_1=CDbl(3)*CDbl(normalC1_1)

Hitung bobotC1_1 sampai bobotC1_5 , hitung (bobotC2_1 sampai bobotC2_5) (bobotC3_1 sampai bobotC3_5) (bobotC4_1 sampai bobotC4_5) (bobotC5_1 sampai bobotC5_5) (bobotC6_1 sampai bobotC6_5)

4. Cari nilai maksimal dari bobot pada setiap kriteria karyawan
Max C1=Max(C1_1,C1_2,C1_3,C1_4,C1_5)
Source Code mencari nilai maksimal C1
buat sebuah function mencari nilai max
Function positif(ByVal ParamArray a() As Double) As Double
        Dim p As Double() = a
        Dim largest As Double = Double.MinValue
               
        For Each element As Double In a
            largest = Math.Max(largest, element)
        Next

        Return largest
End Function

Lalu panggil function tersebut :
dim maxC1 as double
maxC1=positif(bobotC1_1,bobotC1_2,bobotC1_3,bobotC1_4,bobotC1_5)

5. Dan lakukan nilai minimum bobot
Min C1=Min(C1_1,C1_2,C1_3,C1_4,C1_5)

Source Code mencari nilai minimum C1
buat sebuah function mencari nilai min
Function negatif(ByVal ParamArray a() As Double) As Double
        Dim p As Double() = a
       Dim smallest As Double = Double.MaxValue
               
        For Each element As Double In a
           smallest = Math.Min(smallest, element)
        Next

       Return smallest
End Function

Lalu panggil function tersebut :
dim maxC1 as double
maxC1=negatif(bobotC1_1,bobotC1_2,bobotC1_3,bobotC1_4,bobotC1_5)

6. Hitung nilai maksimum dari max (D+) si karyawan
MaxtoMax Ckaryawan1=SQRT((MaxC1-bobotC1_1)^2+(MaxC1-bobotC1_1)^2+(MaxC1-bobotC1_1)^2+(MaxC1-bobotC1_1)^2+(MaxC1-bobotC1_1)^2)
Source Codenya :
dim minCkaryawan1 as double
minCkaryawan1=math.sqrt((MaxC1-bobotC1_1)^2+(MaxC1-bobotC1_1)^2+(MaxC1-bobotC1_1)^2+(MaxC1-bobotC1_1)^2+(MaxC1-bobotC1_1)^2)
7. Dan hitung nilai maksimum dari min (D-) si karyawan
MaxtoMin CKaryawan1=SQRT((MinC1-bobotC1_1)^2+(MinC1-bobotC1_1)^2+(MinC1-bobotC1_1)^2+(MinC1-bobotC1_1)^2+(MinC1-bobotC1_1)^2)
Source Codenya :
dim maxCKaryawan1 as double
maxCKaryawan1=math.sqrt((MinC1-bobotC1_1)^2+(MinC1-bobotC1_1)^2+(MinC1-bobotC1_1)^2+(MinC1-bobotC1_1)^2+(MinC1-bobotC1_1)^2)

Maka dapatlah nilai D+ dan D- pada setiap karyawan
8. Hitung nilai akhir si karyawan
Nilai Karyawan 1= minCKaryawan1/(minCKaryawan1+maxCKaryawan1)
Source code nya :
dim nkar1 as double
nkar1=minCKaryawan1/(minCKaryawan1+maxCKaryawan1)

9. Jika telah mendapatkan nilai akhir semua karyawan, lakukan perhitungan mencari ranking nomor 1. Lihat fungsi positif (rumus 4)