C++ Neural Networks and Fuzzy Logic: Preface


Source File Listing 9.2



Download 1,14 Mb.
Pdf ko'rish
bet214/443
Sana29.12.2021
Hajmi1,14 Mb.
#77367
1   ...   210   211   212   213   214   215   216   217   ...   443
Bog'liq
C neural networks and fuzzy logic

Source File

Listing 9.2 fuzzyam.cpp

//fuzzyam.cpp   V. Rao, H. Rao

#include "fuzzyam.h"

float max(float x,float y)   //new for FAM

{

float u;


u = ((x>y) ? x : y );

return u;

}

float min(float x,float y)      // new for FAM



{

float u;


u =( (x>y) ? y : x) ;

return u;

}

C++ Neural Networks and Fuzzy Logic:Preface



Source File

187



void fzneuron::getnrn(int m1,int m2,int m3,char *y)

{

int i;



name = y;

nnbr = m1;

outn = m2;

inn  = m3;

for(i=0;i

       outwt[i] = 0 ;

       }

output = 0;

activation = 0;

}

void exemplar::getexmplr(int k,int l,float *b1,float *b2)    // changed



from BAM

{

int i2;



xdim = k;

ydim = l;

for(i2=0;i2

       v1[i2] = b1[i2]; }

for(i2=0;i2

       v2[i2] = b2[i2]; }

}

void exemplar::prexmplr()



