Upload
nguyendang
View
221
Download
0
Embed Size (px)
Citation preview
TUGAS 3 MATAKULIAH
KOMPUTASI JARINGAN SARAF TIRUAN
Dosen Pengampu:
Prof. Dr. M. Isa Irawan, MT
Oleh:
Syarifuddin N. Kapita
1213 2010 43
JURUSAN PASCASARJANA MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT TEKNOLOGI SEPULUH NOPEMBER
SURABAYA
2014
Menjalankan Network Perceptron , Adaline dan Madaline dengan mengunakan M-File.
1 clc; clear all; close all;
2 disp('Memilih salah satu fungsi');
3 disp('1.Perceptron');
4 disp('2.Adaline');
5 disp('3.Madaline');
6 disp(' ');
7 disp('*************************************');
8 disp(' ');
9 pilih = input ('pilih fugsi yang ingin dijalankan = ');
10 switch pilih
11 case 1
12 disp('memilih salah satu inputan =')
13 disp('1.1.Bipolar');
14 disp('2.1.Biner');
15 disp(' ');
16 disp('*************************************');
17 disp(' ');
18 pilih2=input ('pilih =');
19 switch pilih2
20 case 1.1
21 s1=[1 1 -1 -1]; %untuk bipolar
22 s2=[1 -1 1 -1]; %untuk bipolar
23
24 target1 = [1 -1 -1 -1]; % AND function
25 target2 = [-1 1 1 1]; % NAND function
26 target3 = [-1 1 -1 -1]; % AND NOT function
27 target4 = [1 1 1 -1]; % OR function
28 target5 = [-1 -1 -1 1]; % NOR function
29 target6 = [1 1 -1 1]; % OR NOT function
30 disp('t=1 AND function')
31 disp('t=2 NAND function')
32 disp('t=3 AND NOT function')
33 disp('t=4 OR function')
34 disp('t=5 NOR function')
35 disp('t=6 OR NOT function')
36 t= input ('t= ');
37 if t==1
38 target=target1;
39 elseif t==2
40 target=target2;
41 elseif t==3
42 target=target3;
43 elseif t==4
44 target=target4;
45 elseif t==5
46 target=target5;
47 else target=target6;
48 end
49 disp(' s1 s2 target')
50 disp([s1' s2' target'])
51 x1=s1;
52 x2=s2;
53 net = newp ([-1 1 ; -1 1],1,'hardlims','learnpn');
54 net.IW {1,1}= [0 0];
55 net.b {1}= [0];
56 p = [ x1 ; x2 ]; %inputan bipolar
57 net = train (net,p,target);
58 bobot=net.IW {1,1};
59 bias=net.b {1};
60 fprintf('Nilai WIGHT= %4.0f %4.0f\n',(net.IW {1,1}));
61 fprintf('Nilai BIAS= %4.0f\n',(net.b {1}));
62 disp(' ');
63 disp('PROSES TESTING PERCEPTRON');
64 disp('*************************************');
65 y = sim(net,p)
66 X1=-5:0.1:5;
67 X2=(-bias-X1*bobot(1,1))/bobot(1,2);
68 plot(1,1,'*r',1,-1,'og',-1,1,'ob',-1,-1,'*c');
69 hold on;
70 plot(X1,X2);
71 legend('1,1','1,-1','-1,1','-1,-1');
72 title(['target',num2str(target)]);
73 grid on;
74 xlabel('X1');
75 ylabel('X2');
76
77 s1=[1 1 0 0]; %untuk biner
78 s2=[1 0 1 0]; %untuk biner
79
80 target1 = [1 -1 -1 -1]; % AND function
81 target2 = [-1 1 1 1]; % NAND function
82 target3 = [-1 1 -1 -1]; % AND NOT function
83 target4 = [1 1 1 -1]; % OR function
84 target5 = [-1 -1 -1 1]; % NOR function
85 target6 = [1 1 -1 1]; % OR NOT function
86 disp('t=1 AND function')
87 disp('t=2 NAND function')
88 disp('t=3 AND NOT function')
89 disp('t=4 OR function')
90 disp('t=5 NOR function')
91 disp('t=6 OR NOT function')
92 t= input ('t= ');
93 if t==1
94 target=target1;
95 elseif t==2
96 target=target2;
97 elseif t==3
98 target=target3;
99 elseif t==4
100 target=target4;
101 elseif t==5
102 target=target5;
103 else target=target6;
104 end
105 disp(' s1 s2 target')
106 disp([s1' s2' target'])
107 x1=s1;
108 x2=s2;
109 net = newp ([-1 1 ; -1 1],1,'hardlims','learnpn');
110 net.IW {1,1}= [0 0];
111 net.b {1}= [0];
112 p = [ x1 ; x2 ]; %inputan bipolar
113 net = train (net,p,target);
114 bobot=net.IW {1,1};
115 bias=net.b {1};
116 fprintf('Nilai WIGHT= %4.0f %4.0f\n',(net.IW {1,1}));
117 fprintf('Nilai BIAS= %4.0f\n',(net.b {1}));
118 disp(' ');
case 2.1
119
120 disp('PROSES TESTING PERCEPTRON');
121 disp('*************************************');
122 y = sim(net,p)
123 X1=-5:0.1:5;
124 X2=(-bias-X1*bobot(1,1))/bobot(1,2);
125 plot(1,1,'*r',1,0,'og',0,1,'ob',0,0,'*c');
126 hold on;
127 plot(X1,X2);
128 legend('1,1','1,0','0,1','0,0');
129 title(['target',num2str(target)]);
130 grid on;
131 xlabel('X1');
132 ylabel('X2');
133 end
134 case 2
135 disp('memilih salah satu inputan =')
136 disp('1.1.Bipolar');
137 disp('2.1.Biner');
138 disp(' ');
139 disp('*************************************');
140 disp(' ');
141 pilih2=input ('pilih =');
142 switch pilih2
143 case 1.1
144 s1=[1 1 -1 -1]; %untuk bipolar
145 s2=[1 -1 1 -1]; %untuk bipolar
146 target1 = [1 -1 -1 -1]; % AND function
147 target2 = [-1 1 1 1]; % NAND function
148 target3 = [-1 1 -1 -1]; % AND NOT function
149 target4 = [1 1 1 -1]; % OR function
150 target5 = [-1 -1 -1 1]; % NOR function
151 target6 = [1 1 -1 1]; % OR NOT function
152 disp('t=1 AND function')
153 disp('t=2 NAND function')
154 disp('t=3 AND NOT function')
155 disp('t=4 OR function')
156 disp('t=5 NOR function')
157 disp('t=6 OR NOT function')
158 t= input ('t= ');
159 if t==1
160 target=target1;
161 elseif t==2
162 target=target2;
163 elseif t==3
164 target=target3;
165 elseif t==4
166 target=target4;
167 elseif t==5
168 target=target5;
169 else target=target6;
170 end
171 disp(' s1 s2 target')
172 disp([s1' s2' target'])
173 x1=s1;
174 x2=s2;
175 net = newlin([-1 1 ; -1 1],1);
176 net.IW {1,1}= [0 0];
177 net.b {1}= [0];
178 p = [ x1 ; x2 ]; %inputan bipolar
179 net = train (net,p,target);
180 bobot=net.IW {1,1};
181 bias=net.b {1};
182 fprintf('Nilai WIGHT = %4.1f %4.1f\n',(net.IW {1,1}));
183 fprintf('Nilai BIAS = %4.1f\n',(net.b {1}));
184 disp(' ');
185 disp('PROSES TESTING ADALINE');
186 disp('*************************************');
187 y = sim(net,p)
188 X1=-5:0.1:5;
189 X2=(-bias-X1*bobot(1,1))/bobot(1,2);
190 plot(1,1,'*r',1,-1,'og',-1,1,'ob',-1,-1,'*c');
191 hold on;
192 plot(X1,X2);
193 legend('1,1','1,-1','-1,1','-1,-1');
194 title(['target',num2str(target)]);
195 grid on;
196 xlabel('X1');
197 ylabel('X2');
198 case 2.1
199 s1=[1 1 0 0]; %untuk biner
200 s2=[1 0 1 0]; %untuk biiner
201 target1 = [1 -1 -1 -1]; % AND function
202 target2 = [-1 1 1 1]; % NAND function
203 target3 = [-1 1 -1 -1]; % AND NOT function
204 target4 = [1 1 1 -1]; % OR function
205 target5 = [-1 -1 -1 1]; % NOR function
206 target6 = [1 1 -1 1]; % OR NOT function
207 disp('t=1 AND function')
208 disp('t=2 NAND function')
209 disp('t=3 AND NOT function')
210 disp('t=4 OR function')
211 disp('t=5 NOR function')
212 disp('t=6 OR NOT function')
213 t= input ('t= ');
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
249
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261 262
263
264
265
266
267
268
269
270
if t==1
target=target1;
elseif t==2 target=target2; elseif t==3 target=target3; elseif t==4 target=target4; elseif t==5 target=target5; else target=target6; end disp(' s1 s2 target') disp([s1' s2' target']) x1=s1; x2=s2; net = newlin([-1 1 ; -1 1],1); net.IW {1,1}= [0 0]; net.b {1}= [0]; p = [ x1 ; x2 ]; %inputan bipolar net = train (net,p,target); bobot=net.IW {1,1}; bias=net.b {1}; fprintf('Nilai WIGHT = %4.1f %4.1f\n',(net.IW {1,1})); fprintf('Nilai BIAS = %4.1f\n',(net.b {1})); disp(' '); disp('PROSES TESTING ADALINE'); disp('*************************************'); y = sim(net,p) X1=-5:0.1:5; X2=(-bias-X1*bobot(1,1))/bobot(1,2); plot(1,1,'*r',1,0,'og',0,1,'ob',0,0,'*c'); hold on; plot(X1,X2); legend('1,1','1,0','0,1','0,0'); title(['target',num2str(target)]); grid on; xlabel('X1'); ylabel('X2');
end case 3
disp('XOR function') s1=[1 1 -1 -1]; %untuk bipolar s2=[1 -1 1 -1]; %untuk bipolar target=[-1 1 1 -1] % XOR function disp(' s1 s2 target') disp([s1' s2' target']) x1=s1; x2=s2; input=[x1 ; x2]; net=newff(input,target,2,{'logsig',
'purelin'},'trainlm','mse');
net.IW {1,1}= [0.05 0.1 ; 0.2 0.2]; net.b {1}= [0.3 ; 0.15]; net.divideFcn = ('');
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
% net=init(net); net.trainParam.epochs =9; net=train(net,input,target); fprintf('Nilai WIGHT = %4.1f %4.1f\n',(net.IW {1,1})); fprintf('Nilai BIAS = %4.1f\n',(net.b {1}));
tes=sim(net,input) error=(tes-target)
plotpv(input,target>0) plotpc(net.IW{:}(1,:),net.b{:}(1,:)); plotpc(net.IW{:}(2,:),net.b{:}(2,:)); title('XOR function'); grid on; xlabel('X1'); ylabel('X2'); end
Program M-File di atas adalah gabungan dari Proses Perceptron Proses Adaline dan Proses
Madaline dan sebagai berikut hasil dari Proses Madaline :
1. Program Madaline untuk fungsi XOR .
Input dan targetnya Bipolar
disp('XOR function') s1=[1 1 -1 -1]; %untuk bipolar s2=[1 -1 1 -1]; %untuk bipolar target=[-1 1 1 -1] % XOR function disp(' s1 s2 target') disp([s1' s2' target']) x1=s1; x2=s2; input=[x1 ; x2]; net=newff(input,target,2,{'logsig', 'purelin'},'trainlm','mse');
net.IW {1,1}= [0.05 0.1 ; 0.2 0.2]; net.b {1}= [0.3 ; 0.15]; net.divideFcn = (''); % net=init(net); net.trainParam.epochs =9; net=train(net,input,target); fprintf('Nilai WIGHT = %4.1f %4.1f\n',(net.IW {1,1})); fprintf('Nilai BIAS = %4.1f\n',(net.b {1}));
tes=sim(net,input) error=(tes-target)
plotpv(input,target>0) plotpc(net.IW{:}(1,:),net.b{:}(1,:)); plotpc(net.IW{:}(2,:),net.b{:}(2,:)); title('XOR function'); grid on; xlabel('X1'); ylabel('X2');
Output dari Fungsi XOR
Dari gambar diatas kita akan menjalankan proses yang ke-3 yaitu madaline, dari proses
madaline kita akan memilih fungsi XOR sebagai hasil running. kemudian dari proses tersebut
hasil outputnya seperti pada gambar dibawah ini.
Output Fungsi XOR dari fungsi Madaline berbeda-beda pada running pertama dengan
membatasi epoch pada iterasi ke- 9 outputnya berhenti pada iterasi ke-8 dengan nilai bobot
adalah , dan .
dan Pada proses Testing nilai atau bisa dikatakan nilai erorrnya sangat kecil yaitu
1.0e-10 , kemudian pada running kedua dengan membatasi epoch pada iterasi ke-9, outputnya
berhenti pada iterasi ke-6 dengan nilai bobot adalah ,
dan . dan Pada proses Testing nilai atau
bisa dikatakan nilai erorrnya sangat kecil yaitu1.0e-06. Pada Neural Network bisa kita lihat
inputan da outputnya berbeda dengan Perceptron dan Adaline, pada Madaline proses inputan
memerlukan dua lapisan yang terdiri dari 1 lapisan tersembunyi (terdiri dari 2 unit adaline)
dan 1 lapisan output (terdiri dari 1 unit adaline) atau yang disebut dengan Hidden Layer dan
Output Layer. Selanjutnya tampilan grafik fungsi XOR dari 2 hasil running yang berbeda
memiliki grafik yang berbeda sebagai berikut:
proses outputnya pada Madaline berbeda-beda namun proses tesiting menunjukan bahwa
nilai erorrnya sangat kecil sehingga proses trainingnya mendekati kebenaran.