Analisis Fungsi Algoritma c-means dan Cluster Analysis (variance)

LAMPIRAN A : LISTING PROGRAM

Imports System
Imports System.Reflection
Imports System.Runtime.InteropServices
' General Information about an assembly is controlled through the following
' set of attributes. Change these attribute values to modify the information
' associated with an assembly.
' Review the values of the assembly attributes







'The following GUID is for the ID of the typelib if this project is exposed to COM

' Version information for an assembly consists of the following four values:
'
'

Major Version
'
Minor Version
'
Build Number
'
Revision
'
' You can specify all the values or you can default the Build and Revision Numbers
' by using the '*' as shown below:
'


Public Class AddForm
Private Sub SimpleButton1_Click(sender As System.Object, e As System.EventArgs) Handles
SimpleButton1.Click
Me.Close()
End Sub
Private Sub SimpleButton2_Click(sender As System.Object, e As System.EventArgs) Handles
SimpleButton2.Click

If txtIPA.Text = "" Or Not IsNumeric(txtIPA.Text) Then
General.ErrorMsg("Nilai IPA tidak boleh kosong dan harus bilangan")
Return
ElseIf txtIPS.Text = "" Or Not IsNumeric(txtIPS.Text) Then
General.ErrorMsg("Nilai IPS tidak boleh kosong dan harus bilangan")
Return
ElseIf txtBahasa.Text = "" Or Not IsNumeric(txtBahasa.Text) Then
General.ErrorMsg("Nilai Bahasa tidak boleh kosong dan harus bilangan")
Return
ElseIf txtDisarankan.SelectedIndex = -1 Then
General.ErrorMsg("Silahkan pilih salah satu bidang yang disarankan")

Universitas Sumatera Utara

Return
End If
'k-Means
frmHome.matrixKMeans.ClusterX1.Element.Add(CDec(txtIPA.Text))
frmHome.matrixKMeans.ClusterX1.ElementDerajatKeanggotaan.Add(General.Random)
frmHome.matrixKMeans.ClusterX1.SetSumKuadratDerajatKeanggotaan()

frmHome.matrixKMeans.ClusterX2.Element.Add(CDec(txtIPS.Text))
frmHome.matrixKMeans.ClusterX2.ElementDerajatKeanggotaan.Add(General.Random)
frmHome.matrixKMeans.ClusterX2.SetSumKuadratDerajatKeanggotaan()
frmHome.matrixKMeans.ClusterX3.Element.Add(CDec(txtBahasa.Text))
frmHome.matrixKMeans.ClusterX3.ElementDerajatKeanggotaan.Add(General.Random)
frmHome.matrixKMeans.ClusterX3.SetSumKuadratDerajatKeanggotaan()
frmHome.matrixKMeans.ManualDecision.Add(txtDisarankan.SelectedText)
'C-Means Minimum variance
frmHome.matrixCmin.ClusterX1.Element.Add(CDec(txtIPA.Text))
frmHome.matrixCmin.ClusterX1.ElementDerajatKeanggotaan.Add(General.Random)
frmHome.matrixCmin.ClusterX1.SetSumKuadratDerajatKeanggotaan()
frmHome.matrixCmin.ClusterX2.Element.Add(CDec(txtIPS.Text))
frmHome.matrixCmin.ClusterX2.ElementDerajatKeanggotaan.Add(General.Random)
frmHome.matrixCmin.ClusterX2.SetSumKuadratDerajatKeanggotaan()
frmHome.matrixCmin.ClusterX3.Element.Add(CDec(txtBahasa.Text))
frmHome.matrixCmin.ClusterX3.ElementDerajatKeanggotaan.Add(General.Random)
frmHome.matrixCmin.ClusterX3.SetSumKuadratDerajatKeanggotaan()
frmHome.matrixCmin.ManualDecision.Add(txtDisarankan.SelectedText)
'k-Means Maximum variance
frmHome.matrixCmax.ClusterX1.Element.Add(CDec(txtIPA.Text))

frmHome.matrixCmax.ClusterX1.ElementDerajatKeanggotaan.Add(General.Random)
frmHome.matrixCmax.ClusterX1.SetSumKuadratDerajatKeanggotaan()
frmHome.matrixCmax.ClusterX2.Element.Add(CDec(txtIPS.Text))
frmHome.matrixCmax.ClusterX2.ElementDerajatKeanggotaan.Add(General.Random)
frmHome.matrixCmax.ClusterX2.SetSumKuadratDerajatKeanggotaan()
frmHome.matrixCmax.ClusterX3.Element.Add(CDec(txtBahasa.Text))
frmHome.matrixCmax.ClusterX3.ElementDerajatKeanggotaan.Add(General.Random)
frmHome.matrixCmax.ClusterX3.SetSumKuadratDerajatKeanggotaan()
frmHome.matrixCmax.ManualDecision.Add(txtDisarankan.SelectedText)
frmHome.DisplayData()
Me.Close()
End Sub
Public Sub New()
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
Me.CloseBox = False
End Sub
End Class
Imports System.ComponentModel

