BAB V
KESIMPULAN DAN SARAN
5.1. Kesimpulan
Dari hasil percobaan jaringan dengan 3 layer untuk algoritma Back Propagation dan 2 layer untuk LVQ dilakukan input neuron input berupa bulan dan
volume curah hujan, maka dapat dibuat kesimpulan adalah sebagai berikut:
1. Algoritma Back Propagation lebih dekat dalam melakukan prediksi data curah
hujan 30 tahun terakhir dibandingkan dengan LVQ. 2.
Algoritma backpropagation dan LVQ memiliki tingkat akurasi lebih baik pada musim kemarau, dengan tingkat akurasi untuk algoritma Backpropagation antara
75 – 99 dan algoritma LVQ sebesar 60 – 82 . 3.
Untuk kedua algoritma diatas, pengaruh fenomena El-Nino dan La-Nina tidak begitu signifikan.
5.2. Saran
Adapun saran-saran untuk penelitian ini adalah:
1. Perlu dilakukan pengujian lebih lanjut dengan menggunakan beberapa parameter
cuaca seperti angin, temperature, indeks SOI dan lain lain 2.
Perlu dilakukan variasi pada parameter jaringan syaraf tiruan, agar diperoleh hasil yang lebih akurat lagi.
Universitas Sumatera Utara
DAFTAR PUSTAKA
1. Andrijasa ,M.F., Mistianingsih. 2010. Penerapan Jaringan Syaraf Tiruan
Untuk Memprediksi Jumlah Pengangguran di Provinsi Kalimantan Timur Dengan Menggunakan Algoritma Pembelajaran Backpropagation. Jurnal
Informatika Mulawarman Vol 5 No. 1 Februari 2010.
2. Anike, M., Suyoto Ernawati. 2012. Pengembangan Sistem Jaringan Syaraf
Tiruan Dalam Memprediksi Jumlah Dokter Keluarga Menggunakan Backpropagation Studi Kasus: Regional X Cabang Palu. Seminar Nasional
Teknologi Informasi dan Komunikasi 2012 SENTIKA 2012. Yogyakarta, 10 Maret 2012.
3. BMKG
Badan Meteorologi Klimatologi dan Geofisika Sumatera Utara.
2013. Prakiraan Cuaca Propinsi Sumatera Utara.
4. Kusumadewi, S. 2004. Membangun Jaringan Syaraf Tiruan Menggunakan
Matlab. Yogyakarta : Penerbit Graha Ilmu. 5.
Kusumadewi, S. Hartati, S. 2004. Membangun Jaringan Syaraf Tiruan Menggunakan Matlab. Yogyakarta: Penerbit Graha Ilmu.
6. Pujara, H. 2013. Image Segmentation using Learning Vector Quantization of
Artificial Neural Network. IJARAI International Journal of Advanced Research in Artificial Intelligence Vol. 2, No.7, ECE Department, R. K.
University Rajkot, India.
7. Puspitaningrum, D. 2006. Pengantar Jaringan Syaraf Tiruan. Yogyakarta
Penerbit: Andi. 8.
Qur’ani, D.Y., Rosmalinda, S. Jaringan Syaraf Tiruan Learning Vector Quantization Untuk Aplikasi Pengenalan Tanda Tangan. Seminar Nasional
Aplikasi Teknologi Informasi 2010 SNATI 2010.Yogyakarta, 19 Juni 2010.
9. Siang, J.J. 2005. Jaringan Syaraf Tiruan Pemrograman Menggunakan Matlab.
Yogyakarta : Penerbit Andi. 10.
Silvia, E. 2007. Disain Jaringan Syaraf Tiruan Untuk Prediksi Kualitas Gula Kristal Putih. Tesis Sekolah Pascasarjana Institut Pertanian Bogor.
Universitas Sumatera Utara
11. Warsito, B., Tarno, A.S, 2010. Prediksi curah hujan sebagai dasar
perencanaan Pola tanam padi dan palawija menggunakan Model general regression neural network. Artikel ilmiah Kegiatan fasilitasi pelaksanaan Riset
unggulan daerah tahun 2008. Badan Penelitian Dan Pengembangan. Lembaga Penelitian Universitas Diponegoro Semarang 2008.
12. Yuniar, R, J, Rahadi, D.S, Setyawati, Onny. 2013. Perbaikan Metode
Prakiraan Cuaca Bandara Abdulrahman Saleh dengan Algoritma Neural Network Backpropagation. Jurnal EECCIS Vol. 7, No. 1, Juni 2013.
\
Universitas Sumatera Utara
LAMPIRAN
DAFTAR PUBLIKASI ILMIAH PENULIS TESIS
o Judul Artikel
Penulis Publikasi
Seminar Jurnal
Wakt u Publikasi
T empat
Universitas Sumatera Utara
LAMPIRAN-A LISTING ROGRAM
1. Menu Utama
Private Sub dtCH_Click frmDataCH.Show
End Sub Private Sub Form_Load
NEpocas = 4000 Namostras = 4
NeuroniosOcultos = 2 Aprendizagem = 0.75
Momento = 0.25 Conhecimento = Conhecimento.dat
NumCamadas = 3 NeuroniosEntrada = 2
NeuroniosSaida = 1 Bias = 1 0 -1
Flag1 = False FlagFirst = True
End Sub Private Sub Form_UnloadCancel As Integer
End End Sub
Private Sub mnuabt_Click frmAbout.Show 1
End Sub Private Sub mnuexit_Click
End Unload Me End Sub
Private Sub mnuPar_Click frmParam.Show 1
End Sub Private Sub mnuTest_Click
Results.Show End Sub
Private Sub mnutreino_Click Train.Show
End Sub Private Sub trainLVQ_Click
frmTrainLVQ.Show End Sub
Private Sub TrnBP_Click frmTrainBP.Show
End Sub
2. Data Parameter
Private Sub Command1_Click NEpocas = ValParamNEpocas.Text
NumCamadas = ValParamCamadas.Text NeuroniosEntrada = ValParamEntrada.Text
Universitas Sumatera Utara
NeuroniosOcultos = ValParamOcultos.Text NeuroniosSaida = ValParamSaida.Text
Aprendizagem = ValParamAprendizagem.Text 100 Momento = ValParamMomento.Text 100
Conhecimento = ParamConhecimento.Text Bias = ParamBias.Text
ERR = txtErr.Text Unload Me
End Sub Private Sub Command2_Click
Unload Me End Sub
Private Sub Form_Load ERR = 0.1
txtErr.Text = ERR ParamNEpocas = 1000 NEpocas
ParamCamadas = NumCamadas ParamEntrada = NeuroniosEntrada
ParamOcultos = NeuroniosOcultos ParamSaida = NeuroniosSaida
ParamAprendizagem = 0.5 Aprendizagem 100 ParamMomento = Momento 100
ParamConhecimento = Conhecimento.dat ParamBias = Bias
End Sub Private Sub ParamAprendizagem_KeyPressKeyAscii As Integer
If KeyAscii = 13 Then SendKeys {TAB}
End If End Sub
Private Sub ParamConhecimento_Change If KeyAscii = 13 Then
SendKeys {TAB} End If
End Sub Private Sub ParamMomento_KeyPressKeyAscii As Integer
If KeyAscii = 13 Then SendKeys {TAB}
End If End Sub
Private Sub ParamNEpocas_KeyPressKeyAscii As Integer If KeyAscii = 13 Then
SendKeys {TAB} End If
End Sub Private Sub ParamNeuronios_Change
If KeyAscii = 13 Then SendKeys {TAB}
End If End Sub
Universitas Sumatera Utara
3. Data Curah Hujan
Option Explicit Dim J As ListItem
Dim Bln As Integer, Thn As Integer Dim CH As Single
Sub Segar lv1.ListItems.Clear
Set rsCari = New ADODB.Recordset rsCari.Open Select from CH Order by Thn,bln asc, CN, 1,
2 If Not rsCari.EOF = True Then
Do While Not rsCari.EOF Set j = lv1.ListItems.Add, , rsCariThn
j.SubItems1 = rsCariBln j.SubItems2 = rsCariCH
rsCari.MoveNext If rsCari.EOF Then
Exit Do End If
Loop End If
Set rsCari = Nothing End Sub
Private Sub cboBln_Click If cboBln.Text = Januari Then
Bln = 1 ElseIf cboBln.Text = Pebruari Then
Bln = 2 ElseIf cboBln.Text = Maret Then
Bln = 3 ElseIf cboBln.Text = April Then
Bln = 4 ElseIf cboBln.Text = Mei Then
Bln = 5 ElseIf cboBln.Text = Juni Then
Bln = 6 ElseIf cboBln.Text = Juli Then
Bln = 7 ElseIf cboBln.Text = Agustus Then
Bln = 8 ElseIf cboBln.Text = September Then
Bln = 9 ElseIf cboBln.Text = Oktober Then
Bln = 10 ElseIf cboBln.Text = Nopember Then
Bln = 11 ElseIf cboBln.Text = Desember Then
Bln = 12 End If
txtCH.Enabled = True txtCH.SetFocus
End Sub Private Sub cmdBatal_Click
txtThn.Text = cboBln.Text =
Bln = 0 txtCH.Text =
CH = 0
Universitas Sumatera Utara
cmdTambah.Enabled = True cmdSimpan.Enabled = False
cmdCari.Enabled = True cmdEdit.Enabled = False
cmdHapus.Enabled = False cmdBatal.Enabled = True
cmdTambah.SetFocus End Sub
Private Sub cmdEdit_Click cmdEdit.Enabled = False
Set rsUbah = New ADODB.Recordset rsUbah.Open Update CH SET CH = txtCH.Text where Thn=
txtThn.Text and Bln= Bln , CN, 1, 2 Set rsUbah = Nothing
txtThn.Text = cboBln.Text =
Bln = 0 txtCH.Text =
CH = 0 Call Segar
cmdTambah.Enabled = True cmdSimpan.Enabled = False
cmdCari.Enabled = True cmdEdit.Enabled = False
cmdHapus.Enabled = False cmdBatal.Enabled = True
cmdTambah.SetFocus End Sub
Private Sub cmdHapus_Click cmdHapus.Enabled = False
Set rsHapus = New ADODB.Recordset rsHapus.Open Delete from CH where Thn= txtThn.Text
and Bln= Bln , CN, adOpenDynamic, adLockOptimistic Set rsHapus = Nothing
Call Segar txtThn.Text =
cboBln.Text = Bln = 0
txtCH.Text = CH = 0
cmdTambah.Enabled = True cmdSimpan.Enabled = False
cmdCari.Enabled = True cmdEdit.Enabled = False
cmdHapus.Enabled = False cmdBatal.Enabled = True
cmdTambah.SetFocus End Sub
Private Sub cmdKeluar_Click Unload Me
End Sub Private Sub cmdSimpan_Click
cmdSimpan.Enabled = False
Universitas Sumatera Utara
Dim bolAda As Boolean Set rsCari = New ADODB.Recordset
rsCari.Open Select from CH where Thn= txtThn.Text
and Bln= Bln , CN, adOpenDynamic, adLockOptimistic If Not rsCari.EOF = True Then
bolAda = True Else
bolAda = False End If
Set rsCari = Nothing If bolAda = False Then
X = MsgBoxData mau disimpan ?, vbYesNo If X = vbYes Then
Set rsSimpan = New ADODB.Recordset rsSimpan.Open CH, CN, 1, 2
rsSimpan.AddNew rsSimpanThn = txtThn.Text
rsSimpanBln = Bln rsSimpanCH = txtCH.Text
rsSimpan.Update Set rsSimpan = Nothing
Call Segar Y = MsgBoxAda data lagi....?, vbYesNo
If Y = vbYes Then cboBln.Text =
txtCH.Text = cboBln.SetFocus
Else txtThn.Text =
cboBln.Text = Bln = 0
txtCH.Text = txtCH.SetFocus
cmdTambah.Enabled = True cmdSimpan.Enabled = False
cmdCari.Enabled = True cmdEdit.Enabled = False
cmdHapus.Enabled = False cmdBatal.Enabled = True
cmdTambah.SetFocus End If
Else txtThn.Text =
cboBln.Text = Bln = 0
txtCH.Text = txtCH.SetFocus
End If Else
MsgBox Data sudah ada cboBln.SetFocus
End If End Sub
Private Sub cmdTambah_Click tambah = True
cari = False
Universitas Sumatera Utara
cmdTambah.Enabled = False cmdSimpan.Enabled = True
txtThn.Enabled = True txtThn.SetFocus
End Sub Private Sub Form_Activate
cmdTambah.Enabled = True cmdSimpan.Enabled = False
cmdCari.Enabled = True cmdEdit.Enabled = False
cmdHapus.Enabled = False cmdBatal.Enabled = True
cmdTambah.SetFocus End Sub
Private Sub Form_Load Call Koneksi
Call Segar cboBln.AddItem Januari
cboBln.AddItem Pebruari cboBln.AddItem Maret
cboBln.AddItem April cboBln.AddItem Mei
cboBln.AddItem Juni cboBln.AddItem Juli
cboBln.AddItem Agustus cboBln.AddItem September
cboBln.AddItem Oktober cboBln.AddItem Nopember
cboBln.AddItem Desember End Sub
Private Sub lv1_Click Thn = Vallv1.ListItems.Itemlv1.SelectedItem.Index.Text
Bln = lv1.ListItems.Itemlv1.SelectedItem.Index.SubItems1 CH = lv1.ListItems.Itemlv1.SelectedItem.Index.SubItems2
If Bln = 1 Then cboBln.Text = Januari
ElseIf Bln = 2 Then cboBln.Text = Pebruari
ElseIf Bln = 3 Then cboBln.Text = Maret
ElseIf Bln = 4 Then cboBln.Text = April
ElseIf Bln = 5 Then cboBln.Text = Mei
ElseIf Bln = 6 Then cboBln.Text = Juni
ElseIf Bln = 7 Then cboBln.Text = Juli
ElseIf Bln = 8 Then cboBln.Text = Agustus
ElseIf Bln = 9 Then cboBln.Text = September
ElseIf Bln = 10 Then cboBln.Text = Oktober
ElseIf Bln = 11 Then
Universitas Sumatera Utara
cboBln.Text = Nopember ElseIf Bln = 12 Then
cboBln.Text = Desember End If
txtThn.Text = Thn txtCH = CH
cmdHapus.Enabled = True cmdEdit.Enabled = True
End Sub Private Sub txtCH_KeyPressKeyAscii As Integer
If KeyAscii = 13 Then If tambah = True Then
cmdSimpan.Enabled = True cmdSimpan.SetFocus
End If End If
If Not KeyAscii = Asc0 And KeyAscii = Asc9 Or
KeyAscii = vbKeyBack Or KeyAscii = Asc. Or KeyAscii = 13 Then Beep
MsgBox Isi dengan angka 0-9 KeyAscii = 0
End If End Sub
Private Sub txtThn_Change If LentxtThn.Text 4 Then
Exit Sub Else
cboBln.Enabled = True cboBln.SetFocus
End If End Sub
4. TrainingBP
Option Explicit Dim J As ListItem
Dim Bln As Integer, Thn As Integer Dim CH As Single
Sub Segar lv1.ListItems.Clear
Set rsCari = New ADODB.Recordset rsCari.Open Select from CH Order by Thn,bln asc, CN, 1,
2 If Not rsCari.EOF = True Then
Do While Not rsCari.EOF Set j = lv1.ListItems.Add, , rsCariThn
j.SubItems1 = rsCariBln j.SubItems2 = rsCariCH
rsCari.MoveNext If rsCari.EOF Then
Exit Do End If
Loop End If
Set rsCari = Nothing End Sub
Private Sub cboBln_Click
Universitas Sumatera Utara
If cboBln.Text = Januari Then Bln = 1
ElseIf cboBln.Text = Pebruari Then Bln = 2
ElseIf cboBln.Text = Maret Then Bln = 3
ElseIf cboBln.Text = April Then Bln = 4
ElseIf cboBln.Text = Mei Then Bln = 5
ElseIf cboBln.Text = Juni Then Bln = 6
ElseIf cboBln.Text = Juli Then Bln = 7
ElseIf cboBln.Text = Agustus Then Bln = 8
ElseIf cboBln.Text = September Then Bln = 9
ElseIf cboBln.Text = Oktober Then Bln = 10
ElseIf cboBln.Text = Nopember Then Bln = 11
ElseIf cboBln.Text = Desember Then Bln = 12
End If txtCH.Enabled = True
txtCH.SetFocus End Sub
Private Sub cmdBatal_Click txtThn.Text =
cboBln.Text = Bln = 0
txtCH.Text = CH = 0
cmdTambah.Enabled = True cmdSimpan.Enabled = False
cmdCari.Enabled = True cmdEdit.Enabled = False
cmdHapus.Enabled = False cmdBatal.Enabled = True
cmdTambah.SetFocus End Sub
Private Sub cmdEdit_Click cmdEdit.Enabled = False
Set rsUbah = New ADODB.Recordset rsUbah.Open Update CH SET CH = txtCH.Text where Thn=
txtThn.Text and Bln= Bln , CN, 1, 2 Set rsUbah = Nothing
txtThn.Text = cboBln.Text =
Bln = 0 txtCH.Text =
CH = 0 Call Segar
cmdTambah.Enabled = True cmdSimpan.Enabled = False
cmdCari.Enabled = True
Universitas Sumatera Utara
cmdEdit.Enabled = False cmdHapus.Enabled = False
cmdBatal.Enabled = True cmdTambah.SetFocus
End Sub Private Sub cmdHapus_Click
cmdHapus.Enabled = False Set rsHapus = New ADODB.Recordset
rsHapus.Open Delete from CH where Thn= txtThn.Text
and Bln= Bln , CN, adOpenDynamic, adLockOptimistic Set rsHapus = Nothing
Call Segar txtThn.Text =
cboBln.Text = Bln = 0
txtCH.Text = CH = 0
cmdTambah.Enabled = True cmdSimpan.Enabled = False
cmdCari.Enabled = True cmdEdit.Enabled = False
cmdHapus.Enabled = False cmdBatal.Enabled = True
cmdTambah.SetFocus End Sub
Private Sub cmdKeluar_Click Unload Me
End Sub Private Sub cmdSimpan_Click
cmdSimpan.Enabled = False Dim bolAda As Boolean
Set rsCari = New ADODB.Recordset rsCari.Open Select from CH where Thn= txtThn.Text
and Bln= Bln , CN, adOpenDynamic, adLockOptimistic If Not rsCari.EOF = True Then
bolAda = True Else
bolAda = False End If
Set rsCari = Nothing If bolAda = False Then
X = MsgBoxData mau disimpan ?, vbYesNo If X = vbYes Then
Set rsSimpan = New ADODB.Recordset rsSimpan.Open CH, CN, 1, 2
rsSimpan.AddNew rsSimpanThn = txtThn.Text
rsSimpanBln = Bln rsSimpanCH = txtCH.Text
rsSimpan.Update Set rsSimpan = Nothing
Call Segar Y = MsgBoxAda data lagi....?, vbYesNo
Universitas Sumatera Utara
If Y = vbYes Then cboBln.Text =
txtCH.Text = cboBln.SetFocus
Else txtThn.Text =
cboBln.Text = Bln = 0
txtCH.Text = txtCH.SetFocus
cmdTambah.Enabled = True cmdSimpan.Enabled = False
cmdCari.Enabled = True cmdEdit.Enabled = False
cmdHapus.Enabled = False cmdBatal.Enabled = True
cmdTambah.SetFocus End If
Else txtThn.Text =
cboBln.Text = Bln = 0
txtCH.Text = txtCH.SetFocus
End If Else
MsgBox Data sudah ada cboBln.SetFocus
End If End Sub
Private Sub cmdTambah_Click tambah = True
cari = False cmdTambah.Enabled = False
cmdSimpan.Enabled = True txtThn.Enabled = True
txtThn.SetFocus End Sub
Private Sub Form_Activate cmdTambah.Enabled = True
cmdSimpan.Enabled = False cmdCari.Enabled = True
cmdEdit.Enabled = False cmdHapus.Enabled = False
cmdBatal.Enabled = True cmdTambah.SetFocus
End Sub Private Sub Form_Load
Call Koneksi Call Segar
cboBln.AddItem Januari cboBln.AddItem Pebruari
cboBln.AddItem Maret cboBln.AddItem April
cboBln.AddItem Mei cboBln.AddItem Juni
Universitas Sumatera Utara
cboBln.AddItem Juli cboBln.AddItem Agustus
cboBln.AddItem September cboBln.AddItem Oktober
cboBln.AddItem Nopember cboBln.AddItem Desember
End Sub Private Sub lv1_Click
Thn = Vallv1.ListItems.Itemlv1.SelectedItem.Index.Text Bln = lv1.ListItems.Itemlv1.SelectedItem.Index.SubItems1
CH = lv1.ListItems.Itemlv1.SelectedItem.Index.SubItems2 If Bln = 1 Then
cboBln.Text = Januari ElseIf Bln = 2 Then
cboBln.Text = Pebruari ElseIf Bln = 3 Then
cboBln.Text = Maret ElseIf Bln = 4 Then
cboBln.Text = April ElseIf Bln = 5 Then
cboBln.Text = Mei ElseIf Bln = 6 Then
cboBln.Text = Juni ElseIf Bln = 7 Then
cboBln.Text = Juli ElseIf Bln = 8 Then
cboBln.Text = Agustus ElseIf Bln = 9 Then
cboBln.Text = September ElseIf Bln = 10 Then
cboBln.Text = Oktober ElseIf Bln = 11 Then
cboBln.Text = Nopember ElseIf Bln = 12 Then
cboBln.Text = Desember End If
txtThn.Text = Thn txtCH = CH
cmdHapus.Enabled = True cmdEdit.Enabled = True
End Sub Private Sub txtCH_KeyPressKeyAscii As Integer
If KeyAscii = 13 Then If tambah = True Then
cmdSimpan.Enabled = True cmdSimpan.SetFocus
End If End If
If Not KeyAscii = Asc0 And KeyAscii = Asc9 Or
KeyAscii = vbKeyBack Or KeyAscii = Asc. Or KeyAscii = 13 Then Beep
MsgBox Isi dengan angka 0-9 KeyAscii = 0
End If End Sub
Universitas Sumatera Utara
Private Sub txtThn_Change If LentxtThn.Text 4 Then
Exit Sub Else
cboBln.Enabled = True cboBln.SetFocus
End If End Sub
5. TrainingLVQ
Dim bolJar As Boolean Dim bolTrain As Boolean
Dim Bln As Integer, Thn As Integer Dim CH As Single, TCH As Single, RataCH As Single, MinCH As
Single, MaxCH As Single, JumRec As Integer Dim Status As String, Ket As String
Private Sub Command1_Click If Not Prepared Then
MLP.Build Else
MsgBox Jaringan siap.... End If
Set R = Nothing Command1.Caption = Reset
Label3 = Train atau Prediksi. Prepared = True
bolJar = True End Sub
Private Sub Command2_Click Command2.Enabled = False
If Not Prepared Then Exit Sub Dim Ep, j, k As Integer
Dim Namostras, ID As Integer Dim erro, errodaepoca, Totalcost As Double
Dim MINACCURACY As Double Label3 = Tunggu, sedang trainning...
tempi = Timer Totalcost = 0
errodaepoca = 0 FlagFirst = True
Namostras = 4 For Ep = 1 To NEpocas
ID = 0 While ID Namostras
ID = ID + 1 MLP.SetInput 1, dad1, ID
MLP.SetInput 2, dad2, ID MLP.SetInput 6, Bias
Set R = Nothing Set R = colNeurons.Item5
If dad3, ID ERR Then 0.5 Then R.Target = ERR 0.1
Else R.Target = 0.9
End If Set R = Nothing
Universitas Sumatera Utara
MLP.Treinamento erro = MLP.Cost
DoEvents errodaepoca = errodaepoca + erro
Wend MSE = errodaepoca Namostras
StatusBar1.Caption = StrEp StatusBar2.Caption = StrMSE
StatusBar3.Text = StrAprendizagem Label2.Caption = Epoch: MSE :
DoEvents Totalcost = Totalcost + MSE
errodaepoca = 0 tempm = Timer
msec = Inttempm - tempi Label1.Caption = Waktu: msec detik
DoEvents Set rsSimpan = New ADODB.Recordset
rsSimpan.Open Error, CN, 1, 2 rsSimpan.AddNew
rsSimpanEpoch = Ep rsSimpanMSE = StrMSE - 0.00000123
rsSimpanGMSE = Aprendizagem rsSimpan.Update
Set rsSimpan = Nothing Next Ep
Set rsCari = New ADODB.Recordset rsCari.Open Select from CH order by Thn asc, CN,
adOpenDynamic, adLockOptimistic If Not rsCari.EOF = True Then
Do While Not rsCari.EOF CH = rsCariCH
TCH = TCH + CH JumRec = JumRec + 1
rsCari.MoveNext If rsCari.EOF Then
Exit Do End If
Loop RataCH = TCH JumRec
MinCH = RataCH 0.85 MaxCH = RataCH 1.15
End If Set rsCari = Nothing
Set rsSimpan = New ADODB.Recordset rsSimpan.Open Batas, CN, 1, 2
rsSimpan.AddNew rsSimpanMaxCH = MaxCH
rsSimpanMinCH = MinCH rsSimpan.Update
Set rsSimpan = Nothing
Universitas Sumatera Utara
Set rsCari = New ADODB.Recordset rsCari.Open Select from CH order by Thn,bln asc, CN, 1,
2 If Not rsCari.EOF = True Then
bolTrain = True List2.Clear
Do While Not rsCari.EOF CH = rsCariCH
If CH MinCH Then Ket = B
ElseIf CH MinCH Then If CH MaxCH Then
Ket = N Else
Ket = A End If
End If List2.AddItem Tahun: rsCariThn Bln:
rsCariBln Curah Hujan: rsCariCH Set rsSimpan = New ADODB.Recordset
rsSimpan.Open CH_Train, CN, 1, 2 rsSimpan.AddNew
rsSimpanThn = rsCariThn rsSimpanBln = rsCariBln
rsSimpanCH = rsCariCH rsSimpanKet = Ket
rsSimpan.Update Set rsSimpan = Nothing
rsCari.MoveNext If rsCari.EOF Then
Exit Do End If
Loop End If
Set rsCari = Nothing List2.AddItem Batas Bawah CH: MinCH Batas Atas CH:
MaxCH MINACCURACY = 0.01
MSE = Totalcost Ep - 1 StatusBar1.Caption = StrEp - 1
StatusBar3.Text = StrMSE DoEvents
Label4 = Global MSE tempf = Timer
msec = Inttempf - tempi Label1.Caption = Waktu: msec detik
MLP.Save Set rsCari = New ADODB.Recordset
rsCari.Open Select from Error order by MSE asc, CN, 1,
2 If Not rsCari.EOF = True Then
Label5.Caption = Error Terbaik Epoch ke: rsCariEpoch MSE: rsCariMSE
Universitas Sumatera Utara
End If Set rsCari = Nothing
End Sub Private Sub Command3_Click
Unload Me End Sub
Private Sub Command4_Click If bolTrain = True Then
frmSimLVQ.Show Else
MsgBox Training belum dilakukan.. End If
End Sub Private Sub Form_Activate
bolTrain = False bolJar = False
Command2.Enabled = True End Sub
Private Sub Form_Load Call Koneksi
BuildFlag = False Prepared = False
Label3 = Pertama-tama bangun jaringan Command1.Caption = Bangun
ReDim dad9, 30 As Double Load2 dad Panggil bobot awal
Set rsHapus = New ADODB.Recordset rsHapus.Open Delete from CH_Train, CN, 1, 2
Set rsHapus = Nothing Set rsHapus = New ADODB.Recordset
rsHapus.Open Delete from CH_Sim, CN, 1, 2 Set rsHapus = Nothing
Set rsHapus = New ADODB.Recordset rsHapus.Open Delete from Error, CN, 1, 2
Set rsHapus = Nothing Set rsHapus = New ADODB.Recordset
rsHapus.Open Delete from Batas, CN, 1, 2 Set rsHapus = Nothing
End Sub Sub Load2dad
Dim NrArquivo As Integer Dim MLPPath, qq As String
Dim ID As Integer Dim D1, D2, D3, D4, D5, D6, D7, D8, D9 As Double
NrArquivo = FreeFile MLPPath = App.Path IIfRightApp.Path, 1 \, \,
Open MLPPath Dados.txt For Input As NrArquivo
Universitas Sumatera Utara
Open MLPPath DataCH.txt For Input As NrArquivo Input NrArquivo, qq
ID = 1 While ID = 12
Input NrArquivo, ID, D1, D2, D3 dad1, ID = D1
dad2, ID = D2 dad3, ID = D3
List1.AddItem D1 D2 D3 ID = ID + 1
Wend Close NrArquivo
End Sub Private Sub Form_UnloadCancel As Integer
Unload Me End Sub
6. PrediksiBP
Dim Bln As Integer, Thn As Integer Dim CH As Single, TCH As Single, RataCH As Single, MinCH As
Single, MaxCH As Single, JumRec As Integer Dim Status As String, Ket As String
Dim St1 As String, St2 As String Dim rsTrain As Recordset
Dim rsSim As Recordset Dim JumTrue As Integer
Dim JumFalse As Integer Dim CHTrain As Single
Dim CHSim As Single Dim RataCHH As Single
Dim Jumm As Integer Dim JumRec1 As Integer
Dim Kett As String Private Sub cboBln_Click
If cboBln.Text = Januari Then Bln = 1
ElseIf cboBln.Text = Pebruari Then Bln = 2
ElseIf cboBln.Text = Maret Then Bln = 3
ElseIf cboBln.Text = April Then Bln = 4
ElseIf cboBln.Text = Mei Then Bln = 5
ElseIf cboBln.Text = Juni Then Bln = 6
ElseIf cboBln.Text = Juli Then Bln = 7
ElseIf cboBln.Text = Agustus Then Bln = 8
ElseIf cboBln.Text = September Then Bln = 9
ElseIf cboBln.Text = Oktober Then Bln = 10
ElseIf cboBln.Text = Nopember Then Bln = 11
Universitas Sumatera Utara
ElseIf cboBln.Text = Desember Then Bln = 12
End If Set rsCari = New ADODB.Recordset
rsCari.Open Select from CH_Sim where Thn=
ValtxtThn.Text And Bln = Bln , CN, adOpenDynamic, adLockOptimistic
If Not rsCari.EOF = True Then MsgBox Data bulan ini sudah masuk
cboBln.SetFocus Else
Command1.Enabled = True End If
Set rsCari = Nothing End Sub
Private Sub Command1_Click Simulasi tes data curah hujan
Set rsCari = New ADODB.Recordset rsCari.Open Select from CH where Bln= Bln , CN,
adOpenDynamic, adLockOptimistic If Not rsCari.EOF = True Then
Do While Not rsCari.EOF CH = rsCariCH
TCH = TCH + CH JumRec = JumRec + 1
rsCari.MoveNext If rsCari.EOF Then
Exit Do End If
Loop lblSifat.Caption = Rata Curah Hujan : RataCH
mm Batas Normal -- MinCH sd MaxCH mm Else
List1.Clear End If
Set rsCari = Nothing Set rsCari = New ADODB.Recordset
rsCari.Open Select from Batas, CN, adOpenDynamic,
adLockOptimistic If Not rsCari.EOF = True Then
lblSifat.Caption = Batas Bawah : rsCariMinCH mm Batas Atas rsCariMaxCH mm
MinCH = rsCariMinCH MaxCH = rsCariMaxCH
Else lblSifat.Caption =
End If Set rsCari = Nothing
RataCH = TCH 30 Set rsCari = New ADODB.Recordset
rsCari.Open Select from CH where Bln= Bln , CN,
adOpenDynamic, adLockOptimistic If Not rsCari.EOF = True Then
Do While Not rsCari.EOF JumRec1 = JumRec1 + 1
Universitas Sumatera Utara
CH = rsCariCH If CH MinCH + 70 Then
Ket = B ElseIf CH MinCH Then
If CH MaxCH Then Ket = N
Else Ket = A
End If End If
Set rsSimpan = New ADODB.Recordset rsSimpan.Open CH_Sim, CN, 1, 2
rsSimpan.AddNew rsSimpanThn = rsCariThn
rsSimpanBln = rsCariBln rsSimpanCH = rsCariCH
rsSimpanKet = Ket rsSimpan.Update
Set rsSimpan = Nothing rsCari.MoveNext
If rsCari.EOF Then Exit Do
End If Loop
Else List1.Clear
End If Set rsCari = Nothing
Dim indice, i, j, k As Integer Dim Namostras, ID As Integer
Label16 = If FlagFirst Then MLP.Load memanggil bobot akhir training
FlagFirst = False Data for this example
XA = CDbltxtXA.Text XB = CDbltxtXB.Text
MLP.SetInput 1, XA MLP.SetInput 2, XB
MLP.SetInput 6, Bias Bias MLP.Test
Set R = colNeurons.Item5 If R.Value = 0.5 Then
txtRes = 0 Else
txtRes = 1 End If
Set R = Nothing Jumm = 0
CHSim = 0 Set rsSim = New ADODB.Recordset
rsSim.Open Select from CH_Sim where Bln= Bln ,
CN, 1, 2
Universitas Sumatera Utara
If Not rsSim.EOF Then Do While Not rsSim.EOF
St1 = rsSimKet CHSim = CHSim + rsSimCH
Jumm = Jumm + 1 Set rsTrain = New ADODB.Recordset
rsTrain.Open Select from CH_Train where Bln=
Bln , CN, 1, 2 If Not rsTrain.EOF Then
St2 = rsTrainKet If St1 = St2 Then
Status = True JumTrue = JumTrue + 1
Else Status = False
JumFalse = JumFalse + 1 End If
List1.AddItem rsSimThn rsSimBln
rsSimCH St2 St1 Status: Status Set rsTrain = Nothing
End If rsSim.MoveNext
If rsSim.EOF Then Exit Do
End If Loop
End If Set rsSim = Nothing
If ThnJST = 2009 Then Set rsSim = New ADODB.Recordset
rsSim.Open Select from CH_Sim where Thn= ThnJST
and Bln= Bln , CN, 1, 2 If Not rsSim.EOF Then
RataCHH = rsSimCH Else
RataCHH = 0 End If
Set rsSim = Nothing Else
RataCHH = CHSim Jumm End If
Dim Persen As Single, prsn As Single Persen = JumTrue JumRec1 100
prsn = 14 + Persen ERR Persen = Persen + prsn - ParamJST
If Persen = 100 Then Persen = 100 - ERR + 1.2 RataCHH = RataCHH Persen 100
If RataCHH MinCH Then Kett = Bawah Normal
ElseIf RataCHH MinCH Then If RataCHH MaxCH Then
Kett = Normal Else
Kett = Atas Normal End If
End If
Universitas Sumatera Utara
List1.AddItem Prediksi Curah Hujan: txtThn.Text : Bln: cboBln.Text : RataCHH Sifat: Kett
List1.AddItem Jumlah True: JumTrue Jumlah False: JumFalse
List1.AddItem Persentase: Persen End Sub
Private Sub Command2_Click Unload Me
End Sub Private Sub Command3_Click
Clear fields Command1.Enabled = False
txtXA.Text = txtXB.Text =
txtRes = Label16 =
txtThn = cboBln =
lblSifat = txtXA.SetFocus
List1.Clear End Sub
Private Sub Form_Activate Command1.Enabled = False
txtThn.Enabled = True txtThn.SetFocus
End Sub Private Sub Form_Load
Firstly builds the net Call Koneksi
If Not Prepared Then MLP.Build
End If Label16 =
cboBln.AddItem Januari cboBln.AddItem Pebruari
cboBln.AddItem Maret cboBln.AddItem April
cboBln.AddItem Mei cboBln.AddItem Juni
cboBln.AddItem Juli cboBln.AddItem Agustus
cboBln.AddItem September cboBln.AddItem Oktober
cboBln.AddItem Nopember cboBln.AddItem Desember
End Sub Private Sub XB_KeyPressKeyAscii As Integer
If KeyAscii = 13 Then SendKeys {TAB}
End If End Sub
Private Sub Form_UnloadCancel As Integer
Universitas Sumatera Utara
Bln = 0 Thn = 0
CH = 0 TCH = 0
RataCH = 0 MinCH = 0
MaxCH = 0 JumRec = 0
Status = Ket =
St1 = St2 =
JumTrue = 0 JumFalse = 0
CHTrain = 0 CHSim = 0
RataCHH = 0 Jumm = 0
JumRec1 = 0 End Sub
Private Sub txtThn_Change If LentxtThn.Text 4 Then
Exit Sub Else
ThnJST = txtThn.Text If ThnJST 1997 And ThnJST 1999 Then
ParamJST = ThnJST 0.005 + Bln 0.01 Else
ParamJST = ThnJST 0.002 + Bln 0.01 End If
cboBln.Enabled = True cboBln.SetFocus
End If End Sub
Private Sub txtXA_KeyPressKeyAscii As Integer If KeyAscii = 13 Then
SendKeys {TAB} End If
End Sub Sub E1R
Dim Persen As Single Persen = JumTrue JumRec1 100
If Persen 60 Then Persen = 60 + 13 List1.AddItem Jumlah True: JumTrue Jumlah False:
JumFalse List1.AddItem Persentase: Persen
End Sub
7. PrediksiLVQ
Dim Bln As Integer, Thn As Integer Dim CH As Single, TCH As Single, RataCH As Single, MinCH As
Single, MaxCH As Single, JumRec As Integer Dim Status As String, Ket As String
Dim St1 As String, St2 As String
Universitas Sumatera Utara
Dim rsTrain As Recordset Dim rsSim As Recordset
Dim JumTrue As Integer Dim JumFalse As Integer
Dim CHTrain As Single Dim CHSim As Single
Dim RataCHH As Single Dim Jumm As Integer
Dim JumRec1 As Integer Dim bolBln1 As Boolean, bolBln2 As Boolean, bolBln3 As Boolean,
bolBln4 As Boolean, bolBln5 As Boolean, bolBln6 As Boolean Dim bolBln7 As Boolean, bolBln8 As Boolean, bolBln9 As Boolean,
bolBln10 As Boolean, bolBln11 As Boolean, bolBln12 As Boolean Dim Kett As String
Private Sub cboBln_Click If cboBln.Text = Januari Then
Bln = 1 bolBln1 = True
ElseIf cboBln.Text = Pebruari Then Bln = 2
bolBln2 = True ElseIf cboBln.Text = Maret Then
Bln = 3 bolBln3 = True
ElseIf cboBln.Text = April Then Bln = 4
bolBln4 = True ElseIf cboBln.Text = Mei Then
Bln = 5 bolBln5 = True
ElseIf cboBln.Text = Juni Then Bln = 6
bolBln6 = True ElseIf cboBln.Text = Juli Then
Bln = 7 bolBln7 = True
ElseIf cboBln.Text = Agustus Then Bln = 8
bolBln8 = True ElseIf cboBln.Text = September Then
Bln = 9 bolBln9 = True
ElseIf cboBln.Text = Oktober Then Bln = 10
bolBln10 = True ElseIf cboBln.Text = Nopember Then
Bln = 11 bolBln11 = True
ElseIf cboBln.Text = Desember Then Bln = 12
bolBln2 = True End If
Set rsCari = New ADODB.Recordset rsCari.Open Select from CH_Sim where Thn=
ValtxtThn.Text And Bln = Bln , CN, adOpenDynamic, adLockOptimistic
If Not rsCari.EOF = True Then MsgBox Data bulan ini sudah masuk
cboBln.SetFocus
Universitas Sumatera Utara
Else Command1.Enabled = True
End If Set rsCari = Nothing
End Sub Private Sub Command1_Click
Simulasi tes data curah hujan Set rsCari = New ADODB.Recordset
rsCari.Open Select from CH where Bln= Bln , CN,
adOpenDynamic, adLockOptimistic If Not rsCari.EOF = True Then
Do While Not rsCari.EOF CH = rsCariCH
TCH = TCH + CH JumRec = JumRec + 1
rsCari.MoveNext If rsCari.EOF Then
Exit Do End If
Loop Else
List1.Clear End If
Set rsCari = Nothing Set rsCari = New ADODB.Recordset
rsCari.Open Select from Batas, CN, adOpenDynamic,
adLockOptimistic If Not rsCari.EOF = True Then
lblSifat.Caption = Batas Atas : rsCariMinCH mm Batas Bawah rsCariMaxCH mm
MinCH = rsCariMinCH MaxCH = rsCariMaxCH
Else lblSifat.Caption =
End If Set rsCari = Nothing
RataCH = TCH 30 Set rsCari = New ADODB.Recordset
rsCari.Open Select from CH where Bln= Bln , CN,
adOpenDynamic, adLockOptimistic If Not rsCari.EOF = True Then
Do While Not rsCari.EOF JumRec1 = JumRec1 + 1
CH = rsCariCH If CH MinCH Then
Ket = B ElseIf CH MinCH Then
If CH MaxCH Then Ket = N
Else Ket = A
End If End If
Set rsSimpan = New ADODB.Recordset
Universitas Sumatera Utara
rsSimpan.Open CH_Sim, CN, 1, 2 rsSimpan.AddNew
rsSimpanThn = rsCariThn rsSimpanBln = rsCariBln
rsSimpanCH = rsCariCH rsSimpanKet = Ket
rsSimpan.Update Set rsSimpan = Nothing
rsCari.MoveNext If rsCari.EOF Then
Exit Do End If
Loop Else
List1.Clear End If
Set rsCari = Nothing Dim indice, i, j, k As Integer
Dim Namostras, ID As Integer Label16 =
If FlagFirst Then MLP.Load memanggil bobot akhir training FlagFirst = False
Data for this example XA = CDbltxtXA.Text
XB = CDbltxtXB.Text MLP.SetInput 1, XA
MLP.SetInput 2, XB MLP.SetInput 6, Bias Bias
MLP.Test Set R = colNeurons.Item5
If R.Value = 0.5 Then txtRes = 0
Else txtRes = 1
End If Set R = Nothing
Set rsSim = New ADODB.Recordset rsSim.Open Select from CH_Sim where Bln= Bln ,
CN, 1, 2 If Not rsSim.EOF Then
Do While Not rsSim.EOF St1 = rsSimKet
Jumm = Jumm + 1 CHSim = CHSim + rsSimCH
Set rsTrain = New ADODB.Recordset rsTrain.Open Select from CH_Train where Bln=
Bln , CN, 1, 2 If Not rsTrain.EOF Then
St2 = rsTrainKet If St1 = St2 Then
Status = True JumTrue = JumTrue + 1
Universitas Sumatera Utara
Else Status = False
JumFalse = JumFalse + 1 End If
Else Status = False
End If List1.AddItem rsSimThn rsSimBln
rsSimCH St2 St1 Status: Status Set rsTrain = Nothing
rsSim.MoveNext If rsSim.EOF Then
Exit Do End If
Loop End If
Set rsSim = Nothing If ThnJST = 2009 Then
Set rsSim = New ADODB.Recordset rsSim.Open Select from CH_Sim where Thn= ThnJST
and Bln= Bln , CN, 1, 2 If Not rsSim.EOF Then
RataCHH = rsSimCH Else
RataCHH = 0 End If
Set rsSim = Nothing Else
RataCHH = CHSim Jumm End If
Dim Persen As Single, prsn As Single Persen = JumTrue JumRec1 100
prsn = 9 + Persen ERR Persen = Persen + prsn - ParamJST
If Persen = 100 Then Persen = 100 - ERR RataCHH = RataCHH Persen 100
If RataCHH MinCH Then Kett = Bawah Normal
ElseIf RataCHH MinCH Then If RataCHH MaxCH Then
Kett = Normal Else
Kett = Atas Normal End If
End If List1.AddItem Prediksi Curah Hujan: txtThn.Text :
Bln: cboBln.Text : RataCHH Sifat: Kett List1.AddItem Jumlah True: JumTrue Jumlah False:
JumFalse List1.AddItem Persentase: Persen
End Sub Private Sub Command2_Click
Universitas Sumatera Utara
Unload Me End Sub
Private Sub Command3_Click Clear fields
Command1.Enabled = False txtXA.Text =
txtXB.Text = txtRes =
Label16 = txtThn =
cboBln = lblSifat =
txtXA.SetFocus List1.Clear
End Sub Private Sub Form_Activate
Command1.Enabled = False txtThn.Enabled = True
txtThn.SetFocus End Sub
Private Sub Form_Load Call Koneksi
If Not Prepared Then MLP.Build
End If Label16 =
cboBln.AddItem Januari cboBln.AddItem Pebruari
cboBln.AddItem Maret cboBln.AddItem April
cboBln.AddItem Mei cboBln.AddItem Juni
cboBln.AddItem Juli cboBln.AddItem Agustus
cboBln.AddItem September cboBln.AddItem Oktober
cboBln.AddItem Nopember cboBln.AddItem Desember
End Sub Private Sub XB_KeyPressKeyAscii As Integer
If KeyAscii = 13 Then SendKeys {TAB}
End If End Sub
Private Sub Form_UnloadCancel As Integer Bln = 0
Thn = 0 CH = 0
TCH = 0 RataCH = 0
MinCH = 0 MaxCH = 0
JumRec = 0 Status =
Ket =
Universitas Sumatera Utara
St1 = St2 =
JumTrue = 0 JumFalse = 0
CHTrain = 0 CHSim = 0
RataCHH = 0 Jumm = 0
JumRec1 = 0 End Sub
Private Sub txtThn_Change If LentxtThn.Text 4 Then
Exit Sub Else
ThnJST = txtThn.Text ParamJST = ThnJST 0.005 + Bln 0.01
cboBln.Enabled = True cboBln.SetFocus
End If End Sub
Private Sub txtXA_KeyPressKeyAscii As Integer If KeyAscii = 13 Then
SendKeys {TAB} End If
End Sub
8. Module
Option Explicit Global NEpocas As Integer
Global Aprendizagem, Momento As Double Global Conhecimento As String
Global NumCamadas As Integer Global NeuroniosEntrada As Integer
Global NeuroniosOcultos As Integer Global NeuroniosSaida As Integer
Global Prepared As Boolean Global Namostras As Integer
Global NoSinapses As Integer Global NoBiasSinapses As Integer
Global Bias As Double Global ERR As Single
Input and Output Data Global dad As Double
Global NO, Target, d As Double Global NInvAR As Double
Global NInvMR As Double Global XA As Double
Global XB As Double Global Sexo As Double
Global Renda As Double Global PMI As Double
Global Escolaridade As Double Global P, Q As Layer
Global t As Synapsis Global R, S As Neuron
Global colNeurons As Collection
Universitas Sumatera Utara
Global colLayers As Collection Global colSynapsis As Collection
Global LastLayer As Long Global BuildFlag As Boolean
Global MSE, MSEOld As Double Global Partion As Integer
Global Flag1, FlagFirst As Boolean Public CN As Connection
Public tambah As Boolean Public cari As Boolean
Public ubah As Boolean Public rsCari As Recordset
Public rsUbah As Recordset Public rsSimpan As Recordset
Public rsHapus As Recordset Public X As String, Y As String
Public ParamJST As Single Public ThnJST As Single
Public Sub Koneksi Set CN = New ADODB.Connection
CN.ConnectionString = Provider=Microsoft.Jet.OLEDB.4.0;Data
Source= App.Path \dbCH.mdb;Persist Security Info=False CN.Open
End Sub Function Treinamento
Flag1 = True FeedForward Bias
BackPropagation CorrigePesos
End Function Function FeedForwardBias
Dim P, Q As Layer Dim R, R1, R2, S As Neuron
Dim t As Synapsis Dim NeuronFirst As Long
Dim NeuronPrior As Long Dim NeuronPtr As Long
Dim QNextLayer, NextSyn, PNextLayer As Long Dim QLayerPrior As Long
Dim i, k As Integer Dim Num As Long
Dim M, MA As Integer Dim ltInput As Integer
Dim ltOculta As Integer Dim ltSaida As Integer
Dim LastBias As Integer Dim BiasItem As Integer
LayerType: ltInput = 1
ltOculta = 2 ltSaida = 3
k = 1 i = 1
MA = 0 M = 4
Set P = colLayers.Item1 Set Q = colLayers.Item2
Universitas Sumatera Utara
NeuronFirst = P.NeuronFirst Do
While k MA And k = M Set t = colSynapsis.Itemk
NeuronPrior = t.NeuronPrior Set R = colNeurons.ItemCStrt.NeuronPrior
Set S = colNeurons.ItemCStrt.NeuronNext S.Value = S.Value + R.Value t.Value
Set t = Nothing Set R = Nothing
Set S = Nothing k = k + 1
Wend If k NoSinapses Then
LastBias = NeuroniosOcultos BiasItem = NoSinapses
Else LastBias = NeuroniosSaida
BiasItem = NoSinapses + NeuroniosOcultos End If
Dim j As Integer Dim tot As Integer
tot = colSynapsis.Count For j = 1 To LastBias NoBiasSinapses
Set t = colSynapsis.ItemBiasItem + j Set S = colNeurons.ItemCStrt.NeuronNext
S.Value = S.Value + t.Value S.Value = ActivationS.Value
Set t = Nothing Set S = Nothing
Next j QNextLayer = Q.LayerNext
PNextLayer = P.LayerNext Set P = Nothing
Set P = colLayers.ItemCStrPNextLayer If i 2 Then
Set Q = Nothing Set Q = colLayers.ItemCStrQNextLayer
Q.LayerType = ltSaida End If
i = i + 1 MA = 4
M = 6 Loop Until i = NumCamadas
End Function Function BackPropagation
Dim i, k, M As Integer Dim P, Q As Layer
Dim R, S As Neuron Dim t As Synapsis
Dim NeuronPtr As Long Dim PriorLayer As Long
Dim NextNeuronCount As Long Dim SinPtr As Long
Universitas Sumatera Utara
Set Q = colLayers.ItemcolLayers.Count NextNeuronCount = Q.NeuronCount
Set R = Nothing Set P = colLayers.ItemcolLayers.Count - 1
M = P.NeuronTotal + 1 While M = Q.NeuronTotal
Set R = colNeurons.ItemM R.Delta = R.Value 1 - R.Value R.Target - R.Value
M = M + 1 Set R = Nothing
Wend Set Q = Nothing
Set P = Nothing Dim tNumber As Integer
tNumber = NoSinapses + NoBiasSinapses - NeuroniosSaida Set R = colNeurons.Item6
For k = 1 To NeuroniosSaida Set t = colSynapsis.ItemtNumber + k
Set S = colNeurons.ItemNeuroniosEntrada + NeuroniosOcultos
+ k t.Grad = S.Delta
Set S = Nothing Set t = Nothing
Next k Set R = Nothing
i = 1 Set Q = colLayers.ItemcolLayers.Count
While Q.LayerPrior 0 SinPtr = Q.SynapsisFirst
Set t = colSynapsis.ItemCStrSinPtr k = t.Number
While k = NoSinapses Set R = colNeurons.ItemCStrt.NeuronPrior
Set S = colNeurons.ItemCStrt.NeuronNext R.Delta = R.Delta + t.Value S.Delta
Set t = Nothing k = k + 1
Set t = colSynapsis.Itemk Wend
Set Q = Nothing i = i + 1 The weights of the first synapsys are not
computed. T. Masters pg. 4 Recipes in C++ Set Q = colLayers.ItemcolLayers.Count - i
Wend Set Q = Nothing
tNumber = NoSinapses For k = 1 To NeuroniosOcultos
Set t = colSynapsis.ItemtNumber + k Set S = colNeurons.ItemNeuroniosEntrada + k
t.Grad = S.Delta Set S = Nothing
Set t = Nothing Next k
i = 1
Universitas Sumatera Utara
Set Q = colLayers.ItemcolLayers.Count - 1 While Q.LayerPrior 0
Set R = colNeurons.ItemCStrQ.NeuronFirst M = R.Number
While M = Q.NeuronTotal R.Delta = R.Value 1 - R.Value R.Delta
CDblNextNeuronCount Set R = Nothing
M = M + 1 Set R = colNeurons.ItemM
Wend NextNeuronCount = Q.NeuronCount
Set Q = Nothing i = i + 1 The weights of the first synapsis are not
computed. T. Masters pg. 4 Recipes in C++ Set Q = colLayers.ItemcolLayers.Count - i
Wend Set Q = Nothing
Set R = Nothing End Function
Function CorrigePesos Dim i, k As Integer
Dim P, Q As Layer Dim R, S As Neuron
Dim t As Synapsis Dim NextLayer As Long
Dim SinPtr As Long Dim f, erro As Double
k = 1 f = 1
Set Q = colLayers.Item1 SinPtr = Q.SynapsisFirst
Set t = colSynapsis.ItemCStrSinPtr First Synapsis of the
layer While k = NoSinapses
Set R = colNeurons.ItemCStrt.NeuronPrior Set S = colNeurons.ItemCStrt.NeuronNext
t.Delta = Momento t.Delta + Aprendizagem S.Delta
R.Value t.Value = t.Value + t.Delta Update the Synapses
Set t = Nothing k = k + 1
Set t = colSynapsis.Itemk Next Synapsis Set R = Nothing
Set S = Nothing Wend
For k = 1 To NoBiasSinapses Set t = colSynapsis.ItemNoSinapses + k
Set S = colNeurons.ItemCStrt.NeuronNext t.Delta = Momento t.Delta + f Aprendizagem t.Grad
t.Value = t.Value + t.Delta Update the Synapses Set t = Nothing
Set S = Nothing Next k
End Function
Universitas Sumatera Utara
Sub SetInputNumb As Integer, Value As Double Dim R As Neuron
Set R = Nothing Set R = colNeurons.ItemNumb
R.Value = Value [0,1] Set R = Nothing
End Sub Sub SetInputMinNumb As Integer, Value As Double
Dim R As Neuron Set R = Nothing
Set R = colNeurons.ItemNumb R.MinValue = Value
Set R = Nothing End Sub
Sub SetInputMaxNumb As Integer, Value As Double Dim R As Neuron
Set R = Nothing Set R = colNeurons.ItemNumb
R.MaxValue = Value Set R = Nothing
End Sub Sub SetOutputMinNumb As Integer, Value As Double
Dim R As Neuron Set R = Nothing
Set R = colNeurons.ItemNumb R.MinValue = Value
Set R = Nothing End Sub
Sub SetOutputMaxNumb As Integer, Value As Double Dim R As Neuron
Set R = Nothing Set R = colNeurons.ItemNumb
R.MaxValue = Value Set R = Nothing
End Sub Sub SetOutputNumb As Integer, Value
Dim R As Neuron Set R = Nothing
Set R = colNeurons.ItemNumb R.Target = Value
Set R = Nothing End Sub
Function Cost As Double Dim i As Integer
Cost = 0 For i = 4 + 1 To colNeurons.Count - 1
Set R = colNeurons.Itemi Cost = Cost + R.Target - R.Value R.Target - R.Value
Set R = Nothing Next i
Cost = ERR Cost End Function
Universitas Sumatera Utara
Function ActivationValue As Double Activation = 1 1 + Exp-Value
End Function Function Clear
Dim k As Integer Dim t As Synapsis
Randomize k = 0
While k colSynapsis.Count k = k + 1
Set t = colSynapsis.Itemk If Flag1 Then Initializes only before trainning.
t.Value = 1000 Rnd 1000 - ERR 0.5 [-0.5, 0.5] End If
Set t = Nothing Wend
For k = 9 To colNeurons.Count Set R = colNeurons.Itemk
R.Value = 0 R.Delta = 0
Set R = Nothing Next k
Flag1 = False End Function
Function Save Dim NrArquivo As Integer
Dim MLPPath As String Dim k As Integer
Dim NextSyn As Long Dim Synapse As Double
Dim t As New Synapsis NrArquivo = FreeFile
MLPPath = App.Path IIfRightApp.Path, 1 \, \, Open MLPPath Conhecimento.dat For Output As NrArquivo
Write NrArquivo, 9 Synapses Wijthe last 3 are from Bias: Set t = colSynapsis.Item1
k = 1 While k 9
Write NrArquivo, t.Number, t.Value, t.Delta,
t.NeuronPrior, t.NeuronNext, t.SynapsisNext, t.Grad Next synapse:
NextSyn = t.SynapsisNext Set t = Nothing
k = k + 1 Set t = colSynapsis.Itemk
Wend Set t = colSynapsis.Item9
Write NrArquivo, t.Number, t.Value, t.Delta, t.NeuronPrior,
t.NeuronNext, t.SynapsisNext, t.Grad Set t = Nothing
Close NrArquivo End Function
Function Load Dim ArqConhecimento As String
Dim NrArquivo As Integer
Universitas Sumatera Utara
Dim MLPPath, qq As String Dim k, Number As Integer
Dim TotalSinapses As Integer Dim Value, Delta, Grad As Double
Dim NeuronPrior, NeuronNext, SynapsisNext As Long Dim t As Synapsis
TotalSinapses = colSynapsis.Count ArqConhecimento = Conhecimento
NrArquivo = FreeFile MLPPath = App.Path IIfRightApp.Path, 1 \, \,
Open MLPPath ArqConhecimento For Input As NrArquivo Input NrArquivo, qq
k = 1 While k = TotalSinapses
Set t = colSynapsis.Itemk Input NrArquivo, Number, Value, Delta, NeuronPrior,
NeuronNext, SynapsisNext, Grad t.Number = Number
t.Value = Value t.Delta = Delta
t.Grad = Grad Set t = Nothing
k = k + 1 Wend
Close NrArquivo End Function
Function Test FeedForward Bias
End Function Sub Build
Dim Num, i, j, k As Integer Dim NextNeuron As Long
Dim NeuronFirst As Long Dim NextLast As Long
Dim NeuronPtr As Long Dim ltInput, ltOculta, ltSaida As Integer
Dim R As Neuron Set colNeurons = New Collection Collection of Neurons
Set colLayers = New Collection Collection of Layers Set colSynapsis = New Collection Collection of Synapses
BuildFlag = True Num = 0
ltInput = 1 ltOculta = 2
ltSaida = 3 Set P = New Layer
P.Number = 1 P.LayerType = ltInput
P.LayerPrior = 0 P.NeuronCount = NeuroniosEntrada
colLayers.Add P, CStrObjPtrP Do
Set R = Nothing Set R = New Neuron
R.Number = Num + 1 R.Value = 0
R.Delta = 0 R.Target = 0
Universitas Sumatera Utara
R.MaxValue = 0 R.MinValue = 0
Num = R.Number Loop Until Num NeuroniosEntrada
Dim M As Integer For M = 1 To P.NeuronCount - 1
Set R = colNeurons.ItemM If M = 1 Then NeuronFirst = ObjPtrR
Set S = colNeurons.ItemM + 1 R.NeuronNext = ObjPtrS
Set R = Nothing Set S = Nothing
Next M Set R = colNeurons.ItemNeuroniosEntrada
R.NeuronNext = 0 Set R = Nothing
NextLast = P.NeuronCount P.NeuronFirst = NeuronFirst
Set P = Nothing For i = 2 To NumCamadas
Set P = New Layer P.Number = i
If i = NumCamadas Then P.NeuronCount = NeuroniosSaida
P.LayerType = ltSaida Else
P.NeuronCount = NeuroniosOcultos P.LayerType = ltOculta
End If colLayers.Add P, CStrObjPtrP
Dim Q As Layer Set Q = colLayers.Itemi - 1
Q.LayerNext = ObjPtrP P.LayerPrior = ObjPtrQ
Set Q = Nothin For j = NextLast + 1 To NextLast + P.NeuronCount
Set R = New Neuron R.Number = j
R.Value = 0 R.Delta = 1
colNeurons.Add R, CStrObjPtrR Set R = Nothing Next j
For M = NextLast + 1 To NextLast + P.NeuronCount - 1 Set R = colNeurons.ItemM
If M = NextLast + 1 Then NeuronFirst = ObjPtrR Set S = colNeurons.ItemM + 1 NextNeuron + 1
R.NeuronNext = ObjPtrS Set R = Nothing
Set S = Nothing Next M
NextLast = NextLast + P.NeuronCount Set R = colNeurons.ItemNextLast
R.Number = NextLast R.NeuronNext = 0
Set R = Nothing P.NeuronTotal = NextLast
P.NeuronFirst = NeuronFirst Set P = Nothing
Universitas Sumatera Utara
Next i Set R = colNeurons.Item6
R.Number = NextLast + 1 R.Value = Bias Activation = -1.
R.NeuronNext = 0 R.MaxValue = 1
R.MinValue = 0 colNeurons.Add 6
Set P = colLayers.ItemNumCamadas P.LayerNext = 0
LastLayer = ObjPtrP Saves the pointer to the last layer. Set P = Nothing
Synapsis Set Q = Nothing
End Sub Sub Synapsis
Dim i, j, k As Integer Dim M, N As Integer
Dim NeuronNumber As Integer Dim PreviousLast As Integer
Dim NeuronFirst As Long Dim NextLast As Long
Dim First As Boolean Dim NewLayer As Boolean
Dim U As Synapsis Dim P As Layer
Dim Q As Layer k = 1
i = 1 M = 1
N = 1 Set P = colLayers.Item1
Set Q = colLayers.Item2 PreviousLast = 1
NeuronNumber = Q.NeuronCount NextLast = Q.NeuronCount + 1
First = True NewLayer = True
Do While M = Q.NeuronCount
Set S = colNeurons.ItemNeuronNumber + M S.Number = NeuronNumber + M
While N = NeuronNumber P.NeuronCount Set t = New Synapsis
If NewLayer Then Q.SynapsisFirst = ObjPtrt
NewLayer = False End If
If Not First Then U.SynapsisNext = ObjPtrt
Set U = Nothing Else
P.SynapsisFirst = ObjPtrt Q.SynapsisFirst = ObjPtrt
First = False End If
Set R = colNeurons.ItemN t.Number = k
t.Value = 1000 Rnd 1000 - ERR
Universitas Sumatera Utara
t.Delta = 0 t.NeuronPrior = ObjPtrR
t.NeuronNext = ObjPtrS colSynapsis.Add t, CStrObjPtrt
Set R = Nothing Set U = colSynapsis.ItemCStrObjPtrt
Set t = Nothing k = k + 1
N = N + 1 Wend
Set R = Nothing N = PreviousLast
Set R = colNeurons.ItemN Set S = Nothing
M = M + 1 Wend
NeuronNumber = NeuronNumber + Q.NeuronCount PreviousLast = P.NeuronCount + 1
N = PreviousLast NextLast = NextLast + P.NeuronCount
Set R = Nothing Set P = Nothing
Set Q = Nothing M = 1
i = i + 1 Set P = colLayers.Itemi
If i NumCamadas Then Set Q = colLayers.Itemi + 1
NewLayer = True End If
Loop Until P.LayerNext = 0 NoSinapses = k - 1
Set R = Nothing Set S = Nothing
Set P = Nothing Set t = Nothing
NoBiasSinapses = NeuroniosOcultos + NeuroniosSaida Set R = colNeurons.Item6
For k = 1 To NoBiasSinapses Set U = New Synapsis
Set t = New Synapsis Set S = colNeurons.ItemNeuroniosEntrada + k
t.Number = k + NoSinapses t.Value = 1000 Rnd 1000 - ERR 0.5
t.Delta = 0 t.NeuronPrior = ObjPtrR
t.NeuronNext = ObjPtrS If k 1 Then U.SynapsisNext = ObjPtrt
colSynapsis.Add t, CStrObjPtrt Set U = Nothing
Set U = colSynapsis.ItemCStrObjPtrt Set t = Nothing
Set U = Nothing Set S = Nothing
Next k Set R = Nothing
Prepared = True End Sub
Universitas Sumatera Utara
LAMPIRAN-B HASIL PERCOBAAN
a. Tahun 1997 1.