Skip to content

embedded-ai/fuzzy-logic-intelgalileo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

##Fuzzy logic implements

Implementation of fuzzy logic in Intel Galileo® platform by @kalmik.

###Features

  • FuzzyThread, running the fuzzy routine
  • ServerThread, serving the fuzzy output on socket TCP

###Testing

####Time Analysis

fuzzy system with 7 membership functions ( MFS ) and 49 production rules and websockets server.

Timing Analysis

####Graphical comparison

With MATLAB® toolbox. Timing Analysis With C routine Timing Analysis

###How to use

####Code Example

  • ADD MFS

    float pGN[4] = {-1,-1,-0.75,-0.5};
    float pMN[3] = {-0.75,-0.5,-0.25};
    float pPN[3] = {-0.5,-0.25,0};
    float pZZ[3] = {-0.25,0,0.25};
    float pPP[3] = {0,0.25,0.5};
    float pMP[3] = {0.25,0.5,0.75};
    float pGP[4] = {0.5,0.75,1,1};
    
    pertinence GN = {&pGN,4};
    pertinence MN = {&pMN,3};
    pertinence PN = {&pPN,3};
    pertinence ZZ = {&pZZ,3};
    pertinence PP = {&pPP,3};
    pertinence MP = {&pMP,3};
    pertinence GP = {&pGP,4};
  • ADD Rule

     rule rules[49] = {
     {andOp(fuzzify(e,GN),fuzzify(ed,GN)), &GN},
     {andOp(fuzzify(e,GN),fuzzify(ed,MN)), &GN},
     {andOp(fuzzify(e,GN),fuzzify(ed,PN)), &MN},
     {andOp(fuzzify(e,GN),fuzzify(ed,ZZ)), &MN},
     {andOp(fuzzify(e,GN),fuzzify(ed,PP)), &PN},
     {andOp(fuzzify(e,GN),fuzzify(ed,MP)), &PN},
     {andOp(fuzzify(e,GN),fuzzify(ed,GP)), &ZZ},
     
     {andOp(fuzzify(e,MN),fuzzify(ed,GN)), &GN},
     {andOp(fuzzify(e,MN),fuzzify(ed,MN)), &MN},
     {andOp(fuzzify(e,MN),fuzzify(ed,PN)), &MN},
     {andOp(fuzzify(e,MN),fuzzify(ed,ZZ)), &PN},
     {andOp(fuzzify(e,MN),fuzzify(ed,PP)), &PN},
     {andOp(fuzzify(e,MN),fuzzify(ed,MP)), &ZZ},
     {andOp(fuzzify(e,MN),fuzzify(ed,GP)), &PP},
     
     {andOp(fuzzify(e,PN),fuzzify(ed,GN)), &MN},
     {andOp(fuzzify(e,PN),fuzzify(ed,MN)), &MN},
     {andOp(fuzzify(e,PN),fuzzify(ed,PN)), &PN},
     {andOp(fuzzify(e,PN),fuzzify(ed,ZZ)), &PN},
     {andOp(fuzzify(e,PN),fuzzify(ed,PP)), &ZZ},
     {andOp(fuzzify(e,PN),fuzzify(ed,MP)), &PP},
     {andOp(fuzzify(e,PN),fuzzify(ed,GP)), &PP},
     
     {andOp(fuzzify(e,ZZ),fuzzify(ed,GN)), &MN},
     {andOp(fuzzify(e,ZZ),fuzzify(ed,MN)), &PN},
     {andOp(fuzzify(e,ZZ),fuzzify(ed,PN)), &PN},
     {andOp(fuzzify(e,ZZ),fuzzify(ed,ZZ)), &ZZ},
     {andOp(fuzzify(e,ZZ),fuzzify(ed,PP)), &PP},
     {andOp(fuzzify(e,ZZ),fuzzify(ed,MP)), &PP},
     {andOp(fuzzify(e,ZZ),fuzzify(ed,GP)), &MP},
     
     {andOp(fuzzify(e,PP),fuzzify(ed,GN)), &PN},
     {andOp(fuzzify(e,PP),fuzzify(ed,MN)), &PN},
     {andOp(fuzzify(e,PP),fuzzify(ed,PN)), &ZZ},
     {andOp(fuzzify(e,PP),fuzzify(ed,ZZ)), &PP},
     {andOp(fuzzify(e,PP),fuzzify(ed,PP)), &PP},
     {andOp(fuzzify(e,PP),fuzzify(ed,MP)), &MP},
     {andOp(fuzzify(e,PP),fuzzify(ed,GP)), &MP},
     
     {andOp(fuzzify(e,MP),fuzzify(ed,GN)), &PN},
     {andOp(fuzzify(e,MP),fuzzify(ed,MN)), &ZZ},
     {andOp(fuzzify(e,MP),fuzzify(ed,PN)), &PP},
     {andOp(fuzzify(e,MP),fuzzify(ed,ZZ)), &PP},
     {andOp(fuzzify(e,MP),fuzzify(ed,PP)), &MP},
     {andOp(fuzzify(e,MP),fuzzify(ed,MP)), &MP},
     {andOp(fuzzify(e,MP),fuzzify(ed,GP)), &GP},
     
     {andOp(fuzzify(e,GP),fuzzify(ed,GN)), &ZZ},
     {andOp(fuzzify(e,GP),fuzzify(ed,MN)), &PP},
     {andOp(fuzzify(e,GP),fuzzify(ed,PN)), &PP},
     {andOp(fuzzify(e,GP),fuzzify(ed,ZZ)), &MP},
     {andOp(fuzzify(e,GP),fuzzify(ed,PP)), &MP},
     {andOp(fuzzify(e,GP),fuzzify(ed,MP)), &GP},
     {andOp(fuzzify(e,GP),fuzzify(ed,GP)), &GP}
     };

###Settings

  • AND operation uses MIN
  • OR operation uses MAX
  • IMPLICATION operation uses PRODUCT
  • AGGREGATION operation uses SUM
  • DEFUZZIFY operation uses CENTROID

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages