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