BAB IV IMPLEMENTASI DAN ANALISA
4.1. Implementasi Program
Penelitian ini akan membandingkan hasil antara output yang dihasilkan
oleh jaringan syaraf tiruan menggunakan metode backpropagation dengan target
yang sebenarnya. Perancangan jaringan yang sudah dibentuk akan diimplementasikan dalam bahasa pemrograman Matlab. Dibawah ini akan dijelaskan beberapa listing program yang terkai dengan pelatihan,pengujian dan prediksi indeks prestasi menggunakan jaringan syaraf tiruan dengan metode
backpropagation.
Saat user hendak memasukkan data yang akan diolah, terlebih dahulu user akan diperikan sebuah peringatan bahwa data yang diolah harus berupa teks dengan ekstensi txt. Untuk listing program pesan tersebut adalah sebagai berikut:
msgbox('Data yang dimasukkan berupa data text','Perhatian', 'warn');
uiwait;
potongan listing program diatas akan memberikan action saat user menekan
button browse.
Setelah user mengerti dan menjalankan peringatan tersebut yaitu memasukkan data berupa teks maka data tersebut akan di olah. Sedangkan untuk pengolahan data tersebut akan dilakukan dengan listing program berikut:
global input_training
[input,path]=uigetfile('*.txt','Pilih file text'); if isequal(input,0)
msgbox('Isi dahulu data input','Perhatian','warn') return;
end
set(handles.tr_input,'String',input); set(handles.tr_input,'Userdata',input); %PROSES IMPORT DATA dari data bentuk teks rawData1 = importdata(input);
[unused,name] = fileparts(input); newData1.(genvarname(name)) = rawData1;
% Create new variables in the base workspace from those fields.
vars = fieldnames(newData1); for i = 1:length(vars)
assignin('base', vars{i}, newData1.(vars{i})); end
%AKHIR PROSES IMPORT load(input);
input_training=load(input);
Keterangan :
• Pada fungsi browse ini pertama kali dibuat sebuah pendeklarasian variable
terlebih dahulu dengan variabel global yaitu input_training.
• Terdapat perintah uigetfile dimana perintah ini digunakan untuk membaca file
dengan format yang telah ditentukan dan dalam hal ini dalam bentuk text.
• Isequal di sini untuk mengecek persamaan sebuah array apakah input yang dilakukan melalui proses browse sudah dilakukan dengan benar. Tetapi jika
user belum melakukan proses browse dengan benar maka akan ada peringatan yang dimunculkan dalam sebuah message box dengan pesan ”Isi dahulu data input”.
• Tetapi jika user telah melakukan proses browse dengan benar maka data yang
telah di ambil melalui proses browse akan langsung di load.
• Untuk listing yang berwarna merah adalah listing yang berguna untuk
mengimport data dari data dengan ekstensi .txt.
Untuk proses penentuan berapa banyak jumlah layer tersembunyi yang akan digunakan oleh user pada proses training atau pengujian ini maka dibuat dengan cara menyediakan sebuah popupmenu dengan nilai dari 1 sampai 40. User dapat memilih sesuai kehendak mereka, jika user telah memilih jumlah layer tersembunyi sebanyak 1 layer atau 2 layer maka pada popupmenu untuk node tiap layer akan menyesuaikan jumlahnya dengan jumlah popupmenu yang telah dipilih pada layer tersembunyi. Maka program yang digunakan untuk melakukan perintah tersebuat adalah sebagai berikut :
function pop_hidden_Callback(hObject, eventdata, handles) handles.p=get(handles.pop_hidden,'Value'); if handles.p==1 set(handles.pop_node,'String','1'); elseif handles.p==2 set(handles.pop_node,'String','1|2'); end Keterangan :
• Dibuat sebuah variabel baru dengan nama p yang mana mempunyai fungsi
untuk mengambil nilai dari pop_hidden yaitu banyaknya user memilih jumlah layer tersembunyi yang akan digunakan pada proses pelatihan.
• Lalu dilakukan statement kontrol dengan menggunakan if. Yang mana nilai dari varibel p akan sama dengan nilai pada popupmenu untuk node.
Untuk tools edit text yang ada pada sebelah pop_node digunakan untuk mengisi berapa jumlah node yang akan digunakan untuk setiap layernya. Untuk setiap jumlah node yang di masukkan di beri batasan yaitu tiap layernya maksimum 40 node. Program yang digunakan untuk perintah tersebut adalah sebagai berikut :
function tr_node_Callback(hObject, eventdata, handles) ns=get(handles.tr_node,'String'); n=str2num(ns); if n>=1 & n<41 ns=num2str(n); set(handles.tr_node,'String',ns); else
msgbox('Isi tiap layer dengan jumlah node maksimum 40); set(handles.tr_node,'String','');
end
Keterangan :
• Dibuat variabel baru dengan nama ns yang mana variabel ini digunakan untuk
mengambil nilai dari tr_node yang dimasukkan user dan berupa string.
• Dibuat pula variabel baru dengan nama n yang mana variabel ini untuk
menyimpan nilai dari variabel ns yang dibuat dari tipe string menjadi tipe numerik.
• Kemudian dilakukan statemen kontrol menggunakan if. Yaitu jika n diantara
nilai 1 sampai dengan 40 maka nilai diterima tetapi jka nilai dari n tidak sesuai syarat maka akan muncul message box yang berisi peringatan bahwa jumlah node yang dimasukkan harus antara 1 sampai dengan 40.
Jika nilai masukkan dari node sudah tidak ada peringatan maka user dapat memisahkan nilai tiap node untuk tiap layernya dengan menekan tombol input lalu dapat mengisi banyaknya node untuk layer berikutnya juka user memilih
banyaknya layer tersembunyi lebih dari satu. Program yang digunkan pada button
input tersebut adalah sebagai berikut :
function bt_input_Callback(hObject, eventdata, handles) global jum_node_pertama global jum_node_kedua B=[]; n=get(handles.pop_node,'Value'); if n==1 B(1,1)=str2num(get(handles.tr_node,'String')); jum_node_pertama=B(1,1); elseif n==2 B(1,2)=str2num(get(handles.tr_node,'String')); jum_node_kedua=B(1,2); end set(handles.tr_node,'String',''); Keterangan :
• Dideklarasikan beberapa variabel yang nantinya akan digunakan untuk
menampung sebuah array sebagai nilai banyaknya node masukkan dari user. Variabel global tersebut antara lain adalah jum_node_pertama dan jum_node_kedua.
• Dideklarsikan juga sebuah array kosong dengan nama array B.
• Dibuat juga sebuah variabel baru dengan nama n yang berguna untuk
mengambil nilai dari pop_node.
• Dilakukan statemen kontrol dengan if, yaitu jika nilai n atau pop_node adalah
1 atau 2 maka akan dibentuk atau diletakkan pada array B dengan susunan array tersebut berbentuk satu baris dan nilai n adalah letak kolom. Nilainya
berupa nilai yang telah dirubah ke dalam bentuk numerik dari tr_node yaitu jumlah node pada layer ke- yang diisi oleh user.
Untuk edit text pada laju pemahaman yang diberi nama tr_laju ini user hanya dapat mengisi dengan nilai 1 ke bawah. Hal ini dilakukan karena laju pemahaman diusahakan untuk di isi dengan nilai yang pas sehingga proses pelatihan bisa menghasilkan output yang maksimal. Semakin besar nilai laju pemahaman semakin kurang akurat hasil dari proses pelatihan, begitu juga sebaliknya jika terlalu kecil maka proses pelatihan akan semakin lama. Untuk itu diharapkan nilai dari laju pamahaman ini diperkirakan yang sesuai. Program untuk memberi batasan ini adalah sebagai berikut :
function tr_laju_Callback(hObject, eventdata, handles) laju=get(handles.tr_laju,'String');
n=str2num(laju);
% nilai batas laju pemahaman n <=1 if n<=1
laju=num2str(n);
set(handles.tr_laju,'String',laju); else
msgbox('Isi nilai laju pemahaman di bawah 1'); set(handles.tr_laju,'String','');
end
Keterangan :
• Dibuat terlebih dahulu sebuah variable dengan nama laju, yang mana variable
ini berguna untuk mengambil nilai tari tr_laju sebagai nilai laju pemahaman yang telah di isi oleh user.
• Kemudian dibuat sebuah variable baru lagi dengan nama n, yang mana
variable ini berguna untuk mengubah nilai laju dari string menjadi tipe numeric sehingga nilai n nantinya dapat digunakan untuk melakukan statemen control.
• Statemen kontrol if, di mana jika nilai n lebih kecil dari 1 maka nilai tersebut akan tertulis pada tr_laju tetapi jika nilai n tidak memenuhi maka akan muncul message box atau pesan yang mengatakan bahwa user harus mengisi nilai laju pemahaman dengan nilai di bawah 1.
Untuk kriteria penghentian dari proses pelatihan ini terdapat dua macam yaitu batas error atau target error yang dikehendaki dan maksimal epoch dalam proses pelatihan. Pada batas error dan target error ini dimaksudkan bahwa proses pelatihan akan di hentikan jika error yang dihasilkan sudah berada di bawah error dan target error ini. Program dari penghentian proses pelatihan untuk kriteria yang pertama ini adalah sebagai berikut :
function tr_error_Callback(hObject, eventdata, handles) err=get(handles.tr_error,'String');
n=str2num(err);
% nilai batas epoch n antara 0.1 dan 0.001 if n>=0.001 & n<=0.1
err=num2str(n);
set(handles.tr_error,'String',err); else
msgbox('Isi nilai error dalam range 0.001 sampai 0.1'); set(handles.tr_error,'String','');
end
Keterangan :
• Dibuat variabel baru dengan nama err yang mana varibel ini berguna untuk
mengambil nilai dari tr_error.
• Varibel baru berikutnya yang terdapat pada fungsi ini adalah varibel n yang
mana varibel ini nantinya berguna untuk melakukan statemen kontrol ini tetapi sebelum digunakan untuk melakukan perbandingan varibel ini diubah terlebih dahulu dari string menjadi numerik.
• Statemen kontrol if di sini hampir sama gunanya seperti statemen if pada fungsi-fungsi sebelumnya. Yaitu jika nilai n berada diantara 0.1 dan 0.001 maka nilai tersebut akan muncul dan diletakkan pada tr_error, tetapi jika kondisi tersebut tidak terpenuhi maka akan muncul pesan error yang meminta user agar mengisi nilai target error ini dengan nilai antar 0.1 sampai 0.001. Sedangkan program untuk kriteria penghentian yang kedua adalah sebagai berikut:
function tr_epoch_Callback(hObject, eventdata, handles) ep=get(handles.tr_epoch,'String'); n=str2double(ep); if n>=1 & n<=8000 ep=num2str(n); set(handles.tr_epoch,'String',ep); else
msgbox('Isi nilai max epoch dengan nilai paling besar 8000');
set(handles.tr_epoch,'String',''); end
Keterangan :
• Dibuat variabel baru dengan nama ep yang mana varibel ini berguna untuk
mengambil nilai dari tr_epoch.
• Varibel baru berikutnya yang terdapat pada fungsi ini adalah varibel n yang
mana varibel ini nantinya berguna untuk melakukan statemen kontrol ini tetapi sebelum digunakan untuk melakukan perbandingan varibel ini diubah terlebih dahulu dari string menjadi double.
• Statemen kontrol if di sini hampir sama gunanya seperti statemen if pada
fungsi-fungsi sebelumnya. Yaitu jika nilai n berada diantara 1 dan 8000 maka nilai tersebut akan muncul dan diletakkan pada tr_epoch, tetapi jika kondisi
tersebut tidak terpenuhi maka akan muncul pesan error yang meminta user agar mengisi nilai target error ini dengan nilai antar 1 sampai 8000.
Saat user telah mengisi semua data-data yang diperlukan pada proses pelatihan ini pada panel Pelatihan itu sendiri tanpa ada pesan error yang ditampilkan maka pihak user dapat langsung melakukan proses pelatihan itu
sendiri dengan menekan button proses data pelatihan yang telah disediakan.
Program untuk tombol proses tersebut adalah : pertama-tama melakukan pendeklarasian variabel global yang terkait dalam pemrosesan dengan cara sebagai berikut ini:
function btn_proses_training_Callback(hObject, eventdata, handles) global input_training global jum_training global jum_node_pertama global jum_node_kedua global laju_pemahaman global galat global max_epoch global neet
Setelah dirasa cukup dalam mendeklarasikan variable yang akan dibutuhkan maka pada function ini akan melakukan perhitungan tentang berapa banyak data yang akan digunakan untuk proses pelatihan ini dan selanjutnya menentukan input dan targetnya. Adapun listingnya adalah sebagai berikut:
jum_training=round((70/100)*length(input_training)); input=input_training(1:jum_training,1:5)';
target=input_training(1:jum_training,6)'; I=(0.8*(input-0)/(10-0))+0.1;
Keterangan:
• Dibuat variable baru yang hanya digunakan pada function ini saja yaitu
jum_training yang berfungsi mengambil banyaknya data sebesar 70 persen dari data yang ada.
• Untuk data input dilakukan katentuan diambil dari baris 1 sampai baris
sebanyak jum_training dengan kolom 1 sampai kolom ke lima.
• Demikian juga untuk data target dilakukan ketentuan yang sama seperti data
untuk inputnya yaitu diambil dari baris 1 sampai baris sebanyak jum_training dengan kolom ke enam.
• Kemudian input dan target tersebut di tangkap pada variable baru yaitu I untuk
input dan T untuk target tetapi pada variable ini data sudah di transformasi terlebih dahulu sehingga nilai pada range 0-1.
Setelah selesai melakukan pengaturan data untuk input dan data untuk targetnya, maka dibuatlah dua buah array kosong yang kegunaannya dapat dilihat pada listing berikut: A=[]; B=[]; x=get(handles.pop_node,'Value'); if x==1 B(1,1)=jum_node_pertama; elseif x==2 B(1,1)=jum_node_pertama; B(1,2)=jum_node_kedua; end u=get(handles.pop_hidden,'Value'); for n=1:u A(1,n)=B(1,n); end A(1,u+1)=1
Keterangan :
• Ada variable baru dengan nama x yang digunakan untuk mengambil nilai pada
pop_node.
• Dibuat statement control yaitu jika nilai x==1 maka array B pada baris 1
kolom 1 akan di isi data yang diambil dari masukkan button input yatiu jum_node_pertama. Demikian pula juka nilai x==2 maka dilakukan hal yang sama jika nilai x==1 hanya saja akan ada data baru yang akan diletakkan pada baris 1 kolom 2 yang diambil dari masukkan button input yatiu jum_node_kedua.
• Ada variable baru dengan nama u yang digunakan untuk mengambil nilai pada
pop_ hidden.
• Lalu dibuat proses perulangan dari nilai awal adalah 1 sampai nilai u maka
array A akan di isi nilai sama seperti pada array B. Maka saat proses perulangan itu diakhiri nilai array A pada kolom terakhir diberi nilai 1.
Setelah mengambil nilai banyaknya node yang dikehendaki pada tiap layer tersembunyi kemudian dibuatlah sebuah bentuk jaringan. Adapun potongan listing untuk pembentukkan jaringan adalah sebagai berikut ini:
if x==1 handles.net=newff(minmax(I),[A],{'logsig' 'logsig'},'traingdx'); elseif x==2 handles.net=newff(minmax(I),[A],{'logsig' 'logsig' 'logsig'},'traingdx'); end
Keterangan:
• Jika popnode==1 maka fungsi aktivasi hanya dua, karena fungsi aktivasi
hanya akan digunakan dari inputan ke layar tersembunyi dan terakhir dari layer tersebunyi ke target.
• Jika popnode==2 maka fungsi aktivasi ada tiga, karena fungsi aktivasi yang
akan digunakan adalah dari inputan ke layar tersembunyi1, dari layer tersembunyi1 ke layer tersembunyi2 dan terakhir dari layer tersebunyi2 ke target.
• Newff adalah fungsi yang disediakan oleh matlab yang digunakan untuk
membentuk suatu jaringan dan fungsi aktivasinya adalah logsig dan di akhir di beri fungsi pelatihan jaringan dengan nilai default yaitu traingdx.
Saat jaringan sudah terbentuk maka ditentukan bobot yang akan digunakan untuk proses perhitungan nantinya dengan nilai random kecil. Untuk mengatur bobot maka listingnya adalah sebagai berikut ini:
if n==1 BobotAwal_Input = handles.net.IW{1,1} BobotAwal_Bias_Input = handles.net.b{1,1} BobotAwal_Lapisan1 = handles.net.LW{2,1} BobotAwal_Bias_Lapisan1 = handles.net.b{2,1} elseif n==2 BobotAwal_Input = handles.net.IW{1,1} BobotAwal_Bias_Input = handles.net.b{1,1} BobotAwal_Lapisan1 = handles.net.LW{2,1} BobotAwal_Bias_Lapisan1 = handles.net.b{2,1} BobotAwal_Lapisan2 = handles.net.LW{3,2} BobotAwal_Bias_Lapisan2 = handles.net.b{3,1} end Keterangan:
• Dalam membuat inisialisasi bobot dilkukan dengan menggunakan perintah
• Untuk net.IW{j,i}digunakan sebagai variable untuk menyimpan bobot dari unit masukkan layer I ke unit tersembunyi (atau unit keluaran) layer j. tetapi
karena pada metode Backpropagation, unit masukkan hanya terhubung
dengan layer tersembunyi paling bawah maka bobotnya disimpan pada net.IW{1,1}
• Untuk net.LW{k,j} digunakan untuk menyimpan bobot dari unit di layer
tersembunyu ke-j ke unit di layer tersembunyi ke-k.
• Sedangkan net.b digunakan untuk menyimpan bobot dari bias tiap layer.
Kemudian mengambil nilai laju pemahaman,mengambil nilai dari kriteria penghentian yang dipilih. Untuk penggalan listingnya dapat dilihat sebagai berikut:
% menentukan max learing rate/laju pemahaman lj=get(handles.tr_laju,'String');
laju_pemahaman=str2num(lj);
handles.net.trainparam.lr = laju_pemahaman; nil=get(handles.rd_error,'Value');
if nil==1
% menentukan max goal
er=get(handles.tr_error,'String'); galat=str2num(er);
handles.net.trainparam.goal = galat; handles.net.trainparam.epochs = 5000; else
% menentukan jumlah epoch max e=get(handles.tr_epoch,'String'); max_epoch=str2num(e);
handles.net.trainparam.epochs = max_epoch; handles.net.trainparam.goal = 0.01; end
% digunakan untuk menampilkan frekuensi perubahan error handles.net.trainparam.show = 200;
Setelah semua ditentukan dari mulai pembentukkan jaringan, penentuan bobot awal, dan beberapa parameter-parameter yang dibutukan sudah di set dengan baik.
Maka akan dilakukan proses pembelajaran dari jaringan. Adapun listingnya adalah sebagai berikut:
% digunakan untuk melakukan proses pelatihan handles.net = train(handles.net,I,T);
Selesai melakukan proses pembelajaran jariangan dapat dilihat nilai-nilai bobot akhirnya dengan listing sebagai berikut ini:
%Melihat bobot akhir if n==1 BobotAkhir_Input = handles.net.IW{1,1}; BobotAkhir_Bias_Input = handles.net.b{1,1}; BobotAkhir_Lapisan1 = handles.net.LW{2,1}; BobotAkhir_Bias_Lapisan1 = handles.net.b{2,1}; elseif n==2 BobotAkhir_Input = handles.net.IW{1,1} BobotAkhir_Bias_Input = handles.net.b{1,1} BobotAkhir_Lapisan1 = handles.net.LW{2,1} BobotAkhir_Bias_Lapisan1 = handles.net.b{2,1} BobotAkhir_Lapisan2 = handles.net.LW{3,2} BobotAkhir_Bias_Lapisan2 = handles.net.b{3,1} end
Untuk langkah selanjutnya dilakukan simulasi yang mana hal ini dilakukan untuk mengetahui output dari jaringan.
[a,Pf,Af,e,perf] = sim(handles.net,I,[],[],T);
Keterangan:
• Untuk parameter masukkannya:
o handles.net : nama jaringan dalam perintah newff
o I : vector masukkan jaringan/input jaringan
o T : vector target jaringan.
• Untuk parameter hasilnya adalah:
o a : keluaran/output jaringan
o Af : kondisi akhir delay layer
o e : error jaringan = T-a
o perf : unjuk kerja dari jaringan/mse
Sebenarnya sampai dengan melakukan simulasi tersebut sudah cukup tapi dengan hanya melihat grafik dikwatirkan nantinya user tidak terlalu memahani maka dibuat hasil dalam bentuk prosesntase. Untuk listingnya dapat dilihat sebagai berikut:
i=e.*e %nilai mse yang di dapat dari nilai kuadrat e kinerja=perf hasil=0; for n=1:length(i) if i(1,n)<=kinerja hasil=hasil+1; end end hasil=(hasil/length(i))*100; hasil=round(hasil) set(handles.prosentase_pelatihan,'String',hasil); Keterangan:
• Di buat variable baru yaitu i yang berguna untuk menghitung mse error tiap
error outputnya. Yaitu dengan cara error dikuadratkan. Hal ini harus dilakukan karena perbandingan harus dilakukan dengan mse juga.
• Jika nilai i berada dibawah nilai dari kinerja/perf maka akan dilakukan
perhitungan jumlah. Untuk itu akan dihitung dalam bentuk prosentase dengan cara hasil dari jumlah perhitungan dibagi banyaknya data I dan di kali 100%.
Saat user merasa kurang puas dengan hasil yang diperoleh dari proses training tersebut maka user dapat melakukan proses ulang dengan nilai inputan baru dengan melakukan pembersihan text field terlebih dahulu, adapun sintaks untuk button bersih adalah :
function btn_reset1_Callback(hObject, eventdata, handles) set(handles.tr_input,'string',''); set(handles.pop_hidden,'value',1); set(handles.pop_node,'value',1); set(handles.tr_node,'string',''); set(handles.tr_node,'Enable','on'); set(handles.tr_laju,'string',''); set(handles.tr_laju,'Enable','on'); set(handles.tr_error,'string',''); set(handles.tr_epoch,'string',''); set(handles.rd_error,'Value',0); set(handles.rd_epoch,'Value',0); set(handles.tr_epoch,'Visible','off'); set(handles.tr_error,'Visible','off'); set(handles.prosentase_pelatihan,'string',''); clear all;
Saat user ingin keluar dari menu aplikasi ini dapat langsung menekan button keluar, yang mana listing yang digunakan adalah sebagai berikut:
function btn_exit1_Callback(hObject, eventdata, handles) exit = questdlg('Keluar dari Program?',...
'Keluar','Yes','No','Yes'); if strcmp(exit,'Yes') delete(handles.menu_utama) end clear all; Keterangan:
Questdlg merupakan sebuah fungsi matlab yang berfungsi memanggil kotak dialog modal yang berisi dua pushbutton, yaitu ya dan tidak. Jika kita mengklik salah satu pushbutton, maka akan dibandingkan dengan fungsi strcmp().
Di sana terdapat syntax delete(handles.menu_utama) artinya saat user memilih
Yes maka menu_utama ini akan keluar.
Lain halnya jika user merasa cukup puas dengan hasil dari perolehan pelatihan, maka user dapat pelakukan proses pengujian dengan data lain selain data pelatihan. Tetapi user dapat juga langsung melakukan proses prediksi jika
hasil dari pelatihan ini sudah cukup membantu memberi gambaran bahwa jaringan sudah dapat mengenali pola.
Syntaks browse yang digunakan sama seperti syntaks browse pada menu_utama. Setelah user memasukkan data user dapat langsung menekan tombol Pengujian Data untuk melakukan proses pengujian itu sendiri. Adapun listing untuk proses pengujian adalah sebagai berikut:
jum_testing=(30/100)*length(input_testing); nil_awal=jum_training+1; % data testing input=input_testing(nil_awal:length(input_testing),1:5)'; target=input_testing(nil_awal:length(input_testing),6)'; Q=(0.8*(input-0)/(10-0))+0.1; TQ=(0.8*(target-0)/(4-0))+0.1; inputan=get(handles.tes_input,'String'); in=str2num(inputan); [b,Pf,Af,e,perf] = sim(neet,Q,[],[],TQ); i=e.*e kinerja=perf hasil1=0; for n=1:length(i) if i(1,n)<=kinerja hasil1=hasil1+1; end end hasil1=(hasil1/length(i))*100; hasil1=round(hasil1) set(handles.hasil_pengujian,'String',hasil1); Keterangan:
• Seperti pada function- function sebelumnya dibuat terlebih dahulu beberapa
pendlekarasian variabel yang akan digunakan pada function btn_proses_pengujian.
• Listing untuk proses testing ini pada dasarnya hampir sama seperti proses
o Data yang digunakan sebesar 30% dari jumlah data yang ada dan selain data yang telah digunakan untuk proses training/pelatihan.
o Untuk melakukan simulasi atau melihat output jaringannya digunakan
dengan neet yang mana neet di sini adalah mengambil hasil jaringan dari proses pelatihan sebelumnya.
Sejauh itu yang lain memiliki dasar yang sama seperti proses pelatihan.
Jika user telah marasa puas saat melakukan proses pelatihan pada menu utama dan user merasa tidak perlu melakukan proses pengujian maka pada tampilan menu utama user dapat langsung menekan button prediksi.
Untuk user dapat melakukan prediksi indeks prestasi dengan cara memasukkan nilai-nilai test masuk, yang terdiri dari 5 macam test masuk. Nilai test masuk ini dapat di isi dari range 0 sampai dengan 10. Setelah user mengisi semua nilai test masuk maka user dapat melihat hasil prediksi indeks prestasinya dengan menekan button prediksi indeks prestasi. Adapun listing yang ada di dalam proses prediksi indeks prestasi adalah pertama-tama melakukan pendeklarasian beberapa variabel sesuai kebutuhan,untuk cara pendeklarasian sama seperti sebelum-sebelumnya. Dapat di lihat sebagai berikut ini:
global neet
Dari pendeklarasian variabel terlihat hanya satu saja karena pada proses prediksi ini hanya akan mengambil nilai jaringan dari proses sebelumnya.
Kemudian dilakukan pengambilan data dari masukkan user yang telah dilakukan melalui tampilan menu prediksi pada text field-text field yang telah di sediakan. Untuk listing pengambilannya adalah sebagai berikut ini:
kn=get(handles.pr_output_numerik,'string'); pm=get(handles.pr_output_mekanik,'string'); hr=get(handles.pr_output_ruang,'string'); bi=get(handles.pr_output_inggris,'string'); %ubah string menjadi numerik
in1=str2num(pv); in2=str2num(kn); in3=str2num(pm); in4=str2num(hr); in5=str2num(bi);
%ubah ke dalam bentuk matriks inw=[in1;in2;in3;in4;in5]; inew=(0.8*(inw-0)/(10-0))+0.1;
Keterangan:
• Untuk proses pengambilan data dari text field dilakukan dengan menggunakan
fungsi get. Fungsi ini dapat dipadukan dengan fungsi koversi string ke
numeric atau sebaliknya, sesuai kebutuhan pengolahan datanya. Untuk syntaks