Algoritma TOPSIS (Technique for Order of Preference by Similarity to Ideal Solution)


Algoritma TOPSIS (Technique for Order of Preference by Similarity to Ideal Solution) adalah salah satu algoritma yang digunakan untuk pengambilan keputusan. Contoh yang dibahas kali ini adalah mengenai pemilihan sepeda motor berdasarkan kriteria tertentu.



Diasumsikan ada 3 buah motor yang dapat dipilih yaitu Motor A,B,C,D
Masing-masing motor memiliki kriteria, yaitu harga, jarak tempuh per liter, cc, nilai model
Sehingga dalam kasus ini, diasumsikan data awalnya adalah sebagai berikut:

MotorHargaJarak tempuh per literccnilai model (1-10)
Motor A10.000.000351107
Motor B12.000.000451256
Motor C15.000.000401508
Motor D14.000.00037.51257.5



Langkah pertama adalah memasukkan data-data yang digunakan.
Contoh data awal adalah sebagai berikut:

Dim data(3, 3) As Double
data(0, 0) = 10000000
data(0, 1) = 35
data(0, 2) = 110
data(0, 3) = 7
data(1, 0) = 12000000
data(1, 1) = 45
data(1, 2) = 125
data(1, 3) = 6
data(2, 0) = 15000000
data(2, 1) = 40
data(2, 2) = 150
data(2, 3) = 8
data(3, 0) = 14000000
data(3, 1) = 37.5
data(3, 2) = 125
data(3, 3) = 7.5

Langkah-langkah penggunaan algoritma ini adalah

1. Tentukan Kriteria Pembobotan untuk masing-masing kriteria
Jumlah pembobotan dari semua kriteria harus sama dengan 100%
Contoh dalam kasus ini:
Bobot harga 35%
Bobot jarak tempuh per liter 25%
Bobot cc 15%
Bobot nilai model 25%

Dim bobot(3) As Double
bobot(0) = 0.35
bobot(1) = 0.25
bobot(2) = 0.15
bobot(3) = 0.25

2. Hitung matriks normalisasi
Matriks normalisasi adalah matriks data yang isinya dihitung dengan data awal dibagi dengan (akar dari (jumlah dari kuadrat data pada masing-masing kriteria))

Dim faktorNormalisasi(3) As Double
For i As Integer = 0 To 3
	faktorNormalisasi(i) = 0
	For j As Integer = 0 To 3
		faktorNormalisasi(i) += Math.Pow(data(j, i), 2)
	Next

	faktorNormalisasi(i) = Math.Sqrt(faktorNormalisasi(i))
Next

Dim normalisasi(3, 3) As Double
For i As Integer = 0 To 3
	For j As Integer = 0 To 3
		normalisasi(i, j) = data(i, j) / faktorNormalisasi(j)
	Next
Next

3. Hitung matriks normalisasi pembobotan
Matriks normalisasi pembobotan adalah matriks normalisasi dikali dengan bobot kriterianya

Dim bobotNormalisasi(3, 3) As Double
For i As Integer = 0 To 3
	For j As Integer = 0 To 3
		bobotNormalisasi(i, j) = normalisasi(i, j) * bobot(j)
	Next
Next

4. Tentukan PIS (Solusi ideal Positif) dan NIS (Solusi Ideal Negatif)
PIS adalah kumpulan nilai-nilai terbaik dari setiap kriteria
NIS adalah kumpulan nilai-nilai terburuk dari setiap kriteria
Diasumsikan dalam kasus ini adalah:
Untuk kriteria harga, nilai terbaik adalah nilai terendah, nilai terburuk adalah nilai tertinggi
Untuk kriteria jarak tempuh per liter, nilai terbaik adalah nilai tertinggi, nilai terburuk adalah nilai terendah
Untuk kriteria cc, nilai terbaik adalah nilai tertinggi, nilai terburuk adalah nilai terendah
Untuk kriteria nilai model, nilai terbaik adalah nilai tertinggi, nilai terburuk adalah nilai terendah

Dim PIS(3) As Double
Dim NIS(3) As Double
For i As Integer = 0 To 3
	PIS(i) = bobotNormalisasi(0, i)
	NIS(i) = bobotNormalisasi(0, i)
	For j As Integer = 1 To 3
		If i = 0 Then
			If PIS(i) > bobotNormalisasi(j, i) Then PIS(i) = bobotNormalisasi(j, i)
			If NIS(i) < bobotNormalisasi(j, i) Then NIS(i) = bobotNormalisasi(j, i)
		Else
			If PIS(i) < bobotNormalisasi(j, i) Then PIS(i) = bobotNormalisasi(j, i)
			If NIS(i) > bobotNormalisasi(j, i) Then NIS(i) = bobotNormalisasi(j, i)
		End If
	Next
Next

5. Hitung matriks jarak PIS dan NIS
Matriks jarak PIS adalah kuadrat dari matriks normalisasi pembobotan dikurangi dengan PIS nya
Matriks jarak NIS adalah kuadrat dari matriks normalisasi pembobotan dikurangi dengan NIS nya

Dim jarakPIS(3, 3) As Double
Dim jarakNIS(3, 3) As Double
For i As Integer = 0 To 3
	For j As Integer = 0 To 3
		jarakPIS(i, j) = Math.Pow(bobotNormalisasi(i, j) - PIS(j), 2)
		jarakNIS(i, j) = Math.Pow(bobotNormalisasi(i, j) - NIS(j), 2)
	Next
Next

6. Hitung nilai jarak PIS dan NIS
Nilai jarak PIS adalah akar dari jumlah matriks data PIS
Nilai jarak NIS adalah akar dari jumlah matriks data NIS

Dim nilaiPIS(3) As Double
Dim nilaiNIS(3) As Double
For i As Integer = 0 To 3
	nilaiPIS(i) = 0
	nilaiNIS(i) = 0
	For j As Integer = 0 To 3
		nilaiPIS(i) += jarakPIS(i, j)
		nilaiNIS(i) += jarakNIS(i, j)
	Next

	nilaiPIS(i) = Math.Sqrt(nilaiPIS(i))
	nilaiNIS(i) = Math.Sqrt(nilaiNIS(i))
Next

7. Hitung nilai akhir untuk setiap inputan data dengan rumus nilai NIS / (nilai NIS + nilai PIS)
Data yang terpilih adalah data dengan nilai akhir yang paling besar

Dim motor As String = ""
Dim maks As Double = 0
For i As Integer = 0 To 3
	Console.WriteLine("Motor " & Chr(i + 65) & ": " & (nilaiNIS(i) / (nilaiNIS(i) + nilaiPIS(i))).ToString("F2"))
	If maks < nilaiNIS(i) / (nilaiNIS(i) + nilaiPIS(i)) Then
		motor = "Motor " & Chr(i + 65)
		maks = nilaiNIS(i) / (nilaiNIS(i) + nilaiPIS(i))
	End If
Next

Hasil akhir adalah: (klik untuk perbesar gambar)

cmd18

Contoh modul / source code dalam bahasa VB (Visual Basic) dapat didownload disini:



Jika membutuhkan jasa kami dalam pembuatan program, keterangan selanjutnya dapat dilihat di Fasilitas dan Harga
Jika ada yang kurang paham dengan langkah-langkah algoritma diatas, silahkan berikan komentar Anda.
Selamat mencoba.

Tinggalkan sebuah komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *