Anda di halaman 1dari 9

%Program Hebb AND

%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
end
%Menampilkan hasil
[p1 p2 t a']

%Program Hebb AND Pelatihan 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 (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 bias 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]

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;
else
%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;
end
end
%Memeriksa apakah semua keluaran = target
if y == t
k=j;
break
else
end
end
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;
else
%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;
end
end
%Memeriksa apakah semua keluaran = target
if y == t
%epoch(j)=j;
k=j;
break
else
%epoch(j)=0;
end
end
%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);
end
end
%Tampilkan hasil bobot dan bais terakhir
[w(1) w(2) b]
end

Example 4.5 Write a MATLAB program for perceptron net for an AND function with bipolar inputs and targets.
Solution The truth table for the AND function is given as
X1
X2
Y
1
1
1
1
1
1
1
1
1
1
1
1
The MATLAB program for the above table is given as follows.
Program
%Perceptron for AND funtion
clear;
clc;
x=[1 1 -1 -1;1 -1 1 -1];
t=[1 -1 -1 -1];
w=[0 0];
b=0;
alpha=input('Enter Learning rate=');
theta=input('Enter Threshold value=');
con=1;
epoch=0;
while con
con=0;
for i=1:4
yin=b+x(1,i)*w(1)+x(2,i)*w(2);
if yin>theta
y=1;
end
if yin <=theta & yin>=-theta
y=0;
end
if yin<-theta
y=-1;
end
if y-t(i)
con=1;
for j=1:2
w(j)=w(j)+alpha*t(i)*x(j,i);
end
b=b+alpha*t(i);
end
end
epoch=epoch+1;
end
disp('Perceptron for AND funtion');
disp(' Final Weight matrix');
disp(w);
disp('Final Bias');
disp(b);

Anda mungkin juga menyukai