{

int i;


cout<<"\nX vector you gave is:\n";

for(i=0;i

       cout<

cout<<"\nY vector you gave is:\n";

for(i=0;i

       cout<

cout<<"\n";

}

void asscpair::getasscpair(int i,int j,int k)



{

idn = i;


xdim = j;

ydim = k;

}

void asscpair::prasscpair()



{

int i;


cout<<"\nX vector in the associated pair no. "<for(i=0;i

       cout<

C++ Neural Networks and Fuzzy Logic:Preface

Source File

188



cout<<"\nY vector in the associated pair no. "<for(i=0;i

       cout<

cout<<"\n";

}

void potlpair::getpotlpair(int k,int j)



{

xdim = k;

ydim = j;

}

void potlpair::prpotlpair()



{

int i;


cout<<"\nX vector in possible associated pair is:\n";

for(i=0;i

       cout<

cout<<"\nY vector in possible associated pair is:\n";

for(i=0;i

       cout<

cout<<"\n";

}

void network::getnwk(int k,int l,int k1,float b1[][6],float



       b2[][4])

{

anmbr = k;



bnmbr = l;

nexmplr = k1;

nasspr = 0;

ninpt = 0;

int i,j,i2;

float tmp1,tmp2;

flag =0;

char *y1="ANEURON", *y2="BNEURON" ;

for(i=0;i

       e[i].getexmplr(anmbr,bnmbr,b1[i],b2[i]);

       e[i].prexmplr();

       cout<<"\n";

       }

for(i=0;i

       anrn[i].fzneuron::getnrn(i,bnmbr,0,y1);}

for(i=0;i

       bnrn[i].fzneuron::getnrn(i,0,anmbr,y2);}

for(i=0;i

       for(j=0;j

              tmp1 = 0.0;

              for(i2=0;i2

C++ Neural Networks and Fuzzy Logic:Preface

Source File

189



                      tmp2 = min(e[i2].v1[i],e[i2].v2[j]);

                      tmp1 = max(tmp1,tmp2);

              }

              mtrx1[i][j] = tmp1;

              mtrx2[j][i] = mtrx1[i][j];

              anrn[i].outwt[j] = mtrx1[i][j];

              bnrn[j].outwt[i] = mtrx2[j][i];

              }

       }

prwts();


cout<<"\n";

}

void network::asgninpt(float *b)



{

int i,j;


cout<<"\n";

for(i=0;i

       anrn[i].output = b[i];

       outs1[i] = b[i];

       }

}

void network::compr1(int j,int k)



{

int i;


for(i=0;i       if(pp[j].v1[i] != pp[k].v1[i]) flag = 1;

       break;

       }


}

void network::compr2(int j,int k)

{

int i;


for(i=0;i

       if(pp[j].v2[i] != pp[k].v2[i]) flag = 1;

       break;}

}

void network::comput1()   //changed from BAM



{

int j;


for(j=0;j       int ii1;

       float c1 =0.0,d1;

       cout<<"\n";

       for(ii1=0;ii1

C++ Neural Networks and Fuzzy Logic:Preface

Source File

190



              d1 = min(outs1[ii1],mtrx1[ii1][j]);

              c1 = max(c1,d1);

              }

       bnrn[j].activation = c1;

       cout<<"\n output layer neuron  "<

              <

       bnrn[j].output = bnrn[j].activation;

       outs2[j] = bnrn[j].output;

       cout<<"\n output layer neuron  "<

              <

       }

}

void network::comput2()             //changed from BAM



{

int i;


for(i=0;i       int ii1;

       float c1=0.0,d1;

       for(ii1=0;ii1

              d1 = min(outs2[ii1],mtrx2[ii1][i]);

              c1 = max(c1,d1);}

       anrn[i].activation = c1;

       cout<<"\ninput layer neuron "<

              <

       anrn[i].output = anrn[i].activation;

       outs1[i] = anrn[i].output;

       cout<<"\n input layer neuron  "<

              <

       }


}

void network::asgnvect(int j1,float *b1,float *b2)

{

int  j2;


for(j2=0;j2

       b2[j2] = b1[j2];}

}

void network::prwts()



{

int i3,i4;

cout<<"\n  weights−−  input layer to output layer: \n\n";

for(i3=0;i3

       for(i4=0;i4

              cout<

       cout<<"\n"; }

cout<<"\n";

cout<<"\nweights−−  output layer to input layer: \n\n";

C++ Neural Networks and Fuzzy Logic:Preface

Source File

191



for(i3=0;i3       for(i4=0;i4

              cout<

       cout<<"\n";  }

cout<<"\n";

}

void network::iterate()



{

int i1;


for(i1=0;i1       findassc(e[i1].v1);

       }

}

void network::findassc(float *b)



{

int j;


flag = 0;

asgninpt(b);

       ninpt ++;

       cout<<"\nInput vector is:\n" ;

       for(j=0;j<6;++j){

              cout<

       cout<<"\n";

       pp[0].getpotlpair(anmbr,bnmbr);

asgnvect(anmbr,outs1,pp[0].v1);

comput1();

if(flag>=0){

       asgnvect(bnmbr,outs2,pp[0].v2);

       cout<<"\n";

       pp[0].prpotlpair();

       cout<<"\n";

       comput2(); }

for(j=1;j

       pp[j].getpotlpair(anmbr,bnmbr);

       asgnvect(anmbr,outs1,pp[j].v1);

       comput1();

       asgnvect(bnmbr,outs2,pp[j].v2);

       pp[j].prpotlpair();

       cout<<"\n";

       compr1(j,j−1);

       compr2(j,j−1);

       if(flag == 0) {

C++ Neural Networks and Fuzzy Logic:Preface

Source File

192



              int j2;

              nasspr += 1;

              j2 = nasspr;

              as[j2].getasscpair(j2,anmbr,bnmbr);

              asgnvect(anmbr,pp[j].v1,as[j2].v1);

              asgnvect(bnmbr,pp[j].v2,as[j2].v2);

              cout<<"\nPATTERNS ASSOCIATED:\n";

              as[j2].prasscpair();

              j = MXSIZ ;

              }

       else

              if(flag == 1)

                     {

                     flag = 0;

                     comput1();

                     }

              }

}

void network::prstatus()



{

int j;


cout<<"\nTHE FOLLOWING ASSOCIATED PAIRS WERE FOUND BY FUZZY AM\n\n";

for(j=1;j<=nasspr;++j){

       as[j].prasscpair();

       cout<<"\n";}

}

void main()



{

int ar = 6, br = 4, nex = 1;

float inptv[][6]={0.1,0.3,0.2,0.0,0.7,0.5,0.6,0.0,0.3,0.4,0.1,0.2};

float outv[][4]={0.4,0.2,0.1,0.0};

cout<<"\n\nTHIS PROGRAM IS FOR A FUZZY ASSOCIATIVE MEMORY NETWORK. THE

NETWORK \n";

cout<<"IS SET UP FOR ILLUSTRATION WITH "<

cout<<" OUTPUT NEURONS.\n"<

static network famn;

famn.getnwk(ar,br,nex,inptv,outv);

famn.iterate();

famn.findassc(inptv[1]);

famn.prstatus();

}

Previous Table of Contents Next



Copyright ©

 IDG Books Worldwide, Inc.

C++ Neural Networks and Fuzzy Logic:Preface

Source File

193



C++ Neural Networks and Fuzzy Logic

by Valluru B. Rao

MTBooks, IDG Books Worldwide, Inc.



ISBN: 1558515526   Pub Date: 06/01/95

Previous Table of Contents Next



Output

The illustrative run of the previous program uses the fuzzy sets with fit vectors (0.1, 0.3, 0.2, 0.0, 0.7, 0.5) and

(0.4, 0.2, 0.1, 0.0). As you can expect according to the discussion earlier, recall is not perfect in the reverse

direction and the fuzzy associated memory consists of the pairs (0.1, 0.3, 0.2, 0.0, 0.4, 0.4) with (0.4, 0.2, 0.1,

0.0) and (0.1, 0.2, 0.2, 0, 0.2, 0.2) with (0.2, 0.2, 0.1, 0). The computer output is in such detail as to be

self−explanatory.

THIS PROGRAM IS FOR A FUZZY ASSOCIATIVE MEMORY NETWORK. THE NETWORK IS

SET UP FOR ILLUSTRATION WITH SIX INPUT NEURONS, AND FOUR OUTPUT NEURONS.

1 exemplars are used to encode

X vector you gave is:

0.1  0.3  0.2  0  0.7  0.5

Y vector you gave is:

0.4  0.2  0.1  0

  weights−−input layer to output layer:

0.1  0.1  0.1  0

0.3  0.2  0.1  0

0.2  0.2  0.1  0

0    0    0    0

0.4  0.2  0.1  0

0.4  0.2  0.1  0

weights−−output layer to input layer:

0.1  0.3  0.2  0  0.4  0.4

0.1  0.2  0.2  0  0.2  0.2

0.1  0.1  0.1  0  0.1  0.1

0    0    0    0  0    0

Input vector is:

0.1 0.3 0.2 0 0.7 0.5

output layer neuron  0 activation is 0.4

output layer neuron  0 output is 0.4

output layer neuron  1 activation is 0.2

output layer neuron  1 output is 0.2

output layer neuron  2 activation is 0.1

output layer neuron  2 output is 0.1

output layer neuron  3 activation is 0

C++ Neural Networks and Fuzzy Logic:Preface

Output


194


 output layer neuron  3 output is 0

X vector in possible associated pair is:

0.1  0.3  0.2  0  0.7  0.5

Y vector in possible associated pair is:

0.4  0.2  0.1  0

input layer neuron 0 activation is 0.1

input layer neuron  0 output is 0.1

input layer neuron 1 activation is 0.3

input layer neuron  1 output is 0.3

input layer neuron 2 activation is 0.2

input layer neuron  2 output is 0.2

input layer neuron 3 activation is 0

input layer neuron  3 output is 0

input layer neuron 4 activation is 0.4

input layer neuron  4 output is 0.4

input layer neuron 5 activation is 0.4

input layer neuron  5 output is 0.4

output layer neuron  0 activation is 0.4

output layer neuron  0 output is 0.4

output layer neuron  1 activation is 0.2

output layer neuron  1 output is 0.2

output layer neuron  2 activation is 0.1

output layer neuron  2 output is 0.1

output layer neuron  3 activation is 0

output layer neuron  3 output is 0

X vector in possible associated pair is:

0.1  0.3  0.2  0  0.4  0.4

Y vector in possible associated pair is:

0.4  0.2  0.1  0

PATTERNS ASSOCIATED:

X vector in the associated pair no. 1 is:

0.1  0.3  0.2  0  0.4  0.4

Y vector in the associated pair no. 1 is:

0.4  0.2  0.1  0

Input vector is:

0.6 0 0.3 0.4 0.1 0.2

C++ Neural Networks and Fuzzy Logic:Preface

Output


195


 output layer neuron  0 activation is 0.2

 output layer neuron  0 output is 0.2

 output layer neuron  1 activation is 0.2

 output layer neuron  1 output is 0.2

 output layer neuron  2 activation is 0.1

 output layer neuron  2 output is 0.1

 output layer neuron  3 activation is 0

 output layer neuron  3 output is 0

X vector in possible associated pair is:

0.6  0  0.3  0.4  0.1  0.2

Y vector in possible associated pair is:

0.2  0.2  0.1  0

input layer neuron 0 activation is 0.1

 input layer neuron  0 output is 0.1

input layer neuron 1 activation is 0.2

 input layer neuron  1 output is 0.2

input layer neuron 2 activation is 0.2

 input layer neuron  2 output is 0.2

input layer neuron 3 activation is 0

 input layer neuron  3 output is 0

input layer neuron 4 activation is 0.2

 input layer neuron  4 output is 0.2

input layer neuron 5 activation is 0.2

 input layer neuron  5 output is 0.2

 output layer neuron  0 activation is 0.2

 output layer neuron  0 output is 0.2

 output layer neuron  1 activation is 0.2

 output layer neuron  1 output is 0.2

 output layer neuron  2 activation is 0.1

 output layer neuron  2 output is 0.1

 output layer neuron  3 activation is 0

 output layer neuron  3 output is 0

X vector in possible associated pair is:

C++ Neural Networks and Fuzzy Logic:Preface

Output

196



0.1  0.2  0.2  0  0.2  0.2

Y vector in possible associated pair is:

0.2  0.2  0.1  0

 output layer neuron  0 activation is 0.2

 output layer neuron  0 output is 0.2

 output layer neuron  1 activation is 0.2

 output layer neuron  1 output is 0.2

 output layer neuron  2 activation is 0.1

 output layer neuron  2 output is 0.1

 output layer neuron  3 activation is 0

 output layer neuron  3 output is 0

 output layer neuron  0 activation is 0.2

 output layer neuron  0 output is 0.2

 output layer neuron  1 activation is 0.2

 output layer neuron  1 output is 0.2

 output layer neuron  2 activation is 0.1

 output layer neuron  2 output is 0.1

 output layer neuron  3 activation is 0

 output layer neuron  3 output is 0

X vector in possible associated pair is:

0.1  0.2  0.2  0  0.2  0.2

Y vector in possible associated pair is:

0.2  0.2  0.1  0

PATTERNS ASSOCIATED:

X vector in the associated pair no. 2 is:

0.1  0.2  0.2  0  0.2  0.2

Y vector in the associated pair no. 2 is:

0.2  0.2  0.1  0

THE FOLLOWING ASSOCIATED PAIRS WERE FOUND BY FUZZY AM

X vector in the associated pair no. 1 is:

0.1  0.3  0.2  0  0.4  0.4

Y vector in the associated pair no. 1 is:

0.4  0.2  0.1  0

X vector in the associated pair no. 2 is:

0.1  0.2  0.2  0  0.2  0.2

Y vector in the associated pair no. 2 is:

0.2  0.2  0.1  0

C++ Neural Networks and Fuzzy Logic:Preface

Output

197



Summary

In this chapter, bidirectional associative memories are presented for fuzzy subsets. The development of these

is largely due to Kosko. They share the feature of resonance between the two layers in the network with

Adaptive Resonance theory. Even though there are connections in both directions between neurons in the two

layers, only one weight matrix is involved. You use the transpose of this weight matrix for the connections in

the opposite direction. When one input at one end leads to some output at the other, which in turn leads to

output same as the previous input, resonance is reached and an associated pair is found. In the case of

bidirectional fuzzy associative memories, one pair of fuzzy sets determines one fuzzy associative memory

system. Fit vectors are used in max–min composition. Perfect recall in both directions is not the case unless

the heights of both fit vectors are equal. Fuzzy associative memories can improve the performance of an

expert system by allowing fuzzy rules.

Previous Table of Contents Next

Copyright ©

 IDG Books Worldwide, Inc.

C++ Neural Networks and Fuzzy Logic:Preface

Summary


198



Download 1,14 Mb.

Do'stlaringiz bilan baham:
1   ...   210   211   212   213   214   215   216   217   ...   443




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish