• Tidak ada hasil yang ditemukan

Fungsi Keanggotaan Fuzzy menggunakan Min Max Aritmatika crossover. Uji coba dengan input yang sama dilakukan dengan menggunaakan metode

METODOLOGI PENELITIAN

4.2 Hasil Uji Coba

4.2.3 Fungsi Keanggotaan Fuzzy menggunakan Min Max Aritmatika crossover. Uji coba dengan input yang sama dilakukan dengan menggunaakan metode

a. b.

b. d.

Gambar 4.4 Grafik nilai fitness terhadap 100 generasi metode two point crossover Grafik nilai fitness cenderung naik dan nilai fitness paling tinggi akan merepresentasikan grafik fungsi keanggotaan fuzzy seperti pada gambar 4.3

4.2.3 Fungsi Keanggotaan Fuzzy menggunakan Min Max Aritmatika crossover. Uji coba dengan input yang sama dilakukan dengan menggunaakan metode perkawinan Min-Max Aritmatika crossover, dengan menggunakan data yang sama dan dibangkitkan pada jumlah generasi yang sama yaitu generasi 50 dan generasi 100 dengan koefisien d= 0,3 dan mutasi = 6 , Berikut ini merupakan hasil uji coba,

a. Grafik fungsi keanggotaan fuzzy metode min-max crossover 50 generasi. Sama halnya dengan cross over two point pada crossover min max aritmatika kecenderungan nilai fitness naik untuk setiap generasi dan mencapai nilai fitness pada titik tertentu .

a. b.

c. d.

Gambar 4.5 Grafik fungsi keanggotaan yang dibangkitkan sebanyak 50 generasi dengan cross over min max aritmatika

Pada variabel produktifitas nilai fitness tertinggi pada generasi ke 50 dengan nilai fitness = 14.29, variabel hubungan sosial mencapai nilai tertinggi pada generasi ke-47 dengan nilai fitness sebesar 28.57, variabel aksesibilitas mencapai nilai tertinggi pada generasi = 49 dengan nilai fitness 13,03 dan variabel keterisolasian mencapai nilai fitness tertinggi pada generasi ke-47 dengan nilai fitness 40.

Bentuk grafik fungsi keanggotaan yang terbentuk berbeda antara variabel yang satu dengan variabel yang lainnya hal ini terjadi disebabkan nilai kromosom yang dibangkitkan secara random dan dinamis. Untuk nilai fitness kecenderungan nilainya naik pada setiap generasi, sedangkan kromosom sangat bervariasi. Gambar berikut merupakan merupakan gambar nilai kenaikan fitness terhadap kenaikan jumlah generasi

a. b.

c. d.

Gambar 4.6 Grafik nilai fitness terhadap 50 generasi metode min-max crossover

b. Grafik fungsi keanggotaan fuzzy metode min-max crossover 100 generasi.

Untuk crossover min max aritmatik yang dibangkitkan sebanyak 100 generasi ditemukan fitness yang paling tertinggi untuk variabel produktifitas pada generasi ke 90 dengan nilai fitness sebesar 29.57, variabel hubungan sosial mencapai nilai fitness tertinggi pada generasi ke 90 dengan nilai fitness sebesar 50, variabel aksesibilitas mencapai nilai fitness tertinggi pada generasi ke 95 dengan nilai fitness sebesar 25 dan variabel keterisolasian mencapai niali fitness tertinggi pada generasi ke 84 dengan nilai fitness sebesar 66.67. Grafik fungsi keanggotaan fuzzy yang terbentuk dapat dilihat seperti gambar 4.5 dibawah ini.

a. b.

c. d.

Gambar 4.7 Grafik fungsi keanggotaan yang dibangkitkan sebanyak 100 generasi dengan crossover min max aritmatika

Gambar 4.7 merupakan representasi bentuk kromosom dengan nilai fitness tertinggi pada 100 generasi yang dibangkitkan dengan menggunkan metode min-max aritmatika crossover, selanjutnya bentuk grafik nilai fitness yang dihasilkan dapat dilihat pada gambar 4.8.

c. d.

Gambar 4.8 Grafik nilai fitness terhadap 100 generasi tetode min-max crossover

Pada grafik fungsi keanggotaan diatas terlihat bahwa nilai grafik kecenderungan naik sampai pada sebuah nilai fitness tinggi tertentu .

5.1 Kesimpulan

Dari hasil penelitian penulis mendapatkan kesimpulan sebagai berikut :

1. Banyaknya jumlah generasi yang dibangkitkan akan menghasilkan nilai fitness yang tinggi untuk metode crossover two point begitu pula metode cross over min-max aritmatika.

2. Baik metode crossover two point dan min-max aritmatika akan menghasilkan output fungsi keanggotaan fuzzy yang terbaik pada suatu generasi tertentu secara acak dan tidak selalu pada generasi yang tertinggi

3. Pada proses pembentukan fungsi keanggotaan menggunakan 4 variabel input yang sama serta ketentuan output yang dicapai juga sama tetapi menghasilkan 2 keluaran output bentuk fungsi keanggotaan fuzzy yang berbeda untuk crossover two point dan crossover min max aritmatika dan masing-masing dibangkitkan pada 10 generasi, 50 generasi dan 100 generasi.

4. Nilai fitness untuk metode perkawinan silang cross over min-max aritmatik cenderung naik pada setiap generasi sampai dicapai sebuah nilai fitness yang tertinggi sedangkan nilai fitness untuk metode two point crossover nilai fitness cenderung acak dan lebih dinamis.

5. Pada metode crossover two point dan min-max aritmatika akan menghasilkan satu nilai fitness tertinggi dan stabil pada generasi yang tinggi.

menghasilkan sebuah fungsi keanggotaan fuzzy yang diharapkan, penelitian ini dapat dilanjutkan dengan menggunakan algoritma lain yang dapat mempercepat proses sehingga maximum generasi dapat dicapai sehingga bentuk fungsi keanggotaan yang lebih baik dapat dicapai.

2. Penelitian ini bisa dilanjutkan dengan menggunakan pendekatan fungsi keanggotaan trapesium, sigmoid untuk menghasilkan pembangkit fungsi keanggotaan fuzzy yang lebih baik untuk sebuah tren data tertentu.

Fadl Mutaher Ba-Alwi. 2013. Knowledge Acquisition Tool for Learning Membership Function and Fuzzy Classification Rules from Numerical Data. International Journal of Computer Application. Vol 64 No 13

Kurniawan Eka Permana dan Siti Zaiton Mohn Hashim. 2010. Fuzzy Membership Function Generation using Particle Swarn Optimization. Int. J. Open Problems Compt. Math., Vol 3, No 1

Satyendra Nath Mandal, J. Pal Choudhury and S.R. Bhadra Chaudhuri. 2012. In Search of Suitable Fuzzy Membership Function in Prediction of Time Series Data. Vol 9, Issue 3, No 3.Science Direct

Tzung-Pei Hong dan Chai-Ying Lee. 1996. Inductionof Fuzzy Rules and Membership Function Training Examples. Elsevier Science Publisher

K.N. Gowtham, M. Vasudevan, V. Maduraimuthu dan T. Jayakumar. 2011 . Intelligent Modeling Combining Adaptive Neuro Fuzzy Inference System and Genetic Algorithm for Optimizing Welding Process Parameters. The Minerals. Metals & ASM International. Vol 42B

Michele Sebag dan Marc Schoenauer.2008. Inductive Learning of Membership Functions and Fuzzy Rules. Elsevier Science Publisher

Raouf Ketata 2007. Adjustment of Membership Function, Generation and Reduction of Fuzzy Rule Base from Numerical Data. Malaysian Journal of Computer Science. Vol 20(2)

Chih-Chung Yang, N. K. Bose. 2005 . Generating Fuzzy Membership Function with Self-Organizing Feature Map. Elsevier. Vol 27 . 356-365

Mehmet Kaya dan Reda Alhajj. 2006. Utilizing Genetic Algorithms to Optimize Membership Functions for Fuzzy Weighted Association Rules Mining. Springer Science Business Media. Vol 24. 7-15

