thank you for your question.
V6.0 is still in development, and there are already changes that will break old code. As fuzzylite matures, I prefer to remove and refactor at will over polluting the code with backwards compatibility. Still, I reckon version 6 will be quite final in that little development will be needed after it. Having said this, I reply to the change in v6.0 regarding activation methods.
In previous versions, the activation refers to a T-Norm that determines how the activation degree of the antecedent of a rule will modify the consequent of the rule. However, in v6.0, I further modularised fuzzylite to incorporate activation methods (*not* a T-Norm). The name clash was unfortunate, but I could not think of a better name for these methods, and soon I realised I needed to change the name of the activation operator. The activation operator was renamed to implication operator, like Matlab’s, in order to avoid the name clash with activation methods. As such, the examples will show:
engine->setImplication(new AlgebraicProduct); //previously, engine->setActivation(new AlgebraicProduct);
The activation methods incorporated in fuzzylite refer to activation methods for the rules, that is, within a rule block, not all rules are necessarily activated. The activation method selects which rules activate. By default, if not set, the
General approach will be used, which will result in all rules being activated accordingly (same behaviour as previous versions). However, there are other activation methods like
Highest in which only the rule with the highest activation degree will be activated. As such, developers will be able to easily incorporate their activation methods without rewriting the behaviour of a rule block.
Please, check the
documentation branch where these methods have been properly documented.
I hope this helps. Let me know if you have further questions.