Fuzzy libray for embedded targets developed by zerokol. Read more on: http://zerokol.com/product/51e93616e84c5571b7000018/2/en edit by Bruno Alfano - corrected deallocation of FuzzyOutput
Fuzzy library by Zerokol. Read more on: http://zerokol.com/product/51e93616e84c5571b7000018/2/en
edit by Bruno Alfano - corrected deallocation bug for FuzzyOutput
Fuzzy.h@2:460b409e26e8, 2015-06-24 (annotated)
- Committer:
- astaff15
- Date:
- Wed Jun 24 15:08:13 2015 +0000
- Revision:
- 2:460b409e26e8
- Parent:
- 0:66cd67db4f1b
Corrected FuzzyOutput destructor bug
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
astaff15 | 2:460b409e26e8 | 1 | /** |
astaff15 | 0:66cd67db4f1b | 2 | * Robotic Research Group (RRG) |
astaff15 | 0:66cd67db4f1b | 3 | * State University of Piaui (UESPI), Brazil - Piauí - Teresina |
astaff15 | 0:66cd67db4f1b | 4 | * |
astaff15 | 0:66cd67db4f1b | 5 | * Fuzzy.h |
astaff15 | 0:66cd67db4f1b | 6 | * |
astaff15 | 0:66cd67db4f1b | 7 | * Author: Msc. Marvin Lemos <marvinlemos@gmail.com> |
astaff15 | 0:66cd67db4f1b | 8 | * AJ Alves <aj.alves@zerokol.com> |
astaff15 | 0:66cd67db4f1b | 9 | * Co authors: Douglas S. Kridi <douglaskridi@gmail.com> |
astaff15 | 0:66cd67db4f1b | 10 | * Kannya Leal <kannyal@hotmail.com> |
astaff15 | 2:460b409e26e8 | 11 | * |
astaff15 | 2:460b409e26e8 | 12 | * Edit by Bruno Alfano on 24-06-2015 |
astaff15 | 2:460b409e26e8 | 13 | * corrected destructor of FuzzyOutput class. |
astaff15 | 0:66cd67db4f1b | 14 | */ |
astaff15 | 0:66cd67db4f1b | 15 | #ifndef FUZZY_H |
astaff15 | 0:66cd67db4f1b | 16 | #define FUZZY_H |
astaff15 | 0:66cd67db4f1b | 17 | |
astaff15 | 0:66cd67db4f1b | 18 | // IMPORTANDO AS BIBLIOTECAS NECESSÁRIAS |
astaff15 | 0:66cd67db4f1b | 19 | #include <inttypes.h> |
astaff15 | 0:66cd67db4f1b | 20 | #include "FuzzyInput.h" |
astaff15 | 0:66cd67db4f1b | 21 | #include "FuzzyOutput.h" |
astaff15 | 0:66cd67db4f1b | 22 | #include "FuzzyRule.h" |
astaff15 | 0:66cd67db4f1b | 23 | |
astaff15 | 0:66cd67db4f1b | 24 | // Estrutura de uma matriz de fuzzyInputArray |
astaff15 | 0:66cd67db4f1b | 25 | struct fuzzyInputArray{ |
astaff15 | 0:66cd67db4f1b | 26 | FuzzyInput* fuzzyInput; |
astaff15 | 0:66cd67db4f1b | 27 | fuzzyInputArray* next; |
astaff15 | 0:66cd67db4f1b | 28 | }; |
astaff15 | 0:66cd67db4f1b | 29 | |
astaff15 | 0:66cd67db4f1b | 30 | // Estrutura de uma matriz de fuzzyOutputArray |
astaff15 | 0:66cd67db4f1b | 31 | struct fuzzyOutputArray{ |
astaff15 | 0:66cd67db4f1b | 32 | FuzzyOutput* fuzzyOutput; |
astaff15 | 0:66cd67db4f1b | 33 | fuzzyOutputArray* next; |
astaff15 | 0:66cd67db4f1b | 34 | }; |
astaff15 | 0:66cd67db4f1b | 35 | |
astaff15 | 0:66cd67db4f1b | 36 | // Estrutura de uma lista de FuzzyRule |
astaff15 | 0:66cd67db4f1b | 37 | struct fuzzyRuleArray{ |
astaff15 | 0:66cd67db4f1b | 38 | FuzzyRule* fuzzyRule; |
astaff15 | 0:66cd67db4f1b | 39 | fuzzyRuleArray* next; |
astaff15 | 0:66cd67db4f1b | 40 | }; |
astaff15 | 0:66cd67db4f1b | 41 | |
astaff15 | 0:66cd67db4f1b | 42 | class Fuzzy { |
astaff15 | 0:66cd67db4f1b | 43 | public: |
astaff15 | 0:66cd67db4f1b | 44 | // CONSTRUTORES |
astaff15 | 0:66cd67db4f1b | 45 | Fuzzy(); |
astaff15 | 0:66cd67db4f1b | 46 | // DESTRUTOR |
astaff15 | 0:66cd67db4f1b | 47 | ~Fuzzy(); |
astaff15 | 0:66cd67db4f1b | 48 | // MÉTODOS PÚBLICOS |
astaff15 | 0:66cd67db4f1b | 49 | bool addFuzzyInput(FuzzyInput* fuzzyInput); |
astaff15 | 0:66cd67db4f1b | 50 | bool addFuzzyOutput(FuzzyOutput* fuzzyOutput); |
astaff15 | 0:66cd67db4f1b | 51 | bool addFuzzyRule(FuzzyRule* fuzzyRule); |
astaff15 | 0:66cd67db4f1b | 52 | bool setInput(int fuzzyInputIndex, float crispValue); |
astaff15 | 0:66cd67db4f1b | 53 | bool fuzzify(); |
astaff15 | 0:66cd67db4f1b | 54 | bool isFiredRule(int fuzzyRuleIndex); |
astaff15 | 0:66cd67db4f1b | 55 | float defuzzify(int fuzzyOutputIndex); |
astaff15 | 0:66cd67db4f1b | 56 | |
astaff15 | 0:66cd67db4f1b | 57 | private: |
astaff15 | 0:66cd67db4f1b | 58 | // VARIÁVEIS PRIVADAS |
astaff15 | 0:66cd67db4f1b | 59 | // ponteiros para gerenciar os arrays de FuzzyInput |
astaff15 | 0:66cd67db4f1b | 60 | fuzzyInputArray* fuzzyInputsCursor; |
astaff15 | 0:66cd67db4f1b | 61 | fuzzyInputArray* fuzzyInputs; |
astaff15 | 0:66cd67db4f1b | 62 | // ponteiros para gerenciar os arrays de FuzzyOutput |
astaff15 | 0:66cd67db4f1b | 63 | fuzzyOutputArray* fuzzyOutputsCursor; |
astaff15 | 0:66cd67db4f1b | 64 | fuzzyOutputArray* fuzzyOutputs; |
astaff15 | 0:66cd67db4f1b | 65 | // ponteiros para gerenciar os arrays de FuzzyRule |
astaff15 | 0:66cd67db4f1b | 66 | fuzzyRuleArray* fuzzyRulesCursor; |
astaff15 | 0:66cd67db4f1b | 67 | fuzzyRuleArray* fuzzyRules; |
astaff15 | 0:66cd67db4f1b | 68 | |
astaff15 | 0:66cd67db4f1b | 69 | // MÉTODOS PRIVADOS |
astaff15 | 0:66cd67db4f1b | 70 | void cleanFuzzyInputs(fuzzyInputArray* aux); |
astaff15 | 0:66cd67db4f1b | 71 | void cleanFuzzyOutputs(fuzzyOutputArray* aux); |
astaff15 | 0:66cd67db4f1b | 72 | void cleanFuzzyRules(fuzzyRuleArray* aux); |
astaff15 | 0:66cd67db4f1b | 73 | }; |
astaff15 | 0:66cd67db4f1b | 74 | #endif |