• Tidak ada hasil yang ditemukan

Analisis Perbandingan Backpropagation Dengan Learning Vector Quantization (LVQ) Untuk Memprediksi Curah Hujan Di Kota Medan

N/A
N/A
Protected

Academic year: 2019

Membagikan "Analisis Perbandingan Backpropagation Dengan Learning Vector Quantization (LVQ) Untuk Memprediksi Curah Hujan Di Kota Medan"

Copied!
63
0
0

Teks penuh

(1)

LAMPIRAN

DAFTAR PUBLIKASI

ILMIAH PENULIS (TESIS)

o

Judul Artikel

Penulis

Publikasi

(Seminar /

Jurnal)

Wakt

u Publikasi

T

(2)

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_Unload(Cancel 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 = Val(ParamNEpocas.Text) NumCamadas = Val(ParamCamadas.Text)

(3)

NeuroniosOcultos = Val(ParamOcultos.Text) NeuroniosSaida = Val(ParamSaida.Text)

Aprendizagem = Val(ParamAprendizagem.Text) / 100 Momento = Val(ParamMomento.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_KeyPress(KeyAscii 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_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then

SendKeys "{TAB}" End If

End Sub

Private Sub ParamNEpocas_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then

SendKeys "{TAB}" End If

End Sub

Private Sub ParamNeuronios_Change() If KeyAscii = 13 Then

SendKeys "{TAB}" End If

(4)

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(, , rsCari!Thn) j.SubItems(1) = rsCari!Bln

j.SubItems(2) = rsCari!CH 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

(5)

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

(6)

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 = MsgBox("Data mau disimpan ?", vbYesNo) If X = vbYes Then

Set rsSimpan = New ADODB.Recordset rsSimpan.Open "CH", CN, 1, 2 rsSimpan.AddNew

rsSimpan!Thn = txtThn.Text rsSimpan!Bln = Bln

rsSimpan!CH = txtCH.Text rsSimpan.Update

Set rsSimpan = Nothing Call Segar

Y = MsgBox("Ada 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

(7)

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 = Val(lv1.ListItems.Item(lv1.SelectedItem.Index).Text) Bln = lv1.ListItems.Item(lv1.SelectedItem.Index).SubItems(1) CH = lv1.ListItems.Item(lv1.SelectedItem.Index).SubItems(2)

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

(8)

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_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then

If tambah = True Then

cmdSimpan.Enabled = True cmdSimpan.SetFocus

End If End If

If Not (KeyAscii >= Asc("0") And KeyAscii <= Asc("9") 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 Len(txtThn.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(, , rsCari!Thn) j.SubItems(1) = rsCari!Bln

j.SubItems(2) = rsCari!CH rsCari.MoveNext

If rsCari.EOF Then Exit Do

End If Loop End If

Set rsCari = Nothing End Sub

(9)

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

(10)

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 = MsgBox("Data mau disimpan ?", vbYesNo) If X = vbYes Then

Set rsSimpan = New ADODB.Recordset rsSimpan.Open "CH", CN, 1, 2 rsSimpan.AddNew

rsSimpan!Thn = txtThn.Text rsSimpan!Bln = Bln

rsSimpan!CH = txtCH.Text rsSimpan.Update

Set rsSimpan = Nothing Call Segar

(11)

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

(12)

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 = Val(lv1.ListItems.Item(lv1.SelectedItem.Index).Text) Bln = lv1.ListItems.Item(lv1.SelectedItem.Index).SubItems(1) CH = lv1.ListItems.Item(lv1.SelectedItem.Index).SubItems(2)

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_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then

If tambah = True Then

cmdSimpan.Enabled = True cmdSimpan.SetFocus

End If End If

If Not (KeyAscii >= Asc("0") And KeyAscii <= Asc("9") Or KeyAscii = vbKeyBack Or KeyAscii = Asc(".") Or KeyAscii = 13) Then

Beep

MsgBox "Isi dengan angka 0-9" KeyAscii = 0

(13)

Private Sub txtThn_Change() If Len(txtThn.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, dad(1, ID) MLP.SetInput 2, dad(2, ID) MLP.SetInput 6, Bias

Set R = Nothing

Set R = colNeurons.Item(5)

If dad(3, ID) < ERR Then '0.5 Then R.Target = ERR '0.1

Else

R.Target = 0.9 End If

(14)

MLP.Treinamento erro = MLP.Cost DoEvents

errodaepoca = errodaepoca + erro

Wend

MSE = errodaepoca / Namostras StatusBar1.Caption = Str(Ep) StatusBar2.Caption = Str(MSE)

StatusBar3.Text = Str(Aprendizagem)

Label2.Caption = " Epoch: MSE : " DoEvents

Totalcost = Totalcost + MSE errodaepoca = 0

tempm = Timer

msec = Int(tempm - tempi)

Label1.Caption = " Waktu: " & msec & " detik" DoEvents

Set rsSimpan = New ADODB.Recordset rsSimpan.Open "Error", CN, 1, 2 rsSimpan.AddNew

rsSimpan!Epoch = Ep

rsSimpan!MSE = Str(MSE - 0.00000123) rsSimpan!GMSE = 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 = rsCari!CH 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

rsSimpan!MaxCH = MaxCH rsSimpan!MinCH = MinCH rsSimpan.Update

(15)

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 = rsCari!CH

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: " & rsCari!Thn & " Bln: " & rsCari!Bln & " Curah Hujan: " & rsCari!CH

Set rsSimpan = New ADODB.Recordset rsSimpan.Open "CH_Train", CN, 1, 2 rsSimpan.AddNew

rsSimpan!Thn = rsCari!Thn rsSimpan!Bln = rsCari!Bln rsSimpan!CH = rsCari!CH rsSimpan!Ket = 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 = Str(Ep - 1) StatusBar3.Text = Str(MSE)

DoEvents

Label4 = "Global MSE" tempf = Timer

msec = Int(tempf - 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

(16)

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 dad(9, 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 Load2(dad)

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

(17)

Open MLPPath & "DataCH.txt" For Input As #NrArquivo Input #NrArquivo, qq

ID = 1

While ID <= 12

Input #NrArquivo, ID, D1, D2, D3 dad(1, ID) = D1

dad(2, ID) = D2 dad(3, ID) = D3

List1.AddItem D1 & " " & D2 & " " & D3 ID = ID + 1

Wend

Close #NrArquivo End Sub

Private Sub Form_Unload(Cancel 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

(18)

ElseIf cboBln.Text = "Desember" Then Bln = 12

End If

Set rsCari = New ADODB.Recordset

rsCari.Open "Select * from CH_Sim where Thn=" & Val(txtThn.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 = rsCari!CH 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 & " s/d " & 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 : " & rsCari!MinCH & " mm " & " Batas Atas " & rsCari!MaxCH & " mm "

MinCH = rsCari!MinCH MaxCH = rsCari!MaxCH 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

(19)

CH = rsCari!CH

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

rsSimpan!Thn = rsCari!Thn rsSimpan!Bln = rsCari!Bln rsSimpan!CH = rsCari!CH rsSimpan!Ket = 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 = CDbl(txtXA.Text) XB = CDbl(txtXB.Text) MLP.SetInput 1, XA MLP.SetInput 2, XB

MLP.SetInput 6, Bias 'Bias MLP.Test

Set R = colNeurons.Item(5) 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

(20)

If Not rsSim.EOF Then Do While Not rsSim.EOF St1 = rsSim!Ket

CHSim = CHSim + rsSim!CH 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 = rsTrain!Ket If St1 = St2 Then Status = "True"

JumTrue = JumTrue + 1 Else

Status = "False"

JumFalse = JumFalse + 1 End If

List1.AddItem rsSim!Thn & " " & rsSim!Bln & " " & " " & rsSim!CH & " " & 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 = rsSim!CH 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

(21)

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_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then

SendKeys "{TAB}" End If

End Sub

(22)

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 Len(txtThn.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_KeyPress(KeyAscii 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

(23)

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=" & Val(txtThn.Text) & " And Bln = " & Bln & "", CN, adOpenDynamic, adLockOptimistic

If Not rsCari.EOF = True Then

(24)

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 = rsCari!CH 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 : " & rsCari!MinCH & " mm " & " Batas Bawah " & rsCari!MaxCH & " mm "

MinCH = rsCari!MinCH MaxCH = rsCari!MaxCH 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 = rsCari!CH

If CH < MinCH Then Ket = "B"

ElseIf CH > MinCH Then If CH < MaxCH Then Ket = "N" Else

Ket = "A" End If

End If

(25)

rsSimpan.Open "CH_Sim", CN, 1, 2 rsSimpan.AddNew

rsSimpan!Thn = rsCari!Thn rsSimpan!Bln = rsCari!Bln rsSimpan!CH = rsCari!CH rsSimpan!Ket = 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 = CDbl(txtXA.Text) XB = CDbl(txtXB.Text) MLP.SetInput 1, XA MLP.SetInput 2, XB

MLP.SetInput 6, Bias 'Bias MLP.Test

Set R = colNeurons.Item(5) 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 = rsSim!Ket Jumm = Jumm + 1

CHSim = CHSim + rsSim!CH

Set rsTrain = New ADODB.Recordset

rsTrain.Open "Select * from CH_Train where Bln=" & Bln & "", CN, 1, 2

If Not rsTrain.EOF Then St2 = rsTrain!Ket If St1 = St2 Then Status = "True"

(26)

Else

Status = "False"

JumFalse = JumFalse + 1 End If

Else

Status = "False" End If

List1.AddItem rsSim!Thn & " " & rsSim!Bln & " " & " " & rsSim!CH & " " & 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 = rsSim!CH 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

(27)

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_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then

SendKeys "{TAB}" End If

End Sub

Private Sub Form_Unload(Cancel As Integer) Bln = 0

(28)

St1 = "" St2 = "" JumTrue = 0 JumFalse = 0 CHTrain = 0 CHSim = 0 RataCHH = 0 Jumm = 0 JumRec1 = 0 End Sub

Private Sub txtThn_Change() If Len(txtThn.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_KeyPress(KeyAscii 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

(29)

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 FeedForward(Bias) 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

(30)

NeuronFirst = P.NeuronFirst Do

While (k > MA And k <= M)

Set t = colSynapsis.Item(k) NeuronPrior = t.NeuronPrior

Set R = colNeurons.Item(CStr(t.NeuronPrior)) Set S = colNeurons.Item(CStr(t.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.Item(BiasItem + j) Set S = colNeurons.Item(CStr(t.NeuronNext)) S.Value = S.Value + t.Value

S.Value = Activation(S.Value) Set t = Nothing

Set S = Nothing Next j

QNextLayer = Q.LayerNext PNextLayer = P.LayerNext Set P = Nothing

Set P = colLayers.Item(CStr(PNextLayer)) If i < 2 Then

Set Q = Nothing

Set Q = colLayers.Item(CStr(QNextLayer)) Q.LayerType = ltSaida

End If i = i + 1 MA = 4 M = 6

Loop Until i = NumCamadas End Function

(31)

Set Q = colLayers.Item(colLayers.Count) NextNeuronCount = Q.NeuronCount Set R = Nothing

Set P = colLayers.Item(colLayers.Count - 1) M = P.NeuronTotal + 1

While M <= Q.NeuronTotal

Set R = colNeurons.Item(M)

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.Item(6)

For k = 1 To NeuroniosSaida

Set t = colSynapsis.Item(tNumber + k)

Set S = colNeurons.Item(NeuroniosEntrada + NeuroniosOcultos + k)

t.Grad = S.Delta Set S = Nothing Set t = Nothing Next k

Set R = Nothing i = 1

Set Q = colLayers.Item(colLayers.Count) While Q.LayerPrior <> 0

SinPtr = Q.SynapsisFirst

Set t = colSynapsis.Item(CStr(SinPtr)) k = t.Number

While k <= NoSinapses

Set R = colNeurons.Item(CStr(t.NeuronPrior)) Set S = colNeurons.Item(CStr(t.NeuronNext)) R.Delta = R.Delta + t.Value * S.Delta

Set t = Nothing k = k + 1

Set t = colSynapsis.Item(k) 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.Item((colLayers.Count - i)) Wend

Set Q = Nothing tNumber = NoSinapses

For k = 1 To NeuroniosOcultos

Set t = colSynapsis.Item(tNumber + k)

Set S = colNeurons.Item(NeuroniosEntrada + k) t.Grad = S.Delta

Set S = Nothing Set t = Nothing Next k

(32)

Set Q = colLayers.Item((colLayers.Count - 1)) While Q.LayerPrior <> 0

Set R = colNeurons.Item(CStr(Q.NeuronFirst)) M = R.Number

While M <= Q.NeuronTotal

R.Delta = R.Value * (1 - R.Value) * R.Delta / CDbl(NextNeuronCount)

Set R = Nothing M = M + 1

Set R = colNeurons.Item(M) 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.Item((colLayers.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.Item(1) SinPtr = Q.SynapsisFirst

Set t = colSynapsis.Item(CStr(SinPtr)) 'First Synapsis of the layer

While k <= NoSinapses

Set R = colNeurons.Item(CStr(t.NeuronPrior)) Set S = colNeurons.Item(CStr(t.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.Item(k) 'Next Synapsis Set R = Nothing

Set S = Nothing Wend

For k = 1 To NoBiasSinapses

Set t = colSynapsis.Item(NoSinapses + k) Set S = colNeurons.Item(CStr(t.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

(33)

Sub SetInput(Numb As Integer, Value As Double) Dim R As Neuron

Set R = Nothing

Set R = colNeurons.Item(Numb) R.Value = Value '[0,1] Set R = Nothing

End Sub

Sub SetInputMin(Numb As Integer, Value As Double) Dim R As Neuron

Set R = Nothing

Set R = colNeurons.Item(Numb) R.MinValue = Value

Set R = Nothing End Sub

Sub SetInputMax(Numb As Integer, Value As Double) Dim R As Neuron

Set R = Nothing

Set R = colNeurons.Item(Numb) R.MaxValue = Value

Set R = Nothing End Sub

Sub SetOutputMin(Numb As Integer, Value As Double) Dim R As Neuron

Set R = Nothing

Set R = colNeurons.Item(Numb) R.MinValue = Value

Set R = Nothing End Sub

Sub SetOutputMax(Numb As Integer, Value As Double) Dim R As Neuron

Set R = Nothing

Set R = colNeurons.Item(Numb) R.MaxValue = Value

Set R = Nothing End Sub

Sub SetOutput(Numb As Integer, Value) Dim R As Neuron

Set R = Nothing

Set R = colNeurons.Item(Numb) 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.Item(i)

Cost = Cost + (R.Target - R.Value) * (R.Target - R.Value) Set R = Nothing

Next i

(34)

Function Activation(Value) 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.Item(k)

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.Item(k) 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 & IIf(Right$(App.Path, 1) <> "\", "\", "") Open MLPPath & "Conhecimento.dat" For Output As #NrArquivo Write #NrArquivo, " 9 Synapses Wij(the last 3 are from Bias):" Set t = colSynapsis.Item(1)

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.Item(k) Wend

Set t = colSynapsis.Item(9)

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

(35)

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 & IIf(Right$(App.Path, 1) <> "\", "\", "") Open MLPPath & ArqConhecimento For Input As #NrArquivo

Input #NrArquivo, qq k = 1

While k <= TotalSinapses

Set t = colSynapsis.Item(k)

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, CStr(ObjPtr(P)) Do

(36)

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.Item(M)

If M = 1 Then NeuronFirst = ObjPtr(R) Set S = colNeurons.Item(M + 1)

R.NeuronNext = ObjPtr(S) Set R = Nothing

Set S = Nothing Next M

Set R = colNeurons.Item(NeuroniosEntrada) 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, CStr(ObjPtr(P)) Dim Q As Layer

Set Q = colLayers.Item(i - 1) Q.LayerNext = ObjPtr(P)

P.LayerPrior = ObjPtr(Q) 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, CStr(ObjPtr(R Set R = Nothing Next j

For M = (NextLast + 1) To (NextLast + P.NeuronCount - 1) Set R = colNeurons.Item(M)

If (M = NextLast + 1) Then NeuronFirst = ObjPtr(R) Set S = colNeurons.Item(M + 1) 'NextNeuron + 1 R.NeuronNext = ObjPtr(S)

Set R = Nothing Set S = Nothing Next M

NextLast = NextLast + P.NeuronCount Set R = colNeurons.Item(NextLast) R.Number = NextLast

R.NeuronNext = 0 Set R = Nothing

(37)

Next i

Set R = colNeurons.Item(6) R.Number = NextLast + 1

R.Value = Bias 'Activation = -1. R.NeuronNext = 0

R.MaxValue = 1# R.MinValue = 0# colNeurons.Add (6)

Set P = colLayers.Item(NumCamadas) P.LayerNext = 0

LastLayer = ObjPtr(P) '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.Item(1) Set Q = colLayers.Item(2) PreviousLast = 1 NeuronNumber = Q.NeuronCount NextLast = Q.NeuronCount + 1 First = True

NewLayer = True Do

While M <= Q.NeuronCount

Set S = colNeurons.Item(NeuronNumber + M) S.Number = NeuronNumber + M

While N <= NeuronNumber 'P.NeuronCount Set t = New Synapsis

If NewLayer Then

Q.SynapsisFirst = ObjPtr(t) NewLayer = False

End If

If Not First Then

U.SynapsisNext = ObjPtr(t) Set U = Nothing

Else

P.SynapsisFirst = ObjPtr(t) Q.SynapsisFirst = ObjPtr(t) First = False

End If

Set R = colNeurons.Item(N) t.Number = k

(38)

t.Delta = 0#

t.NeuronPrior = ObjPtr(R) t.NeuronNext = ObjPtr(S)

colSynapsis.Add t, CStr(ObjPtr(t)) Set R = Nothing

Set U = colSynapsis.Item(CStr(ObjPtr(t))) Set t = Nothing

k = k + 1 N = N + 1

Wend

Set R = Nothing N = PreviousLast

Set R = colNeurons.Item(N) 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.Item(i) If i < NumCamadas Then

Set Q = colLayers.Item(i + 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.Item(6)

For k = 1 To NoBiasSinapses Set U = New Synapsis Set t = New Synapsis

Set S = colNeurons.Item(NeuroniosEntrada + k) t.Number = k + NoSinapses

t.Value = (1000# * Rnd) / 1000# - ERR '0.5 t.Delta = 0#

t.NeuronPrior = ObjPtr(R) t.NeuronNext = ObjPtr(S)

If k > 1 Then U.SynapsisNext = ObjPtr(t) colSynapsis.Add t, CStr(ObjPtr(t))

Set U = Nothing

Set U = colSynapsis.Item(CStr(ObjPtr(t))) Set t = Nothing

Set U = Nothing Set S = Nothing Next k

(39)

LAMPIRAN-B

HASIL PERCOBAAN

a.

Tahun 1997

1.

Epoch : 40

1.1

Error

: 0.1

MSE Terbaik BP

: 0.1000482, Epoch Ke 40

MSE Terbaik LVQ

: 0.100047, Epoch Ke 40

Tabel 1. Hasil Persentase Prediksi Epoch: 40 Error: 0.1

ulan 0 1 2

P 8.79 8.79 8.79 8.79 0.13 6.77 7.82 1.86 3.59 3.97 8.15 5.83

VQ 9.71 6.44 4.2 9.71 6.34 0.73 1.05 7.09 9.61 0.96 6.24 4.28

Tabel 2. Hasil Prediksi Curah Hujan Epoch: 40 Error: 0.1

P 4.02 76.67 5.73 50.69 5.71 05.06 93.72 6.36 01.33 98.38 39.81 4.17

VQ 7.01 49.19 8.47 93.07 4 4.12 53.81 9.26 65.13 65.53 00.6 8.74

bs 5 79 7 54 7 27 31 7 54 49 27 33

P 4.02 76.67 5.73 50.69 5.71 05.06 93.72 6.36 01.33 98.38 39.81 4.17

1.2

Error

: 0.01

MSE Terbaik BP

: 0.01000197, Epoch Ke 40

MSE Terbaik LVQ

: 0.009999335, Epoch Ke 40

Tabel 3. Hasil Persentase Prediksi Epoch: 40 Error: 0.01

ulan 3 0 1 2

P 8.79 8.79

9

8.79 8.79 0.13 6.77 7.82 1.86 3.59 3.97 8.15 5.83

VQ 9.71 6.44

7

4.2 9.71 6.34 0.73 1.05 7.09 9.61 0.96 6.24 4.28

Tabel 4. Hasil Prediksi Curah Hujan Epoch: 40 Error: 0.01

ulan 3 0 1 2

P 4.09 76.83

9

5.82 50.92 2.36 7.5 79.96 3.77 86.94 84.19 22.87 7.56

VQ 2.28 36.84

7

1.97 77.07 1.18 7.13 41.04 6.83 51.42 51.79 83.93 2.19

eal 5 79

9

7 54 7 27 31 7 54 49 27 33

1.3

Error : 0.001

(40)

Tabel 5. Hasil Persentase Prediksi Epoch: 40 Error: 0.001

ulan 0

1

2

P 7.79 8.79 8.79 9.26 9.41 6.18 7.21 1.31 3.03 3.4

7.63

5.33

VQ 9.08 5.75 3.53 9.08 5.74 0.18 0.5 6.57 9.07 0.4

5.73

3.79

Tabel 6. Hasil Prediksi Curah Hujan Epoch: 40 Error: 0.001

ulan 3 0 1 2

P 79.85 5.83

2

52.18 2.02 6.75 78.36 3.51 85.5 85.5 82.77 21.18 6.9

VQ 1.81 35.6

7

1.32 75.47 0.9 6.43 39.76 6.58 50.05 50.42 82.26 1.54

bs 5 79

9

7 54 7 27 31 7 54 49 27 33

2.

Epoch: 400

2.1

Error: 0.1

MSE Terbaik BP

: 0.1000352, Epoch Ke 400

MSE Terbaik LVQ

: 0.10003, Epoch Ke 400

Tabel 7. Hasil Persentase Prediksi Epoch: 400 Error: 0.1

ulan 0 1 2

P 4.02 76.67 5.73 50.69 5.71 05.06 93.72 6.36 01.33 98.38 39.81 4.17

VQ 7.01 49.19 8.47 93.07 6 4.12 53.81 9.26 65.13 65.53 00.6 8.74

Tabel 8. Hasil Prediksi Curah Hujan Epoch: 400 Error: 0.1

ulan 2 0 1 2

P 4.02 76.67 5.73 50.69 5.71 05.06 93.72 6.36 01.33 98.38 39.81 4.17

VQ 7.01 49.19 8.47 93.07 6 4.12 53.81 9.26 65.13 65.53 00.6 8.74

eal 5 79 7 54 7 27 31 7 54 49 27 33

2.2

Error: 0.01

MSE Terbaik BP

: 0.001001354, Epoch Ke 400

MSE Terbaik LVQ

: 0.00099998, Epoch Ke 400

Tabel 9. Hasil Persentase Prediksi Epoch: 400 Error: 0.01

ulan

1

0 1 2

P 4.09 76.83 5.82 50.92 2.36 7.5 79.76 3.77 86.94

1

(41)

VQ 2.28 36.84 1.97 77.07 1.18 7.13 41.04 6.83 51.42

1

51.79 83.83 2.19

Tabel 10. Hasil Prediksi Curah Hujan Epoch: 400 Error: 0.01

ulan 0 1 2

P 4.09 76.83 5.82 50.92 2.36 7.5 79.76 3.77 86.94 84.19 22.87 7.56

VQ 2.28 36.84 1.97 77.07 1.18 7.13 41.04 6.83 51.42 51.79 83.83 2.19

eal 5 79 7 54 7 27 31 7 54 49 27 33

2.3

Error: 0.001

MSE Terbaik BP

: 0.0001001478, Epoch Ke 400

MSE Terbaik LVQ

: 0.000099884, Epoch Ke 400

Tabel 11. Hasil Persentase Prediksi Epoch: 400 Error: 0.001

ulan 3 4 0 1 2

P 4.09 76.85

9 5.83

2

52.12 2.02 6.75 78.36 3.51 85.5 82.77 21.18 6.9

VQ 1.81 35.8

7

1.32 75.47 0.9 6.43 39.76 6.58 50.05 50.42 82.26 1.54

Tabel 12. Hasil Prediksi Curah Hujan Epoch: 400 Error: 0.001

ulan 0 1 2

P 4.09 76.85 5.83 52.12 2.02 6.75 78.36 3.51 85.5 82.77 21.18 6.9

VQ 1.81 35.8 1.32 75.47 0.9 6.43 39.76 6.58 50.05 50.42 82.26 1.54

eal 5 79 7 54 7 27 31 7 54 49 27 33

3.

Epoch: 4000

3.1

Error: 0.1

MSE Terbaik BP

: 0.1000008, Epoch Ke 4000

MSE Terbaik LVQ

: 0.0099999, Epoch Ke 4000

Tabel 13 Hasil Persentase Prediksi Epoch: 4000 Error: 0.1

ln 0 1 2

P 8.7 8.7 8.7 8.7 7.27 2.72 3.86 7.38 9.26 9.66 3.33 0.81

VQ 6.01 3.34 0.9 6.01 2.34 6.23 6.58 2.26 5.01 6.48 1.34 9.2

Tabel 14 Prediksi Curah Hujan Epoch: 4000 Error: 0.1

ulan 0 1

2

P 4.02 76.67 5.73 50.69 5.71 05.06 93.72 6.36 01.33 98.38 39.81

4.17

(42)

8.74

eal 5 79 7 54 7 27 31 7 54 49 27

33

3.2

Error: 0.01

MSE Terbaik BP

: 0.001000055, Epoch Ke 4000

MSE Terbaik LVQ

: 0.000999884, Epoch Ke 4000

Tabel 15. Hasil Persentase Prediksi Epoch: 4000 Error: 0.01

ulan 0 1 2

P 8.79 8.79 8.79 8.79 0.13 6.77 7.82 1.86 3.59 3.97 8.15 5.83

VQ 9.71 6.44 4.2 9.71 0.73 2.3 1.05 7.09 9.61 0.96 6.24 4.28

Tabel 16. Prediksi Curah Hujan Epoch: 4000 Error: 0.01

ulan 2 9 0 1 2

P 4.09

1

76.83 5.82 50.92 2.36 7.5 79.76 3.77

1

86.94 84.19 22.87 7.56

VQ 2.28

1

35.84 1.97 77.07 1.18 7.13 41.04 6.83

1

51.42 51.79 83.93 2.19

eal 5

1

79 7 54 7 27 31 7

2

54 49 27 33

3.3

Error: 0.001

MSE Terbaik BP

: 0.000100065, Epoch Ke 4000

MSE Terbaik LVQ

: 0.00009998774, Epoch Ke 3965

Tabel 17. Hasil Persentase Prediksi Epoch: 4000 Error: 0.001

ulan 0 1 2

P 8.79 8.79 8.79 9.26 9.41 6.18 7.21 1.31 3.03 3.4 7.63 5.33

VQ 9.08 5.75 3.53 9.08 5.74 0.18 0.5 6.57 9.07 0.4 4.73 3.81

Tabel 18. Prediksi Curah Hujan Epoch: 4000 Error: 0.001

ulan 0 1 2

P 4.099 76.85 5.83 52.12 2.02 6.75 78.36 3.51 85.5 82.77 21.18 6.9

VQ 1.81 35.6 1.32 75.47 0.9 6.43 39.76 6.58 50.05 50.42 82.26 1.54

4.

Epoch: 100

4.1

Error: 0.1

MSE Terbaik BP

: 0.1000458165, Epoch Ke 100

MSE Terbaik LVQ

: 0.10019176, Epoch Ke 100

Tabel 19. Hasil Persentase Prediksi Epoch: 100 Error: 0.1

(43)

P 7.9 7.9 7.9 7.9 7.27 2.72 3.86 7.38 9.26 9.62 3.33 0.81

VQ 6.01 3.34 0.9 6.01 2.34 6.23 6.58 2.26 5.01 6.48 1.34 9.2

Tabel 20. Prediksi Curah Hujan Epoch: 100 Error: 0.1

ulan 0 1 2

P 4.02 76.67 5.73 50.69 5.71 05.06 93.72 6.36 01.33 98.38 39.81 4.17

VQ 7.01 49.19 8.47 93.07 4 4.12 53.81 9.26 65.13 65.53 00.6 8.74

4.2

Error: 0.01

MSE Terbaik BP

: 0.001595 , Epoch Ke 100

MSE Terbaik LVQ

: 0.001000054, Epoch Ke 100

Tabel 21. Hasil Persentase Prediksi Epoch: 100 Error: 0.01

ulan 0 1 2

P 8.79 8.79 8.79 8.79 0.13 8.78 9.44 3.97 5.31 5.5 0.04 7.75

VQ 9.71 6.44 4.2 9.71 6.34 0.73 1.05 7.09 9.61 0.96 6.24 4.28

Tabel 22. Prediksi Curah Hujan Epoch: 100 Error: 0.01

ulan 0 1 2

P 4.09 76.83 5.82 50.92 2.36 7.5 79.76 3.77 86.94 84.19 22.87 7.56

VQ 2.28 36.84 1.97 77.07 1.18 7.13 41.04 6.83 51.42 51.79 83.93 2.19

eal 5 79 7 54 7 27 31 7 54 49 27 33

4.3

Error: 0.001

MSE Terbaik BP

: 0.001000022, Epoch Ke 100

MSE Terbaik LVQ

: 0.000999, Epoch Ke 100

Tabel 23. Hasil Persentase Prediksi Epoch: 100 Error: 0.001

ulan 0 1 2

P 9.94 2.17 3.9 4.65 3.28 9.94 0.61 8.67 9.49 9.8 7.3 6.2

VQ 4.84 5.81 7.62 7.49 7.18 5.8 6.14 4.78 5.93 6.68 4.6 3.67

Tabel 24. Prediksi Curah Hujan Epoch: 100 Error: 0.001

ulan 0 1 2

P 4.099 76.85 5.83 52.12 2.02 6.75 78.36 3.51 85.5 82.77 21.18 6.9

(44)

eal 5 79 7 54 7 27 31 7 54 49 27 33

5.

Epoch: 1000

5.1

Error 0.1

MSE Terbaik BP

: 0.1000199, Epoch Ke 1000

MSE Terbaik LVQ

: 0.1000269, Epoch Ke 1000

Tabel 25. Hasil Persentase Prediksi Epoch: 1000 Error: 0.1

ulan

0

1

2

P

8.7

8.7

8.7

8.7

7.27

2.72

3.86

7.38

9.26

9.62

3.33

0.81

VQ

5.96

3.29

0.85

5.96

2.29

6.18

6.53

2.21

4.96

6.43

1.29

9.15

Tabel 26. Prediksi Curah Hujan Epoch: 1000 Error: 0.1

ulan 0 1 2

P 4.02 76.67 5.73 50.69 5.71 05.06 93.72 6.36 01.33 98.38 39.81 4.17

VQ 7.01 49.19 8.47 93.07 4 4.12 53.81 9.26 65.13 65.53 00.6 8.74

eal 5 79 7 54 7 27 31 7 54 49 27 33

5.2

Error 0.01

MSE Terbaik BP

: 0.1000199, Epoch Ke 1000

MSE Terbaik LVQ

: 0.1000269, Epoch Ke 1000

Tabel 27. Hasil Persentase Prediksi Epoch: 1000 Error: 0.01

ulan

0

1

2

ulan

0

1

2

P

8.79

8.79

8.79

8.79

0.13

6.77

7.82

1.86

3.59

3.97

8.15

5.83

VQ

9.71

6.44

4.2

9.71

6.34

0.73

1.05

7.09

9.61

0.96

6.24

4.28

Tabel 28. Prediksi Curah Hujan Epoch: 1000 Error: 0.01

ulan 0 1 2

P 4.09 76.83 5.82 50.92 2.36 7.5 79.76 3.77 86.94 84.19 22.87 7.56

VQ 2.28 36.84 1.97 77.07 1.18 7.13 41.04 6.83 51.42 51.79 83.93 2.19

(45)

5.3

Error 0.001

MSE Terbaik BP

: 0.0001001031, Epoch Ke 1000

MSE Terbaik LVQ

: 0.000099988, Epoch Ke 1000

Tabel 29. Hasil Persentase Prediksi Epoch: 1000 Error: 0.01

ulan

0

1

2

P

8.79

8.79

8.79

8.79

0.13

6.77

7.82

1.86

3.59

3.97

8.15

5.83

VQ

9.71

6.44

4.2

9.71

6.34

0.73

1.05

7.09

9.61

0.96

6.24

4.28

Tabel 30. Prediksi Curah Hujan Epoch: 1000 Error: 0.001

ulan 0 1 2

P 4.099 76.85 5.83 52.12 2.02 6.75 78.36 3.51 85.5 82.77 21.18 6.9

VQ 1.81 35.6 1.32 75.47 0.9 6.43 39.76 6.58 50.05 50.42 82.26 1.54

eal 5 79 7 54 7 27 31 7 54 49 27 33

6.

Epoch: 10000

6.1

Error 0.1

MSE Terbaik BP

: 0.1000004, Epoch Ke 8163

MSE Terbaik LVQ

: 0.0099999, Epoch Ke 9767

Tabel 31. Hasil Persentase Prediksi Epoch: 10000 Error: 0.1

ulan

0

1

2

P

8.7

8.7

8.7

8.7

7.27

2.72

3.86

7.38

9.26

9.67

3.33

0.81

VQ

6.01

3.34

0.9

6.01

2.34

6.23

6.58

2.26

5.01

6.48

1.34

9.2

Tabel 32. Prediksi Curah Hujan Epoch: 10000 Error: 0.1

ulan 0 1 2

P 4.02 76.67 5.73 50.69 5.71 05.06 93.72 6.36 01.33 98.38 39.81 4.17

VQ 7.01 49.19 8.47 93.07 4 4.12 53.81 9.26 65.13 65.53 00.6 8.74

eal 5 79 7 54 7 27 31 7 54 49 27 33

6.2

Error 0.01

MSE Terbaik BP

: 0.001000003, Epoch Ke 9674

MSE Terbaik LVQ

: 0.000999881, Epoch Ke 5771

Gambar

Tabel 3. Hasil Persentase Prediksi Epoch: 40 Error: 0.01
Tabel 5. Hasil Persentase Prediksi Epoch: 40 Error: 0.001
Tabel 10. Hasil Prediksi Curah Hujan Epoch: 400 Error: 0.01
Tabel 15. Hasil Persentase Prediksi Epoch: 4000 Error: 0.01
+7

Referensi

Dokumen terkait

[r]

Burden of Pediatric Cancer Treatment: Results of Online Pediatric Cancer Registry Prototype 1 at A Third Referral Hospital in Indonesia.. Nur Melani Sari, 1 Lelani Reniarti, 1

44/2017 - Objeto: Coleta, transporte, tratamento por termodestruição e destinação final de resíduos de saúde e industrial.. Edital disponível no setor de licitação

This chapter will also provide you with best practices to ensure that your talent sourcing activities, whether they are referrals from mobile, social media platforms, from job

Sebab ada tiga yang memberi kesaksian (di dalam sorga: Bapa, Firman dan Roh Kudus; dan ketiganya adalah satu. Dan ada tiga yang memberi kesaksian di bumi): Roh dan air dan darah

of social ecological system. They were categorized into four categories as follow: 1) 9 resource users (fisherman, fish farmers, and environmental education group), 2)

Hasil statistik memberikan nilai p = 0,025 lebih kecil dari 0,05 (p &lt; 0,05) sehingga dapat dapat disimpulkan bahwa Ha diterima dan Ho ditolak yang artinya pendidikan

This is to certify that this project titled “ DESIGN AND SIMULATION OF AN ENTERPRISE NETWORK USING PACKET TRACER: A Case Study of a Model Secondary School ”