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

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?

UserRevisionLine numberNew 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