Tuesday, 1 May 2018

Soft Computing Lab Practicals Program Solution

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
WRITE A PROGRAM TO IMPLEMENT CRISP AND FUZZY LOGIC.
13
STUDY OF GENETIC ALGORITHM.
14
STUDY OF GENETIC PROGRAMMING.
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



EmoticonEmoticon

Ads

Make Fun WIth Her Free

Recent Posts Widget