Perbandingan Algoritma Bidirectional Associative Memory dan Learning Vector Quantization Dalam Menentukan Obat Penyakit Saluran Cerna Lambung-Usus

(1)

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 w

Matriks 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