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
<Assembly: AssemblyTitle("ClusteringFuzzyCMeans")> <Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("")>
<Assembly: AssemblyProduct("ClusteringFuzzyCMeans")> <Assembly: AssemblyCopyright("Copyright © 2013")> <Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(False)>
'The following GUID is for the ID of the typelib if this project is exposed to COM <Assembly: Guid("8b884773-55a5-46bb-a6a9-87b4949d1f4c")>
' 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:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.0.0.0")> <Assembly: AssemblyFileVersion("1.0.0.0")>
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
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 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 & " K-Means")
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) & " - " &
'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 & " K-Means")
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
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
' " - " & 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()
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 & " C-Means 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
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
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
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))
'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
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")
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)
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