K. Deep, M. L. Kansal dan K. P. Singh. 2011. Genetic Algorithm Based Fuzzy Weighted Average for Multi-Criteria Decision Making Problems. Operational Research Society of India Vol 48(2):96-108

Yunizar Zara. 2012 Pembangkit Fungsi Keanggotaan Fuzzy Otomatis Menggunakan Neural Network. Tesis. Universitas Sumatera Utara

Michael Negnevitsky. 2005. Artificial Intelligence A Guide to Intelligent Systems. 2 nd

Edition. Addison Wesley.

Zadeh, L. A. 1965, Fuzzy Sets. Information Control, 8:338-353

Zadeh, L. A. 1968 . Fuzzy Algorithm, Information Control, vol 12, , pp. 94-102 Goldberg, D. E., 1989 Genetic Algorithms in Search, Optimization and Machine

Learning , Addison-Wesley Publishing Co.

Li_Xin Wang.1997. A Course In Fuzzy Systems and Control, Prentice-Hall International, Inc

Parodi A, Bonelli P , 1993 A new approach of fuzzy classifier systems. In : Proceeding of fifth international conference on genetic algorithms. Morgan Kaufmann. Pp 223-230

Herrera F, Lozano M, Verdegay JL (1997) Fuzzy connectives based crossover operators to model genetic algorithms population diversity. Fuzzy Sets Syst 92 (1): 21-30

Mitchell Melanie. 1996. An Introduction to Genetic Algorithms. MIT Press. New Jersey

Listing Program Public Class Chromosome

Private chromo As List(Of Double) Private max As Integer

Private min As Integer Public fitnes As Double Public suitability As Double Public Li As Double

Public Relm As List(Of RElement) Public Sub New()

chromo = New List(Of Double) Relm = New List(Of RElement) fitnes = 0

GC.KeepAlive(chromo) GC.KeepAlive(Relm) End Sub

Public Sub New(ByVal element As List(Of Double)) chromo = New List(Of Double)

Relm = New List(Of RElement) fitnes = 0

Dim i As Integer = 0 Dim j As Integer = 0 For Each item In element i += 1

chromo.Add(item) If i = 2 Then

Dim R As New RElement

R.RLeft = element(j - 1) - element(j) R.Median = element(j - 1)

R.RRight = R.Median + element(j) Relm.Add(R) i = 0 End If j += 1 Next item GC.KeepAlive(chromo) GC.KeepAlive(Relm) End Sub

'Public Sub ArrangeElement()

' For Each item In subChromoB.Elmt ' Chromosom.Add(item)

' Next

' For Each item In subChromoC.Elmt ' Chromosom.Add(item)

' Next

' For Each item In subChromoD.Elmt ' Chromosom.Add(item)

' Next 'End Sub

Public Property Chromosom() As List(Of Double) Get

Return chromo End Get

Set(value As List(Of Double)) chromo = value

End Set End Property

Public Property MaxElm() As Double Get Return max End Get Set(value As Double) max = value End Set End Property

Public Property MinElm() As Double Get Return min End Get Set(value As Double) min = value End Set End Property

Public Sub GenerateMainChromosome(ByVal data As Variable) For Each item In data.RElm

Chromosom.Add(item.Median)

Chromosom.Add(item.Median - item.RLeft) Dim R As New RElement

Relm.Add(R) Next

MaxElm = General.GetMax(Chromosom) MinElm = General.GetMin(Chromosom) End Sub

'Mendapatkan nilai coverage factor

Public Function GetCoverageFactore(ByVal InputFuzzy As List(Of TID), ByVal type As String) As Double

Dim result As Double Dim IjMax As Double = 0

'IjMax merupakan variable yang akan menyimpan nilai InputFuzzy tertinggi sesuai dengan tipenya

For Each TID In InputFuzzy For Each item In TID.TI If item.Name = type Then If IjMax < item.Value Then IjMax = item.Value End If

End If Next item Next

'rumus mendapatkan coverage factor

result = Math.Round(1 / ((Relm(Relm.Count - 1).Median - Relm(0).Median) / IjMax), 2) Return result

End Function

Public Function GetOverlapFactor(ByVal item1 As RElement, ByVal item2 As RElement, ByVal height As Boolean) As Double

