Aplikasi Dengan Metode Fuzzy Tsukamoto
Posted: April 13, 2012 in Source Code, Visual Basic 6 Tags: Fuzzy, Fuzzy Tsukamoto, Metode
25
Tugas, tugas dan tugas :( Kira-kira sampai kapan ya tugas itu berakhir untuk mahasiswa :D. Kali
ini saya coba share sebagian source code hasil dari tugas kuliah yang sudah terselesaikan (Tapi
sebenarnya masih harus dipresentasikan tanggal 7 Mei sih) :D. Sesuai dengan judul posting ini
tugas yang diberikan adalah tugas membuat aplikasi dengan menggunakan metode Fuzzy
Tsukamoto Berdasarkan suatu Kasus. Kasus itu yang saya jadikan acuan, lihat disini untuk
mengetahui serperti apa kasusnya (Program : 1). Aplikasi yang dibuat menggunakan Visual
Basic.
Berikut langkah-langkahnya
Pasang 8 TextBox dan 16 ComboBox, Berikut Setting untuk propertiesnya
[TextBox]
{Text1}
Nama : Variabel
Index : 0
{Text2}
Nama : Variabel
Index : 1
Atur nama Text3 sampai Text6 menjadi “Variabel” dan atur indexnya menjadi berurutan mulai
dari 2-5
[ComboBox]
{Combo1}
Nama : Pembayaran
Index : 0
Lakukan hal sama dengan TextBox, Untuk 3 ComboBox berikutnya. Hanya Saja
Nama =
“Pembayaran”
dan Index mulai dari 1-3
{Combo5}
Nama : Operator
Index : 0
Index : 0
Lakukan Hal yang sama dengan ComboBox5 – ComboBox8 hanya saja
nama = “Pelayanan”
{Combo13}
Nama : Tips
Index : 0
Lakukan Hal yang sama dengan ComboBox9 – ComboBox12 hanya saja
nama = “Tips”
Tambahkan Label dan ComboBox
Ketikkan kode berikut. Kode berikut merupakan fungsi nantinya yang akan digunakan sebagai
aturan fuzzy (rule).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
'SETTING VARIABEL KEANGGOTAAN DAN OPERATOR PrivateSubAddRule()
Dima AsLong, b AsLong, c AsLong, d AsLong Fora = Pembayaran.LBound ToPembayaran.UBound Pembayaran(a).AddItem "SEDIKIT"
Pembayaran(a).AddItem "BANYAK" Next
Forb = Operator.LBound ToOperator.UBound Operator(b).AddItem "AND"
Operator(b).AddItem "OR" Next
Forc = Pelayanan.LBound ToPelayanan.UBound Pelayanan(c).AddItem "CEPAT"
Pelayanan(c).AddItem "LAMA" Next
Ford = Tips.LBound ToTips.UBound Tips(d).AddItem "SEDIKIT" Tips(d).AddItem "BANYAK" Next
EndSub
Langkah selanjutnya ketikkan kode berikut. Kode ini merupakan fungsi untuk menghitung
derajat keanggotaan dari masing-masing variabel
1
2
3
4
5
6
7
8
'MENGHITUNG DERAJAT KEANGGOTAAN DARI MASING-MASING VARIABEL PrivateFunctionsetDerajatKeanggotaan() AsString
Dima AsLong, b AsLong, c AsSingle, d AsSingle, MBayar AsString, MPelayanan AsString
DimSedikit AsLong, Banyak AsLong DimCepat AsLong, Lama AsLong a = Val(Nilai(0).Text)
b = Val(Nilai(1).Text)
10
Cepat = Val(Variabel(2).Text) Lama = Val(Variabel(3).Text)
setDerajatKeanggotaan = MBayar & "#"& MPelayanan EndFunction
3
String, NilaiZ AsStringPisah = Split(setDerajatKeanggotaan, "#") MBayar = Split(Pisah(0), "|")
MPelayanan = Split(Pisah(1), "|")
Fora = Pembayaran.LBound ToPembayaran.UBound SelectCaseOperator(a).ListIndex
NilaiAlpha = Split(AlphaPredikat, "|") Forb = Tips.LBound ToTips.UBound SelectCaseTips(b).ListIndex Case0
d = Val(Variabel(5).Text) - (NilaiAlpha(b) * (Val(Variabel(5).Text) - Val(Variabel(4).Text)))
Case1
d = (NilaiAlpha(b) * (Val(Variabel(5).Text) - Val(Variabel(4).Text))) + Val(Variabel(4).Text)
EndSelect
48
49
50
51
Berikut ini merupakan fungsi untuk menghitung nilai Z akhir
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
PrivateFunctionHasilAkhir() AsInteger DimNilaiZ
DimAlfaPredikat DimPotong
DimAlpha AsSingle DimSigma AsSingle Dima AsLong, b AsLong
Potong = Split(setProsesRule, "#") AlfaPredikat = Split(Potong(0), "|") NilaiZ = Split(Potong(1), "|")
Alfa = 0 Sigma = 0
Fora = LBound(NilaiZ) ToUBound(NilaiZ)
Sigma = Sigma + (NilaiZ(a) * AlfaPredikat(a)) Nexta
Forb = LBound(AlfaPredikat) ToUBound(AlfaPredikat) Alpha = Alpha + AlfaPredikat(b)
Nextb
HasilAkhir = Sigma / Alpha EndFunction
kode-kode tadi masih belum terpanggil. kode untuk memanggilnya adalah sebagai berikut
1
2
3
4
5
6
7
PrivateSubForm_Load() call AddRule
EndSub
PrivateSubCommand1_Click()
Label1.Caption = Format(HasilAkhir, "#,###") EndSub