BAB 3
PERANCANGAN PROGAM
Pada bab 3 ini menjelaskan bagaimana cara perancangan dari aplikasi peramalan pasien demam berdarah ini baik perancangan sistem maupuun perancangan database yang menjadi pselesaiukung dari aplikasi ini.
3.1 Model Aplikasi
Pada dasarnya ini aplikasi ini dirancang untuk mencari model neural yang terbaik untuk meramal kesembuhan pasien demam berdarah dengue. Oleh sebab itu penulis menyediakan 6 buah kombinasi model neural dengan memberikan pilihan 2 sampai 7 node pada hidden layer dengan 8 input layer yaitu diagnosis (X1), lama demam (X2), kesadaran (X3), nadi (X4), perdarahan (X5), akral (X6), perfusi (X7), rontgen thorak (X8) dan 1 output layer yaitu kesembuhan pasien (Y). Berikut akan diberikan contoh dari 6 kemungkinan model neural yang terjadi serta proses neural yang terjadi. Untuk mempermudah penghitungan contoh penulis akan menggunakan nilai-nilai yang tidak bervariasi sekalipun pada dasarnya nilai-nilai yang digunakan pada aplikasi akan bervariasi karena bersifat acak.
(X1) = 0.5 (X1) = 0.5 Bias = 0.1
(X1) = -0.5 (X1) = -0.5 Y = 1
(X1) = 0.5 (X1) = 0.5
(X1) = -0.5 (X1) = -0.5
3.1.1 Model Neural dengan 2 node hidden layer
Gambar 3.1 Model Neural dengan 2 node hidden layer
Gambar di atas memperlihatkan model neural network pada aplikasi peramalan dengan menggunakan 2 hidden layer. Garis panah yang menghubungkan input layer (X1 sampai X8) dengan hidden layer (Z1-Z2) adalah weightV sedangkan garis panah yang menghubungkan hidden layer dengan output layer (Y1) adalah weightW.
Contoh Perhitungan Feed Forward
Z_in1 = Bias + V11 * X1 + V21 * X2 + V31 * X3 + V41 * X4 + V51 * X5 + V61 * X6 + V71 * X7 + V81 * X8 X1 X3 X4 X8 X7 X2 X5 X6 Z2 Z1 Y1 bias bias WeightV WeightW
Z_in1 = 0.1 + 0.1 * 0.5 + 0.1 * -0.5 + 0.1 * 0.5 + 0.1 * -0.5 + 0.1 * 0.5 + 0.1 * -0.5 + 0.1 * 0.5 + 0.1 * -0.5 Z_in1 = 0.1 Z1 = Z_in1 1 1 − +e Z1 = 0.1 1 1 − +e Z1 = 0.52497918748 Z_in2 = Bias + V12 * X1 + V22 * X2 + V32 * X3 + V42 * X4 + V52 * X5 + V62 * X6 + V72 * X7 + V82 * X8 Z_in2 = 0.1 + 0.1 * 0.5 + 0.1 * -0.5 + 0.1 * 0.5 + 0.1 * -0.5 + 0.1 * 0.5 + 0.1 * -0.5 + 0.1 * 0.5 + 0.1 * -0.5 Z_in2 = 0.1 Z2 = Z_in2 1 1 − +e Z2 = 0.1 1 1 − +e Z1 = 0.52497918748 Y_in2 = Bias + W11 * Z1 + W21 * Z2 Y_in2 = 0.1 + 0.1 * 0.52497918748 + 0.1 * 0.52497918748 Y_in2 = 0.204995837496 Y1 = Y_in2 1 1 − +e Y1 = 0.204995837496 1 1 − +e Y1 = 0.55107023954
Contoh Perhitungan Back Propagation of Error ∆1 = (tk – yk).f’(y_ink)
∆1 = (1 – 0.55107) ∆1 = 0.44893
Weight_wjk = Weight_wjk(old) + (α. ∆1.z1) Weight_w11 = 0.1 + (0.5 * 0.44893 * 0.524979) Weight_w11 = 0.117832228355
bias = Weight_w01 = Weight_w01(old) + (α. ∆1) Weight_w01 = 0.1 + (0.5 * 0.44893) ∆_inj =
∑
= m k kWjk 1 δ∆_in1 = ∆1* Weight_W11 + ∆1* Weight_W21 + ∆1* Weight_W31 + ∆1* Weight_W41 + ∆1* Weight_W51 + ∆1* Weight_W61 + ∆1* Weight_W71 + ∆1* Weight_W81
∆j = ∆_inj.f’(z_inj)
Proses yang sama akan dilakukan untuk mencari nilai node pada hidden layer berikutnya, weight_v dan weight_w yang baru dan nilai bias yang baru. Proses ini akan berulang sampai error (tk – yk) lebih kecil dari nilai target error. Karena proses yang dijalani sama (perbedaan hanya terdapat pada jumlah weight dan node hidden layer) maka pada contoh untuk 3 sampai 7 hidden layer berikutnya penulis hanya akan menyertakan bentuk jaringan neural networknya saja.
3.1.2 Model Neural dengan 3 node hidden layer
Gambar 3.2 Model Neural dengan 3 node hidden layer
Gambar di atas memperlihatkan model neural network pada aplikasi peramalan dengan menggunakan 3 hidden layer. Garis panah yang menghubungkan input layer (X1 sampai X8) dengan hidden layer (Z1-Z3) adalah weightV sedangkan garis panah yang menghubungkan hidden layer dengan output layer (Y1) adalah weightW. X1 X3 X4 X8 X7 X2 X5 X6 Z3 Z1 Y1 bias bias WeightV WeightW Z2
3.1.3 Model Neural dengan 4 node hidden layer
Gambar 3.3 Model Neural dengan 4 node hidden layer
Gambar di atas memperlihatkan model neural network pada aplikasi peramalan dengan menggunakan 4 hidden layer. Garis panah yang menghubungkan input layer (X1 sampai X8) dengan hidden layer (Z1-Z4) adalah weightV sedangkan garis panah yang menghubungkan hidden layer dengan output layer (Y1) adalah weightW. X1 X3 X4 X8 X7 X2 X5 X6 Z3 Z1 Y1 bias bias WeightV WeightW Z2 Z4
3.1.4 Model Neural dengan 5 node hidden layer
Gambar 3.4 Model Neural dengan 6 node hidden layer
Gambar di atas memperlihatkan model neural network pada aplikasi peramalan dengan menggunakan 6 hidden layer. Garis panah yang menghubungkan input layer (X1 sampai X8) dengan hidden layer (Z1-Z6) adalah weightV sedangkan garis panah yang menghubungkan hidden layer dengan output layer (Y1) adalah weightW. X1 X3 X4 X8 X7 X2 X5 X6 Z3 Z1 Y1 bias bias WeightV WeightW Z2 Z4 Z5
3.1.5 Model Neural dengan 6 node hidden layer
Gambar 3.5 Model Neural dengan 6 node hidden layer
Gambar di atas memperlihatkan model neural network pada aplikasi peramalan dengan menggunakan 6 hidden layer. Garis panah yang menghubungkan input layer (X1 sampai X8) dengan hidden layer (Z1-Z6) adalah weightV sedangkan garis panah yang menghubungkan hidden layer dengan output layer (Y1) adalah weightW. X1 X3 X4 X8 X7 X2 X5 X6 Z3 Z1 Y1 bias bias WeightV WeightW Z2 Z4 Z5 Z6
3.1.6 Model Neural dengan 7 node hidden layer
Gambar 3.6 Model Neural dengan 7 node hidden layer
Gambar di atas memperlihatkan model neural network pada aplikasi peramalan dengan menggunakan 7 hidden layer. Garis panah yang menghubungkan input layer (X1 sampai X8) dengan hidden layer (Z1-Z7) adalah weightV sedangkan garis panah yang menghubungkan hidden layer dengan output layer (Y1) adalah weightW. X1 X3 X4 X8 X7 X2 X5 X6 Z3 Z1 Y1 bias bias WeightV WeightW Z2 Z4 Z5 Z6 Z7
3.2 Perancangan Database
Pada skripsi ini penulis menggunakan Microsoft Access XP sebagai database. Data disimpan dalam tabel “training” dengan field-field sebagai berikut:
• Training Pair • Diagnosi • Lamademam • Kesadaran • Nadi • Perdarahan • Akral • Rothorak • Output
Training pair digunakan sebagai primary key. Semua tipe data yang penulis gunakan untuk database ini adalah double atau tipe data yang dapat menampung angka decimal agar sewaktu ditraining maupun ditesting data dapat diproses, kecuali untuk training pair menggunakan tipe data integer. Output yang ingin dicapai adalah tingkat kesembuhan pasien demam berdarah.
3.3 Pemrosesan Data
Karena pada dasarnya Neural Network menggunakan angka dengan kisaran antara -1 sampai 1 maka data yang akan diproses diubah terlebih dahulu dengan metode interpolasi, dengan penghitungan sebagai berikut:
Nilai_tengah =
2
nilai_min nilai_max +
Nilai_tengah_rentang = 2 nilai_min nilai_max − X = ntang tengah_re nilai ah nilai_teng -nilai_data
dimana, nilai_tengah : nilai tengah dari data nilai_tengah_rentang : nilai tengah dari rentang data
nilai_max : nilai maximum dari data nilai_min : nilai minimum dari data x : nilai yang akan diinput
Contohnya pada variabel lama demam mempunyai nilai minimum 2, sedangkan nilai maximumnya 6 dan nilai yang akan diolah 4, maka nilai yang akan diinput adalah:
Nilai_tengah = 4 2 6 2+ = Nilai_tengah_rentang = 2 2 2 -6 = X = 0 2 4 4− =
3.4 Perancangan Program Aplikasi 3.4.1 Penerapan Neural Network
Penerapan Neural Network untuk menyelesaikan permasalahan di atas dapat digambarkan sebagai berikut :
Algoritma Peramalan Kesembuhan Pasien Demam Berdarah dengan Backpropagation
1. Inisialisasikan nilai variabel yang akan diinput
Inisialisaskan Alfa, Target Error (nilai error minimum yang ingin dipenuhi) Inisialisasikan weight awal pada setiap neuron
Inisialisasikan jumlah node pada hidden layer
2. Training nilai-nilai yang sudah diinput dengan FeedForward, Backpropagation, dan Update Weight
-FeedForward-
Jumlahkan nilai bias dan nilai perkalian antara nilai-nilai weight dengan nilai input yang bersesuaian
Masing-masing penjumlahan dimasukan ke dalam fungsi aktivasi logistic dan menjadi input untuk hidden layer
Jumlahkan nilai bias dan nilai perkalian antara nilai-nilai weight dengan nilai input yang bersesuaian
Masing-masing penjumlahan dimasukan ke dalam fungsi aktivasi logistic dan menjadi nilai output
-BackPropagation of Error-
Untuk setiap output hitung error antara nilai output sebelumnya dengan nilai output yang terbaru
Hitung nilai weight antara hidden layer dan output layer yang baru dan bias yang baru
Untuk setiap hidden layer jumlahkan setiap masukan dari output layer
Tentukan nilai error dengan mengalikan hasil diatas dengan turunan dari fungsi aktivasi
Hitung nilai weight antara hidden layer dan input layer yang baru dan bias yang baru
Hitung nilai error
Iterasikan sampai nilai error yang dicapai lebih kecil dari nilai target error 3. Inisialisasikan nilai variabel yang akan ditesting
3.4.2 State Trantition Diagram
Gambar 3.7 STD Aplikasi Peramalan Kesembuhan Pasien Demam Berdarah dengan Algoritma Backpropagation
yes no Interpolasikan Start Training < error Backpropagation Update Weight FeedForward Masukkan Input training Masukkan input testing FeedForward Selesai
3.4.3 Perancangan Layar
gambar 3.8 Layar Utama
Program ini hanya terdiri dari satu layar utama, hal ini dikarenakan penulis ingin membuat aplikasi ini sederhana dan dapat langsung digunakan oleh user. Pada bagian ini pertama-tama user dapat memasukan nilai alpha untuk parameter learning rate, nilai target error untuk nilai maximal error yang diinginkan, dan jumlah node pada hidden layer yang dibatasi hanya sampai 7 node pada hidden layer. Pada aplikasi ini sudah disediakan nilai default untuk ketiga field tersebut.
User pertama kali harus me-load input untuk training pair dalam bentuk database, dengan menekan tombol Add Training Pair. Penulis sengaja tidak menyediakan database yang otomatis di-load oleh aplikasi ini agar aplikasi ini
File A p l i k a s i P e r a ma l a n K e s e mb u h a n P a s i e n D e ma m B e r d a r a h Diagnosis Lama demam Kesadaran Nadi Perdarahan Akral Rontgen Thorak Output Error Target Error Alfa 0.5 0.14
Jumlah hidden layer 7
Simulate Add Training Pair Training
fleksibel untuk digunakan oleh user-user pada rumah sakit lain yang mempunyai data-data pasien yang berbeda, sehingga data-data yang akan ditraining akan selalu up to date. Setelah me-load informasi yang diinginkan dari database user diarahkan untuk memilih menekan tombol Training atau menu file-new, karena tombol-tombol lain telah didisabled. Jika tombol training di tekan maka otomatis program akan mentraining data-data yang ada pada database, aplikasi ini juga menyediakan field untuk mengamati proses perubahan nilai error sampai mencapai nilai error yang diinginkan. Aplikasi ini disertai dengan timer yang akan menghitung waktu tiap training. Setiap pen-training-an baru yang dilakukan maka akan dilakukan pula penghitungan waktu ulang.
Setelah training user hanya dapat melakukan dua proses, yaitu testing dengan menekan tombol Testing atau new untuk training ulang dengan menekan menu file-new. Jika user ingin melakukan testing maka terlebih dahulu user diminta mengisi nilai-nilai pada field-field yang sudah disediakan. Antara lain: Penyakit lain, Lama di ICU, Tekanan darah bawah awal, Nadi awal, Leukosit awal, Tekanan darah bawah akhir, Diagnosis. Jika sudah maka program siap melakukan testing.
3.5 Spesifikasi Modul
Untuk menjelaskan proses-proses yang terdapat pada program aplikasi kriptografi visual ini yang terjadi pada setiap modul, maka akan diperinci dengan spesifikasi modul di bawah ini:
3.5.1 Modul FormCreate
Modul FormCreate merupakan modul yang dipanggil pertama kali saat mengeksekusi program. Modul Form Create berfungsi untuk melakukan setting
awal terhadap tampilan awal form utama pada saat program pertama kali dieksekusi.
Mulai
Timer di non-aktifkan
Tombol training di non-aktifkan Set waktu awal
Index pada hidden layer = 5 Selesai
Tombol training sengaja dinon-aktifkan dengan tujuan agar user diarahkan untuk melakukan add training pair pada saat pertama kali menjalankan program. Sedangkan pada index hidden layer penulis memberikan nilai 5 karena pada aplikasi ini penghitungan hidden layer dimulai dari dua atau dengan kata lain pada modul lain array untuk hidden layer sudah ditambah 2 dari awalnya.
3.5.2 Modul Execute
Mulai
Jika flag = 0, maka
Lakukan selama GenEror lebih kecil dari Err Inisialisasi GenEror
Lakukan berulang dari i =0 sampai JmlTp-1 Mulai
Jalankan modul Feed_Forward Jalankan modul Back_Prop
Lakukan berulang sebanyak jumlah output layer
Mulai
GenEror = GenEror + Nilai absolut dari(output layer node error); Selesai
Jalankan modul update_weight Selesai
GenEror := GenEror dibagi (Jumlah training pair * OutputLayer.jmlNode) Jalankan Synchronize(Cetak)
Atau lakukan mulai
jalankan Feed_Forward jalankan modul Cetak selesai
Pada modul execute ini dapat dikatakan inti dari program ini, tahap-tahap yang dilakukan pada Neural Network dilakukan di modul ini. Modul ini dipanggil oleh modul TrainingClick setelah sebelumnya menginisialisasi weight dengan memanggil modul Inisialisasi_Weight. Pada modul ini terdapat variable penanda yaitu flags dengan kondisi jika flags masih bernilai 0 maka berarti akan melakukan training. Training akan terus dilakukan selama nilai pada variabel GenEror lebih besar atau sama dengan nilai pada variable err. Lalu jika nilai flags sudah berubah maka akan hanya melakukan 1 kali proses FeedForward.
3.5.3 Modul FeedForward
Mulai
Lakukan berulang sebanyak jumlah node input layer Node input layer = input
Lakukan berulang sebanyak jumlah node hidden layer Mulai
acc = 0;
lakukan berulang sebanyak jumlah node input layer acc = acc + (weightV * input layer)
acc = acc + Bias pertama
Node hidden layer = 1/(1+exp(-acc)) selesai
lakukan berulang sebanyak jumlah node output layer mulai
acc = 0
lakukan berulang sebanyak jumlah node hidden layer acc = acc + (WeightW * hidden layer)
acc := acc + Bias kedua
Node output layer = 1/(1+exp(-acc)) selesai
selesai
Pada modul ini nilai-nilai yang ada pada input layer dikalikan dengan weight-weightnya. Nilai yang didapat dimasukan ke dalam fungsi aktivasi kemudian nilai pada fungsi aktivasi dijadikan input untuk layer pada level diatasnya, yaitu hidden layer. Nilai-nilai pada hidden layer dikalikan dengan weight-weightnya. Nilai yang didapat dimasukan ke dalam fungsi aktivasi.
3.5.4 Modul Back_Prop
Mulai
Lakukan berulang sebanyak jumlah node output layer Mulai
temp = nilai output
error output layer = temp – output dari output layer error2 output layer = error output layer
outputlayer.layernode[i].error2 = outputlayer.layernode[i].error OutputLayer.LayerNode[i].error := OutputLayer.LayerNode[i].error * OutputLayer.LayerNode[i].output; OutputLayer.LayerNode[i].error := OutputLayer.LayerNode[i].error * (1-OutputLayer.LayerNode[i].output); end;
for i:=0 to HiddenLayer.jmlNode-1 do begin
acc := 0;
for j:=0 to OutputLayer.jmlNode-1 do begin
acc := acc + (WeightW[i,j] * OutputLayer.LayerNode[j].error); end;
HiddenLayer.LayerNode[i].error := acc * HiddenLayer.LayerNode[i].output * (1-HiddenLayer.LayerNode[i].output);
end; end;
Pada modul ini nilai alpha yang sudah diinput digunakan untuk learning rate backpropagation. Semakin kecil nilai alpha semakin kecil perubahan bobot synapsis jaringan dari iterasi satu ke iterasi lainnya. Peningkatan ini menyebabkan pembelajaran lebih lama. Jika dibuat nilai alpha yang terlalu besar untuk mempercepat pembelajaran, hasilnya perubahan yang besar dari bobot synapsis menyebabkan jaringan menjadi tidak stabil (bolak-balik).
3.5.5 Modul Inisialisasi_Weight
Mulai
Set panjang (WeightV,7,Jumlah Hidden); Set panjang (WeightW,Jumlah hidden,1); Lakukan berulang sebanyak 7 kali
Lakukan berulang sebanyak jumlah node hidden layer WeightV = random - 0.5;
Lakukan berulang sebanyak jumlah node hidden layer Lakukan berulang sekali
WeightW = random - 0.5; Set panjang (Bias,2);
Set panjang (Bias,JmlHidden); Set panjang (Bias,1);
Lakukan berulang sebanyak jumlah node hidden layer Bias = random - 0.5;
Lakukan berulang sekali Bias = random - 0.5; selesai
Pada modul dilakukan penentuan jumlah maximum node pada hidden layer, jumlah node bias. Pada modul ini dilakukan inisialisasi nilai-nilai weight secara acak dengan kisaran antara 0.5 sampai -0.5. Nilai-nilai weight yang diinisialisasi akan digunakan untuk melakukan training.
3.5.6 Modul Update_Weight
Mulai
Lakukan berulang sebanyak jumlah node hidden layer mulai
Lakukan berulang sebanyak jumlah node input layer Mulai
delta = alpha * node input layer * error hidden layer WeightV = WeightV + delta
selesai selesai
lakukan berulang sebanyak jumlah node output layer mulai
lakukan berulang sebanyak jumlah node hidden layer mulai
WeightW = WeightW + delta; selesai
selesai
lakukan berulang sebanyak jumlah node hidden layer Bias = Bias + (alpha * error node hidden layer) Lakukan berulang sebanyak jumlah node output layer Bias = Bias + (alpha * error node output layer) Selesai
Pada modul ini dilakukan perubahan nilai weight menggunakan nilai pada delta. Nilai delta didapat dari perkalian antara nilai alpha dengan nilai output yang dihasilkan pada oleh layer input dan layer hidden. Pada modul ini juga dilakukan perubahan pada nilai bias.
3.5.7 Modul Create Constructor_TBPThread.Create(Edit:TEdit;output:tedit;tparray:TDynamicTParray;JTP: integer;b:TDynamicRealArray;al:real;e:real;fl:integer;v:TDynamicRealArray;w:TDyna micRealArray;JmlHid:integer); mulai Randomize WeightV = v WeightW = w FEdit = Edit Foutput = Output TPA = tparray JmlTP = JTP bias = b alpha = al err = e flags = fl JmlHidden = jmlHid InputLayer.JmlNode = 7 setlength(InputLayer.LayerNode,InputLayer.JmlNode); HiddenLayer.JmlNode = JmlHidden setlength(HiddenLayer.LayerNode,HiddenLayer.JmlNode) OutputLayer.JmlNode = 1 setlength(OutputLayer.LayerNode,OutputLayer.JmlNode) if fl = 0 then Inisialisasi_Weight inherited Create(False) selesai
Pada modul ini dilakukan pengiriman nilai antar thread. Karena pada aplikasi ini digunakan multi-thread maka nilai-nilai pada variabel-variabel di kedua thread
dikirim melalui sebuah constructor. Constructor adalah modul yang digunakan untuk mengambil nilai pada thread lain melalui passing parameter.
3.5.8 Modul Cetak
mulai
jika Flags = 0 maka
FEdit.Text := FloatToStr(GenEror) Atau lakukan
mulai
FEdit.Text = FloatToStr(GenEror); foutput.Clear
lakukan berulang sebanyak jumlah node output layer Foutput.Text = floattostr(OutputLayer.layernode.output) selesai
selesai
Pada modul ini nilai-nilai yang dihasilkan selama proses training dicetak. Pada modul ini juga dilakukan proses pencetakan hasil testing. Karena untuk mencetak pada layer harus menggunakan tipe data string maka nilai yang ingin dicetak diubah terlebih dahulu menggunakan fungsi floattostr.
3.5.9 Modul ThreadDone mulai timer.Enabled = false WeightV = thr.WeightV WeightW = thr.WeightW bias = thr.Bias Application.MessageBox('finish','finish',0) button4.Enabled = true button3.Enabled = false edit1.Enabled := true edit2.Enabled := true edit3.Enabled := true edit4.Enabled := true edit5.Enabled := true edit6.Enabled := true edit7.Enabled := true selesai
Pada modul ini diberikan pernyataan untuk selesai melakukan training atau learning. Tombol-tombol yang awalnya dinon-aktifkan sebelum training melalui modul ini sekarang diaktifkan kembali. Lalu kolom-kolom yang sebelumnya tidak aktif juga sudah diaktifkan kembali sehingga user sudah dapat melakukan learning. Fungsi dari statement weightV = thr.weightV dan seterusnya adalah untuk mengambil nilai dari thread unit2 untuk bisa digunakan kembali.
3.5.10 Modul AddTPClick
mulai
jika OpenDialog1.Execute maka filename = OpenDialog1.FileName
tbl.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + filename + ';Persist Security Info=False'
Buka tabel
Lakukan berulang selama belum End of File mulai jmlTP:=jmlTP+1 setlength(TPA,jmlTP) tpa[jmlTP-1].Input[0]:=(tbl.FieldByName('diagnosi').AsFloat-3)/2 tpa[jmlTP-1].Input[1]:=(tbl.FieldByName('lamademam').AsFloat-4)/2 tpa[jmlTP-1].Input[2]:=(tbl.FieldByName('kesadaran').AsFloat-3)/2 tpa[jmlTP-1].Input[3]:=(tbl.FieldByName('nadi').AsFloat) tpa[jmlTP-1].Input[4]:=(tbl.FieldByName('perdarahan').AsFloat-2.5)/1.5 tpa[jmlTP-1].Input[5]:=(tbl.FieldByName('akral').AsFloat) tpa[jmlTP-1].Input[6]:=(tbl.FieldByName('rothorak').AsFloat) tpa[jmlTP-1].Output[0]:=tbl.fieldbyname('output').AsFloat tbl.selanjutnya selesai
Modul ini adalah modul yang dijalankan sewaktu user menekan tombol “Add Training Pair”. Yang pertama kali dilakukan oleh modul ini adalah mengeksekusi fungsi “Open Dialog”. Fungsi “Open Dialog” membuka sebuah window untuk user menentukan file database mana yang ingin ditraining lalu menyimpannya dalam variabel filename. Setelah itu dilakukan koneksi antara aplikasi dengan database menggunakan suatu provider : Microsoft.Jet.OLEDB.4.0.
Seperti yang sudah dijelaskan pada awal bab ini yaitu karena nilai datanya ada yang beragam maka untuk beberapa variabel dilakukan perubahan nilai agar mendapat range nilai yang diinginkan, yaitu -1 sampai 1.
3.5.11 Modul TrainingClick Mulai alfa = strtofloat(talfa.Text) TargetEror = strtofloat(tTargetEror.Text) thr:=TBPThread.Create(tEror,tOut,TPA,JmlTP,bias,alfa,TargetEror,0,WeightV,weightW,com bobox1.ItemIndex+2) dengan thr lakukan OnTerminate = ThreadDone timer1.Enabled = true selesai
Pada modul ini dilakukan insialisasi untuk variabel alfa dan targeteror. Nilai alfa dan targeteror didapat dari nilai yang ada di layar utama yang oleh penulis sudah diberikan nilai defaultnya yaitu alfa = 0.5 dan targeteror = 0.15. Pemberian nilai error 0.15 akan dijelaskan pada bab selanjutnya.
3.5.12 Modul LearningClick
Mulai
Jika (edit1.Text <> '') and (edit2.Text <> '') and (edit3.Text <> '') and (edit4.Text <> ‘’ and (edit5.Text <> '') and (edit6.Text <> '') and (edit7.Text <> '') maka
mulai JmlTP = 1
Set panjang (TPA,JmlTP)
tpa[jmlTP-1].Input[0] = (strtofloat(edit1.Text)-3)/2 tpa[jmlTP-1].Input[1] = (strtofloat(edit2.Text)-4)/2 tpa[jmlTP-1].Input[2] = (strtofloat(edit3.Text)-3)/2 tpa[jmlTP-1].Input[3] = strtofloat(edit4.Text) tpa[jmlTP-1].Input[4] = (strtofloat(edit5.Text)-2.5)/1.5 tpa[jmlTP-1].Input[5] = strtofloat(edit6.Text) tpa[jmlTP-1].Input[6] = strtofloat(edit7.Text)
dengan(TBPThread.Create(tEror,tOut,TPA,JmlTP,bias,alfa,TargetEror,1,WeightV,Wei ghtW,combobox1.ItemIndex+2)) lakukan OnTerminate = ThreadDone selesai atau lakukan
application.MessageBox('Field input diisi terlebih dahulu','Error',0) selesai
Modul ini adalah modul yang akan dijalankan jika user menekan tombol learning. Pada awal modul diberikan validasi untuk user mengisi semua kolom terlebih dahulu agar learning dapat dijalankan. Setelah dijalankan nilai variabel yang diinput diubah terlebih dahulu seperti yang sudah dijelaskan diatas. Lalu melalui fungsi thread modul ini terhubung dengan modul execute yang ada pada unit2 dan menjalankan fungsi feedforward sebanyak 1 kali.
3.5.13 Modul New1Click Mulai JmlTp = 0 setlength(tpa,jmltp) addTP.Enabled = true training.Enabled = false edit1.Text := '' edit2.Text := '' edit3.Text := '' edit4.Text := '' edit5.Text := '' edit6.Text := '' edit7.Text := '' tEror.Text := ' selesai
Modul ini men-set ulang aplikasi agar dapat melakukan training ulang dengan menginisialisasikan variabel JmlTp dengan nilai 0.
3.5.14 Modul Exit1Click
Mulai
application.Terminate selesai