'rumus mendapatkan nilai overlap If height Then

Return Math.Round(General.GetMax(0 / General.GetMin(Math.Abs(item1.Median - item2.Median), 0), 1) - 1, 2)

Else

If item2.RLeft >= item1.RRight Then

Return Math.Round(General.GetMax(1 / General.GetMin(Math.Abs(item1.Median - item2.Median), 1), 1) - 1, 2)

Else

Return Math.Round(General.GetMax(Math.Abs(item1.RRight - item2.RLeft) / General.GetMin(Math.Abs(item1.Median - item2.Median), Math.Abs(item1.RRight - item2.RLeft)), 1) - 1, 2)

End If End If End Function

type As String) As Integer Dim result As Integer = 0 For Each RItem In Relm For Each TID In InputFuzzy For Each TD In TID.TI

'mengecek jika type yang ingin dihitung sama dengan nama Element InputFuzzy If type = TD.Name Then

'menghitung nilai fuzzy set, jika nilai fuzzy set lebih besar sama dengan alpha maka LI value + 1

If RItem.GetFuzzySet(TD.Value) >= alpha Then result += 1 End If End If Next Next Next RItem

'Console.WriteLine("GetLIValue = " & result) Li = result

Return result End Function

Public Function GetScalarItem(ByVal subChromo As SubChromosome, ByVal type As String, ByVal variable As String, ByVal ListTID As List(Of TID)) As Double

Dim result As Double = 0 For Each item In ListTID For Each value In item.TI If value.Name = variable Then If (type.ToLower() = "low") Then

result += subChromo.Low.GetFuzzySet(value.Value) ElseIf (type.ToLower() = "mid") Then

result += subChromo.Midle.GetFuzzySet(value.Value) ElseIf (type.ToLower() = "height") Then

result += subChromo.Height.GetFuzzySet(value.Value) End If

End If Next value Next item

'Console.WriteLine("Scalar Item = " & result) Return result

End Function

'Menghitung nilai suitability

Public Function GetSuitability(ByVal InputFuzzy As List(Of TID), ByVal type As String) As Double

Dim result As Double = 0 Dim index As Integer = 0

'jika R element merupakan element R terakhir result += GetOverlapFactor(Relm(i), Relm(0), True) Else

'jika R element tidak element R terakhir

result += GetOverlapFactor(Relm(i), Relm(i + 1), False) End If

index += 1 Next i

result += GetCoverageFactore(InputFuzzy, type) result = Math.Round(result, 2)

suitability = result

'Console.WriteLine("GetSuitability = " & result) Return result

End Function

'Fungsi untuk menghitung nilai fitnees

Public Sub SetFitness(ByVal alpha As Integer, ByVal InputFuzzy As List(Of TID), ByVal type As String)

General.log += "Get Fitness chromosome : " & Chromosom.Count & " Relem : " & Relm.Count & vbNewLine

fitnes = Math.Round(GetSuitability(InputFuzzy, type), 2)

'fitnes = Math.Round(GetLiValue(alpha, InputFuzzy, type) / GetSuitability(InputFuzzy, type), 2)

End Sub

Public Sub Mutasi(ByVal E As Integer) Dim index As Integer = 0

'pemgecekan deret kromosom yang perlu dilakukan mutasi For i As Integer = 1 To (Chromosom.Count / 2) - 1

index += 2

If (Chromosom(index) < Chromosom(index - 2)) Then Exit For

End If Next i

'jika index yang diperoleh bukanlah element terakhir kromosom maka akan dilakukan proses mutasi

If Not (index = Chromosom.Count - 2) Then Chromosom(index) += E

Dim temp As Double

If Chromosom(index) < Chromosom(index - 2) Then temp = Chromosom(index)

Chromosom(index) = Chromosom(index - 2) Chromosom(index - 2) = temp

Chromosom(index) = Chromosom(index + 2) Chromosom(index + 2) = temp

End If

Catch ex As Exception

Console.WriteLine("Mutasi error : " & ex.Message) Exit Sub

End Try End If End If End Sub

Protected Overrides Sub Finalize() MyBase.Finalize()

chromo.Clear() End Sub

Dokumen terkait