Perbandingan Algoritma Bidirectional Associative Memory dan Learning Vector Quantization Dalam Menentukan Obat Penyakit Saluran Cerna Lambung-Usus
LAMPIRAN LISTING PROGRAM Beranda.m
function varargout = Beranda(varargin) % BERANDA M-file for Beranda.fig
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Beranda_OpeningFcn, ... 'gui_OutputFcn', @Beranda_OutputFcn, ... 'gui_LayoutFcn', [] , ...
'gui_Callback', []); if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1}); end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else
gui_mainfcn(gui_State, varargin{:}); end
% End initialization code - DO NOT EDIT
% --- Executes just before Beranda is made visible.
function Beranda_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject;
handles.citra=imread('logousu.jpg'); guidata(hObject,handles);
axes(handles.axes1); imshow(handles.citra);
% Choose default command line output for Beranda handles.output = hObject;
% Update handles structure guidata(hObject, handles);
% UIWAIT makes Beranda wait for user response (see UIRESUME) % uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line. function varargout = Beranda_OutputFcn(hObject, eventdata, handles) % Get default command line output from handles structure
varargout{1} = handles.output;
% ---function beranda_Callback(hObject, eventdata, handles)
Beranda
delete(handles.figure1)
% ---function menupelatihan_Callback(hObject, eventdata, handles)
% ---function menupengujian_Callback(hObject, eventdata, handles)
% ---function bantuan_Callback(hObject, eventdata, handles)
Bantuan
(2)
% ---function keluar_Callback(hObject, eventdata, handles)
choice= questdlg ('Apakah Anda Ingin Keluar?','Konfirmasi',... 'Ya','Tidak','Tidak');
switch choice case 'Ya' close all; end
% ---function ujibam_Callback(hObject, eventdata, handles)
UjiBAM
delete(handles.figure1)
% ---function ujilvq_Callback(hObject, eventdata, handles)
UjiLVQ
delete(handles.figure1)
% --- function latihbam_Callback(hObject, eventdata, handles)
LatihBAM
delete(handles.figure1)
% ---function latihlvq_Callback(hObject, eventdata, handles)
LatihLVQ
delete(handles.figure1)
LatihBAM.m
function varargout = LatihBAM(varargin) % LATIHBAM M-file for LatihBAM.fig gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @LatihBAM_OpeningFcn, ... 'gui_OutputFcn', @LatihBAM_OutputFcn, ... 'gui_LayoutFcn', [] , ...
'gui_Callback', []); if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1}); end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else
gui_mainfcn(gui_State, varargin{:}); end
% End initialization code - DO NOT EDIT
% --- Executes just before LatihBAM is made visible.
function LatihBAM_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject;
% Update handles structure guidata(hObject, handles);
% --- Executes on button press in Kel.
function Kel_Callback(hObject, eventdata, handles) % --- Executes on button press in Keh.
(3)
% --- Executes on button press in Sak.
function Sak_Callback(hObject, eventdata, handles) % --- Executes on button press in tombollatih.
function tombollatih_Callback(hObject, eventdata, handles) tStart = tic; %untuk waktu
%1x16
target1 = [1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1]; target2 = [-1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1]; target3 = [-1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1]; target4 = [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1]; input1 = xlsread('bam.xlsx', 'nilai', 'B1:U1'); %1x20 input2 = xlsread('bam.xlsx', 'nilai', 'B2:U2');
input3 = xlsread('bam.xlsx', 'nilai', 'B3:U3'); input4 = xlsread('bam.xlsx', 'nilai', 'B4:U4');
input5 = xlsread('bam.xlsx', 'nilai', 'B5:U5'); %1x20 input6 = xlsread('bam.xlsx', 'nilai', 'B6:U6');
input7 = xlsread('bam.xlsx', 'nilai', 'B7:U7'); input8 = xlsread('bam.xlsx', 'nilai', 'B8:U8');
input9 = xlsread('bam.xlsx', 'nilai', 'B9:U9'); %1x20 input10 = xlsread('bam.xlsx', 'nilai', 'B10:U10'); input11 = xlsread('bam.xlsx', 'nilai', 'B11:U11'); input12 = xlsread('bam.xlsx', 'nilai', 'B12:U12');
input13 = xlsread('bam.xlsx', 'nilai', 'B13:U13'); %1x20 input14 = xlsread('bam.xlsx', 'nilai', 'B14:U14');
input15 = xlsread('bam.xlsx', 'nilai', 'B15:U15'); input16 = xlsread('bam.xlsx', 'nilai', 'B16:U16');
input17 = xlsread('bam.xlsx', 'nilai', 'B17:U17'); %1x20 input18 = xlsread('bam.xlsx', 'nilai', 'B18:U18');
input19 = xlsread('bam.xlsx', 'nilai', 'B19:U19'); input20 = xlsread('bam.xlsx', 'nilai', 'B20:U20'); w1 = input1'* target1; %20x16
w2 = input2'* target1; w3 = input3'* target1; w4 = input4'* target1; w5 = input5'* target1; w6 = input6'* target2; w7 = input7'* target2; w8 = input8'* target2; w9 = input9'* target2; w10 = input10'* target2; w11 = input11'* target3; w12 = input12'* target3; w13 = input13'* target3; w14 = input14'* target3; w15 = input15'* target3; w16 = input16'* target4; w17 = input17'* target4; w18 = input18'* target4; w19 = input19'* target4; w20 = input20'* target4; %20x16
w = w1 + w2 + w3 + w4 + w5 + w6 + w7 + w8 + w9 + w10 + w11 + w12 + w13 + w14 + w15 + w16 + w17 + w18 + w19 + w20;
(4)
xlswrite('bam.xlsx',w, 'bobot', 'A1:P20'); y_in1 = input1 * w; %1x16
y_in2 = input2 * w; y_in3 = input3 * w; y_in4 = input4 * w; y_in5 = input5 * w; y_in6 = input6 * w; y_in7 = input7 * w; y_in8 = input8 * w; y_in9 = input9 * w; y_in10 = input10 * w; y_in11 = input11 * w; y_in12 = input12 * w; y_in13 = input13 * w; y_in14 = input14 * w; y_in15 = input15 * w; y_in16 = input16 * w; y_in17 = input17 * w; y_in18 = input18 * w; y_in19 = input19 * w; y_in20 = input20 * w; for indeks = 1 : 5
if (y_in1(indeks) < 0) y_in1(indeks) = -1; else
y_in1(indeks) = 1; end
if (y_in2(indeks) < 0) y_in2(indeks) = -1; else
y_in2(indeks) = 1; end
if (y_in3(indeks) < 0) y_in3(indeks) = -1; else
y_in3(indeks) = 1; end
if (y_in4(indeks) < 0) y_in4(indeks) = -1; else
y_in4(indeks) = 1; end
if (y_in5(indeks) < 0) y_in5(indeks) = -1; else
y_in5(indeks) = 1; end
if (y_in6(indeks) < 0) y_in6(indeks) = -1; else
y_in6(indeks) = 1; end
(5)
if (y_in7(indeks) < 0) y_in7(indeks) = -1; else
y_in7(indeks) = 1; end
if (y_in8(indeks) < 0) y_in8(indeks) = -1; else
y_in8(indeks) = 1; end
if (y_in9(indeks) < 0) y_in9(indeks) = -1; else
y_in9(indeks) = 1; end
if (y_in10(indeks) < 0) y_in10(indeks) = -1; else
y_in10(indeks) = 1; end
if (y_in11(indeks) < 0) y_in11(indeks) = -1; else
y_in11(indeks) = 1; end
if (y_in12(indeks) < 0) y_in12(indeks) = -1; else
y_in12(indeks) = 1; end
if (y_in13(indeks) < 0) y_in13(indeks) = -1; else
y_in13(indeks) = 1; end
if (y_in14(indeks) < 0) y_in14(indeks) = -1; else
y_in14(indeks) = 1; end
if (y_in15(indeks) < 0) y_in15(indeks) = -1; else
y_in15(indeks) = 1; end
if (y_in16(indeks) < 0) y_in16(indeks) = -1; else
(6)
y_in16(indeks) = 1; end
if (y_in17(indeks) < 0) y_in17(indeks) = -1; else
y_in17(indeks) = 1; end
if (y_in18(indeks) < 0) y_in18(indeks) = -1; else
y_in18(indeks) = 1; end
if (y_in19(indeks) < 0) y_in19(indeks) = -1; else
y_in19(indeks) = 1; end
if (y_in20(indeks) < 0) y_in20(indeks) = -1; else
y_in20(indeks) = 1; end
end
waktupengujian = toc(tStart);
set(handles.waktulatih,'string',waktupengujian); h = msgbox('Data telah dilatih', 'Berhasil');
function namapenyakit_Callback(hObject, eventdata, handles) function namapenyakit_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
function waktulatih_Callback(hObject, eventdata, handles) function waktulatih_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
% --- Executes on button press in tombolsimpan.
function tombolsimpan_Callback(hObject, eventdata, handles) a = get(handles.Sul,'Value');
b = get(handles.Per,'Value'); c = get(handles.Bat,'Value'); d = get(handles.Mua,'Value'); e = get(handles.Sua,'Value'); f = get(handles.Nye,'Value');
(7)
g = get(handles.Mun,'Value'); h = get(handles.Ada,'Value'); i = get(handles.Lam,'Value'); j = get(handles.Atp,'Value'); k = get(handles.Sen,'Value'); l = get(handles.Kem,'Value'); m = get(handles.Ane,'Value'); n = get(handles.Ras,'Value'); o = get(handles.Pen,'Value'); p = get(handles.Tm,'Value'); q = get(handles.Md,'Value'); r = get(handles.Kel,'Value'); s = get(handles.Keh,'Value'); t = get(handles.Sak,'Value');
penyakit= [a b c d e f g h i j k l m n o p q r s t]; for indeks = 1 : 20
if (penyakit(indeks) == 0) penyakit(indeks) = -1; else
penyakit(indeks) = 1; end
end
nm = get(handles.namapenyakit,'String'); if (strcmp(nm , 'Radang Kerongkongan 1'))
xlswrite('bam.xlsx',penyakit,'Nilai','B1:U1'); elseif (strcmp(nm , 'Radang Kerongkongan 2')) xlswrite('bam.xlsx',penyakit,'Nilai','B2:U2'); elseif (strcmp(nm , 'Radang Kerongkongan 3')) xlswrite('bam.xlsx',penyakit,'Nilai','B3:U3'); elseif (strcmp(nm , 'Radang Kerongkongan 4')) xlswrite('bam.xlsx',penyakit,'Nilai','B4:U4'); elseif (strcmp(nm , 'Radang Kerongkongan 5')) xlswrite('bam.xlsx',penyakit,'Nilai','B5:U5');
elseif (strcmp(nm , 'Radang Lambung 1'))
xlswrite('bam.xlsx',penyakit,'Nilai','B6:U6'); elseif (strcmp(nm , 'Radang Lambung 2'))
xlswrite('bam.xlsx',penyakit,'Nilai','B7:U7'); elseif (strcmp(nm , 'Radang Lambung 3'))
xlswrite('bam.xlsx',penyakit,'Nilai','B8:U8'); elseif (strcmp(nm , 'Radang Lambung 4'))
xlswrite('bam.xlsx',penyakit,'Nilai','B9:U9'); elseif (strcmp(nm , 'Radang Lambung 5'))
xlswrite('bam.xlsx',penyakit,'Nilai','B10:U10'); elseif (strcmp(nm , 'Tukak Lambung 1'))
xlswrite('bam.xlsx',penyakit,'Nilai','B11:U11'); elseif (strcmp(nm , 'Tukak Lambung 2'))
xlswrite('bam.xlsx',penyakit,'Nilai','B12:U12'); elseif (strcmp(nm , 'Tukak Lambung 3'))
xlswrite('bam.xlsx',penyakit,'Nilai','B13:U13'); elseif (strcmp(nm , 'Tukak Lambung 4'))
(8)
xlswrite('bam.xlsx',penyakit,'Nilai','B14:U14'); elseif (strcmp(nm , 'Tukak Lambung 5'))
xlswrite('bam.xlsx',penyakit,'Nilai','B15:U15');
elseif (strcmp(nm , 'Kanker Lambung 1'))
xlswrite('bam.xlsx',penyakit,'Nilai','B16:U16'); elseif (strcmp(nm , 'Kanker Lambung 2'))
xlswrite('bam.xlsx',penyakit,'Nilai','B17:U17'); elseif (strcmp(nm , 'Kanker Lambung 3'))
xlswrite('bam.xlsx',penyakit,'Nilai','B18:U18'); elseif (strcmp(nm , 'Kanker Lambung 4'))
xlswrite('bam.xlsx',penyakit,'Nilai','B19:U19'); elseif (strcmp(nm , 'Kanker Lambung 5'))
xlswrite('bam.xlsx',penyakit,'Nilai','B20:U20'); end
penyakit = [];
pesan = msgbox('Data telah disimpan', 'Berhasil'); % --- Executes on button press in tombolreset.
function tombolreset_Callback(hObject, eventdata, handles) set(handles.namapenyakit,'String','','Enable','on');
set(handles.waktulatih,'String','','Enable','on'); set(handles.Sul,'Value',0);
set(handles.Per,'Value',0); set(handles.Bat,'Value',0); set(handles.Mua,'Value',0); set(handles.Sua,'Value',0); set(handles.Nye,'Value',0); set(handles.Mun,'Value',0); set(handles.Ada,'Value',0); set(handles.Lam,'Value',0); set(handles.Atp,'Value',0); set(handles.Sen,'Value',0); set(handles.Kem,'Value',0); set(handles.Ane,'Value',0); set(handles.Ras,'Value',0); set(handles.Pen,'Value',0); set(handles.Tm,'Value',0); set(handles.Md,'Value',0); set(handles.Kel,'Value',0); set(handles.Keh,'Value',0); set(handles.Sak,'Value',0);
% ---function beranda_Callback(hObject, eventdata, handles)
Beranda
delete(handles.figure1)
% ---function menubam_Callback(hObject, eventdata, handles)
% ---function menulvq_Callback(hObject, eventdata, handles)
% ---function bantuan_Callback(hObject, eventdata, handles)
UjiBAM.m
function varargout = UjiBAM(varargin) % UJIBAM M-file for UjiBAM.fig
gui_Singleton = 1;
(9)
'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @UjiBAM_OpeningFcn, ... 'gui_OutputFcn', @UjiBAM_OutputFcn, ... 'gui_LayoutFcn', [] , ...
'gui_Callback', []); if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1}); end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else
gui_mainfcn(gui_State, varargin{:}); end
% End initialization code - DO NOT EDIT
% --- Executes just before UjiBAM is made visible.
function UjiBAM_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject;
% Update handles structure guidata(hObject, handles);
% --- Outputs from this function are returned to the command line. function varargout = UjiBAM_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output;
% --- Executes on button press in tombolreset.
function tombolreset_Callback(hObject, eventdata, handles) xlswrite('databam.xlsx', '0','nilai','B2:U2');
set(handles.namapenyakit,'String','','Enable','on'); set(handles.jenisobat,'String','','Enable','on'); set(handles.waktuuji,'String','','Enable','on'); set(handles.Sul,'Value',0);
set(handles.Per,'Value',0); set(handles.Bat,'Value',0); set(handles.Mua,'Value',0); set(handles.Sua,'Value',0); set(handles.Nye,'Value',0); set(handles.Mun,'Value',0); set(handles.Ada,'Value',0); set(handles.Lam,'Value',0); set(handles.Atp,'Value',0); set(handles.Sen,'Value',0); set(handles.Kem,'Value',0); set(handles.Ane,'Value',0); set(handles.Ras,'Value',0); set(handles.Pen,'Value',0); set(handles.Tm,'Value',0); set(handles.Md,'Value',0); set(handles.Kel,'Value',0); set(handles.Keh,'Value',0); set(handles.Sak,'Value',0);
% --- Executes on button press in tombolhasil.
function tombolhasil_Callback(hObject, eventdata, handles) tStart=tic;
a = get(handles.Sul,'Value'); b = get(handles.Per,'Value');
(10)
c = get(handles.Bat,'Value'); d = get(handles.Mua,'Value'); e = get(handles.Sua,'Value'); f = get(handles.Nye,'Value'); g = get(handles.Mun,'Value'); h = get(handles.Ada,'Value'); i = get(handles.Lam,'Value'); j = get(handles.Atp,'Value'); k = get(handles.Sen,'Value'); l = get(handles.Kem,'Value'); m = get(handles.Ane,'Value'); n = get(handles.Ras,'Value'); o = get(handles.Pen,'Value'); p = get(handles.Tm,'Value'); q = get(handles.Md,'Value'); r = get(handles.Kel,'Value'); s = get(handles.Keh,'Value'); t = get(handles.Sak,'Value');
data_uji = [a b c d e f g h i j k l m n o p q r s t]; for indeks = 1 : 20
if (data_uji(indeks) == 0) data_uji(indeks) = -1; else
data_uji(indeks) = 1; end
end
w = xlsread('bam.xlsx','bobot','A1:P20'); %20x16 output_uji = data_uji * w; %1x16
for indeks = 1 : 16
if (output_uji(indeks) < 0) output_uji(indeks) = -1; else
output_uji(indeks) = 1; end
end
output_uji
target1 = [1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1]; target2 = [-1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1]; target3 = [-1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1]; target4 = [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1];
if isequal (output_uji,target1)
set(handles.namapenyakit,'String','Radang Kerongkongan (reflux oesophagitis)');
set(handles.jenisobat,'String','Ranitidin , Omeprazole , Domperidone , Antasida , Sukralfat');
elseif isequal (output_uji,target2)
(11)
set(handles.jenisobat,'String','Omeprazole , Antasida , Bismuth , Amoxixilin , Claritromixin)');
elseif isequal (output_uji,target3)
set(handles.namapenyakit,'String','Tukak Lambung-Usus (ulcus pepticum)');
set(handles.jenisobat,'String','Antasida , Bismuth , Sukralfat , Ranitidin , Omeprazole');
elseif isequal (output_uji,target4)
set(handles.namapenyakit,'String','Kanker Lambung');
set(handles.jenisobat,'String','Kemoterapi , Radiasi , Operasi'); else
set(handles.namapenyakit,'String','Tidak Dikenali'); end
waktupengujian = toc(tStart);
set(handles.waktuuji,'string',waktupengujian); % --- Executes on button press in Sul.
function Sul_Callback(hObject, eventdata, handles)
% --- Executes on button press in Per.
function Per_Callback(hObject, eventdata, handles)
% --- Executes on button press in Bat.
function Bat_Callback(hObject, eventdata, handles)
% --- Executes on button press in Mua.
function Mua_Callback(hObject, eventdata, handles)
% --- Executes on button press in Sua.
function Sua_Callback(hObject, eventdata, handles) % --- Executes on button press in Nye.
function Nye_Callback(hObject, eventdata, handles)
% --- Executes on button press in Mun.
function Mun_Callback(hObject, eventdata, handles) % --- Executes on button press in Ada.
function Ada_Callback(hObject, eventdata, handles)
% --- Executes on button press in Lam.
function Lam_Callback(hObject, eventdata, handles) % --- Executes on button press in Atp.
function Atp_Callback(hObject, eventdata, handles) % --- Executes on button press in Sen.
function Sen_Callback(hObject, eventdata, handles) % --- Executes on button press in Kem.
LatihLVQ.m
function varargout = LatihLVQ(varargin) % LATIHLVQ M-file for LatihLVQ.fig gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ...
(12)
'gui_OpeningFcn', @LatihLVQ_OpeningFcn, ... 'gui_OutputFcn', @LatihLVQ_OutputFcn, ... 'gui_LayoutFcn', [] , ...
'gui_Callback', []); if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1}); end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else
gui_mainfcn(gui_State, varargin{:}); end
% End initialization code - DO NOT EDIT % --- Executes on button press in Sak.
function Sak_Callback(hObject, eventdata, handles) % --- Executes on button press in tombolreset.
function tombolreset_Callback(hObject, eventdata, handles) xlswrite('datalvq.xlsx', '0','nilai','B2:U2');
set(handles.namapenyakit,'String','','Enable','on'); set(handles.waktu,'String','','Enable','on');
set(handles.Sul,'Value',0); set(handles.Per,'Value',0); set(handles.Bat,'Value',0); set(handles.Mua,'Value',0); set(handles.Sua,'Value',0); set(handles.Nye,'Value',0); set(handles.Mun,'Value',0); set(handles.Ada,'Value',0); set(handles.Lam,'Value',0); set(handles.Atp,'Value',0); set(handles.Sen,'Value',0); set(handles.Kem,'Value',0); set(handles.Ane,'Value',0); set(handles.Ras,'Value',0); set(handles.Pen,'Value',0); set(handles.Tm,'Value',0); set(handles.Md,'Value',0); set(handles.Kel,'Value',0); set(handles.Keh,'Value',0); set(handles.Sak,'Value',0);
function namapenyakit_Callback(hObject, eventdata, handles)
% --- Executes during object creation, after setting all properties. function namapenyakit_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); end
% --- Executes on button press in tombolsimpan.
function tombolsimpan_Callback(hObject, eventdata, handles) a = get(handles.Sul,'Value');
b = get(handles.Per,'Value'); c = get(handles.Bat,'Value');
(13)
d = get(handles.Mua,'Value'); e = get(handles.Sua,'Value'); f = get(handles.Nye,'Value'); g = get(handles.Mun,'Value'); h = get(handles.Ada,'Value'); i = get(handles.Lam,'Value'); j = get(handles.Atp,'Value'); k = get(handles.Sen,'Value'); l = get(handles.Kem,'Value'); m = get(handles.Ane,'Value'); n = get(handles.Ras,'Value'); o = get(handles.Pen,'Value'); p = get(handles.Tm,'Value'); q = get(handles.Md,'Value'); r = get(handles.Kel,'Value'); s = get(handles.Keh,'Value'); t = get(handles.Sak,'Value');
penyakit= [a b c d e f g h i j k l m n o p q r s t]; for indeks = 1 : 20
if (penyakit(indeks) == 0) penyakit(indeks) = -1; else
penyakit(indeks) = 1; end
end
nm = get(handles.namapenyakit,'String'); if (strcmp(nm , 'Radang Kerongkongan 1'))
xlswrite('lvq.xlsx',penyakit,'Nilai','B1:U1'); elseif (strcmp(nm , 'Radang Kerongkongan 2')) xlswrite('lvq.xlsx',penyakit,'Nilai','B2:U2'); elseif (strcmp(nm , 'Radang Kerongkongan 3')) xlswrite('lvq.xlsx',penyakit,'Nilai','B3:U3'); elseif (strcmp(nm , 'Radang Kerongkongan 4')) xlswrite('lvq.xlsx',penyakit,'Nilai','B4:U4'); elseif (strcmp(nm , 'Radang Kerongkongan 5')) xlswrite('lvq.xlsx',penyakit,'Nilai','B5:U5');
elseif (strcmp(nm , 'Radang Lambung 1'))
xlswrite('lvq.xlsx',penyakit,'Nilai','B6:U6'); elseif (strcmp(nm , 'Radang Lambung 2'))
xlswrite('lvq.xlsx',penyakit,'Nilai','B7:U7'); elseif (strcmp(nm , 'Radang Lambung 3'))
xlswrite('lvq.xlsx',penyakit,'Nilai','B8:U8'); elseif (strcmp(nm , 'Radang Lambung 4'))
xlswrite('lvq.xlsx',penyakit,'Nilai','B9:U9'); elseif (strcmp(nm , 'Radang Lambung 5'))
xlswrite('lvq.xlsx',penyakit,'Nilai','B10:U10');
elseif (strcmp(nm , 'Tukak Lambung 1'))
(14)
elseif (strcmp(nm , 'Tukak Lambung 2'))
xlswrite('lvq.xlsx',penyakit,'Nilai','B12:U12'); elseif (strcmp(nm , 'Tukak Lambung 3'))
xlswrite('lvq.xlsx',penyakit,'Nilai','B13:U13'); elseif (strcmp(nm , 'Tukak Lambung 4'))
xlswrite('lvq.xlsx',penyakit,'Nilai','B14:U14'); elseif (strcmp(nm , 'Tukak Lambung 5'))
xlswrite('lvq.xlsx',penyakit,'Nilai','B15:U15');
elseif (strcmp(nm , 'Kanker Lambung 1'))
xlswrite('lvq.xlsx',penyakit,'Nilai','B16:U16'); elseif (strcmp(nm , 'Kanker Lambung 2'))
xlswrite('lvq.xlsx',penyakit,'Nilai','B17:U17'); elseif (strcmp(nm , 'Kanker Lambung 3'))
xlswrite('lvq.xlsx',penyakit,'Nilai','B18:U18'); elseif (strcmp(nm , 'Kanker Lambung 4'))
xlswrite('lvq.xlsx',penyakit,'Nilai','B19:U19'); elseif (strcmp(nm , 'Kanker Lambung 5'))
xlswrite('lvq.xlsx',penyakit,'Nilai','B20:U20'); end
penyakit = [];
pesan = msgbox('Data telah disimpan', 'Berhasil'); function waktu_Callback(hObject, eventdata, handles) % hObject handle to waktu (see GCBO)
% --- Executes during object creation, after setting all properties. function waktu_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); end
% --- Executes on button press in tombollatih.
function tombollatih_Callback(hObject, eventdata, handles) tStart = tic; %untuk waktu
%target 1 x 20
w1_awal = [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1]; %kelas 1
w2_awal = [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1]; %kelas 2
w3_awal = [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1]; %kelas 3
w4_awal = [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1]; %kelas 4
input1 = xlsread('lvq.xlsx', 'nilai', 'B1:U1'); %1x20 input2 = xlsread('lvq.xlsx', 'nilai', 'B2:U2');
input3 = xlsread('lvq.xlsx', 'nilai', 'B3:U3'); input4 = xlsread('lvq.xlsx', 'nilai', 'B4:U4');
input5 = xlsread('lvq.xlsx', 'nilai', 'B5:U5'); %1x20 input6 = xlsread('lvq.xlsx', 'nilai', 'B6:U6');
input7 = xlsread('lvq.xlsx', 'nilai', 'B7:U7'); input8 = xlsread('lvq.xlsx', 'nilai', 'B8:U8');
input9 = xlsread('lvq.xlsx', 'nilai', 'B9:U9'); %1x20 input10 = xlsread('lvq.xlsx', 'nilai', 'B10:U10'); input11 = xlsread('lvq.xlsx', 'nilai', 'B11:U11'); input12 = xlsread('lvq.xlsx', 'nilai', 'B12:U12');
(15)
input13 = xlsread('lvq.xlsx', 'nilai', 'B13:U13'); %1x20 input14 = xlsread('lvq.xlsx', 'nilai', 'B14:U14');
input15 = xlsread('lvq.xlsx', 'nilai', 'B15:U15'); input16 = xlsread('lvq.xlsx', 'nilai', 'B16:U16');
input17 = xlsread('lvq.xlsx', 'nilai', 'B17:U17'); %1x20 input18 = xlsread('lvq.xlsx', 'nilai', 'B18:U18');
input19 = xlsread('lvq.xlsx', 'nilai', 'B19:U19'); input20 = xlsread('lvq.xlsx', 'nilai', 'B20:U20'); pola = [input1 ; input2 ; input3 ; input4; input5 ; input6 ; input7 ; input8 ; input9 ; input10; input11; input12; input13 ; input14 ; input15 ; input16 ; input17; input18; input19; input20]; kelas = [1 ; 2 ; 3 ; 4];
a = 0.05;
max_epoch = 100000; epoch = 0;
w11 = 0; w22 = 0; w33 = 0; w44 = 0;
while epoch <= max_epoch
for i = 1 : 20 %jumlah input
for j = 1 : 20 %jumlah indeks input
w11 = w11 + ((pola(i,j) - w1_awal(j))^2); w22 = w22 + ((pola(i,j) - w2_awal(j))^2); w33 = w33 + ((pola(i,j) - w3_awal(j))^2); w44 = w44 + ((pola(i,j) - w4_awal(j))^2); end
w11 = sqrt(w11); w22 = sqrt(w22); w33 = sqrt(w33); w44 = sqrt(w44);
%mencari nilai minimum data = [w11 w22 w33 w44]; if (min(data) == w11) for j = 1 : 20
w1_baru(j) = w1_awal(j) + a * (pola(i,j) - w1_awal(j));
end
w1_awal = w1_baru; elseif (min(data) == w22) for j = 1 : 20
w2_baru(j) = w2_awal(j) + a * (pola(i,j) - w2_awal(j));
end
w2_awal = w2_baru; elseif (min(data) == w33) for j = 1 : 20
w3_baru(j) = w3_awal(j) + a * (pola(i,j) - w3_awal(j));
end
w3_awal = w3_baru; elseif (min(data) == w44)
(16)
for j = 1 : 20
w4_baru(j) = w4_awal(j) + a * (pola(i,j) - w4_awal(j));
end
w4_awal = w4_baru; end
end
epoch = epoch + 1; a = 0.1 * a;
end
xlswrite('lvq.xlsx',epoch,'bobot','B2'); xlswrite('lvq.xlsx',w1_awal,'bobot','B3:U3'); xlswrite('lvq.xlsx',w2_awal,'bobot','B4:U4'); xlswrite('lvq.xlsx',w3_awal,'bobot','B5:U5'); xlswrite('lvq.xlsx',w4_awal,'bobot','B6:U6'); waktupengujian = toc(tStart);
set(handles.waktu,'string',waktupengujian);
pesan = msgbox('Data telah dilatih', 'Berhasil');
% ---LatihBAM
delete(handles.figure1)
% ---function ujibam_Callback(hObject, eventdata, handles)
UjiBAM
delete(handles.figure1)
UjiLVQ.m
function varargout = UjiLVQ(varargin) % UJILVQ M-file for UjiLVQ.fig
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @UjiLVQ_OpeningFcn, ... 'gui_OutputFcn', @UjiLVQ_OutputFcn, ... 'gui_LayoutFcn', [] , ...
'gui_Callback', []); if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1}); end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else
gui_mainfcn(gui_State, varargin{:});
% --- Executes on button press in tombolreset.
function tombolreset_Callback(hObject, eventdata, handles) xlswrite('datalvq.xlsx', '0','nilai','B2:U2');
set(handles.namapenyakit,'String','','Enable','on'); set(handles.jenisobat,'String','','Enable','on'); set(handles.waktuuji,'String','','Enable','on'); set(handles.Sul,'Value',0);
set(handles.Per,'Value',0); set(handles.Bat,'Value',0); set(handles.Mua,'Value',0); set(handles.Sua,'Value',0);
(17)
set(handles.Nye,'Value',0); set(handles.Mun,'Value',0); set(handles.Ada,'Value',0); set(handles.Lam,'Value',0); set(handles.Atp,'Value',0); set(handles.Sen,'Value',0); set(handles.Kem,'Value',0); set(handles.Ane,'Value',0); set(handles.Ras,'Value',0); set(handles.Pen,'Value',0); set(handles.Tm,'Value',0); set(handles.Md,'Value',0); set(handles.Kel,'Value',0); set(handles.Keh,'Value',0); set(handles.Sak,'Value',0);
% --- Executes on button press in tombolhasil.
function tombolhasil_Callback(hObject, eventdata, handles) tStart=tic;
a = get(handles.Sul,'Value'); b = get(handles.Per,'Value'); c = get(handles.Bat,'Value'); d = get(handles.Mua,'Value'); e = get(handles.Sua,'Value'); f = get(handles.Nye,'Value'); g = get(handles.Mun,'Value'); h = get(handles.Ada,'Value'); i = get(handles.Lam,'Value'); j = get(handles.Atp,'Value'); k = get(handles.Sen,'Value'); l = get(handles.Kem,'Value'); m = get(handles.Ane,'Value'); n = get(handles.Ras,'Value'); o = get(handles.Pen,'Value'); p = get(handles.Tm,'Value'); q = get(handles.Md,'Value'); r = get(handles.Kel,'Value'); s = get(handles.Keh,'Value'); t = get(handles.Sak,'Value');
penyakit= [a b c d e f g h i j k l m n o p q r s t]; for indeks = 1 : 20
if (penyakit(indeks) == 0) penyakit(indeks) = -1; else
penyakit(indeks) = 1; end
end
bobot1 = 0; bobot2 = 0; bobot3 = 0; bobot4 = 0;
(18)
w1_awal = xlsread('lvq.xlsx', 'bobot', 'B3:U3'); w2_awal = xlsread('lvq.xlsx', 'bobot', 'B4:U4'); w3_awal = xlsread('lvq.xlsx', 'bobot', 'B5:U5'); w4_awal = xlsread('lvq.xlsx', 'bobot', 'B6:U6'); for i = 1 : 20
bobot1 = bobot1 + ((penyakit(i) - w1_awal(i))^2); bobot2 = bobot2 + ((penyakit(i) - w2_awal(i))^2); bobot3 = bobot3 + ((penyakit(i) - w3_awal(i))^2); bobot4 = bobot4 + ((penyakit(i) - w4_awal(i))^2); end
matriks =[ bobot1 bobot2 bobot3 bobot4]; if (min(matriks) == bobot1)
namapenyakit ='Radang Kerongkongan (reflux oesophagitis)'; jenisobat ='Ranitidin , Omeprazole , Domperidone , Antasida , Sukralfat';
elseif (min(matriks) == bobot2)
namapenyakit ='Radang lambung (gastritis)';
jenisobat ='Omeprazole , Antasida , Bismuth , Amoxixilin , Claritromixin';
elseif (min(matriks) == bobot3)
namapenyakit ='Tukak Lambung-Usus (ulcus pepticum)'; jenisobat ='Antasida , Bismuth , Sukralfat , Ranitidin , Omeprazole ';
elseif (min(matriks) == bobot4) namapenyakit ='Kanker Lambung';
jenisobat ='Kemoterapi , Radiasi , Operasi'; else
namapenyakit ='Tidak Dikenali'; end
set(handles.namapenyakit,'string',namapenyakit); set(handles.jenisobat,'string',jenisobat);
guidata(hObject, handles); waktupengujian = toc(tStart);
set(handles.waktuuji,'string',waktupengujian);
function namapenyakit_Callback(hObject, eventdata, handles)
% --- Executes during object creation, after setting all properties. function namapenyakit_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white')
Bantuan.m
function varargout = Bantuan(varargin) % BANTUAN M-file for Bantuan.fig
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Bantuan_OpeningFcn, ... 'gui_OutputFcn', @Bantuan_OutputFcn, ... 'gui_LayoutFcn', [] , ...
(19)
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1}); end
% ---function keluar_Callback(hObject, eventdata, handles)
choice= questdlg ('Apakah Anda Ingin Keluar?','Konfirmasi',... 'Ya','Tidak','Tidak');
switch choice case 'Ya' close all; end
% ---function ujibam_Callback(hObject, eventdata, handles)
UjiBAM
delete(handles.figure1)
% ---function ujilvq_Callback(hObject, eventdata, handles)
UjiLVQ
delete(handles.figure1)
% ---function latihbam_Callback(hObject, eventdata, handles)
LatihBAM
delete(handles.figure1)
% ---function latihlvq_Callback(hObject, eventdata, handles)
LatihLVQ
(20)
CURRICULUM VITAE
Nama : Kh Nisa Dewi
Alamat Sekarang : Jl. Darussalam Sei Musi No 50A
Alamat Orang Tua : P.Siantar
Telp/ Hp : 085370425333
Email : [email protected]
Riwayat Pendidikan
2011 – 2015 : S1 Ilmu Komputer Universitas Sumatera Utara, Medan
2008 – 2011 : SMA Negeri 1 Dolok Batu Nanggar
2005 – 2008 : SMP Negeri 1 Dolok Batu Nanggar
1999 – 2005 : SD Negeri 091663 Laras
Keahlian/Kursus yang diikuti Programming, Bahasa Inggris
(21)
DAFTAR PUSTAKA
Anifah, L. 2009. Pengenalan Plat Mobil Indonesia menggunakan Learning Vector Quantization. Jurnal Fisika dan Aplikasinya Volume 5, Nomor 1. Universitas Negeri Surabaya.
Arifin, Z. 2009. Jaringan Syaraf Tiruan Bidirectional Associative Memory (BAM)
Sebagai Identifikasi Pola Sidik Jari Manusia. Jurnal. Samarinda : Universitas Mulawarman.
Astuti, E. D. 2009. Pengantar Jaringan Saraf Tiruan. STAR PUBLISHING. Jateng.
Aziz, A. & Kurniawan, T. 2006. Identifikasi Pola Sidik Jari dengan Jaringan Syaraf Tiruan Bidirectional Associative Memory. Jurnal. Universitas Gadjah Mada
Chartier, S. 2006. A Bidirectional Heteroassociative Memory for Binary and Grey-Level Patterns. Journal IEEE Transactions on Neural Networks, Vol. 17, No. 2.
Hermawan, A. 2006. Jaringan Saraf Tiruan, Teori dan Aplikasi. ANDI. Yogyakarta.
Kosko, B. 1988. Bidirectional Associative Memory. Journal IEEE Transactions on System, Man, and Cybernetics 18(1) : 49 - 60.
Kurniati, Y. 2014. Implementasi Metode Bidirectional Associative Memory Pada Absensi Berbasis Identifikasi Wajah. Skripsi. Ilmu Komputer. USU.
Kusumadewi, S. 2005. Membangun Jaringan Syaraf Tiruan Menggunakan Matlab &
Excel Link. Graha Ilmu: Yogyakarta.
Kuwati. 2009. Sistem Pakar Pendeteksi Penyakit Saluran Pencernaan Pada Manusia Menggunakan Metode Forward Chaining dan Visual Basic 2010. Jurnal TransIT Volume 1 Nomer 1. Universitas Semarang.
(22)
Puspitaningrum, D. 2006. Pengantar Jaringan Saraf Tiruan. Penerbit Andi: Yogyakarta.
Sahat, S. 2012. Panduan Penggunaan Obat. Jakarta; Rosemata Publisher.
Siahaan, A. 2011. Pengenalan Karakter Dan Manajemen Database Pada Formulir Isian Menggunakan Jaringan Syaraf Tiruan Dengan Metode Learning Vector Quantization (Lvq). TugasAkhir. Ilmu Komputer. USU.
Siang, J.J. 2005. Jaringan Syaraf Tiruan & Pemrogramannya Menggunakan Matlab.
ANDI. Yogyakarta.
Suyanto. 2014. Artificial Intelligence. Informatika : Bandung.
T, Subekti. & Utami, M.S. 2011. Metode Relaksasi Untuk Menurunkan Stres Dan Keluhan Tukak Lambung Pada Penderita Tukak Lambung Kronis. Jurnal Psikologi. Volume 38, No.2. Universitas Gadjah Mada.
Tjay, T. H.& Rahardja, K. 2005. Obat-obat Penting Khasiat, Penggunaan, dan Efek-efek Sampingnya. Jakarta; Kelompok Gramedia.
(23)
BAB 3
ANALISIS DAN PERANCANGAN SISTEM
3.1. Analisis Sistem
Analisis sistem adalah suatu tahapan sistem yang dilakukan untuk membantu memahami suatu masalah dan apa yang akan menjadi kebutuhan sistem. Tujuannya adalah untuk membantu mengetahui masalah yang ada dan merancang model suatu sistem yang nantinya akan dibangun sehingga menjadi tepat guna.
3.1.1. Analisis masalah
Masalah yang ada pada perancangan sistem ini adalah membandingkan kecepatan dan ketepatan antara algoritma Bidirectional Associative Memory dan Learning Vector Quantization dalam menentukan obat penyakit saluran cerna lambung-usus yang bertujuan untuk mengetahui algoritma mana yang lebih tepat digunakan dalam menentukan obat yang tepat berdasarkan diagnosa penyakit saluran cerna lambung-usus. Dengan alasan sebagai berikut :
1. Penyakit saluran cerna lambung-usus merupakan penyakit dalam yang harus segera ditangani pengobatannya agar tidak menjadi lebih kronis.
2. Jenis obat yang digunakan untuk meringankan penyakit saluran cerna lambung usus adalah Antasida, Ranitidin, Omeprazole, Domperidone, Sukralfat, Bismuth, Amoxixilin, Claritromixin, Kemoterapi, Radiasi, dan Operasi. Oleh karena itu, dibutuhkan waktu seefisien mungkin untuk menentukan jenis obat dari penyakit saluran cerna lambung-usus dan dibutuhkan pencatat waktu untuk mencatat dan mengetahui algoritma mana yang lebih cepat dalam menentukan obat penyakit saluran cerna lambung-usus.
3. Penyakit saluran cerna lambung-usus seperti radang kerongkongan, radang lambung, tukak lambung, dan kanker lambung memiliki gejala yang hampir mirip yaitu
(24)
a. Gejala penyakit Radang Kerongkongan (Reflux Oesophagitis) 1. Sulit menelan
2. Perasaan asam atau pahit dimulut
3. Batuk
4. Mual
5. Suara serak 6. Nyeri di ulu hati
7. Muntah
b. Gejala penyakit Radang Lambung (Gastritis) 1. Nyeri di ulu hati
2. Muntah
3. Adanya gangguan pada pencernaan
4. Nyeri lambung
5. Adakalanya terjadi pendarahan
6. Kembung dan mual
7. Rasa penuh di ulu hati (cepat kenyang)
c. Gejala penyakit Tukak Lambung-Usus (Ulcus Pepticum) 1. Nyeri di ulu hati
2. Muntah
3. Sendawa
4. Kembung dan mual
5. Anemia
6. Rasa penuh di ulu hati (cepat kenyang)
7. Pendarahan lambung
d. Gejala penyakit Kanker Lambung
1. Sulit menelan 2. Nyeri di ulu hati
3. Tidak mau makan
4. Muntah darah
5. Keluar BAB dengan warna hitam pekat
6. Kehilangan berat badan mendadak
(25)
Oleh karena itu, dibutuhkan ketepatan hasil agar jenis obat yang dibutuhkan sesuai dengan diagnosa penyakit yang dialami. Dan dalam menentukan ketepatan hasil dari diagnosa penyakit, maka diperlukan aturan yang harus diperhatikan yaitu ;
1. Untuk menentukan diagnosa penyakit maka lihat terebih dahulu seberapa besar gejala yang dialami pasien terhadap suatu penyakit.
Sebagai contoh pasien lebih banyak mengalami gejala penyakit radang kerongkongan dibandingkan dengan penyakit lain maka pasien termasuk ke dalam penyakit radang kerongkongan. Begitu juga untuk gejala penyakit yang lainnya.
2. Jenis obat yang akan digunakan berdasarkan diagnosa penyakit bukan berdasarkan gejala penyakit. Jadi jenis obat sudah dikelompokkan ke dalam tiap masing-masing penyakit.
Penyebab dan dampak dari permasalahan tersebut diperlihatkan pada diagram
Ishikawa pada Gambar 3.1.
Manusia Metode
Material Teknologi
Menentukan metode tercepat dan paling tepat dalam menentukan obat dari penyakit saluran cerna
lambung-usus Bahasa Pemrograman
Matlab BAM dan LVQ Diperlukan diagnosa
penyakit untuk menentukan jenis obat
yang tepat
Metode BAM dan LVQ untuk menetukan jenis obat
penyakit saluran cerna lambung-usus
Gambar 3.1. Diagram Ishikawa Analisis Permasalahan
3.1.2. Analisis kebutuhan sistem
Analisis kebutuhan sistem meliputi analisis kebutuhan fungsional sistem dan analisis kebutuhan non-fungsional sistem.
3.1.2.1.Kebutuhan fungsional sistem
Kebutuhan fungsional yang harus dimiliki oleh sistem penentuan obat penyakit saluran cerna lambung-usus adalah :
(26)
1. Sistem dapat mendiagnosa penyakit berdasarkan masukan user (pengguna). 2. Sistem dapat menentukan jenis obat berdasarkan hasil diagnosa penyakit. 3. Sistem dapat menampilkan nama penyakit dan jenis obat.
4. Sistem dapat menampilkan waktu pelatihan. 5. Sistem dapat menampilkan waktu uji.
3.1.2.2.Kebutuhan non-fungsional sistem
Kebutuhan non-fungsional yang dimiliki oleh sistem adalah : 1. Interface sistem mudah dipahami oleh user (pengguna). 2. Sistem dapat dioperasikan dengan mudah oleh user.
3. Data yang terdapat pada sistem merupakan data yang relevan, sehingga dapat menghasilkan pengenalan yang tepat.
4. Cara kerja sistem dilakukan dengan menguji coba sistem tersebut dengan data yang telah diketahui hasilnya terlebih dahulu.
3.1.3. Analisis proses sistem
Sistem ini menggunakan dua algoritma yaitu Bidirectional Associative Memory dan
Learning Vector Quantization. Algoritma tersebut bertujuan untuk menentukan obat penyakit saluran cerna lambung-usus. Berikut ini adalah contoh bagaimana penerapan algoritma Bidirectional Associative Memory dan Learning Vector Quantization.
3.1.3.1. Analisis proses Bidirectional Associative Memory
Pada proses BAM, input (masukan) dari data pelatihan ada 20 data berupa gejala umum penyakit, dan target yang diinginkan ada 4 klasifikasi penyakit yaitu radang kerongkongan, radang lambung, tukak lambung, dan kanker lambung beserta jenis obat dari penyakit tersebut seperti antasida, ranitidine, omeprazole, domperidone, sukralfat, bismuth, amoxixilin, claritromixin. lansoprazole. Kenapa 20 data gejala penyakit ? Karena semakin banyak data yang dilatih maka akan semakin banyak pula mengenali pola yang lain. Inputan gejala yang dipilih akan di ubah ke dalam bentuk vektor. Dengan kondisi jika checkbox diberi tanda maka akan bernilai 1 dan yang tidak diberi tanda akan bernilai -1 karena algoritma BAM menggunakan fungsi aktivasi bipolar.
(27)
Untuk proses selanjutnya , di dalam sistem ini akan melatih sebanyak 20
neuron sebagai masukan dan 4 neuron sebagai hasil keluaran. Kemudian matriks bobot dihitung berdasarkan hasil transpose setiap masukan dikali dengan setiap hasil keluaran. Setelah itu dilakukan pemanggilan pola input untuk mengecek apakah hasilnya sesuai dengan target output yang telah ditentukan. Sedangkan untuk tahap pengujian, dilakukan perhitungan untuk mencari nilai masukan yang akan diuji dengna cara mengalikan output yang telah ditentukan dengan hasil transpose bobot yang sudah didapat sebelumnya. Setelah dilakukan perhitungan maka dapat dilihat apakah hasilnya akan sesuai dengan target output atau tidak, jika ya maka akan dikenali penyakit dan jenis obatnya dan jika tidak maka sebaliknya.
Untuk lebih jelas lagi berikut adalah contoh sederhana dari algoritma BAM dalam melakukan pelatihan dan pengujian terhadap suatu pola.
Misalnya dalam menentukan obat penyakit saluran cerna lambung-usus dibutuhkan gejala-gejala yang dialami penderita , dimana gejala tersebut dapat diartikan sebagai pola input, sedangkan penyakit beserta obatnya merupakan pola output.
1. Atur pola input dan pola output
Misalkan ada 2 pola input berupa gejala penyakit dan 2 pola output sebagai berikut :
Pola 1 : Gejala 1
x1: 1 1 1 1 –1 1 1 1 1 y1 -1 1
Pola 2 : Gejala 2
x2 : 1 –1 1 –1 1 –1 1 -1 1 y2 1 1
2. Hitung matriks bobot dari pola X ke pola Y Matriks bobot untuk pola 1:
(28)
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 * 1 1 1 1 1 1 1 1 1 1 wMatriks bobot untuk pola 2 :
w1 = x2t *y2
wtotal = w1 + w2
2 0 0 2 2 0 0 2 0 2 0 2 2 0 0 2 2 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 total w
Matriks bobot tersebut merupakan penghubung antara neuron-neuron di lapisan
input dengan neuron-neuron di lapisan output. Sedangkan matriks bobot yang menghubungkan antara neuron-neuron di lapisan output ke neuron-neuron yang ada di lapisan input adalah WT.
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 * 1 1 1 1 1 1 1 1 1 2 w(29)
3. Recall pola input
ij i
i x W
in
y_ *
Tentukan nilai yi dengan membandingkan nilai y_ini dengan threshold
Jika y_ini >= maka yi = 1 Jika y_ini < maka yi = -1
2 0 2 0 0 0 2 0 2 0 2 0 2 2 2 0 2 0 )
(wtotal T
Misalkan kita ingin menguji bobot tersebut dengan pola input ke-1 yaitu gejala 1, maka output yang dihasilkan adalah :
10 8
2 0 0 2 2 0 0 2 0 2 0 2 2 0 0 2 2 0 * 1 1 1 1 1 1 1 1 1 ) ( *
_ 1 1
T total w x in y
Karena (y_in1(1) = –10 < 0, maka y1(1) = -1) dan (y_in1(2) = 8 > 0, maka y1(2) =
1), maka dari hasil pengujian didapat nilai y1 = [-1 1], yaitu sesuai dengan target
yang diharapkan.
Sedangkan untuk pola input ke-2 yaitu gejala 2, maka output yang dihasilkan adalah:
10 8
2 0 0 2 2 0 0 2 0 2 0 2 2 0 0 2 2 0 * 1 1 1 1 1 1 1 1 1 ) ( *
_ 2 2
T total w x in y
(30)
Karena (y_in2(1) = 10 > 0, maka y2(1) = 1) dan (y_in2(2) = 8 > 0, maka y2(2) = 1),
maka dari hasil pengujian didapat nilai y2 = [1 1], yaitu sesuai dengan target yang
diharapkan.
4. Balik arah, cari nilai x_ini
Sekarang kita balik, dimana y digunakan sebagai input untuk mendapatkan x output. Misalkan kita cobakan vektor input ke-1 yaitu y1 = [-1 1], maka output
yang dihasilkan: 2 0 2 0 0 0 2 0 2 0 2 0 2 2 2 0 2 0 * ] 1 1 [ ) ( *
_ 1 1
T total w y in x
]
1
1
1
1
1
1
1
1
1
[
]
2
2
2
2
2
2
2
2
2
[
Setelah dilakukan perhitungan ternyata hasilnya sesuai dengan target, yaitu gejala 1.
Dan untuk vektor input ke-2 yaitu y2 = [1 1], maka output yang dihasilkan:
2 0 2 0 0 0 2 0 2 0 2 0 2 2 2 0 2 0 * ] 1 1 [ ) ( *
_in2 y2 wtotal T
x ] 1 1 1 1 1 1 1 1 1 [ ] 2 2 2 2 2 2 2 2 2 [
Setelah dilakukan perhitungan ternyata hasilnya sesuai dengan target, yaitu gejala 2.
3.1.3.2. Analisis Proses Learning Vector Quantization
Sama halnya dengan algoritma BAM, di dalam proses algoritma LVQ juga akan dimasukkan 20 data dan juga 4 target kelas yang akan digunakan nantinya. Berikut adalah contoh proses pelatihan algoritma LVQ.
Misalnya dalam menentukan obat penyakit saluran cerna lambung-usus dibutuhkan gejala-gejala yang dialami penderita , dimana gejala tersebut dapat diartikan sebagai input vektor, sedangkan penyakit beserta obatnya merupakan kelas yang akan ditentukan.
Contoh penerapan algoritma LVQ :
1. Misalkan inisialisasi bobot (bobot awal) :
w1 : 1 1 1 1 0 kelas 1
(31)
α : 0,05
MaxEpoch: 10
Penurunan α : 0,1*α(lama)
2. Misalnya diketahui 3 input vektor sebagai berikut :
x1: 1 1 1 01 x2 : 1 0 0 0 0 x3: 1 0 1 1 1
Penetapan kondisi awal :
Epoch : 0
Error : 1
3. Untuk epoch ke-1
- Data ke-1 adalah x1: (1 1 1 0 1)
Bobot ke-1 = = 1,4
Bobot ke-2 = = 1
Dari data ke-1 jarak terkecil terdapat pada bobot ke-2, maka target data ke-1 = kelas ke-2 dan bobot ke-2 baru adalah :
w11(baru) = w11(lama) + α[x11– w11 (lama)] = 1+0,5*(1-1) = 1 w12(baru) = w12(lama) + α[x12 – w12 (lama)] = 0+0,5*(1-0) = 0,5 w13(baru) = w13(lama) + α[x13 – w13 (lama)] = 1+0,5*(1-1) = 1 w14(baru) = w14(lama) + α[x14 – w14 (lama)] = 0+0,5*(0-0) = 0 w15(baru) = w15(lama) + α[x15 – w15 (lama)] = 1+0,5*(1-1) = 1 Sehingga,w2 = (1 0,5 1 0 1) dan w1 = (1 1 1 1 0)
- Data ke-2 adalah x2 : (1 0 0 0 0)
Bobot ke-1 = = 1,7
Bobot ke-2 = = 1,5
Dari data ke-2 jarak terkecil terdapat pada bobot ke-2, maka target data ke-2 = kelas ke-2 dan bobot ke-2 baru adalah :
w11(baru) = w11(lama) + α[x11 – w11 (lama)] = 1+0,5*(1-1) = 1 w12(baru) = w12(lama) + α[x12 – w12 (lama)] = 0,5+0,5*(0-0,5) = 0,25 w13(baru) = w13(lama) + α[x13 – w13 (lama)] = 1+0,5*(0-1) = 0,5 w14(baru) = w14(lama) + α[x14 – w14 (lama)] = 0+0,5*(0-0) = 0
(32)
w15(baru) = w15(lama) + α[x15 – w15 (lama)] = 1+0,5*(0-1) = 0,5 Sehingga, w2 = (1 0,25 0,5 0 0,5) dan w1 = (1 1 1 1 0)
- Data ke-3 adalah x3:(1 0 1 1 1)
Bobot ke-1 = = 1,4
Bobot ke-2 =
=1,25
Dari data ke-3 jarak terkecil terdapat pada bobot ke-2, maka target data ke-2 = kelas ke-2 dan bobot ke-2 baru adalah :
w11(baru) = w11(lama) + α[x11 – w11 (lama)] = 1+0,5*(1-1) = 1
w12(baru) = w12(lama) + α[x12 – w12 (lama)] = 0,25+0,5*(0-0,25) = 0,125 w13(baru) = w13(lama) + α[x13 – w13 (lama)] = 1+0,5*(1-0,5) = 1,25 w14(baru) = w14(lama) + α[x14 – w14 (lama)] = 1+0*(1-0) = 1 w15(baru) = w15(lama) + α[x15 – w15 (lama)] = 1+0,5*(1-0,5) = 1,25 Sehingga w2 = (1 0,1251,25 11,25) dan w1 = (1 1 1 1 0)
Sebelum masuk keepoch ke-2 maka α diupdate yaitu :
α = 0,1*α(lama) = 0,1*0,05 = 0,005
… dst sampai dengan epoch ke-10
Misalnya setelah epoch ke-10 di dapat bobot : w2 = (1 0,125 1,25 1 1,25) dan
w1 = (1 1 1 1 0)
Maka jika ingin menguji vektor inputan baru misalnya (1 1 1 1 1), dilakukanlah perhitungan untuk mencari jarak terdekatnya :
Bobot ke-1 = = 1
Bobot ke-2 =
= 0,9437
Dari inputan tersebut jarak terkecil terdapat pada bobot ke-2, maka target inputan tersebut adalah kelas ke-2.
(33)
3.2. Pemodelan Sistem
Secara umum, sistem penentuan obat penyakit saluran cerna lambung-usus ini terdiri dari 2 proses, yaitu proses pelatihan inputan dan proses pengujian inputan. Pemodelan kedua proses tersebut akan digambarkan melalui UML (Unified Modelling Language) yang mencakup use case diagram, activity diagran, dan sequence diagram.
Pemodelan sistem ini berfungsi untuk menggambarkan proses sistem dan bagaimana sistem bekerja dalam menentukan obat penyakit saluran cerna lambung-usus dengan
menggunakan perbandingan algoritma Bidirectional Associative Memory dan
Learning Vector Quantization.
3.2.1. Use case diagram
Use case diagram menggambarkan interaksi yang ada pada sistem, baik antara sistem, maupun pengguna sistem dengan eksternal sistem sebagai suatu urutan tindakan yang memberikan nilai terukur untuk aktor (pengguna).
Berikut adalah use case diagram dari sistem penentuan obat penyakit saluran cerna lambung-usus.
Gambar 3.2 Use Case Diagram Sistem Penentu Obat Penyakit Saluran Cerna Lambung-Usus
(34)
3.2.1.1.Use case pelatihan BAM
Berikut adalah dokumentasi naratif dari pelatihan algoritma BAM.
Tabel 3.1 Dokumentasi Naratif Use Case Pelatihan BAM
Nama Use case Proses Pelatihan BAM
Aktor Pengguna
Deskripsi Use case ini mendeskripsikan proses pelatihan untuk
menentukan obat penyakit saluran cerna lambung-usus.
Prakondisi Sistem sudah masuk kedalam tampilan antarmuka
pelatihan dan sudah siap menerima masukan dari Jaringan Syaraf Tiruan.
Bidang Khas
Aksi Aktor Respon Sistem
1. Pengguna memilih tombol Menu Algoritma BAM.
5. Sistem menunjukkan pilihan Sub-Menu Algoritma BAM. 6. Pengguna memilih
sub-menu Pelatihan.
7. Sistem menampilkan antarmuka pelatihan BAM.
8. Pengguna
memasukkan data gejala penyakit dengan mencontreng checkbox
dan mengetikkan nama penyakitkemudian menekan tombol Simpan.
9. Sistem menyimpan data kedalam file (bam.xlsx) , kemudian memunculkan
message box“data berhasil disimpan”.
10. Pengguna menekan tombol Latih BAM.
11. Sistem melakukan pelatihan dan menampilkan hasil pelatihan.
Bidang Alternatif
12. Pengguna akan
memilih tombol Reset.
13. Sistem akan menghapus data gejala umum penyakit.
14. Pengguna akan memilih tombol Keluar.
15. Sistem akan mengakhiri aplikasi.
Post-Kondisi Sistem akan menampilkan hasil pelatihan berupa waktu
(35)
3.2.1.2.Use case pengujian BAM
Berikut adalah dokumentasi naratif dari pengujian algoritma BAM. Tabel 3.2 Dokumentasi Naratif Use Case Pengujian BAM
Nama Use case Proses Pengujian BAM
Aktor Pengguna
Deskripsi Use case ini mendeskripsikan proses Pengujian untuk
menentukan obat penyakit saluran cerna lambung-usus.
Prakondisi Sistem sudah masuk kedalam tampilan antarmuka dan
sudah siap menerima masukan dari Jaringan Saraf Tiruan.
Bidang Khas
Aksi Aktor Respon Sistem
1. Pengguna memilih tombol Menu Algoritma BAM.
2. Sistem menunjukkan pilihan sub-menu Algoritma BAM. 3. Pengguna memilih
sub-menu Pengujian.
4. Sistem menampilkan antarmuka pengujian BAM. 5. Pengguna memasukkan
data gejala penyakit dengan mencontreng
checkbox kemudian
menekan tombol Hasil.
6. Sistem menyimpan data kedalam file (bam.xlsx) , kemudian memunculkan hasil pengujian.
Bidang Alternatif
7. Pengguna akan memilih tombol Reset.
8. Sistem akan menghapus data gejala umum penyakit. 9. Pengguna akan memilih
tombol Keluar.
10. Sistem akan mengakhiri aplikasi.
Post-Kondisi Sistem akan menampilkan hasil pengujian berupa nama
(36)
3.2.1.3.Use case pelatihan LVQ
Berikut adalah dokumentasi naratif dari pelatihan algoritma LVQ.
Tabel 3.3 Dokumentasi Naratif Use Case Pelatihan LVQ
Nama Use case Proses Pelatihan LVQ
Aktor Pengguna
Deskripsi Use case ini mendeskripsikan proses pelatihan untuk
menentukan obat penyakit saluran cerna lambung-usus.
Prakondisi Sistem sudah masuk kedalam tampilan antarmuka
pelatihan dan sudah siap menerima masukan dari Jaringan Syaraf Tiruan.
Bidang Khas
Aksi Aktor Respon Sistem
1. Pengguna memilih tombol Menu Algoritma LVQ.
2. Sistem menunjukkan pilihan Sub-Menu Algoritma LVQ. 3. Pengguna memilih
sub-menu Pelatihan.
4. Sistem menampilkan antarmuka pelatihan LVQ.
5. Pengguna memasukkan data gejala penyakit dengan mencontreng
checkbox dan mengetikkan nama penyakit kemudian menekan tombol Simpan.
6. Sistem menyimpan data kedalam file (lvq.xlsx) , kemudian memunculkan
message box “data berhasil disimpan”.
7. Pengguna menekan tombol Latih LVQ.
8. Sistem melakukan pelatihan dan menampilkan hasil pelatihan.
Bidang Alternatif
9. Pengguna akan
memilih tombol Reset.
10. Sistem akan menghapus data gejala umum penyakit.
11. Pengguna akan
memilih tombol Keluar.
12. Sistem akan mengakhiri aplikasi.
(37)
3.2.1.4.Use case pengujian LVQ
Berikut adalah dokumentasi naratif dari pengujian algoritma LVQ.
Tabel 3.4 Dokumentasi Naratif Use Case Pengujian LVQ
Nama Use case Proses Pengujian LVQ
Aktor Pengguna
Deskripsi Use case ini mendeskripsikan proses Pengujian untuk
menentukan obat penyakit saluran cerna lambung-usus.
Prakondisi Sistem sudah masuk kedalam tampilan antarmuka dan
sudah siap menerima masukan dari Jaringan Syaraf Tiruan.
Bidang Khas
Aksi Aktor Respon Sistem
1. Pengguna memilih tombol Menu Algoritma LVQ.
2. Sistem menunjukkan pilihan sub-menu Algoritma LVQ. 3. Pengguna memilih
sub-menu Pengujian.
4. Sistem menampilkan antarmuka pengujian LVQ. 5. Pengguna memasukkan
data gejala penyakit dengan mencontreng
checkbox kemudian
menekan tombol Hasil.
6. Sistem menyimpan data kedalam file (lvq.xlsx) , memunculkan hasil pengujian.
Bidang Alternatif
7. Pengguna akan memilih tombol Reset.
8. Sistem akan menghapus data gejala umum penyakit. 9. Pengguna akan memilih
tombol Keluar.
10. Sistem akan mengakhiri aplikasi.
Post-Kondisi Sistem akan menampilkan hasil pengujian berupa nama
(38)
3.2.2. Activity diagram
Activity diagram adalah diagram yang menggambarkan aktivitas-aktivitas, objek, dan alur aktivitas dari sebuah sistem. Dengan kata lain activity diagram menggambarkan alur logika dari use case dan langkah-langkah kerja sistem secara berurutan.
Berikut adalah activity diagram dari sistem penentuan obat penyakit saluran cerna lambung-usus.
3.2.2.1. Activity diagram proses pelatihan BAM
Berikut adalah activity diagram dari prses pelatihan algoritma BAM.
(39)
3.2.2.2.Activity diagram proses pengujian BAM
Berikut adalah activity diagram dari prses pengujian algoritma BAM.
(40)
3.2.2.3.Activity diagram proses pelatihan LVQ
Berikut adalah activity diagram dari prses pelatihan algoritma LVQ.
(41)
3.2.2.4. Activity diagram proses pengujian LVQ
Berikut adalah activity diagram dari prses pengujian algoritma LVQ.
(42)
3.2.3. Sequence diagram
Sequence diagram adalah diagram yang menjelaskan interaksi objek yang disusun berdasarkan urutan waktu. Dengan kata lain, sequence diagram adalah gambaran tahap demi tahap, termasuk kronologi (urutan) perubahan secara logis dari sistem.
Berikut adalah sequence diagram dari sistem penentuan obat penyakit saluran cerna lambung-usus.
3.2.3.1. Sequence diagram proses pelatihan BAM
Gambar 3.7 Sequence Diagram Proses Pelatihan BAM
3.2.3.2. Sequence diagram proses pengujian BAM
(43)
3.2.3.3.Sequence diagram proses pelatihan LVQ
Gambar 3.9 Sequence Diagram Proses Pelatihan LVQ
3.2.3.4. Sequence diagram proses pengujian LVQ
(44)
3.3. Pseudocode Program
Pseudocode adalah deskripsi dari algoritma pemrograman komputer yang menggunakan struktur sederhana dari beberapa bahasa pemrograman yang hanya ditulis dalam bahasa universal dan lebih ringkas agar mudah dipahami.
3.3.1. Pseudocode Algoritma BAM
Pelatihan BAM
Pengujian BAM
Input<- data gejala umum penyakit Neuron = 20
set <- target (y)
bobot(w) = input’*target y = input’*w
if (y_in < 0) y_in = -1; else
y_in = 1; end
Input <- data_uji
input <- bobot target kelas output_uji = data_uji*w set <- target
if (output_uji < 0) nama penyakit;
jenis obat; else
tidak dikenali; end
(45)
3.3.2. Pseudocode Algoritma LVQ
Pelatihan LVQ
Pengujian LVQ
Input <- data gejala umum penyakit set <- bobot awal (w_awal)
kelas = 1;2;3;4
while epoch <= max_epoch for i = 1 : 20
for j = 1 : 20
w_baru = w_lama + ((pola(i,j) - w_lama(j))^2); end
w_baru = sqrt(w_baru); data = [w_baru];
if (min(data) == w_baru) for j = 1 : 20
w_baru(j) = w_awal(j) + a *(pola(i,j)–w_awal(j));
end
w_awal = w_baru; end
epoch = epoch + 1; a = 0.1 * a;
end
Input <- data_uji Penyakit = data_uji set <- w_awal = 0 input <- w_lama for i = 1 : 20
w_baru = w_awal + ((penyakit(i) - w_awal(i))^2); end
matriks = [bobot]
if (min(matriks)== w_baru) nama penyakit;
jenis obat; else
tidak dikenali; end
(46)
3.3. Flowchart Sistem
Flowchart adalah gambar yang dilengkapi dengan simbol-simbol, dan setiap simbol memiliki arti dan fungsi yang berbeda. Pada umumnya flowchart digunakan untuk menggambarkan alur dari sebuah proses dan hubungannya. Tujuannya adalah untuk menggambarkan kerja dari suatu algoritma atau kerja suatu sistem, sehingga mudah dipahami.
3.4.1. Flowchart sistem secara umum
Flowchart sistem menggambarkan seluruh aktivitas yang dapat dilakukan sistem. Adapun flowchart sistem secara umum dapat dilihat pada gambar 3.11.
Mulai
Input gejala-gejala penyakit saluran cerna
lambung-usus
Pelatihan algoritma BAM dan LVQ
Pengujian Algoritma BAM dan LVQ
Perbandingan Algoritma BAM dan LVQ berdasarkan kecepatan dan ketepatan dalam menentukan jenis obat penyakit saluran cerna
lambung-usus
Nama penyakit dan jenis obat
Selesai
(47)
3.4.2. Flowchart Algoritma BAM
Adapun flowchart AlgoritmaBAM dapat dilihat pada gambar 3.12.
Mulai
Tetapkan pola input (x), target (y)
Hitung matriks bobot (Wij) dari x ke y
Panggil pola input (xi) untuk menguji target (y_in) berdasarkan bobot (Wij)
Jika (y_in) >= 0 (yi) = -1
(yi) = 1
Balik arah cari nilai x_in
(xi) = 1
Jika (x_in) >= 0 (xi) = -1
Pola output
Selesai ya
ya
ya
tidak tidak
Jika xi = yi tidak
(48)
3.4.3. Flowchart Algoritma LVQ
Adapun flowchart AlgoritmaLVQ dapat dilihat pada gambar 3.13.
Mulai
Tetapkan Bobot awal, Target kelas, MaxEpoch, Parameter Learning rate
(α), Pengukuran Learning rate (Decα), Minimal Learning rate
(Minα)
Input Data (Xij)
Epoch <= MaxEpoch && α >= Minα
Tentukan J, hingga di dapat bobot terdekat
Jika target sama dengan kelas
Dekatkan dengan input (tambah bobot)
Jaukan dengan input (kurangi bobot)
Kurangi nilai learning rate α
Bobot Akhir
Selesai
ya
ya
tidak
tidak
(49)
3.5. Perancangan Data
3.5.1. Perancangan masukan untuk Algoritma BAM dan LVQ
Penetapan masukan jaringan saraf tiruan untuk menentukan obat penyakit saluran cerna lambung-usus adalah sebagai berikut.
1. X1 (Sulit menelan)
2. X2 (Perasaan asam atau pahit di mulut)
3. X3 (Batuk)
4. X4 (Mual)
5. X5 (Suara serak) 6. X6 (Nyeri di ulu hati)
7. X7 (Muntah)
8. X8 (Adanya gangguan pada pencernaan)
9. X9 (Nyeri lambung)
10.X10 (Adakalanya terjadi pendarahan)
11.X11 (Sendawa)
12.X12 (Kembung dan mual)
13.X13 (Anemia)
14.X14 (Rasa penuh di ulu hati atau cepat kenyang)
15.X15 (Pendarahan lambung)
16.X16 (Tidak mau makan)
17.X17 (Muntah darah)
18.X18 (Keluar BAB dengan warna hitam pekat)
19.X19 (Kehilangan berat badan mendadak) 20.X20 (Sakit kronis pada bagian perut)
3.5.2. Perancangan keluaran untuk Algoritma BAM dan LVQ
Penetapan keluaran untuk menentukan obat penyakit saluran cerna lambung-usus adalah sebagai berikut.
1. Y1 (radang kerongkongan (reflux oesophagitis)) dan jenis obat (Ranitidin, Omeprazole, Domperidone, Antasida, Sukralfat).
(50)
2. Y2 (radang lambung (gastritis)) dan jenis obat (Omeprazole, Antasida, Bismuth, Amoxixilin, Claritromixin).
3. Y3 (tukak lambung-usus (ulcus pepticum)) dan jenis obat (Antasida, Bismuth, Sukralfat, Ranitidin, Omeprazole).
4. Y4 (kanker lambung) dan jenis obat (Kemoterapi, Radiasi, Operasi).
3.6. Perancangan Antarmuka Sistem
Sistem penentuan obat penyakit saluran cerna lambung-usus ini dirancang dengan menggunakan bahasa pemrograman Matlab. Perancangan antarmuka sistem bertujuan
untuk memudahkan user dalam memahami dan mengoperasikan sistem.
3.6.1. Antarmuka awal
Antarmuka awal sistem adalah tampilan utama ketika sistem dijalankan. Rancangan antarmuka awal pada sistem dapat dilihat pada Gambar 3.14
.
Gambar 3.14 Tampilan Antarmuka Awal
1
6
2 3 4 5
7
(51)
Keterangan :
1. Beranda
Berfungsi untuk tampilan awal dari sistem penentuan obat penyakit saluran cerna lambung-usus.
2. Menu Algoritma BAM
Berfungsi untuk menuju antarmuka pelatihan dan pengujian BAM.
3. Menu Algoritma LVQ
Berfungsi untuk menuju antarmuka pelatihan dan pengujian LVQ.
4. Menu Bantuan
Berfungsi untuk menampilkan halaman berisi informasi bantuan untuk menjalankan sistem.
5. Menu Keluar
Berfungsi untuk keluar langsung dari sistem. 6. Textfield Judul
Berfungsi untuk menampilkan judul skripsi. 7. Axes Logo
Berfungsi untuk menampilkan gambar logo fakultas pada sistem.
8. Textfield Nama
(52)
3.6.2. Antarmuka Algoritma BAM
Gambar 3.15 Tampilan Antarmuka Pelatihan Algoritma BAM Keterangan :
1. Textfield Judul
Berfungsi menampilkan judul halaman pelatihan algoritma BAM.
2. Radiobutton Gejala Umum Penyakit
Berfungsi sebagai pilihan untuk diisi sesuai dengan gejala penyakit. 3. Textfield Nama Penyakit
Berfungsi sebagai tempat untuk mengetik nama penyakit. 4. Tombol Simpan
Berfungsi untuk menyimpan hasil dari Radiobutton Gejala dan Textfield Hasil. 5. Tombol Latih BAM
Berfungsi untuk melatih sistem dengan algoritma BAM. 6. Textfield Waktu Latih
Berfungsi untuk menampilkan waktu pelatihan sistem. 7. Tombol Reset
Berfungsi untuk mengembalikan kondisi Radiobutton Gejala dan Textfield Nama Penyakit ke kondisi awal.
1
2 3
4
5
6 7
(53)
Gambar 3.16 Tampilan Antarmuka Pengujian Algoritma BAM Keterangan :
1. Textfield Judul
Berfungsi menampilkan judul halaman pengujian BAM.
2. Radiobutton Gejala Umum Penyakit
Berfungsi sebagai pilihan untuk diisi sesuai dengan gejala penyakit. 3. Tombol Hasil
Berfungsi untuk melakukan pengujian identifikasi penyakit. 4. Textfield Nama Penyakit
Untuk menampilkan hasil identifikasi penyakit. 5. Textfield Jenis Obat
Untuk menampilkan jenis obat hasil identifikasi penyakit. 6. Textfield Waktu Uji
Berfungsi untuk menampilkan waktu pengujian sistem. 7. Tombol Reset
Berfungsi untuk mengembalikan kondisi Radiobutton Gejala dan Textfield Hasil. 1
2
3
4
5
6 7
(54)
3.6.3. Antarmuka Algoritma LVQ
Gambar 3.17 Tampilan Antarmuka Pelatihan Algoritma LVQ Keterangan:
1. Textfield Judul
Berfungsi menampilkan judul halaman pelatihan algoritma LVQ. 2. Radiobutton Gejala Umum Penyakit
Berfungsi sebagai pilihan untuk diisi sesuai dengan gejala penyakit. 3. Textfield Nama Penyakit
Berfungsi sebagai tempat untuk mengetik nama penyakit.
4. Tombol Simpan
Berfungsi untuk menyimpan hasil dari Radiobutton Gejala dan Textfield Hasil.
5. Tombol Latih LVQ
Berfungsi untuk melatih sistem dengan algoritma LVQ. 6. Textfield Waktu Latih
Berfungsi untuk menampilkan waktu pelatihan sistem.
7. Tombol Reset
Berfungsi untuk mengembalikan kondisi Radiobutton Gejala dan Textfield
Hasil ke kondisi awal.
1
2 3
4
5
6
(55)
Gambar 3.18 Tampilan Antarmuka Pengujian Algoritma LVQ
Keterangan:
1. Textfield Judul
Berfungsi menampilkan judul halaman pengujian LVQ.
2. Radiobutton Gejala Umum Penyakit
Berfungsi sebagai pilihan untuk diisi sesuai dengan gejala penyakit. 3. Tombol Hasil
Berfungsi untuk melakukan pen gujian identifikasi penyakit . 4. Textfield Hasil
Untuk menampilkan hasil identifikasi penyakit. 5. Textfield Jenis Obat
Untuk menampilkan jenis obat hasil identifikasi penyakit. 6. Textfield Waktu Uji
Berfungsi untuk menampilkan waktu pengujian sistem. 7. Tombol Reset
Berfungsi untuk mengembalikan kondisi Radiobutton Gejala dan Textfield Hasil. 1
2
3
4
5
6 7
(56)
3.6.4. Antarmuka Bantuan
Gambar 3.19 Tampilan Antarmuka Bantuan Penggunaan Sistem Keterangan :
1. Text Judul
Berisi judul halaman bantuan. 2. Textfield Bantuan
Berfungsi untuk menampilkan informasi bantuan penggunaan sistem.
3.6.5. Antarmuka Keluar
Gambar 3.20 Tampilan Antarmuka Keluar Dari Sistem
1
2 3
1
(57)
Keterangan :
1. Textfield Pertanyaan Keluar
Berisi pertanyaan ‘Apakah Anda Ingin Keluar?’
2. Tombol Ya
Berfungsi menjawab ‘Ya’ pada konfirmasi untuk keluar dari sistem.
3. Tombol Tidak
(58)
BAB 4
IMPLEMENTASI DAN PENGUJIAN SISTEM
4.1. Implementasi Sistem
Pada tahap implementasi sistem perbandingan algoritma Bidirectional Associative Memory (BAM) dan Learning Vector Quantization (LVQ) dalam menentukan obat penyakit saluran cerna lambung-usus, penulis membangun sistem dengan program
Matlab serta Microsofft Excel 2007 sebagai tempat penyimpanan data pelatihan sistem. Pada sistem ini terdapat 6 form yang akan digunakan yaitu terdiri dari form
Beranda, form LatihBAM, form LatihLVQ, form UjiBAM, form UjiLVQ, dan form
Bantuan.
4.1.1. Tampilan antarmuka sistem
Sistem penentuan obat penyakit saluran cerna lambung-usus diimplementasikan dalam beberapa tampilan antarmuka yaitu terdiri dari antarmuka Beranda, antarmuka Algoritma BAM yang terdiri dari pelatihan dan pengujian BAM, antarmuka Algoritma LVQ yang terdiri dari pelatihan dan pengujian LVQ antarmuka Bantuan dan antarmuka Keluar.
4.1.1.1. Antarmuka Beranda sistem
Antarmuka Beranda adalah form antarmuka yang pertama kali muncul ketika sistem dijalankan. Antarmuka Beranda ini terdiri dari menu Algoritma BAM dengan submenu Pelatihan dan Pengujian, menu Algoritma LVQ dengan submenu Pelatihan dan Pengujian, menu Bantuan, dan menu Keluar. Tampilan antarmuka Beranda ditunjukkan pada Gambar 4.1
(59)
Gambar 4.1 Menu Beranda Sistem
4.1.1.2. Antarmuka latih BAM
Pada form antarmuka latih BAM terdiri dari beberapa bagian yaitu bagian input gejala umum penyakit yang terdiri dari 20 checkbox, textfield nama penyakit untuk memasukkan nama penyakit, tombol simpan untuk menyimpan data gejala dan nama penyakit, tombol latih BAM untuk melakukan pelatihan data, textfield waktu latih untuk menampilkan waktu pelatihan, dan tombol Reset untuk mengembalikan
checkbox gejala dan textfield nama penyakit ke kondisi awal. Tampilan antarmuka Latih BAM ditunjukkan pada Gambar 4.2.
(60)
Gambar 4.2 Form Latih BAM
Saat membuka tampilan latih BAM , maka hal yang dilakukan pertama kali adalah memberi tanda pada gejala umum penyakit dengan cara memilih gajala penyakit yang dialami pasien dan mengetikkan nama penyakit berdasarkan hasil diagnosa pasien. Kemudian tekan tombol Simpan untuk menyimpan data, jika sudah selesai maka akan menampilkan pesan seperti message box yang akan ditunjukkan pada Gambar 4.3.
Gambar 4.3. Form Berhasil Simpan
Ketika data telah berhasil disimpan, maka dapat dilakukan pelatihan BAM dengan menekan tombol Latih BAM. Waktu hasil latih BAM akan ditampilkan pada
(61)
4.1.1.3. Antarmuka uji BAM
Pada form antarmuka uji BAM terdiri dari beberapa bagian yaitu bagian input gejala umum penyakit yang terdiri dari 20 checkbox, tombol Hasil, textfield nama penyakit untuk menampilkan nama penyakit, textfield jenis obat untuk menampilkan jenis obat,
textfield waktu uji untuk menampilkan waktu pengujian, dan tombol Reset untuk mengembalikan checkbox gejala penyakit, textfield nama penyakit, textfield jenis obat, dan textfield waktu uji ke kondisi awal. Tampilan antarmuka Uji BAM sebelum diuji ditunjukkan pada Gambar 4.4.
Gambar 4.4 Form Sebelum Pengujian BAM
Proses pengujian BAM dilakukan dengan cara memberi tanda pada gejala umum penyakit. Kemudian tekan tombol Hasil untuk melakukan proses pengujian BAM. Hasil dari proses pengujian tersebut adalah tampilan nama penyakit berdasarkan gejala yang dialami pasien, tampilan jenis obat yang berisi jenis obat yang dapat meringankan gejala penyakit, dan tampilan waktu yang mencatat berapa lama waktu yang dibutuhkan dalam proses pengujian menggunakan algoritma BAM. Sedangkan tombol Reset digunakan jika user ingin melakukan pengujian dengan gejala yang lain. Antarmuka pengujian BAM akan ditunjukkan pada Gambar 4.5.
(62)
Gambar 4.5 Form Setelah Pengujian BAM
4.1.1.4. Antarmuka latih LVQ
Pada form antarmuka latih LVQ terdiri dari beberapa bagian yaitu bagian input gejala umum penyakit yang terdiri dari 20 checkbox, textfield nama penyakit untuk memasukkan nama penyakit, tombol simpan untuk menyimpan data gejala dan nama penyakit, tombol latih LVQ untuk melakukan pelatihan data, textfield waktu latih untuk menampilkan waktu pelatihan, dan tombol Reset untuk mengembalikan
checkbox gejala dan textfield nama penyakit ke kondisi awal. Tampilan antarmuka Latih LVQ ditunjukkan pada Gambar 4.6.
(63)
Gambar 4.6 Form Latih LVQ
Saat membuka tampilan latih LVQ , maka hal yang dilakukan pertama kali adalah memberi tanda pada gejala umum penyakit dengan cara memilih gajala penyakit yang dialami pasien dan mengetikkan nama penyakit berdasarkan hasil diagnosa pasien. Kemudian tekan tombol Simpan untuk menyimpan data, jika sudah selesai maka akan menampilkan pesan seperti message box yang akan ditunjukkan pada Gambar 4.7.
Gambar 4.7. Form Berhasil Simpan
4.1.1.5. Antarmuka uji LVQ
Pada form antarmuka uji LVQ terdiri dari beberapa bagian yaitu bagian input gejala umum penyakit yang terdiri dari 20 checkbox, tombol Hasil, textfield nama penyakit
(64)
untuk menampilkan nama penyakit, textfield jenis obat untuk menampilkan jenis obat,
textfield waktu uji untuk menampilkan waktu pengujian, dan tombol Reset untuk mengembalikan checkbox gejala penyakit, textfield nama penyakit, textfield jenis obat, dan textfield waktu uji ke kondisi awal. Tampilan antarmuka Uji LVQ sebelum diuji ditunjukkan pada Gambar 4.8.
Gambar 4.8 Form Sebelum Pengujian LVQ
Proses pengujian LVQ dilakukan dengan cara memberi tanda pada gejala umum penyakit. Kemudian tekan tombol Hasil untuk melakukan proses pengujian LVQ. Hasil dari proses pengujian tersebut adalah tampilan nama penyakit berdasarkan gejala yang dialami pasien, tampilan jenis obat yang berisi jenis obat yang dapat meringankan gejala penyakit, dan tampilan waktu yang mencatat berapa lama waktu yang dibutuhkan dalam proses pengujian menggunakan algoritma LVQ. Sedangkan tombol Reset digunakan jika user ingin melakukan pengujian dengan gejala yang lain. Tampilan antarmuka pengujian LVQ ditunjukkan pada Gambar 4.9.
(65)
Gambar 4.9 Form Setelah Pengujian LVQ
4.1.1.6. Antarmuka bantuan
Form antarmuka Bantuan berisi tentang informasi sistematis dalam menggunakan sistem. Di dalamnya terdapat penjelasan tentang cara penggunaan sistem secara rinci
dengan tujuan untuk membantu user dalam mengoperasikan sistem. Tampilan
antarmuka Bantuan ditunjukkan pada Gambar 4.10.
(1)
DAFTAR ISI
Hal.
Persetujuan ii
Pernyataan iii
Penghargaan iv
Abstrak vi
Abstract vii
Daftar Isi viii
Daftar Tabel xi
Daftar Gambar xii
Bab 1 : Pendahuluan 1
1.1. Latar Belakang 1
1.2. Rumusan Masalah 2
1.3. Batasan Masalah 2
1.4. Tujuan Penelitian 3
1.5. Manfaat Penelitian 3
1.6. Metodologi Penulisan 3
1.7. Sistematika Penulisan 4
Bab 2 : Landasan Teori 6
2.1. Jaringan Saraf Tiruan 6
2.2. Arsitektur Jaringan Saraf Tiruan 7
2.3. Fungsi Aktivasi 7
2.4. Pelatihan Jaringan Saraf Tiruan 9
2.5. Algoritma Jaringan Saraf Tiruan 10
2.6. Bidirectional Associative Memory (BAM) 10
2.7. Learning Vector Quantization (LVQ) 12
2.8. Saluran Pencernaan 13
2.9. Struktur Lambung-Usus 14
2.9.1. Lambung 14
2.9.2. Usus Halus 14
2.9.3. Usus Besar 15
2.10. Penyakit Saluran Lambung-Usus 15
2.11. Obat Pencernaan 17
Bab 3 : Analisis dan Perancangan Sistem 19
3.1. Analisis Sistem 19
3.1.1. Analisis Masalah 19
3.1.2. Analisis Kebutuhan Sistem 21
3.1.2.1. Kebutuhan Fungsional Sistem 21
3.1.2.2. Kebutuhan Non-fungsional Sistem 22
3.1.3. Analisis Proses Sistem 22
3.1.3.1. Analisis Proses BAM 22
(2)
3.2. Pemodelan Sistem 29
3.2.1. Use Case Diagram 29
3.2.1.1. Use Case Pelatihan BAM 30
3.2.1.2. Use Case Pengujian BAM 31
3.2.1.3. Use Case Pelatihan LVQ 32
3.2.1.4. Use Case Pengujian LVQ 33
3.2.2. Activity Diagram 34
3.2.2.1. Activity Diagram Proses Pelatihan BAM 34 3.2.2.2. Activity Diagram Proses Pengujian BAM 35 3.2.2.3. Activity Diagram Proses Pelatihan LVQ 36 3.2.2.4. Activity Diagram Proses Pengujian LVQ 37
3.2.3. Sequence Diagram 38
3.2.3.1. Sequence Diagram Proses Pelatihan BAM 38 3.2.3.2. Sequence Diagram Proses Pengujian BAM 38 3.2.3.3. Sequence Diagram Proses Pelatihan LVQ 39 3.2.3.4. Sequence Diagram Proses Pengujian LVQ 39
3.3. Pseudo code Program 40
3.3.1. Pseudo code Algoritma BAM 40
3.3.2. Pseudo code Algoritma LVQ 41
3.4. Flowchart Sistem 42
3.4.1. Flowchart Sistem Secara Umum 42
3.4.2. Flowchart Algoritma BAM 43
3.4.3. Flowchart Algoritma LVQ 44
3.5. Perancangan Data 45
3.5.1. Perancangan Masukan Algoritma BAM dan LVQ 45 3.5.2. Perancangan Keluaran Algoritma BAM dan LVQ 45
3.6. Perancangan Antarmuka Sistem 46
3.6.1. Antarmuka Awal 46
3.6.2. Antarmuka Algoritma BAM 48
3.6.3. Antarmuka Algoritma LVQ 50
3.6.4. Antarmuka Bantuan 52
3.6.5. Antarmuka Keluar 52
Bab 4 : Implementasi dan Pengujian Sistem 54
4.1. Implementasi Sistem 54
4.1.1. Tampilan Antarmuka Sistem 54
4.1.1.1. Antarmuka Beranda Sistem 54
4.1.1.2. Antarmuka Latih BAM 55
4.1.1.3. Antarmuka Uji BAM 57
4.1.1.4. Antarmuka Latih LVQ 58
4.1.1.5. Antarmuka Uji LVQ 59
4.1.1.6. Antarmuka Bantuan 61
4.2. Pengujian Sistem 62
4.2.1. Jenis Pengujian 62
4.2.1.1. Kecepatan Pelatihan 62
4.2.1.2. Kecepatan Pengujian Obat 67 4.2.1.3. Ketepatan Penentuan Obat 69
Bab 5 : Kesimpulan dan Saran 80
(3)
5.1. Kesimpulan 80
5.2. Saran 81
Daftar Pustaka 82
Lampiran Listing Program A1
Lampiran Data Gejala Penyakit Saluran Cerna Lmbung-Usus
Untuk Pelatihan Sistem A19
Lampiran Hasil Wawancara Dengan Dokter Spesialis Penyakit Dalam A20
(4)
DAFTAR TABEL
Hal.
3.1 Dokumentasi Naratif Use Case Pelatihan BAM 30
3.2 Dokumentasi Naratif Use Case Pengujian BAM 31
3.3 Dokumentasi Naratif Use Case Pelatihan LVQ 32
3.4 Dokumentasi Naratif Use Case Pengujian LVQ 33
4.1 Perbandingan Waktu Latih Pengenalan Gejala Penyakit Saluran Cerna Lambung-Usus Dengan Metode BAM Dan LVQ 64
4.2 Perbandingan Waktu Uji Penentuan Obat Penyakit Saluran Cerna Lambung-Usus Dengan Metode BAM Dan LVQ 67
4.3 Hasil Uji Ketepatan Dalam Menentukan Jenis Obat Penyakit Radang Kerongkongan Dengan Algoritma BAM Dan LVQ 70
4.4 Hasil Uji Ketepatan Dalam Menentukan Jenis Obat Penyakit Radang Lambung Dengan Algoritma BAM Dan LVQ 72
4.5 Hasil Uji Ketepatan Dalam Menentukan Jenis Obat Penyakit Tukak Lambung-Usus Dengan Algoritma BAM Dan LVQ 74
4.6 Hasil Uji Ketepatan Dalam Menentukan Jenis Obat Penyakit Kanker Lambung Dengan Algoritma BAM Dan LVQ 77
1. Data Gejala Penyakit Saluran Cerna Lmbung-Usus
Untuk Pelatihan Sistem A28
(5)
DAFTAR GAMBAR
Hal.
2.1 Struktur Neuron Jaringan Saraf Tiruan 7
2.2 Ilustrasi fungsi sigmoid biner dengan range (0,1) 8 2.3 Ilustrasi fungsi sigmoid bipolar dengan range (-1,1) 9
2.4 Arsitektur jaringan BAM 11
2.5 Arsitektur jaringan LVQ 12
3.1 Diagram Ishikawa Analisis Permasalahan 21
3.2 Use case Diagram Sistem Penentu Obat Penyakit Saluran Cerna
Lambung-Usus 29
3.3 Activity Diagram Proses Pelatihan BAM 34
3.4 Activity Diagram Proses Pengujian BAM 35
3.5 Activity Diagram Proses Pelatihan LVQ 36
3.6 Activity Diagram Proses Pengujian LVQ 37
3.7 Sequence Diagram Proses Pelatihan BAM 38
3.8 Sequence Diagram Proses Pengujian BAM 38
3.9 Sequence Diagram Proses Pelatihan LVQ 39
3.10 Sequence Diagram Proses Pengujian LVQ 39
3.11 Flowchart Sistem Secara Umum 42
3.12 Flowchart Algoritma BAM 43
3.13 Flowchart Algoritma LVQ 44
3.14 Tampilan Antarmuka Awal 46
3.15 Tampilan Antarmuka Pelatihan Algoritma BAM 48
3.16 Tampilan Antarmuka Pengujian Algoritma BAM 49
3.17 Tampilan Antarmuka Pelatihan Algoritma LVQ 50
3.18 Tampilan Antarmuka Pengujian Algoritma LVQ 51
3.19 Tampilan Antarmuka Bantuan Penggunaan Sistem 52
3.20 Tampilan Antarmuka Keluar Dari Sistem 52
4.1 Menu Beranda Sistem 55
4.2 Form Latih BAM 56
(6)
4.4 Form Sebelum Pengujian BAM 57
4.5 Form Setelah Pengujian BAM 58
4.6 Form Latih LVQ 59
4.7 Form Berhasil Simpan 59
4.8 Form Sebelum Pengujian LVQ 60
4.9 Form Setelah Pengujian LVQ 61
4.10 Form Antarmuka Bantuan 61
4.11 Hasil Pelatihan BAM 63
4.12 Hasil Pelatihan LVQ 63
4.13 Grafik Perbandingan Kecepatan Pelatihan Pengenalan Gejala
Penyakit Dengan Algoritma BAM Dan LVQ 65
4.14 Hasil Pengujian BAM 66
4.15 Hasil Pengujian LVQ 67
4.16 Grafik Perbandingan Kecepatan Pengujian Penentuan Obat
Penyakit Dengan Algoritma BAM Dan LVQ 69
4.17 Grafik Perbandingan Persentase Ketepatan Penentuan Obat
Penyakit Dengan Algoritma BAM Dan LVQ 78