%Program Hebb AND Hasil (Contoh Soal 1.5) %Memasukkan data input dan target p1=[-1 -1 1 1]'; p2=[-1 1 -1 1]'; t=[-1 -1 -1 1]'; %Memasukkan bobot dan bias hasil pelatihan w=[2 2] b=-2; %Iterasi (1 sampai 4) for i=1:4 % Menghitung n n(i)=w(1)*p1(i)+w(2)*p2(i)+b; %Menghitung output if n(i)>=0 a(i)=1; else a(i)=-1; end %Menampilkan hasil [p1 p2 t a']
%Program Hebb AND Pelatihan input dan output bipolar (Contoh Soal 1.5) %Memasukkan data input dan target p1=[-1 -1 1 1]'; p2=[-1 1 -1 1]'; t=[-1 -1 -1 1]; %Inisialsasi w1=0; w2=0; b=0; %Iterasi (1 sampai 4) for i=1:4 %Perbaiki bobot w1=w1+p1(i)*t(i); w2=w2+p2(i)*t(i); b=b+t(i); end %Tampilkan hasil bobot dan bais terakhir [w1 w2 b]
%Program neuron Hebb untuk NAND (input dan output bipolar) %Memasukkan data input dan target p1=[-1 -1 1 1]'; p2=[-1 1 -1 1]'; t=[-1 1 1 1]; %Inisialsasi w1=0; w2=0; b=0; %Iterasi untuk menghitung bobot(1 sampai 4) for i=1:4 %Perbaiki bobot w1=w1+p1(i)*t(i) w2=w2+p2(i)*t(i) b=b+t(i) end
%Program neuron Hebb untuk NAND (input dan output bipolar) %Memasukkan data input dan target p1=[-1 -1 1 1]; p2=[-1 1 -1 1]; t=[-1 1 1 1]; %Inisialsasi w1=0; w2=0; b=0; %Iterasi untuk menghitung bobot(1 sampai 4) for i=1:4 %Perbaiki bobot w1=w1+p1(i)*t(i) w2=w2+p2(i)*t(i) b=b+t(i); end [w1 w2 b]
%Program McCulloch Pitts NAND (Soal Latihan 1.2) %Memasukkan data input p1=[0 0 1 1]'; p2=[0 1 0 1]'; %Memasukkan bobot dan bias (hasil analisis) w=[3 4] b=-6; %Iterasi (1 sampai 4) for i=1:4 % Menghitung n n(i)=w(1)*p1(i)+w(2)*p2(i)+b; %Menghitung output if n(i)>=0 a(i)=0; else a(i)=1; end %Menampilkan input output [p1 p2 a']
%Program McCulloch Pitts AND tanpa bias (input dan output biner) Contoh Soal 1.1 %Memasukkan data input dan target p1=[0 0 1 1]'; p2=[0 1 0 1]'; t=[0 0 0 1]'; %Memasukkan bobot dan threshold (hasil coba-coba) w1=1; w2=1; th=2; %Iterasi (1 sampai 4) for i=1:4 % menghitung n n(i)= w1*p1(i)+w2*p2(i); % Menghitung output a if n(i)<th a(i)=0; else a(i)=1; end % Tampilkan hasil [p1 p2 a']
%Program McCulloch Pitts AND tanpa bias (input dan output biner) Contoh Soal 1.1 %Memasukkan data input dan target p1=[0 0 1 1]'; p2=[0 1 0 1]'; t=[0 0 0 1]'; %Memasukkan bobot dan threshold (hasil coba-coba) w1=1; w2=1; th=2; %Iterasi (1 sampai 4) for i=1:4 % menghitung n n(i)= w1*p1(i)+w2*p2(i); % Menghitung output a if n(i)<th a(i)=0; else a(i)=1; end % Tampilkan hasil [p1 p2 a']
%Program McCulloch Pitts AND dengan bias (input dan output biner) Contoh Soal 1.1 %Memasukkan data input dan target p1=[0 0 1 1]'; p2=[0 1 0 1]'; t=[0 0 0 1]'; %Memasukkan bobot dan bias (hasil analisis) w1=1; w2=1; b=-2; %Iterasi (1 sampai 4) for i=1:4 % menghitung n n(i)= w1*p1(i)+w2*p2(i)+b; % Menghitung output a if n(i)<0 a(i)=0; else a(i)=1; end % Tampilkan hasil [p1 p2 a']
%Program McCulloch Pitts OR (input dan output biner) Contoh Soal 1.2 %Memasukkan data input dan target p1=[0 0 1 1]'; p2=[0 1 0 1]'; t=[0 0 0 1]'; %Memasukkan bobot dan threshold w1=1; w2=1; th=1; %Iterasi (1 sampai 4) for i=1:4 % menghitung n n(i)= w1*p1(i)+w2*p2(i); % Menghitung output a if n(i)<th a(i)=0; else a(i)=1; end % Tampilkan hasil [p1 p2 a']
%Program p1^~p2 (Contoh Soal 1.3) %Memasukkan bobot dan threshold w1=[2 -1]; tr1=2; %Iterasi (1 sampai 4) for i=1:4 %Menghitung n n(i)=w1(1)*p1(i)+w1(2)*p2(i); %Menghitung output q1 if n(i)>=tr1 q1(i)=1; else q1(i)=0; end %Tampilkan output [p1 p2 q1']
%Program p1^~p2 (Contoh Soal 1.3) %Memasukkan bobot dan threshold w1=[2 -1]; tr1=2; %Iterasi (1 sampai 4) for i=1:4 %Menghitung n n(i)=w1(1)*p1(i)+w1(2)*p2(i); %Menghitung output q1 if n(i)>=tr1 q1(i)=1; else q1(i)=0; end %Tampilkan output [p1 p2 q1']
%Program McCulloch Pitts XNOR (Latihan Soal 1.2) %Memasukkan data input p1=[0 0 1 1]'; p2=[0 1 0 1]'; %Subprogram NOT p1 OR p2 %Memasukkan bobot dan bias w1=[-1 1]; b=-0.5; %Iterasi (1 sampai 4) for i=1:4 %Menghitung n n(i)=w1(1)*p1(i)+w1(2)*p2(i)+b; %Menghitung output q1 if n(i)>=0 q1(i)=0; else q1(i)=1; end %Subprogram NOT p2 OR p1 w2=[1 -1]; % Menghitung n n(i)=w2(1)*p1(i)+w2(2)*p2(i)+b; %Menghitung output q2 q2(i)=0; q2(i)=1; %Subprogram q1 AND q2 w3=[1 1]; b=-2; n(i)=w3(1)*q1(i)+w3(2)*q2(i)+b; %Menghitung output a(i)=1; a(i)=0; %Menampilkan input output [p1 p2 q1' q2' a']
%Program McCulloch Pitts XOR (Latihan Soal 1.2) %Memasukkan data input p1=[0 0 1 1]'; p2=[0 1 0 1]'; %Subprogram NOT p1 OR p2 %Memasukkan bobot dan bias w1=[-1 1]; b=-0.5; %Iterasi (1 sampai 4) for i=1:4 %Menghitung n n(i)=w1(1)*p1(i)+w1(2)*p2(i)+b; %Menghitung output q1 if n(i)>=0 q1(i)=1; else q1(i)=0; end %Subprogram NOT p2 OR p1 w2=[1 -1]; % Menghitung n n(i)=w2(1)*p1(i)+w2(2)*p2(i)+b; %Menghitung output q2 q2(i)=1; q2(i)=0; %Subprogram q1 AND q2 w3=[1 1]; b=-2; n(i)=w3(1)*q1(i)+w3(2)*q2(i)+b; %Menghitung output a(i)=1; a(i)=0; %Menampilkan input output [p1 p2 q1' q2' a']
clear epoch %Program perceptron tiga input biner bipolar AND (Contoh Soal 2.3) %Memasukkan data input dan target p1=[1 1 1 0]; p2=[1 1 0 1]; p3=[1 0 1 1]; t=[1 -1 -1 -1]; %Memasukkan bobot awal w1=0; w2=0; w3=0; b=0; teta=0.1; alpha=1; for j=1:30 for i=1:4 %Menghitung n n(i)=w1*p1(i)+w2*p2(i)+w3*p3(i)+b; %Menghitung output y if n(i)>teta y(i)=1; elseif n(i)<-teta y(i)=-1; else y(i)=0; end %Memeriksa apakah keluaran = target if y(i) == t(i) %w1=w1; %w2=w2; %w3=w3; %b=b; %Menentukan perubahan bobot dw1=alpha*p1(i)*t(i); dw2=alpha*p2(i)*t(i); dw3=alpha*p3(i)*t(i); db=alpha*t(i); %Menghitung bobot baru w1=w1+dw1; w2=w2+dw2; w3=w3+dw3; b=b+db; %Memeriksa apakah semua keluaran = target if y == t k=j; break k [w1 w2 w3 b]
clear epoch %Program perceptron AND 2 masukan biner keluaran bipolar (Contoh Soal 2.2) %Memasukkan data input dan target p1=[1 1 0 0]; p2=[1 0 1 0]; t=[1 -1 -1 -1]; %Inisialisasi bobot awal w1=0; w2=0; b=0; teta=.1; alpha=2; k=0; for j=1:20 for i=1:4 %Menghitung n n(i)=w1*p1(i)+w2*p2(i)+b; %Menghitung output y if n(i)>teta y(i)=1; elseif n(i)<-teta y(i)=-1; else y(i)=0; end %Memeriksa apakah keluaran = target if y(i) == t(i) w1=w1; w2=w2; b=b; %Menentukan perubahan bobot dw1=alpha*p1(i)*t(i); dw2=alpha*p2(i)*t(i); db=alpha*t(i); %Menghitung bobot baru w1=w1+dw1; w2=w2+dw2; b=b+db; %Memeriksa apakah semua keluaran = target if y == t %epoch(j)=j; k=j; break %epoch(j)=0; %Menampilkan epoch dan bobot terakhir x='Jumlah epoch adalah '; yy=num2str(k); z=[x yy]; disp(z) [w1 w2 b]
clear all %Program Perceptron AND input dan output bipolar Pelatihan (Contoh Soal 2.1) % Memasukkan data input dan target p1=[1 1 -1 -1]'; p2=[1 -1 1 -1]'; t=[1 -1 -1 -1]'; %Inisialsasi w=[0 0]; b=0; alpha=1; teta=0; %Iterasi (1 sampai 4) for j=1:10 for i=1:4 % Menghitung n n(i)=w(1)*p1(i)+w(2)*p2(i)+b; if n(i)>teta a(i)=1; else n(i)<=teta a(i)=-1; end if a(i)'==t(i) w(1)=w(1); w(2)=w(2); b=b; else % Perbaiki bobot w(1)=w(1)+alpha*p1(i)*t(i); w(2)=w(2)+alpha*p2(i)*t(i); b=b+alpha*t(i); %Tampilkan hasil bobot dan bais terakhir [w(1) w(2) b]