summaryrefslogtreecommitdiff
path: root/ChangeLog
blob: 012623ec66f77360a2eb64d3665646bd750eced0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
Version 5.1
* Updated `JavaExporter` to remove boolean from exported `Function.create(String name, String formula, Engine engine, boolean)`
* Improved CMakeLists to remove errors from warnings, and exclude library rt for benchmarks
* Moved benchmarks in `Console.cpp` to FL_CPP11 in order to get rid of rt library
* Made most constructors `explicit`
* FL_WINDOWS, FL_APPLE and FL_UNIX are automatically defined in `fuzzylite.h`
* Option to prefix namespace `fl::` in class `CppExporter`
* New methods `FclExporter::toString([[Input|Output]Variable]|RuleBlock|Norm])`
* New methods `FclExporter::toString(Norm)`
* Identifier FL_IOVERRIDE in SNorm and TNorm
* New private methods `CloningFactory::register[Operators|Functions]`
* `FisExporter` merges all ruleblocks into one
* New `Rule::clone()` method
* Fixed `FclImporter` exception on malformed Term
* Made sure this version builds successfully with g++5.1

 
Version 5.0
* Modified Function::Unary and Binary to take scalar instead of double
* Fixed building using -DFL_USE_FLOAT=ON
* Added deductive type of Engine with Engine::type()
* Fixed minor memory leak at RuleBlock (conjunction, disjunction, activation)
* Fixed minor memory leak at Accumulated (accumulation, thresholded terms)
* Fixed minor memory leak at OutputVariable (defuzzifier)
* Fixed minor memory leak at Function::Node
* Fixed minor memory leak at FactoryManager
* Improved handling of Exceptions
* Modified FclExporter and FisExporter to provide backward compatibility with FCL and FIS formats
* Updated the FIS and FCL examples for backward compatibility
* Included the original example files
* Updated FLD examples produced from the engines of the original examples
* Fixed some original examples of takagi-sugeno to use AlgebraicProduct activation
* FldExporter no longer restarts the engine
* Fixed rethrowing of exceptions to provide proper information about errors!
* Catching std::exceptions where possible to avoid unexpected exceptions
* FldExporter exports from a custom input dataset
* Console includes option to read custom input dataset from file
* Console provides more information about its usage
* Renamed methods FldExporter::toWriter() to FldExporter::write()
* Removed variable and methods for property FldExporter::maximum
* Accuracy improvements importing fis files with large number of decimals
* Updated FLD examples to reflect accuracy
* Changed operation for multiple hedges to operate from last to first
* Fixed OutputVariable to store last valid output value regardless of locks
* Renamed Op::isNan to Op::isNaN
* New OutputVariable::(get|set)OutputValue to store value from defuzzification
* Changed OutputVariable::defuzzify to store its output value
* Changed return type of scalar OutputVariable::defuzzify to void OutputVariable::defuzzify
* Renamed OutputVariable::(get|set)LastValidOutput to OutputVariable::(get|set)LastValidOutputValue
* Removed OutputVariable::defuzzifyNoLocks
* Removed const from Term* Accumulated::(get|set)Accumulation
* Added InputVariable::fuzzyInputValue and OutputVariable::fuzzyOutputValue
* Removed defaults in Engine::configure
* Added Engine::configure without conjuntion and disjuntion
* Added parameter string to Engine::type
* Changed Engine::isReady
* Correct handling of integral defuzzification with min|max=NaN|Inf
* Added method Rule::isLoaded to determine whether a rule is to be activated
* Added method Rule::unload to allow existence of invalid rules
* Added methods Engine::set((Input|Output)Variables), Engine::setRuleBlocks
* Added method RuleBlock::setRules
* Changed visibility of Rule::setText to public
* Added method Rule::load(const Engine*)
* Renamed term Thresholded to Activated
* Renamed Thresholded::(set|get)Threshold to Activated::(set|get)Degree
* Removed variable Rule::FL_ASSIGNS="=" and method Rule::assignsKeyword()
* Modified original takagi-sugeno examples to reflect proper activation and accumulation
* Moved Engine::_hedges (and methods) to Rule::_hedges
* Renamed Antecedent::(get|set)Root to Antecedent::(get|set)Expression
* Added (Antecedent|Consequent)::(get|set)Text
* Added (Antecedent|Consequent)::load|unload
* Renamed typedef Factory::Creator to Factory::Constructor
* Added an M-file to compare output values of fuzzylite engines with Matlab
* Removed const from Norms in RuleBlock::(get|set)(Activation|Conjunction|Disjunction)
* Deleted method Op::repeat
* Added built-in functions gt,lt,ge,le,eq and operator !
* Renamed Term::copy to Term::clone in every Term
* Added copy constructors and assignment operators to (Input|Output)Variable
* Added copy constructors and assignment operators to Accumulated
* Merged Function::Operator and Function::BuiltInFunction into Function::Element
* Created FunctionFactory for Function::Elements
* IMPORTANT: Changed starting precedence of Function::Element::Operators to 10 (refer to FunctionFactory)
* Setters of FactoryManager no longer delete previous factories
* Renamed Factory<T>::(register|deregister)Class to Factory<T>::(register|deregister)Constructor
* Renamed Factory<T> to ConstructionFactory<T>
* Created CloningFactory<T>
* Moved functions and operators of term Function to a FunctionFactory
* Added clone methods to Defuzzifiers, Hedges, Norms, and Terms
* Changed Exception::btCallStack(const int) to Exception::btCallStack(void)
* Using std::auto_ptr to (T|S)Norms in RuleBlock, SNorm in Accumulated, and Defuzzifier in OutputVariable
* Added methods Engine::set((Input|Output)Variable) and Engine::setRuleBlock()
* Added method RuleBlock::reloadRules()
* Changed Linear pointers to input variables for a pointer to Engine
* Added support to compare infinity values with fl::Op::isEq and therefore other comparison operators
* Parameters of all terms are set to fl::nan by default
* Added methods Engine::(input|output)Variables() and ::ruleBlocks() to return mutable references
* Added method Variable::terms() to return mutable reference
* Added method RuleBlock::rules() to return mutable reference
* Added methods Ramp::direction() and Sigmoid::direction() to represent direction of slope
* Added method fl::Op::isFinite(x) to check x is not (nan or inf)
* Changed fl::Op::isEq(a,b) to return true if a = b = NaN
* Added method Accumulated::terms() to return mutable reference
* Changed visibility of Linear::coefficients to protected
* Added methods Linear::coefficients(), Linear::setCoefficients()
* Removed public variables Discrete::x,y
* Added in Discrete a typedef to std::pair<scalar, scalar> Pair, and changed signatures of methods and types of their parameters
* Changed representation of Discrete::(x,y) from std::vector<scalar> to std::vector<Pair>
* Added methods Discrete::setXY(), Discrete::xy(), ::xy(int) to set and get new representation
* Added methods Discrete::toPairs(std::vector<scalar>) and Discrete::toVector(std::vector<Pair>)
* Added method Discrete::formatXY() to get pairs (x,y) nicely formatted
* Linear term no longer throws exception when inputVariables != |coefficients|
* Changed visibility of Function::root to protected and renamed it to Function::_root
* Added method Function::root() to return pointer to Function::_root
* Added option to prefix the namespace in CppExporter, by default it does not prefix
* Added method OutputVariable::clear() to restart the output variable
* Renamed variable OutputVariable::_lastValidOutputValue to ::_previousOutputValue
* Renamed method OutputVariable::(get|set)LastValidOutputValue to ::(get|set)PreviousOutputValue
* Renamed variable OutputVariable::_lockOutputRange to ::_lockOutputValueInRange
* Renamed method OutputVariable::setLockOutputRange() to ::setLockOutputValueInRange
* Renamed method OutputVariable::isLockingOutputRange() to ::isLockedOutputValueInRange
* Renamed variable OutputVariable::_lockValidOutput to ::_lockPreviousOutputValue
* Renamed method OutputVariable::setLockValidOutput() to ::setLockPreviousOutputValue
* Renamed method OutputVariable::isLockingValidOutput() to ::isLockedPreviousOutputValue
* Renamed FLL property 'lock-valid' to 'lock-previous'
* Renamed FIS property 'LockValid' to 'LockPrevious'
* Renamed FCL property 'LOCK: VALID' to 'LOCK: PREVIOUS'
* Added method Engine::variables() to retrieve both Input and OutputVariables
* Added method Term::updateReference(Term*, Engine*) to ensure Linear and Function terms to update references of engines
* Added method Engine::updateReferences() to update references to the engine in its terms.
* Added in Discrete a typedef to std::pair<scalar, scalar> Pair, and changed signatures of methods and types of their parameters
* Added terms: Concave, Cosine and Spike
* Renamed methods Triangle::(set|get)(A|B|C) to (set|get)(Vertex(A|B|C))
* Renamed methods Trapezoid::(set|get)(A|B|C|D) to (set|get)(Vertex(A|B|C|D))
* Removed method fuzzylite::configuration()
* Renamed MACRO FL_DEBUG to FL_DBG
* Renamed MACRO (FL_BEGIN_DEBUG_BLOCK and FL_END_DEBUG_BLOCK) to (FL_DEBUG_BEGIN and FL_DEBUG_END)
* Renamed methods in (Fis|Fcl)Importers::extract? to ::parse?
* Made defaultResolution a static property of IntegralDefuzzifiers
* Added method Engine::type(name, reason) to show type and reason why type
* Added method Engine::clone()
* Added support for Tsukamoto with Concave terms
* Changed Accumulated to take Activated* terms instead of const Terms*
* Deleted class Tsukamoto
* Created class WeightedDefuzzifier from which Weighted(Average|Sum) derive with options: Automatic|TakagiSugeno|Tsukamoto
* Added methods WeightedDefuzzifier::tsukamoto() and ::inferType()
* Added benchmarks for fuzzylite in Linux
* Created the FuzzyLite Interactive Console
* Added basic rule chaining such that Output Variables can be utilized as antecedents
* Added two examples for rule chaining: mamdani/Laundry.fll and mamdani/SimpleDimmerInverse.fll
* Added Term::(get|set)Height and changed all terms accordingly
* Renamed method Op::makeValidId to Op::validName, which now returns "unnamed" for empty strings.
* Converted examples/original/*.fis to examples/original/*.fll
* Removed Exception Specification from methods in Discrete, Linear and Function terms
* Changed name of debug libraries to fuzzylited.dll and fuzzylite-staticd.lib
* Removed method Operation::toScalar(std::string, bool, scalar)
* Added method Operation::toScalar(std::string) [throws Exception], and ::toScalar(std::string, scalar alternative) throw()
* Added method ImEx::(from|to)File to import and export engines using files
* WeightedAverage and WeightedSum without Activation operators have default behaviour, i.e., AlgebraicProduct
* FactoryManager utilizes smart pointers.
* Rule utilizes smart pointers for Antecedent and Consequent
* Exceptions are thrown when Conjunction, Disjunction, Activation and Accumulation operators are NULL when they are required
* Exception is thrown when Defuzzifier is required and not set.
* Added support for C++11 utilizing smart pointers, identifiers (override, noexcept), and delete identifiers to DISABLE_COPY(Class)
* Macros for identifiers are FL_IOVERRIDE, FL_IFINAL, FL_IDEFAULT, FL_IDELETE, and FL_INOEXCEPT (fl/fuzzylite.h)
* Added macro FL_unique_ptr to refer to std::auto_ptr (C++98) or std::unique_ptr (C++11), and its respective FL_move_ptr(x) to move a smart pointer.
* Added constant fl::null to refer to 0L (C++98) or nullptr (C++11)
* Added macros FL_DEFAULT_COPY(Class), FL_DEFAULT_MOVE(Class), and FL_DEFAULT_COPY_AND_MOVE(Class) for default copy and move constructors and operators
* Added build.sh to build fuzzylite
* Changed default to fuzzylite::_macheps = 1e-6;
* Renamed macro FL_EXPORTS to FL_API
* Added macro FL_SHARED_LIBRARY and FL_STATIC_LIBRARY to be defined when building shared and static libraries


Version 4.0
* FuzzyRule merged with Rule, and FuzzyRule deleted.
* FuzzyAntecedent merged with Antecedent, and FuzzyAntecedent deleted
* FuzzyConsequent merged with Consequent, and FuzzyConsequent deleted
* FuzzyExpression renamed Expression
* Renamed Rule::get/setUnparsedRule to get/setText
* Renamed RuleBlock::get/set(Tnorm|Snorm) to get/set(Conjunction|Disjunction)
* Renamed RuleBlock::fireRules to activate
* Renamed Rule::fireStrength to activationDegree, fire to activate
* Renamed Consequent::fire to modify
* Created IntegralDefuzzifier to extract divisions from Defuzzifier
* Renamed divisions from IntegralDefuzzifier to resolution, FL_DIVISIONS to FL_RESOLUTION
* Deleted MaximumDefuzzifier
* Centroid, Bisector, and Largest/Smallest/Mean Defuzzifiers inherit from IntegralDefuzzifier
* Changed names of arithmetic operations in fl::Operation
* Renamed Function::get/set(Infix) to get/set(Formula)
* Renamed InputVariable::get/set(Input) to get/set(InputValue)
* Renamed Antecedent::firingStrength to activationDegree
* Renamed Antecedent::toString/(Prefix,Infix,Postfix) to to/(Prefix,Infix,Postfix)
* Renamed Rule::FL_ASSIGN to Rule::FL_EQUALS
* New method restart in Engine
* New methods Engine::setInputValue(name, value), scalar Engine::getOutputValue(name)
* Renamed Op::str(vector/varargs) to Op::join(vector/varargs)
* Refactored associtativity, unary and binary properties in Element within Function
* Removed unnecessary Hedges creation upon importing engines, now is automatic via Factories
* Created the JavaExporter
* Renamed methods within Fis/Fcl/CppExporter to toString(*);
* Extracted TNorms and SNorms from TNorm.h/cpp and SNorm.h/cpp
* Created proper Factories with registration of classes and constructors
* Renamed method Factory::create to Factory::createInstance
* Added static constructor method to every Defuzzifier, Hedge, TNorm, and SNorm
* Removed FL_PRECISION, FL_DECIMALS as Macros, and created static variables in fuzzylite.h
* Renamed FL_PRECISION to macheps, i.e., machine epsilon to differentiate real numbers
* Removed FL_DEBUG and created a static variable in fuzzylite.h
* Removed FL_NO_LOG as it is now controlled with fuzzylite::logging(), previously named logEnabled()
* Libraries and Console application are both built in folder bin/ (previously libraries were at lib/)
* Removed Engine::toStringFis/Fcl/Cpp to encourage use of Fcl/Fis/CppExporters instead
* Renamed Op::logical_and to Op::logicalAnd, Op::logical_or to Op::logicalOr
* Added support to Fis/FclImporters to treat comments (%,#,//,/*) in fis and fcl files
* Created the Console application instead of previous demo
* Added Variable::range() to return (maximum - minimum)
* Removed Variable::isEmpty, use Variable::terms().empty()
* Removed RuleBlock::isEmpty, use RuleBlock::rules().empty()
* Created method Op::makeValidId to ensure names are valid
* Engine, Variable and Term::toString return FllExport::toString
* Created Term::parameters to return list of parameter values as string separated by spaces
* Created Term::configure to configure from Term::parameters
* FclImEx import and export terms using Term::parameters
* Created the FuzzyLite Language in FllImporter and FllExporter
* Created the FuzzyLite Dataset FldExporter
* Added property Enable to Engine, Variable and RuleBlock
* Extended FCL and FIS to consider Enabled properties
* Changed Engine::defuzzify() to consider enabled variables
* Changed Engine::process() to consider enabled rule blocks
* Changed OutputVariable::output() to OutputVariable::fuzzyOutput()
* Renamed Rectangle::minimum/maximum to Rectangle::start/end
* Renamed fuzzylite::shortVersion to fuzzylite::version
* Improved accuracy of Triangle and Trapezoid