Imports DevExpress.Skins
Imports DevExpress.LookAndFeel
Imports DevExpress.UserSkins
Imports DevExpress.XtraEditors

Universitas Sumatera Utara

Imports DevExpress.XtraCharts
Imports DevExpress.XtraSplashScreen

Public Class frmHome
Public matrixKMeans As New Matrix
Public matrixCmin As New Matrix
Public matrixCmax As New Matrix
Public tempCmin As String = ""
Public tempCmax As String = ""
Public tempKMeans As String = ""
Public tempMatrixKMeans As Matrix
Public tempMatrixCmin As Matrix
Public tempMatrixCmax As Matrix

Dim maxIterasi As Integer = 100
Dim IPA As Integer = 0
Dim IPS As Integer = 0
Dim Bahasa As Integer = 0
Dim Akurat As Integer = 0
Dim TidakAkurat As Integer = 0
Dim Filename As String = ""
Sub New()
InitSkins()
InitializeComponent()
'CMeansProcess()
End Sub
Sub InitSkins()
DevExpress.Skins.SkinManager.EnableFormSkins()
DevExpress.UserSkins.BonusSkins.Register()
UserLookAndFeel.Default.SetSkinStyle("DevExpress Style")
End Sub
Public Sub KMeansProcess()
Dim ObjectiveFunctionBefore As Decimal = 0.0
Dim ObjectiveFunction As Decimal = 0.0

Dim iteration As Integer = 1
tempKMeans = ""
Try
'If Not (Filename = txtFilename.Text) Then
' matrix.GetDataFromFile(txtFilename.Text)
' Filename = txtFilename.Text
'End If
SplashScreenManager.Default.SetWaitFormDescription("Iterasi ke - " & iteration & " KMeans")
tempMatrixKMeans = matrixKMeans
'For i = 0 To matrix.ClusterX1.Element.Count - 1
' temp += matrix.ClusterX1.Element(i) & " - " & matrix.ClusterX2.Element(i) & " - " &
matrix.ClusterX3.Element(i) &
'
" - " & matrix.ClusterX1.ElementDerajatKeanggotaan(i) & " - " &
matrix.ClusterX2.ElementDerajatKeanggotaan(i) & " - " &
matrix.ClusterX3.ElementDerajatKeanggotaan(i) & vbNewLine
'Next

Universitas Sumatera Utara


'txtResult.Text = temp
matrixKMeans.SetCenterCluster()
tempMatrixKMeans.SetCenterCluster()
ObjectiveFunction = tempMatrixKMeans.GetObjectiveFunction
tempKMeans += "Iteration count = " & iteration & ", obj.fcn = " & ObjectiveFunction &
vbNewLine
tempKMeans += tempMatrixKMeans.CenterCluster(0, 0) & " " &
tempMatrixKMeans.CenterCluster(0, 1) & " " & tempMatrixKMeans.CenterCluster(0, 2) &
vbNewLine
tempKMeans += tempMatrixKMeans.CenterCluster(1, 0) & " " &
tempMatrixKMeans.CenterCluster(1, 1) & " " & tempMatrixKMeans.CenterCluster(1, 2) &
vbNewLine
tempKMeans += tempMatrixKMeans.CenterCluster(2, 0) & " " &
tempMatrixKMeans.CenterCluster(2, 1) & " " & tempMatrixKMeans.CenterCluster(2, 2) &
vbNewLine
'new mtrix
'Dim matrix1 As Matrix
While ((Math.Abs(ObjectiveFunction - ObjectiveFunctionBefore)) > 0.00001) And (iteration <
maxIterasi)
Try

SplashScreenManager.Default.SetWaitFormDescription("Iterasi ke - " & iteration & " KMeans")
Console.WriteLine(iteration)
iteration += 1
Dim matrix1 = tempMatrixKMeans.GenerateNewMatrixKMeans
ObjectiveFunctionBefore = ObjectiveFunction
'For i = 0 To matrix1.ClusterX1.Element.Count - 1
' temp += matrix1.ClusterX1.Element(i) & " - " & matrix1.ClusterX2.Element(i) & " - "
& matrix1.ClusterX3.Element(i) &
'
" - " & matrix1.ClusterX1.ElementDerajatKeanggotaan(i) & " - " &
matrix1.ClusterX2.ElementDerajatKeanggotaan(i) & " - " &
matrix1.ClusterX3.ElementDerajatKeanggotaan(i) & vbNewLine
'Next
'temp += vbNewLine & vbNewLine & temp
matrix1.SetCenterCluster()
ObjectiveFunction = matrix1.GetObjectiveFunction
tempKMeans += "Iteration count = " & iteration & ", obj.fcn = " & ObjectiveFunction &
vbNewLine
tempKMeans += matrix1.CenterCluster(0, 0) & " " & matrix1.CenterCluster(0, 1) & " "
& matrix1.CenterCluster(0, 2) & vbNewLine

tempKMeans += matrix1.CenterCluster(1, 0) & " " & matrix1.CenterCluster(1, 1) & " "
& matrix1.CenterCluster(1, 2) & vbNewLine
tempKMeans += matrix1.CenterCluster(2, 0) & " " & matrix1.CenterCluster(2, 1) & " "
& matrix1.CenterCluster(2, 2) & vbNewLine
tempMatrixKMeans = Nothing
tempMatrixKMeans = matrix1
matrix1 = Nothing
Catch ex As Exception
General.ErrorMsg(ex.Message)
Exit While
End Try
End While

Universitas Sumatera Utara

SplashScreenManager.Default.SetWaitFormDescription("Display result")
Catch ex As Exception
General.ErrorMsg(ex.Message)
SplashScreenManager.CloseForm(False)
End Try

End Sub
Public Sub CMeansMinProcess()
Dim ObjectiveFunctionBefore As Decimal = 0.0
Dim ObjectiveFunction As Decimal = 0.0
Dim iteration As Integer = 1
tempCmin = ""
Try
'If Not (Filename = txtFilename.Text) Then
' matrix.GetDataFromFile(txtFilename.Text)
' Filename = txtFilename.Text
'End If
SplashScreenManager.Default.SetWaitFormDescription("Iterasi ke - " & iteration)
tempMatrixCmin = matrixCmin
'For i = 0 To matrix.ClusterX1.Element.Count - 1
' temp += matrix.ClusterX1.Element(i) & " - " & matrix.ClusterX2.Element(i) & " - " &
matrix.ClusterX3.Element(i) &
'
" - " & matrix.ClusterX1.ElementDerajatKeanggotaan(i) & " - " &
matrix.ClusterX2.ElementDerajatKeanggotaan(i) & " - " &
matrix.ClusterX3.ElementDerajatKeanggotaan(i) & vbNewLine
'Next
'txtResult.Text = temp
matrixCmin.SetCenterCluster()
tempMatrixCmin.SetCenterCluster()
ObjectiveFunction = tempMatrixCmin.GetObjectiveFunction
tempCmin += "Iteration count = " & iteration & ", obj.fcn = " & ObjectiveFunction &
vbNewLine
tempCmin += tempMatrixCmin.CenterCluster(0, 0) & " " & tempMatrixCmin.CenterCluster(0,
1) & " " & tempMatrixCmin.CenterCluster(0, 2) & vbNewLine
tempCmin += tempMatrixCmin.CenterCluster(1, 0) & " " & tempMatrixCmin.CenterCluster(1,
1) & " " & tempMatrixCmin.CenterCluster(1, 2) & vbNewLine
tempCmin += tempMatrixCmin.CenterCluster(2, 0) & " " & tempMatrixCmin.CenterCluster(2,
1) & " " & tempMatrixCmin.CenterCluster(2, 2) & vbNewLine
TidakAkurat = tempMatrixCmin.ManualDecision.Count
'new mtrix
'Dim matrix1 As Matrix
While ((Math.Abs(ObjectiveFunction - ObjectiveFunctionBefore)) > 0.00001) And (iteration <
maxIterasi)
Try
SplashScreenManager.Default.SetWaitFormDescription("Iterasi ke - " & iteration)
Console.WriteLine(iteration)
iteration += 1
Dim matrix1 = tempMatrixCmin.GenerateNewMatrix
ObjectiveFunctionBefore = ObjectiveFunction
'For i = 0 To matrix1.ClusterX1.Element.Count - 1
' temp += matrix1.ClusterX1.Element(i) & " - " & matrix1.ClusterX2.Element(i) & " - "
& matrix1.ClusterX3.Element(i) &

Universitas Sumatera Utara

'
" - " & matrix1.ClusterX1.ElementDerajatKeanggotaan(i) & " - " &
matrix1.ClusterX2.ElementDerajatKeanggotaan(i) & " - " &
matrix1.ClusterX3.ElementDerajatKeanggotaan(i) & vbNewLine
'Next
'temp += vbNewLine & vbNewLine & temp
matrix1.SetCenterCluster()
ObjectiveFunction = matrix1.GetObjectiveFunction
tempCmin += "Iteration count = " & iteration & ", obj.fcn = " & ObjectiveFunction &
vbNewLine
tempCmin += matrix1.CenterCluster(0, 0) & " " & matrix1.CenterCluster(0, 1) & " " &
matrix1.CenterCluster(0, 2) & vbNewLine
tempCmin += matrix1.CenterCluster(1, 0) & " " & matrix1.CenterCluster(1, 1) & " " &
matrix1.CenterCluster(1, 2) & vbNewLine
tempCmin += matrix1.CenterCluster(2, 0) & " " & matrix1.CenterCluster(2, 1) & " " &
matrix1.CenterCluster(2, 2) & vbNewLine
tempMatrixCmin = Nothing
tempMatrixCmin = matrix1
matrix1 = Nothing
Catch ex As Exception
General.ErrorMsg(ex.Message)
Exit While
End Try
End While
SplashScreenManager.Default.SetWaitFormDescription("Display result")
Catch ex As Exception
General.ErrorMsg(ex.Message)
SplashScreenManager.CloseForm(False)
End Try
End Sub
Public Sub CMeansMaxProcess()
Dim ObjectiveFunctionBefore As Decimal = 0.0
Dim ObjectiveFunction As Decimal = 0.0
Dim iteration As Integer = 1
tempCmax = ""
Try
'If Not (Filename = txtFilename.Text) Then
' matrix.GetDataFromFile(txtFilename.Text)
' Filename = txtFilename.Text
'End If
SplashScreenManager.Default.SetWaitFormDescription("Iterasi ke - " & iteration & " C-Means
Max variance")
tempMatrixCmax = matrixCmax
'For i = 0 To matrix.ClusterX1.Element.Count - 1
' temp += matrix.ClusterX1.Element(i) & " - " & matrix.ClusterX2.Element(i) & " - " &
matrix.ClusterX3.Element(i) &
'
" - " & matrix.ClusterX1.ElementDerajatKeanggotaan(i) & " - " &
matrix.ClusterX2.ElementDerajatKeanggotaan(i) & " - " &
matrix.ClusterX3.ElementDerajatKeanggotaan(i) & vbNewLine
'Next
'txtResult.Text = temp
matrixCmax.SetCenterCluster()
tempMatrixCmax.SetCenterCluster()
ObjectiveFunction = tempMatrixCmax.GetObjectiveFunction

Universitas Sumatera Utara

tempCmax += "Iteration count = " & iteration & ", obj.fcn = " & ObjectiveFunction &
vbNewLine
tempCmax += tempMatrixCmax.CenterCluster(0, 0) & " " &
tempMatrixCmax.CenterCluster(0, 1) & " " & tempMatrixCmax.CenterCluster(0, 2) & vbNewLine
tempCmax += tempMatrixCmax.CenterCluster(1, 0) & " " &
tempMatrixCmax.CenterCluster(1, 1) & " " & tempMatrixCmax.CenterCluster(1, 2) & vbNewLine
tempCmax += tempMatrixCmax.CenterCluster(2, 0) & " " &
tempMatrixCmax.CenterCluster(2, 1) & " " & tempMatrixCmax.CenterCluster(2, 2) & vbNewLine
'new mtrix
'Dim matrix1 As Matrix
While ((Math.Abs(ObjectiveFunction - ObjectiveFunctionBefore)) > 0.00001) And (iteration <
maxIterasi)
Try
SplashScreenManager.Default.SetWaitFormDescription("Iterasi ke - " & iteration & " CMeans Max variance")
Console.WriteLine(iteration)
iteration += 1
Dim matrix1 = tempMatrixCmax.GenerateNewMatrix
ObjectiveFunctionBefore = ObjectiveFunction
'For i = 0 To matrix1.ClusterX1.Element.Count - 1
' temp += matrix1.ClusterX1.Element(i) & " - " & matrix1.ClusterX2.Element(i) & " - "
& matrix1.ClusterX3.Element(i) &
'
" - " & matrix1.ClusterX1.ElementDerajatKeanggotaan(i) & " - " &
matrix1.ClusterX2.ElementDerajatKeanggotaan(i) & " - " &
matrix1.ClusterX3.ElementDerajatKeanggotaan(i) & vbNewLine
'Next
'temp += vbNewLine & vbNewLine & temp
matrix1.SetCenterCluster()
ObjectiveFunction = matrix1.GetObjectiveFunction
tempCmax += "Iteration count = " & iteration & ", obj.fcn = " & ObjectiveFunction &
vbNewLine
tempCmax += matrix1.CenterCluster(0, 0) & " " & matrix1.CenterCluster(0, 1) & " " &
matrix1.CenterCluster(0, 2) & vbNewLine
tempCmax += matrix1.CenterCluster(1, 0) & " " & matrix1.CenterCluster(1, 1) & " " &
matrix1.CenterCluster(1, 2) & vbNewLine
tempCmax += matrix1.CenterCluster(2, 0) & " " & matrix1.CenterCluster(2, 1) & " " &
matrix1.CenterCluster(2, 2) & vbNewLine
tempMatrixCmax = Nothing
tempMatrixCmax = matrix1
matrix1 = Nothing
Catch ex As Exception
General.ErrorMsg(ex.Message)
Exit While
End Try
End While
SplashScreenManager.Default.SetWaitFormDescription("Display result")
Catch ex As Exception
General.ErrorMsg(ex.Message)
SplashScreenManager.CloseForm(False)
End Try
End Sub
Private Sub btnStartProcess_Click(sender As System.Object, e As System.EventArgs) Handles
btnStartProcess.Click

Universitas Sumatera Utara

SplashScreenManager.ShowForm(Me, GetType(WaitForm1), True, True, False)
KMeansProcess()
CMeansMinProcess()
CMeansMaxProcess()
Dim ucResult As New ucResult
Me.Controls.Add(ucResult)
ucResult.Location = New Point(0, 0)
PanelControl1.Visible = False
SplashScreenManager.CloseForm(False)
End Sub
Private Sub btnSelectFile_Click(sender As System.Object, e As System.EventArgs) Handles
btnSelectFile.Click
OpenFileDialog1.Filter = "Microsoft Excel Comma Separated Values File | *.csv"
OpenFileDialog1.InitialDirectory =
System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)
OpenFileDialog1.FileName = ""
OpenFileDialog1.ShowDialog()
End Sub
Private Sub OpenFileDialog1_FileOk(sender As System.Object, e As
System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
txtFilename.Text = OpenFileDialog1.FileName
matrixKMeans.GetDataFromFile(txtFilename.Text)
matrixCmin.GetDataFromFile(txtFilename.Text)
matrixCmax.GetDataFromFile(txtFilename.Text)
DisplayData()
End Sub
Public Sub DisplayData()
lstData.Items.Clear()
For i = 0 To matrixKMeans.ClusterX1.Element.Count - 1
lstData.Items.Add(New ListViewItem({i + 1, matrixKMeans.ClusterX1.Element(i),
matrixKMeans.ClusterX2.Element(i), matrixKMeans.ClusterX3.Element(i),
matrixKMeans.ClusterX1.ElementDerajatKeanggotaan(i),
matrixKMeans.ClusterX2.ElementDerajatKeanggotaan(i),
matrixKMeans.ClusterX3.ElementDerajatKeanggotaan(i), "", "", "", ""}))
Next
End Sub
Private Sub chart_CustomDrawSeriesPoint(sender As System.Object, e As
DevExpress.XtraCharts.CustomDrawSeriesPointEventArgs)
e.LegendText = e.SeriesPoint.Argument
End Sub
Private Sub chartAkurat_CustomDrawSeriesPoint(sender As System.Object, e As
DevExpress.XtraCharts.CustomDrawSeriesPointEventArgs)
e.LegendText = e.SeriesPoint.Argument
End Sub
Private Sub btnAddData_Click(sender As System.Object, e As System.EventArgs) Handles
btnAddData.Click
AddForm.ShowDialog()
End Sub
End Class
Public Class General
Public Shared Sub ErrorMsg(ByVal message As String, Optional ByVal Title As String = "Error")

Universitas Sumatera Utara

MsgBox(message, MsgBoxStyle.Critical, Title)
End Sub
Public Shared Function Random() As Decimal
Static rnd As New Random
Return Math.Round(rnd.NextDouble(), 4)
End Function
End Class
Public Class Matrix
Public Property ClusterX1() As Cluster
Public Property ClusterX2() As Cluster
Public Property ClusterX3() As Cluster
Public Property ManualDecision As List(Of String)
Public CenterCluster(3, 3) As Decimal
Public Sub New()
ClusterX1 = New Cluster
ClusterX2 = New Cluster
ClusterX3 = New Cluster
ManualDecision = New List(Of String)
End Sub
Public Sub GetDataFromFile(ByVal FileName As String)
ClusterX1.Element.Clear()
ClusterX2.Element.Clear()
ClusterX3.Element.Clear()
ClusterX1.ElementDerajatKeanggotaan.Clear()
ClusterX2.ElementDerajatKeanggotaan.Clear()
ClusterX3.ElementDerajatKeanggotaan.Clear()
Using reader As New System.IO.StreamReader(FileName)
Try
While Not (reader.EndOfStream)
Dim line As String = reader.ReadLine
Dim lineArray = line.Split(";")
ClusterX1.Element.Add(CDec(lineArray(0)))
ClusterX2.Element.Add(CDec(lineArray(1)))
ClusterX3.Element.Add(CDec(lineArray(2)))
ManualDecision.Add(lineArray(3))
End While
ClusterX1.SetDerajatKeanggotaan()
ClusterX1.SetSumKuadratDerajatKeanggotaan()
ClusterX2.SetDerajatKeanggotaan()
ClusterX2.SetSumKuadratDerajatKeanggotaan()
ClusterX3.SetDerajatKeanggotaan()
ClusterX3.SetSumKuadratDerajatKeanggotaan()
Catch ex As Exception
ClusterX1.Element.Clear()
ClusterX2.Element.Clear()
ClusterX3.Element.Clear()
ManualDecision.Clear()
General.ErrorMsg(ex.Message)
End Try
End Using
End Sub
Public Sub SetCenterCluster()

Universitas Sumatera Utara

CenterCluster(0, 0) = GetCenterCulsterPointX(ClusterX1, ClusterX1)
CenterCluster(0, 1) = GetCenterCulsterPointX(ClusterX1, ClusterX2)
CenterCluster(0, 2) = GetCenterCulsterPointX(ClusterX1, ClusterX3)
CenterCluster(1, 0) = GetCenterCulsterPointX(ClusterX2, ClusterX1)
CenterCluster(1, 1) = GetCenterCulsterPointX(ClusterX2, ClusterX2)
CenterCluster(1, 2) = GetCenterCulsterPointX(ClusterX2, ClusterX3)
CenterCluster(2, 0) = GetCenterCulsterPointX(ClusterX2, ClusterX1)
CenterCluster(2, 1) = GetCenterCulsterPointX(ClusterX2, ClusterX2)
CenterCluster(2, 2) = GetCenterCulsterPointX(ClusterX2, ClusterX3)
End Sub
Public Function GetCenterCulsterPointX(ByVal cluster As Cluster, ByVal clusterPoint As Cluster)
As Decimal
Dim result As Decimal = 0.0
For i = 0 To cluster.Element.Count - 1
result += (cluster.GetKuadratDerajatKeanggotaan(i) * clusterPoint.Element(i))
Next
Return Math.Round(result / cluster.SumKuadratDerajatKeanggotaan, 2)
End Function
Public Function GetLValue(ByVal cluster1 As Cluster, ByVal cluster2 As Cluster, ByVal cluster3
As Cluster, ByVal membershipDegree As Decimal,
ByVal centerCluster As Array, ByVal i As Integer, ByVal k As Integer) As Decimal
Return (Math.Pow((cluster1.Element(i) - centerCluster(k, 0)), 2) +
Math.Pow((cluster2.Element(i) - centerCluster(k, 1)), 2) +
Math.Pow((cluster3.Element(i) - centerCluster(k, 2)), 2)) * membershipDegree
End Function
Public Function GetLTValue(ByVal i As Integer) As Decimal
Return (GetLValue(ClusterX1, ClusterX2, ClusterX3,
ClusterX1.GetKuadratDerajatKeanggotaan(i), CenterCluster, i, 0) +
GetLValue(ClusterX1, ClusterX2, ClusterX3, ClusterX2.GetKuadratDerajatKeanggotaan(i),
CenterCluster, i, 1) +
GetLValue(ClusterX1, ClusterX2, ClusterX3, ClusterX3.GetKuadratDerajatKeanggotaan(i),
CenterCluster, i, 2))
End Function
Public Function GetObjectiveFunction() As Decimal
Dim result As Decimal = 0.0
For i = 0 To ClusterX1.Element.Count - 1
result += GetLTValue(i)
Next
Return result
End Function
Public Function GenerateNewMatrix() As Matrix
Dim matrix As New Matrix
'For i = 0 To ClusterX1.Element.Count - 1
' matrix.ClusterX1.Element.Add(Math.Round(GetLValue(ClusterX1, ClusterX2, ClusterX3,
ClusterX1.GetKuadratDerajatKeanggotaan(i), CenterCluster, i, 0) / GetLTValue(i), 4))
' matrix.ClusterX2.Element.Add(Math.Round(GetLValue(ClusterX1, ClusterX2, ClusterX3,
ClusterX2.GetKuadratDerajatKeanggotaan(i), CenterCluster, i, 1) / GetLTValue(i), 4))
' matrix.ClusterX3.Element.Add(Math.Round(GetLValue(ClusterX1, ClusterX2, ClusterX3,
ClusterX3.GetKuadratDerajatKeanggotaan(i), CenterCluster, i, 2) / GetLTValue(i), 4))
'Next

