Soft Computing Lab Practicals Program Solution
INDEX OF SOFT COMPUTING
1 | STUDY OF BIOLOGICAL AND ARTIFICIAL NEURAL NETWORK.. |
2 | STUDY OF MP NEURON MODEL AND DIFFERENT ACTIVATION FUNCTIONS |
3 | WRITE A PROGRAM OF PERCEPTRON TRAINING ALGORITHM. |
4 | WRITE A PROGRAM TO IMPLEMENT HEBB’S RULE. |
5 | WRITE A PROGRAM TO IMPLEMENT OF DELTA RULE. |
6 | WRITE A PROGRAM TO IMPLEMENT ADA LINE AND MADALINE |
7 | WRITE A PROGRAM TO IMPLEMENT BACK PROPAGATION ALGORITHM |
8 | WRITE A PROGRAM TO IMPLEMENT KSOM |
9 | WRITE A PROGRAM TO IMPLEMENT COUNTER PROPAGATION NETWORK |
10 | WRITE A PROGRAM TO IMPLEMENT ART ALGORTHIM |
11 | WRITE A PROGRAM TO IMPLEMENT HOPFIELD NETWORK |
12 | |
13 | STUDY OF GENETIC ALGORITHM. |
14 | |
15 | STUDY OF BIOINFORMATICS. |
AIM-1 Write a MATLAB program to generate a few activation functions that are being used in neural networks.
Solution: The activation functions play a major role in determining the
output of the functions. One such program for generating the
activation functions is as given below.
% Illustration of various activation functions used in NN's
x = -10:0.1:10;
tmp = exp(-x);
y1 = 1./(1+tmp);
y2 = (1-tmp)./(1+tmp);
y3 = x;
subplot(231); plot(x, y1); grid on;
axis([min(x) max(x) -2 2]);
title('Logistic Function');
xlabel('(a)');
axis('square');
subplot(232); plot(x, y2); grid on;
axis([min(x) max(x) -2 2]);
title('Hyperbolic Tangent Function');
xlabel('(b)');
axis('square');
subplot(233); plot(x, y3); grid on;
axis([min(x) max(x) min(x) max(x)]);
title('Identity Function');
xlabel('(c)');
axis('square');
AIM-2 Generate ANDNOT function using McCulloch-Pitts Neural Net by a MATLAB program.
Solution The truth table for the ANDNOT function is as follows:
X1 X2 Y
0 0 0
0 1 0
1 0 1
1 1 0
%ANDNOT function using Mcculloch-Pitts neuron
clear;
clc;
%Getting weights and threshold value
disp('Enter weights');
w1=input('Weight w1=');
w2=input('weight w2=');
disp('Enter Threshold Value');
theta=input('theta=');
y=[0 0 0 0];
x1=[0 0 1 1];
x2=[0 1 0 1];
z=[0 0 1 0];
con=1;
while con
zin=x1*w1+x2*w2;
for i=1:4
if zin(i)>=theta
y(i)=1;
else
y(i)=0;
end
end
disp('Output of Net');
disp(y);
if y==z
con=0;
else
disp('Net is not learning enter another set of weights and Threshold value');
w1=input('weight w1=');
w2=input('weight w2=');
theta=input('theta=');
end
end
disp('Mcculloch-Pitts Net for ANDNOT function');
disp('Weights of Neuron');
disp(w1);
disp(w2);
disp('Threshold value');
disp(theta);
Output
Enter weights
Weight w1=1
weight w2=1
Enter Threshold Value
theta=0.1
Output of Net
0 1 1 1
Net is not learning enter another set of weights and Threshold value
Weight w1=1
weight w2=-1
theta=1
Output of Net
0 0 1 0
Mcculloch-Pitts Net for ANDNOT function
Weights of Neuron
1
-1
Threshold value
1
AIM-3 Generate XOR function using McCulloch-Pitts neuron by
writing an M-file.
Solution The truth table for the XOR function is,
X1 X2 Y
0 0 0
0 1 1
1 0 1
1 1 0
%XOR function using McCulloch-Pitts neuron
clear;
clc;
%Getting weights and threshold value
disp('Enter weights');
w11=input('Weight w11=');
w12=input('weight w12=');
w21=input('Weight w21=');
w22=input('weight w22=');
v1=input('weight v1=');
v2=input('weight v2=');
disp('Enter Threshold Value');
theta=input('theta=');
x1=[0 0 1 1];
x2=[0 1 0 1];
z=[0 1 1 0];
con=1;
while con
zin1=x1*w11+x2*w21;
zin2=x1*w21+x2*w22;
for i=1:4
if zin1(i)>=theta
y1(i)=1;
else
y1(i)=0;
end
if zin2(i)>=theta
y2(i)=1;
else
y2(i)=0;
end
end
yin=y1*v1+y2*v2;
for i=1:4
if yin(i)>=theta;
y(i)=1;
else
y(i)=0;
end
end
disp('Output of Net');
disp(y);
if y==z
con=0;
else
disp('Net is not learning enter another set of weights and Threshold value');
w11=input('Weight w11=');
w12=input('weight w12=');
w21=input('Weight w21=');
w22=input('weight w22=');
v1=input('weight v1=');
v2=input('weight v2=');
theta=input('theta=');
end
end
disp('McCulloch-Pitts Net for XOR function');
disp('Weights of Neuron Z1');
disp(w11);
disp(w21);
disp('weights of Neuron Z2');
disp(w12);
disp(w22);
disp('weights of Neuron Y');
disp(v1);
disp(v2);
disp('Threshold value');
disp(theta);
Output
Enter weights
Weight w11=1
weight w12=-1
Weight w21=-1
weight w22=1
weight v1=1
weight v2=1
Enter Threshold Value
theta=1
Output of Net
0 1 1 0
McCulloch-Pitts Net for XOR function
Weights of Neuron Z1
1
-1
weights of Neuron Z2
-1
1
weights of Neuron Y
1
1
Threshold value
1
AIM-4 Write a MATLAB program for Hebb Net to classify two
dimensional input patterns.
Sol :
clear;
clc;
%Input Patterns
E=[1 1 1 1 1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 1 1 1 1];
F=[1 1 1 1 1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 1 -1 -1 -1];
x(1,1:20)=E;
x(2,1:20)=F;
w(1:20)=0;
t=[1 -1];
b=0;
for i=1:2
w=w+x(i,1:20)*t(i);
b=b+t(i);
end
disp('Weight matrix');
disp(w);
disp('Bias');
disp(b);
Output
Weight matrix
Columns 1 through 18
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2
Columns 19 through 20
2 2
Bias 0
AIM- 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
%Perceptron for AND function
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);
Output
Enter Learning rate=1
Enter Threshold value=0.5
Perceptron for AND funtion
Final Weight matrix
1 1
Final Bias
-1
AIM-6 Write a MATLAB program for Adaline network for OR
function Bipolar inputs and targets
clear all;
clc;
disp('Adaline network for OR function Bipolar inputs and targets');
%input pattern
x1=[1 1 -1 -1];
x2=[1 -1 1 -1];
%bias input
x3=[1 1 1 1];
%target vector
t=[1 1 1 -1];
%initial weights and bias
w1=0.1;w2=0.1;b=0.1;
%initialize learning rate
alpha=0.1;
%error convergence
e=2;
%change in weights and bias
delw1=0;delw2=0;delb=0;
epoch=0;
while(e>1.018)
epoch=epoch+1;
e=0;
for i=1:4
nety(i)=w1*x1(i)+w2*x2(i)+b;
%net input calculated and target
nt=[nety(i) t(i)];
delw1=alpha*(t(i)-nety(i))*x1(i);
delw2=alpha*(t(i)-nety(i))*x2(i);
delb=alpha*(t(i)-nety(i))*x3(i);
%weight changes
wc=[delw1 delw2 delb]
%updating of weights
w1=w1+delw1;
w2=w2+delw2;
b=b+delb;
%new weights
w=[w1 w2 b]
%input pattern
x=[x1(i) x2(i) x3(i)];
%printring the results obtained
pnt=[x nt wc w]
end
for i=1:4
nety(i)=w1*x1(i)+w2*x2(i)+b;
e=e+(t(i)-nety(i))^2;
end
end
AIM-7 Write a MATLAB program for cluster two vectors using
Kohonen self organizing maps.
clc;
clear;
x=[1 1 0 0;0 0 0 1;1 0 0 0;0 0 1 1];
alpha=0.6;
%initial weight matrix
w=rand(4,2);
disp('Initial weight matrix');
disp(w);
con=1;
epoch=0;
while con
for i=1:4
for j=1:2
D(j)=0;
for k=1:4
D(j)=D(j)+(w(k,j)-x(i,k))^2;
end
end
for j=1:2
if D(j)==min(D)
J=j;
end
end
w(:,J)=w(:,J)+alpha*(x(i,:)'-w(:,J));
end
alpha=0.5*alpha;
epoch=epoch+1;
if epoch==300
con=0;
end
end
disp('Weight Matrix after 300 epoch');
disp(w);
Output
Initial weight matrix
0.7266 0.4399
0.4120 0.9334
0.7446 0.6833
0.2679 0.2126
Weight Matrix after 300 epoch
0.0303 0.9767
0.0172 0.4357
0.5925 0.0285
0.9695 0.0088
AIM-8 Write a MATLAB program for Full Counter Propagation
Network for given input pair.
clc;
clear;
% set initial weights
v=[0.6 0.2;0.6 0.2;0.2 0.6; 0.2 0.6];
w=[0.4 0.3;0.4 0.3];
x=[0 1 1 0];
y=[1 0];
alpha=0.3;
for j=1:2
D(j)=0;
for i=1:4
D(j)=D(j)+(x(i)-v(i,j))^2;
end
for k=1:2
D(j)=D(j)+(y(k)-w(k,j))^2;
end
end
for j=1:2
if D(j)==min(D)
J=j;
end
end
disp('After one step the weight matrix are');
v(:,J)=v(:,J)+alpha*(x'-v(:,J))
w(:,J)=w(:,J)+alpha*(y'-w(:,J))
Output
After one step the weight matrix are
v =
0.4200 0.2000
0.7200 0.2000
0.4400 0.6000
0.1400 0.6000
w =
0.5800 0.3000
0.2800 0.3000
AIM-9 Write a MATLAB program for Discrete Hopfield net.
Sol:
clc;
clear;
x=[1 1 1 0];
tx=[0 0 1 0];
w=(2*x'–1)*(2*x–1);
for i=1:4
w(i,i)=0;
end
con=1;
y=[0 0 1 0];
while con
up=[4 2 1 3];
for i=1:4
yin(up(i))=tx(up(i))+y*w(1:4,up(i));
if yin(up(i))>0
y(up(i))=1;
end
end
if y==x
disp('Convergence has been obtained');
disp('The Converged Ouput');
disp(y);
con=0;
end
end
Output
Convergence has been obtained
The Converged Output
1 1 1 0
AIM-10 Write a MATLAB program for the ART1 Neural Net.
Sol :
clc;
clear;
b=[0.57 0.0 0.3;0.0 0.0 0.3;0.0 0.57 0.3;0.0 0.47 0.3];
t=[1 1 0 0;1 0 0 1;1 1 1 1];
vp=0.4;
L=2;
x=[1 0 1 1];
s=x;
ns=sum(s);
y=x*b;
con=1;
while con
for i=1:3
if y(i)==max(y)
J=i;
end
end
x=s.*t(J,:);
nx=sum(x);
if nx/ns >= vp
b(:,J)=L*x(:)/(L-1+nx);
t(J,:)=x(1,:);
con=0;
else
y(J)=-1;
con=1;
end
if y+1==0
con=0;
end
end
disp('Top Down Weights');
disp(t);
disp('Bottom up Weights');
disp(b);
Output
Top-down Weights
1 1 0 0
1 0 0 1
1 1 1 1
Bottom-up Weights
0.5700 0.6667 0.3000
0 0 0.3000
0 0 0.3000
0 0.6667 0.3000
Comments
Post a Comment