Aplikasi Dengan Metode Fuzzy Tsukamoto
SUMBER : http://dlaboratory.wordpress.com/2012/04/13/aplikasi-dengan-metode-fuzzy-tsukamoto/
Tugas, tugas dan tugas
Kira-kira sampai kapan ya tugas itu berakhir untuk mahasiswa
. Kali ini saya coba share sebagian source code hasil dari tugas kuliah
yang sudah terselesaikan (Tapi sebenarnya masih harus dipresentasikan
tanggal 7 Mei sih)
. 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
Lakukan Hal yang sama dengan ComboBox1 – ComboBox4 hanya saja nama = “Operator”
{Combo9}
Nama : Pelayanan
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).
03 | Dim a As Long , b As Long , c As Long , d As Long |
04 | For a = Pembayaran.LBound To Pembayaran.UBound |
05 | Pembayaran(a).AddItem "SEDIKIT" |
06 | Pembayaran(a).AddItem "BANYAK" |
08 | For b = Operator.LBound To Operator.UBound |
09 | Operator(b).AddItem "AND" |
10 | Operator(b).AddItem "OR" |
12 | For c = Pelayanan.LBound To Pelayanan.UBound |
13 | Pelayanan(c).AddItem "CEPAT" |
14 | Pelayanan(c).AddItem "LAMA" |
16 | For d = Tips.LBound To Tips.UBound |
17 | Tips(d).AddItem "SEDIKIT" |
18 | Tips(d).AddItem "BANYAK" |
Langkah selanjutnya ketikkan kode berikut. Kode ini merupakan fungsi
untuk menghitung derajat keanggotaan dari masing-masing variabel
02 | Private Function setDerajatKeanggotaan() As String |
03 | Dim a As Long , b As Long , c As Single , d As Single , MBayar As String , MPelayanan As String |
04 | Dim Sedikit As Long , Banyak As Long |
05 | Dim Cepat As Long , Lama As Long |
06 | a = Val(Nilai(0).Text) |
07 | b = Val(Nilai(1).Text) |
08 | Sedikit = Val(Variabel(0).Text) |
09 | Banyak = Val(Variabel(1).Text) |
10 | Cepat = Val(Variabel(2).Text) |
11 | Lama = Val(Variabel(3).Text) |
15 | ElseIf Sedikit <= a <= Banyak Then |
16 | c = (Banyak - a) / (Banyak - Sedikit) |
17 | ElseIf a >= Banyak Then |
23 | ElseIf Sedikit <= a <= Banyak Then |
24 | c = (a - Sedikit) / (Banyak - Sedikit) |
25 | ElseIf a >= Banyak Then |
28 | MBayar = MBayar & "|" & c |
33 | ElseIf Cepat <= b <= Lama Then |
34 | d = (Lama - b) / (Lama - Cepat) |
42 | ElseIf Cepat <= b <= Lama Then |
43 | d = (b - Cepat) / (Lama - Cepat) |
47 | MPelayanan = MPelayanan & "|" & d |
49 | setDerajatKeanggotaan = MBayar & "#" & MPelayanan |
Selanjutnya ketikkan kode berikut. Fungsi ini berfungsi untuk mencari Alpha Predikat dan nilai Z dari rule yang ditentukan
02 | Private Function setProsesRule() As String |
07 | Dim a As Long , b As Long , c As Single , d As Single , AlphaPredikat As String , NilaiZ As String |
08 | Pisah = Split(setDerajatKeanggotaan, "#" ) |
09 | MBayar = Split(Pisah(0), "|" ) |
10 | MPelayanan = Split(Pisah(1), "|" ) |
12 | For a = Pembayaran.LBound To Pembayaran.UBound |
13 | Select Case Operator(a).ListIndex |
15 | If MBayar(Pembayaran(a).ListIndex) >= MPelayanan(Pelayanan(a).ListIndex) Then |
16 | c = MPelayanan(Pelayanan(a).ListIndex) |
18 | c = MBayar(Pembayaran(a).ListIndex) |
21 | If MBayar(Pembayaran(a).ListIndex) <= MPelayanan(Pelayanan(a).ListIndex) Then |
22 | c = MPelayanan(Pelayanan(a).ListIndex) |
24 | c = MBayar(Pembayaran(a).ListIndex) |
28 | AlphaPredikat = AlphaPredikat & c & "|" |
30 | AlphaPredikat = AlphaPredikat & c |
35 | NilaiAlpha = Split(AlphaPredikat, "|" ) |
36 | For b = Tips.LBound To Tips.UBound |
37 | Select Case Tips(b).ListIndex |
39 | d = Val(Variabel(5).Text) - (NilaiAlpha(b) * (Val(Variabel(5).Text) - Val(Variabel(4).Text))) |
41 | d = (NilaiAlpha(b) * (Val(Variabel(5).Text) - Val(Variabel(4).Text))) + Val(Variabel(4).Text) |
44 | NilaiZ = NilaiZ & d & "|" |
50 | setProsesRule = AlphaPredikat & "#" & NilaiZ |
Berikut ini merupakan fungsi untuk menghitung nilai Z akhir
01 | Private Function HasilAkhir() As Integer |
07 | Dim a As Long , b As Long |
08 | Potong = Split(setProsesRule, "#" ) |
09 | AlfaPredikat = Split(Potong(0), "|" ) |
10 | NilaiZ = Split(Potong(1), "|" ) |
13 | For a = LBound(NilaiZ) To UBound(NilaiZ) |
14 | Sigma = Sigma + (NilaiZ(a) * AlfaPredikat(a)) |
16 | For b = LBound(AlfaPredikat) To UBound(AlfaPredikat) |
17 | Alpha = Alpha + AlfaPredikat(b) |
20 | HasilAkhir = Sigma / Alpha |
kode-kode tadi masih belum terpanggil. kode untuk memanggilnya adalah sebagai berikut
5 | Private Sub Command1_Click() |
6 | Label1.Caption = Format(HasilAkhir, "#,###" ) |
Posted in:
3 komentar:
kok gag kenek
boleh donk minta filex aja gan yang baik..
http://rainbowcodec.blogspot.com/2015/05/metode-fuzzy-tsukamoto-vbnet-2012-dan.html
cek gan mana tau bermanfaat :D
Posting Komentar