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
FuzzyIO.cpp@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 | 0:66cd67db4f1b | 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 | * FuzzyIO.cpp |
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 | 0:66cd67db4f1b | 11 | */ |
astaff15 | 0:66cd67db4f1b | 12 | #include "FuzzyIO.h" |
astaff15 | 0:66cd67db4f1b | 13 | |
astaff15 | 0:66cd67db4f1b | 14 | // CONSTRUTORES |
astaff15 | 0:66cd67db4f1b | 15 | FuzzyIO::FuzzyIO(){ |
astaff15 | 0:66cd67db4f1b | 16 | } |
astaff15 | 0:66cd67db4f1b | 17 | |
astaff15 | 0:66cd67db4f1b | 18 | FuzzyIO::FuzzyIO(int index){ |
astaff15 | 0:66cd67db4f1b | 19 | this->index = index; |
astaff15 | 0:66cd67db4f1b | 20 | // Iniciando os ponteiros como nulo |
astaff15 | 0:66cd67db4f1b | 21 | this->fuzzySets = NULL; |
astaff15 | 0:66cd67db4f1b | 22 | this->fuzzySetsCursor = NULL; |
astaff15 | 0:66cd67db4f1b | 23 | } |
astaff15 | 0:66cd67db4f1b | 24 | |
astaff15 | 0:66cd67db4f1b | 25 | // DESTRUTOR |
astaff15 | 0:66cd67db4f1b | 26 | FuzzyIO::~FuzzyIO(){ |
astaff15 | 0:66cd67db4f1b | 27 | this->cleanFuzzySets(this->fuzzySets); |
astaff15 | 0:66cd67db4f1b | 28 | } |
astaff15 | 0:66cd67db4f1b | 29 | |
astaff15 | 0:66cd67db4f1b | 30 | // MÉTODOS PÚBLICOS |
astaff15 | 0:66cd67db4f1b | 31 | int FuzzyIO::getIndex(){ |
astaff15 | 0:66cd67db4f1b | 32 | return this->index; |
astaff15 | 0:66cd67db4f1b | 33 | } |
astaff15 | 0:66cd67db4f1b | 34 | |
astaff15 | 0:66cd67db4f1b | 35 | void FuzzyIO::setCrispInput(float crispInput){ |
astaff15 | 0:66cd67db4f1b | 36 | this->crispInput = crispInput; |
astaff15 | 0:66cd67db4f1b | 37 | } |
astaff15 | 0:66cd67db4f1b | 38 | |
astaff15 | 0:66cd67db4f1b | 39 | float FuzzyIO::getCrispInput(){ |
astaff15 | 0:66cd67db4f1b | 40 | return this->crispInput; |
astaff15 | 0:66cd67db4f1b | 41 | } |
astaff15 | 0:66cd67db4f1b | 42 | |
astaff15 | 0:66cd67db4f1b | 43 | bool FuzzyIO::addFuzzySet(FuzzySet* fuzzySet){ |
astaff15 | 0:66cd67db4f1b | 44 | fuzzySetArray *aux; |
astaff15 | 0:66cd67db4f1b | 45 | // Alocando espaço na memória |
astaff15 | 0:66cd67db4f1b | 46 | if((aux = (fuzzySetArray *) malloc(sizeof(fuzzySetArray))) == NULL){ |
astaff15 | 0:66cd67db4f1b | 47 | return false; |
astaff15 | 0:66cd67db4f1b | 48 | } |
astaff15 | 0:66cd67db4f1b | 49 | aux->fuzzySet = fuzzySet; |
astaff15 | 0:66cd67db4f1b | 50 | aux->next = NULL; |
astaff15 | 0:66cd67db4f1b | 51 | |
astaff15 | 0:66cd67db4f1b | 52 | if(this->fuzzySets == NULL){ |
astaff15 | 0:66cd67db4f1b | 53 | this->fuzzySets = aux; |
astaff15 | 0:66cd67db4f1b | 54 | this->fuzzySetsCursor = aux; |
astaff15 | 0:66cd67db4f1b | 55 | }else{ |
astaff15 | 0:66cd67db4f1b | 56 | this->fuzzySetsCursor->next = aux; |
astaff15 | 0:66cd67db4f1b | 57 | this->fuzzySetsCursor = aux; |
astaff15 | 0:66cd67db4f1b | 58 | } |
astaff15 | 0:66cd67db4f1b | 59 | return true; |
astaff15 | 0:66cd67db4f1b | 60 | } |
astaff15 | 0:66cd67db4f1b | 61 | |
astaff15 | 0:66cd67db4f1b | 62 | void FuzzyIO::resetFuzzySets(){ |
astaff15 | 0:66cd67db4f1b | 63 | fuzzySetArray* fuzzySetsAux; |
astaff15 | 0:66cd67db4f1b | 64 | fuzzySetsAux = this->fuzzySets; |
astaff15 | 0:66cd67db4f1b | 65 | // Calculando as pertinências de totos os FuzzyInputs |
astaff15 | 0:66cd67db4f1b | 66 | while(fuzzySetsAux != NULL){ |
astaff15 | 0:66cd67db4f1b | 67 | fuzzySetsAux->fuzzySet->reset(); |
astaff15 | 0:66cd67db4f1b | 68 | fuzzySetsAux = fuzzySetsAux->next; |
astaff15 | 0:66cd67db4f1b | 69 | } |
astaff15 | 0:66cd67db4f1b | 70 | } |
astaff15 | 0:66cd67db4f1b | 71 | |
astaff15 | 0:66cd67db4f1b | 72 | // MÉTODOS PROTEGIDOS |
astaff15 | 0:66cd67db4f1b | 73 | void FuzzyIO::cleanFuzzySets(fuzzySetArray *aux){ |
astaff15 | 0:66cd67db4f1b | 74 | if(aux != NULL){ |
astaff15 | 0:66cd67db4f1b | 75 | // Esvaziando a memória alocada |
astaff15 | 0:66cd67db4f1b | 76 | this->cleanFuzzySets(aux->next); |
astaff15 | 0:66cd67db4f1b | 77 | free(aux); |
astaff15 | 0:66cd67db4f1b | 78 | } |
astaff15 | 0:66cd67db4f1b | 79 | } |