uses crt; const maxepoch=3000; juminput=4; var v,dv:array[0..2,1..4] of real; w,dw:array[0..4,1..1] of real; x:array[1..2] of real; tx:array[1..2,0..3] of real; z_in,z,dz_in,dz:array[1..4] of real; t:array[0..3] of real; y_in,y,dy:array[1..1] of real; alfa,tse,err:real; i,j,k,m,n,p,repx,epoch:integer; begin clrscr; v[0,1]:=-0.3378; v[1,1]:=0.1970; v[2,1]:=0.3099; v[0,2]:=0.2771; v[1,2]:=0.3191; v[2,2]:=0.1904; v[0,3]:=0.2859; v[1,3]:=-0.1448; v[2,3]:=-0.0347; v[0,4]:=-0.3329; v[1,4]:=0.3594; v[2,4]:=-0.4861; w[0,1]:=-0.1401; w[1,1]:=0.4919; w[2,1]:=-0.2913; w[3,1]:=-0.3979; w[4,1]:=0.3581; alfa:=0.2; tx[1,0]:=1; tx[2,0]:=1; t[0]:=0; tx[1,1]:=1; tx[2,1]:=0; t[1]:=1; tx[1,2]:=0; tx[2,2]:=1; t[2]:=1; tx[1,3]:=0; tx[2,3]:=0; t[3]:=0; n:=2; p:=4; m:=1; epoch:=0; tse:=1; while (epoch0.05) do begin err:=0; for repx:=0 to juminput-1 do begin { Feed Forward } for i:=1 to n do x[i]:=tx[i,repx]; for j:=1 to p do begin z_in[j]:=v[0,j]; for i:=1 to n do z_in[j]:=z_in[j]+x[i] * v[i,j]; z[j]:=1/(1+exp(-z_in[j])); end; for k:=1 to m do begin y_in[k]:=w[0,k]; for j:=1 to p do y_in[k]:=y_in[k]+z[j] * w[j,k]; y[k]:=1/(1+exp(-y_in[k])); end; { Backpropagation of error } for k:=1 to m do begin dy[k]:=(t[repx]-y[k]) * (y[k] * (1-(y[k]))); for j:=1 to p do dw[j,k]:=alfa * dy[k] * z[j]; dw[0,k]:=alfa * dy[k]; end; for j:=1 to p do begin for k:=1 to m do dz_in[j]:=dy[k] * w[j,k]; dz[j]:=dz_in[j] * (z[j] * (1-z[j])); for i:=1 to n do dv[i,j]:=alfa * dz[j] * x[i]; dv[0,j]:=alfa * dz[j]; end; { Update nilai weight dan bias } for k:=1 to m do for j:=0 to p do w[j,k]:=w[j,k]+dw[j,k]; for j:=1 to p do for i:=0 to n do v[i,j]:=v[i,j]+dv[i,j]; err:=err+sqr(t[repx]-y[1]); end; tse:=err; inc(epoch); end; writeln('Nilai TSE : ',tse); writeln('Jumlah Epoch : ',epoch); readkey; end. uses crt; const maxepoch=3000; juminput=4; var v,dv:array[0..2,1..4] of real; w,dw:array[0..4,1..1] of real; x:array[1..2] of real; tx:array[1..2,0..3] of real; z_in,z,dz_in,dz:array[1..4] of real; t:array[0..3] of real; y_in,y,dy:array[1..1] of real; alfa,tse,err:real; i,j,k,m,n,p,repx,epoch:integer; begin clrscr; v[0,1]:=-0.3378; v[1,1]:=0.1970; v[2,1]:=0.3099; v[0,2]:=0.2771; v[1,2]:=0.3191; v[2,2]:=0.1904; v[0,3]:=0.2859; v[1,3]:=-0.1448; v[2,3]:=-0.0347; v[0,4]:=-0.3329; v[1,4]:=0.3594; v[2,4]:=-0.4861; w[0,1]:=-0.1401; w[1,1]:=0.4919; w[2,1]:=-0.2913; w[3,1]:=-0.3979; w[4,1]:=0.3581; alfa:=0.2; tx[1,0]:=1; tx[2,0]:=1; t[0]:=-1; tx[1,1]:=1; tx[2,1]:=-1; t[1]:=1; tx[1,2]:=-1; tx[2,2]:=1; t[2]:=1; tx[1,3]:=-1; tx[2,3]:=-1; t[3]:=-1; n:=2; p:=4; m:=1; epoch:=0; tse:=1; while (epoch0.05) do begin err:=0; for repx:=0 to juminput-1 do begin { Feed Forward } for i:=1 to n do x[i]:=tx[i,repx]; for j:=1 to p do begin z_in[j]:=v[0,j]; for i:=1 to n do z_in[j]:=z_in[j]+x[i] * v[i,j]; z[j]:=(2/(1+exp(-z_in[j])))-1; end; for k:=1 to m do begin y_in[k]:=w[0,k]; for j:=1 to p do y_in[k]:=y_in[k]+z[j] * w[j,k]; y[k]:=(2/(1+exp(-y_in[k])))-1; end; { Backpropagation of error } for k:=1 to m do begin dy[k]:=(t[repx]-y[k]) * (0.5 * (1+y[k]) * (1-y[k])); for j:=1 to p do dw[j,k]:=alfa * dy[k] * z[j]; dw[0,k]:=alfa * dy[k]; end; for j:=1 to p do begin for k:=1 to m do dz_in[j]:=dy[k] * w[j,k]; dz[j]:=dz_in[j] * (0.5 * (1+z[j]) * (1-z[j])); for i:=1 to n do dv[i,j]:=alfa * dz[j] * x[i]; dv[0,j]:=alfa * dz[j]; end; { Update nilai weight dan bias } for k:=1 to m do for j:=0 to p do w[j,k]:=w[j,k]+dw[j,k]; for j:=1 to p do for i:=0 to n do v[i,j]:=v[i,j]+dv[i,j]; err:=err+sqr(t[repx]-y[1]); end; tse:=err; inc(epoch); end; writeln('Nilai TSE : ',tse); writeln('Jumlah Epoch : ',epoch); readkey; end.