• Tidak ada hasil yang ditemukan

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

N/A
N/A
Protected

Academic year: 2017

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

Copied!
14
0
0

Teks penuh

(1)

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

(2)

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

(3)

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) & " - " &

(4)

'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

(5)

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

(6)

' " - " & 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()

(7)

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

(8)

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

(9)

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

(10)

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))

(11)

'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

(12)

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")

(13)

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)

(14)

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

Referensi

Dokumen terkait

Dalam penelitian ini mempunyai kelanjutan penelitian-penelitian terdahulu yang telah memperoleh simpulan dari intellectual capital terhadap nilai perusahaan dengan

Menguasai materi, struktur, konsep, dan pola pikir Menguasai prinsip, teknik, dan prosedur Menerapkan model pembelajaran bahasa pada anak. keilmuan yang mendukung mata pelajaran yang

coli pada penyajian MP-ASI lokal, maksudnya adalah penjamah makanan yang mengeringkan tangan menggunakan lap bersih menjadi berisiko terhadap

Sedangkan Baku Mutu Air Minum menurut Menkes RI No.01/ Birhukmas/I/1975 menyatakan kadar maksimal kalsium yang dianjurkan adalah 75 mg/l dan kadar maksimal magnesium

Miftahul Huda IAIN Sunan Ampel Surabaya..

R'iSAK SEMUA / , -KALAU KITA MGLANAM. KITA AKAN DITUMPAS DAN DESA KITA DIJADI -. KAN LAUTAN API /.. BERAPA SAJA

Istilah pothok adalah istilah yang digunakan untuk menyebutkan gending tradisi karawitan Gaya Surakarta yang mempunyai satu rangkaian balungan saja. Balungan tersebut

Tujuan dari PHA adalah untuk mengidentifikasi kejadian kecelakaan yang dapat terjadi dan analisis risiko yang lebih detail.  Sebagai analisis risiko yang lengkap dalam