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
FuzzyOutput.cpp@2:460b409e26e8, 2015-06-24 (annotated)
- Committer:
- astaff15
- Date:
- Wed Jun 24 15:08:13 2015 +0000
- Revision:
- 2:460b409e26e8
- Parent:
- 1:d545f709646b
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 | * FuzzyOutput.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 "FuzzyOutput.h" |
astaff15 | 0:66cd67db4f1b | 13 | |
astaff15 | 0:66cd67db4f1b | 14 | // CONSTRUTORES |
astaff15 | 0:66cd67db4f1b | 15 | FuzzyOutput::FuzzyOutput() : FuzzyIO(){ |
astaff15 | 0:66cd67db4f1b | 16 | } |
astaff15 | 0:66cd67db4f1b | 17 | |
astaff15 | 0:66cd67db4f1b | 18 | FuzzyOutput::FuzzyOutput(int index) : FuzzyIO(index){ |
astaff15 | 0:66cd67db4f1b | 19 | } |
astaff15 | 0:66cd67db4f1b | 20 | |
astaff15 | 0:66cd67db4f1b | 21 | // DESTRUTOR |
astaff15 | 0:66cd67db4f1b | 22 | FuzzyOutput::~FuzzyOutput(){ |
astaff15 | 1:d545f709646b | 23 | this->fuzzyComposition.empty(); |
astaff15 | 0:66cd67db4f1b | 24 | } |
astaff15 | 0:66cd67db4f1b | 25 | |
astaff15 | 0:66cd67db4f1b | 26 | // MÉTODOS PÚBLICOS |
astaff15 | 0:66cd67db4f1b | 27 | bool FuzzyOutput::truncate(){ |
astaff15 | 0:66cd67db4f1b | 28 | // esvaziando a composição |
astaff15 | 0:66cd67db4f1b | 29 | this->fuzzyComposition.empty(); |
astaff15 | 0:66cd67db4f1b | 30 | |
astaff15 | 0:66cd67db4f1b | 31 | fuzzySetArray *aux; |
astaff15 | 0:66cd67db4f1b | 32 | aux = this->fuzzySets; |
astaff15 | 0:66cd67db4f1b | 33 | while(aux != NULL){ |
astaff15 | 0:66cd67db4f1b | 34 | if(aux->fuzzySet->getPertinence() > 0.0){ |
astaff15 | 0:66cd67db4f1b | 35 | if(this->fuzzyComposition.checkPoint(aux->fuzzySet->getPointA(), 0.0) == false){ |
astaff15 | 0:66cd67db4f1b | 36 | this->fuzzyComposition.addPoint(aux->fuzzySet->getPointA(), 0.0); |
astaff15 | 0:66cd67db4f1b | 37 | } |
astaff15 | 0:66cd67db4f1b | 38 | |
astaff15 | 0:66cd67db4f1b | 39 | if(this->fuzzyComposition.checkPoint(aux->fuzzySet->getPointB(), aux->fuzzySet->getPertinence()) == false){ |
astaff15 | 0:66cd67db4f1b | 40 | this->fuzzyComposition.addPoint(aux->fuzzySet->getPointB(), aux->fuzzySet->getPertinence()); |
astaff15 | 0:66cd67db4f1b | 41 | } |
astaff15 | 0:66cd67db4f1b | 42 | |
astaff15 | 0:66cd67db4f1b | 43 | if(this->fuzzyComposition.checkPoint(aux->fuzzySet->getPointC(), aux->fuzzySet->getPertinence()) == false){ |
astaff15 | 0:66cd67db4f1b | 44 | this->fuzzyComposition.addPoint(aux->fuzzySet->getPointC(), aux->fuzzySet->getPertinence()); |
astaff15 | 0:66cd67db4f1b | 45 | } |
astaff15 | 0:66cd67db4f1b | 46 | |
astaff15 | 0:66cd67db4f1b | 47 | if(this->fuzzyComposition.checkPoint(aux->fuzzySet->getPointD(), 0.0) == false){ |
astaff15 | 0:66cd67db4f1b | 48 | this->fuzzyComposition.addPoint(aux->fuzzySet->getPointD(), 0.0); |
astaff15 | 0:66cd67db4f1b | 49 | } |
astaff15 | 0:66cd67db4f1b | 50 | } |
astaff15 | 0:66cd67db4f1b | 51 | aux = aux->next; |
astaff15 | 0:66cd67db4f1b | 52 | } |
astaff15 | 0:66cd67db4f1b | 53 | |
astaff15 | 0:66cd67db4f1b | 54 | this->fuzzyComposition.build(); |
astaff15 | 0:66cd67db4f1b | 55 | |
astaff15 | 0:66cd67db4f1b | 56 | return true; |
astaff15 | 0:66cd67db4f1b | 57 | } |
astaff15 | 0:66cd67db4f1b | 58 | |
astaff15 | 0:66cd67db4f1b | 59 | float FuzzyOutput::getCrispOutput(){ |
astaff15 | 0:66cd67db4f1b | 60 | return this->fuzzyComposition.avaliate(); |
astaff15 | 0:66cd67db4f1b | 61 | } |
astaff15 | 0:66cd67db4f1b | 62 | |
astaff15 | 0:66cd67db4f1b | 63 | // Um simples Bubble Sort |
astaff15 | 0:66cd67db4f1b | 64 | bool FuzzyOutput::order(){ |
astaff15 | 0:66cd67db4f1b | 65 | fuzzySetArray *aux1; |
astaff15 | 0:66cd67db4f1b | 66 | fuzzySetArray *aux2; |
astaff15 | 0:66cd67db4f1b | 67 | |
astaff15 | 0:66cd67db4f1b | 68 | aux1 = this->fuzzySets; |
astaff15 | 0:66cd67db4f1b | 69 | aux2 = this->fuzzySets; |
astaff15 | 0:66cd67db4f1b | 70 | |
astaff15 | 0:66cd67db4f1b | 71 | while(aux1 != NULL){ |
astaff15 | 0:66cd67db4f1b | 72 | while(aux2 != NULL){ |
astaff15 | 0:66cd67db4f1b | 73 | if(aux2->next != NULL){ |
astaff15 | 0:66cd67db4f1b | 74 | if(aux2->fuzzySet->getPointA() > aux2->next->fuzzySet->getPointA()){ |
astaff15 | 0:66cd67db4f1b | 75 | this->swap(aux2, aux2->next); |
astaff15 | 0:66cd67db4f1b | 76 | } |
astaff15 | 0:66cd67db4f1b | 77 | } |
astaff15 | 0:66cd67db4f1b | 78 | aux2 = aux2->next; |
astaff15 | 0:66cd67db4f1b | 79 | } |
astaff15 | 0:66cd67db4f1b | 80 | aux2 = this->fuzzySets; |
astaff15 | 0:66cd67db4f1b | 81 | aux1 = aux1->next; |
astaff15 | 0:66cd67db4f1b | 82 | } |
astaff15 | 0:66cd67db4f1b | 83 | return true; |
astaff15 | 0:66cd67db4f1b | 84 | } |
astaff15 | 0:66cd67db4f1b | 85 | |
astaff15 | 0:66cd67db4f1b | 86 | // MÉTODOS PRIVADOS |
astaff15 | 0:66cd67db4f1b | 87 | bool FuzzyOutput::swap(fuzzySetArray* fuzzySetA, fuzzySetArray* fuzzySetB){ |
astaff15 | 0:66cd67db4f1b | 88 | FuzzySet* aux; |
astaff15 | 0:66cd67db4f1b | 89 | |
astaff15 | 0:66cd67db4f1b | 90 | aux = fuzzySetA->fuzzySet; |
astaff15 | 0:66cd67db4f1b | 91 | fuzzySetA->fuzzySet = fuzzySetB->fuzzySet; |
astaff15 | 0:66cd67db4f1b | 92 | fuzzySetB->fuzzySet = aux; |
astaff15 | 0:66cd67db4f1b | 93 | |
astaff15 | 0:66cd67db4f1b | 94 | return true; |
astaff15 | 0:66cd67db4f1b | 95 | } |