Universitas Sumatera Utara

'matrix.ClusterX1.SetDerajatKeanggotaan()
'matrix.ClusterX1.SetSumKuadratDerajatKeanggotaan()
'matrix.ClusterX2.SetDerajatKeanggotaan()
'matrix.ClusterX2.SetSumKuadratDerajatKeanggotaan()
'matrix.ClusterX3.SetDerajatKeanggotaan()
'matrix.ClusterX3.SetSumKuadratDerajatKeanggotaan()
matrix.ClusterX1.Element = ClusterX1.Element
matrix.ClusterX2.Element = ClusterX2.Element
matrix.ClusterX3.Element = ClusterX3.Element
For i = 0 To ClusterX1.Element.Count - 1
matrix.ClusterX1.ElementDerajatKeanggotaan.Add(Math.Round(GetLValue(ClusterX1,
ClusterX2, ClusterX3, ClusterX1.GetKuadratDerajatKeanggotaan(i), CenterCluster, i, 0) /
GetLTValue(i), 4))
matrix.ClusterX2.ElementDerajatKeanggotaan.Add(Math.Round(GetLValue(ClusterX1,
ClusterX2, ClusterX3, ClusterX2.GetKuadratDerajatKeanggotaan(i), CenterCluster, i, 1) /
GetLTValue(i), 4))
matrix.ClusterX3.ElementDerajatKeanggotaan.Add(Math.Round(GetLValue(ClusterX1,
ClusterX2, ClusterX3, ClusterX3.GetKuadratDerajatKeanggotaan(i), CenterCluster, i, 2) /
GetLTValue(i), 4))
Next
matrix.ClusterX1.SetSumKuadratDerajatKeanggotaan()
matrix.ClusterX2.SetSumKuadratDerajatKeanggotaan()
matrix.ClusterX3.SetSumKuadratDerajatKeanggotaan()
Return matrix
End Function
Public Function GenerateNewMatrixKMeans() As Matrix
Dim matrix As New Matrix
matrix.ClusterX1.Element = ClusterX1.Element
matrix.ClusterX2.Element = ClusterX2.Element
matrix.ClusterX3.Element = ClusterX3.Element
For i = 0 To ClusterX1.Element.Count - 1
matrix.ClusterX1.ElementDerajatKeanggotaan.Add(Math.Pow(ClusterX1.ElementDerajatKeanggotaan
(i), 2))
matrix.ClusterX2.ElementDerajatKeanggotaan.Add(Math.Pow(ClusterX2.ElementDerajatKeanggotaan
(i), 2))
matrix.ClusterX3.ElementDerajatKeanggotaan.Add(Math.Pow(ClusterX2.ElementDerajatKeanggotaan
(i), 2))
Next
matrix.ClusterX1.SetSumKuadratDerajatKeanggotaan()
matrix.ClusterX2.SetSumKuadratDerajatKeanggotaan()
matrix.ClusterX3.SetSumKuadratDerajatKeanggotaan()
Return matrix
End Function
End Class

Universitas Sumatera Utara

Imports DevExpress.XtraCharts
Public Class ucResult
Dim IPAKMeans As Integer = 0
Dim IPSKMeans As Integer = 0
Dim BahasaKMeans As Integer = 0
Dim AkuratKMeans As Integer = 0
Dim TdkAkuratKMeans As Integer = 0
Dim IPACMin As Integer = 0
Dim IPSCMin As Integer = 0
Dim BahasaCMin As Integer = 0
Dim AkuratCMin As Integer = 0
Dim TdkAkuratCMin As Integer = 0
Dim IPACMax As Integer = 0
Dim IPSCMax As Integer = 0
Dim BahasaCMax As Integer = 0
Dim AkuratCMax As Integer = 0
Dim TdkAkuratCMax As Integer = 0
Private Sub btnBack_Click(sender As System.Object, e As System.EventArgs) Handles
btnBack.Click
Me.ParentForm.Controls.Remove(Me)
frmHome.PanelControl1.Visible = True
End Sub
Public Sub DisplayListViewData(ByVal lstData As Windows.Forms.ListView, ByVal LastMatrix
As Matrix, ByVal matrix As Matrix, ByRef IPA As Integer,
ByRef IPS As Integer, ByRef Bahasa As Integer, ByRef Akurat As Integer,
ByRef TidakAkurat As Integer)
lstData.Items.Clear()
For i = 0 To LastMatrix.ClusterX1.Element.Count - 1
Dim temp = KecenderunganDataCluster(LastMatrix, matrix, i, IPA, IPS, Bahasa, Akurat,
TidakAkurat)
lstData.Items.Add(New ListViewItem({i + 1, matrix.ClusterX1.Element(i),
matrix.ClusterX2.Element(i), matrix.ClusterX3.Element(i),
LastMatrix.ClusterX1.ElementDerajatKeanggotaan(i),
LastMatrix.ClusterX2.ElementDerajatKeanggotaan(i),
LastMatrix.ClusterX3.ElementDerajatKeanggotaan(i), temp(0), temp(1),
temp(2), temp(3)}))
Next
End Sub
Public Function KecenderunganDataCluster(ByVal LastMatrix As Matrix, ByVal matrix As Matrix,
ByVal index As Integer, ByRef IPA As Integer,
ByRef IPS As Integer, ByRef Bahasa As Integer, ByRef Akurat As Integer,
ByRef TidakAkurat As Integer) As List(Of String)
Dim result As New List(Of String)
result.Add("")
result.Add("")
result.Add("")
result.Add("Tidak Akurat")
If (LastMatrix.ClusterX1.ElementDerajatKeanggotaan(index) >
LastMatrix.ClusterX2.ElementDerajatKeanggotaan(index)) Then
If (LastMatrix.ClusterX1.ElementDerajatKeanggotaan(index) >
LastMatrix.ClusterX3.ElementDerajatKeanggotaan(index)) Then

Universitas Sumatera Utara

result(0) = "True"
IPA += 1
Else
result(2) = "True"
Bahasa += 1
End If
Else
If (LastMatrix.ClusterX2.ElementDerajatKeanggotaan(index) >
LastMatrix.ClusterX3.ElementDerajatKeanggotaan(index)) Then
result(1) = "True"
IPS += 1
Else
result(2) = "True"
Bahasa += 1
End If
End If
If (matrix.ManualDecision(index) = "IPA") And (result(0) = "True") Then
result(3) = "Akurat"
Akurat += 1
TidakAkurat -= 1
ElseIf (matrix.ManualDecision(index) = "IPS") And (result(1) = "True") Then
result(3) = "Akurat"
Akurat += 1
TidakAkurat -= 1
ElseIf (matrix.ManualDecision(index) = "Bahasa") And (result(2) = "True") Then
result(3) = "Akurat"
Akurat += 1
TidakAkurat -= 1
End If
Return result
End Function
Public Sub DrawChart(ByVal chart As DevExpress.XtraCharts.ChartControl, ByVal chartAkurat As
DevExpress.XtraCharts.ChartControl,
ByVal IPA As Integer, ByVal IPS As Integer, ByVal Bahasa As Integer, ByVal Akurat
As Integer, ByVal TidakAkurat As Integer)
chart.Series(0).Points.RemoveRange(0, 3)
chart.Series(0).Points.Add(New SeriesPoint("IPA", IPA))
chart.Series(0).Points.Add(New SeriesPoint("IPS", IPS))
chart.Series(0).Points.Add(New SeriesPoint("Bahasa", Bahasa))
chartAkurat.Series(0).Points.RemoveRange(0, 2)
chartAkurat.Series(0).Points.Add(New SeriesPoint("Akurat", Akurat))
chartAkurat.Series(0).Points.Add(New SeriesPoint("Tidak Akurat", TidakAkurat))
End Sub
Private Sub ucResult_Load(sender As Object, e As System.EventArgs) Handles Me.Load
TdkAkuratKMeans = frmHome.matrixKMeans.ManualDecision.Count
DisplayListViewData(lstDataKmeans, frmHome.tempMatrixKMeans, frmHome.matrixKMeans,
IPAKMeans, IPSKMeans, BahasaKMeans, AkuratKMeans, TdkAkuratKMeans)
txtResultKMeans.Text = frmHome.tempKMeans
DrawChart(ChartPKMeans, chartAkuratKMeans, IPAKMeans, IPSKMeans, BahasaKMeans,
AkuratKMeans, TdkAkuratKMeans)
TdkAkuratCMin = frmHome.matrixCmin.ManualDecision.Count

Universitas Sumatera Utara

DisplayListViewData(lstDataCmin, frmHome.tempMatrixCmin, frmHome.matrixCmin,
IPACMin, IPSCMin, BahasaCMin, AkuratCMin, TdkAkuratCMin)
txtResultCmin.Text = frmHome.tempCmin
DrawChart(ChartPCMin, chartAkuratCMin, IPACMin, IPSCMin, BahasaCMin, AkuratCMin,
TdkAkuratCMin)
TdkAkuratCMax = frmHome.matrixCmax.ManualDecision.Count
DisplayListViewData(lstDataCmax, frmHome.tempMatrixCmax, frmHome.matrixCmax,
IPACMax, IPSCMax, BahasaCMax, AkuratCMax, TdkAkuratCMax)
txtResultCmax.Text = frmHome.tempCmax
DrawChart(ChartPCMax, chartAkuratCMax, IPACMax, IPSCMax, BahasaCMax, AkuratCMax,
TdkAkuratCMax)
End Sub
End Class
Public Class WaitForm1
Sub New
InitializeComponent()
Me.progressPanel1.AutoHeight = True
End Sub
Public Overrides Sub SetCaption(ByVal caption As String)
MyBase.SetCaption(caption)
Me.progressPanel1.Caption = caption
End Sub
Public Overrides Sub SetDescription(ByVal description As String)
MyBase.SetDescription(description)
Me.progressPanel1.Description = description
End Sub
Public Overrides Sub ProcessCommand(ByVal cmd As System.Enum, ByVal arg As Object)
MyBase.ProcessCommand(cmd, arg)
End Sub
Public Enum WaitFormCommand
SomeCommandId
End Enum
End Class

Universitas Sumatera Utara