The FuzzyLite Language fll is a new format designed to describe fuzzy logic controllers. It is simpler and better than most state-of-the-art formats such as the Fuzzy Control Language fcl and the Fuzzy Inference System fis. Furthermore, it provides additional functionality that is not available in the standards of fcl and fis. The FuzzyLite Language is the preferred format to save and load your fuzzy logic controllers using QtFuzzyLite.
The format of an Engine expressed in fll is the following.
Comments start with # at any location. Indentation is not mandatory and does not provide any additional information. The statements are separated by line breaks \n. However, the fll format is flexible and both indentation and separator can be changed. For example, for indentation and separator ;, the engine is expressed in a single line separated by semicolons, but then comments would only make sense at the end of the line.
The elements in fll are described as follows.
|Engine:||Keyword to indicate start of Engine|
|InputVariable:||Keyword to indicate start of InputVariable|
|OutputVariable:||Keyword to indicate start of OutputVariable|
|RuleBlock:||Keyword to indicate start of RuleBlock|
|enabled:||property to determine whether the input|output variable or rule block is enabled during Engine::process()|
|range:||property to define the range of the input|output variable|
|term:||property to add a term to the input|output variable|
|accumulation:||property to define the S-Norm which accumulates the modified consequents of an output variable|
|defuzzifier:||property to define the defuzzification method over the accumulated modified consequents|
|default:||when the output variable is disabled or no rules are activated, the property determines the output value from the defuzzification of the variable|
||when the output variable is disabled or no rules are activated, the property determines whether the output value obtained from the defuzzification of the variable is a valid output value from a previous defuzzification or else the value given by default property|
|lock-range:||property to make the output values from any defuzzification of a variable always lie within the range of the variable|
|conjunction:||property to define the T-Norm of conjunction used by the fuzzy logic operator and in the antecedent of a rule|
|disjunction:||property to define the S-Norm of disjunction used by the fuzzy logic operator or in the antecedent of a rule|
|activation:||property to define the T-Norm used to modify the consequents of a rule after its activation|
|rule:||property to add a rule to the rule block|
|string||Any string of characters, possibly empty|
|identifier||A non-empty string of characters that uniquely identifies the block with the following characters A-Z a-z _ .|
|boolean||Accepts true or false|
|scalar||A floating-point number or nan inf -inf (i.e. not-a-number, positive infinity and negative infinity, respectively)|
|none||Some properties support a value none to leave the property empty|
|parameter||A single parameter value|
|parameters||Multiple parameter values separated by whitespaces|
|Term||Name of a class that implements Term and is registered in the TermFactory of FactoryManager|
|TNorm||Name of a class that implements TNorm and is registered in the TNormFactory of FactoryManager|
|SNorm||Name of a class that implements SNorm and is registered in the SNormFactory of FactoryManager|
|Defuzzifier||Name of a class that implements Defuzzifier and is registered in the DefuzzifierFactory of FactoryManager|
|antecedent||‘variable is [hedge]∗ term [and|or variable is [hedge]∗ term]∗‘, where elements in bold are rule keywords, within [brackets] are optional, and ∗-marked may appear zero or more times|
|consequent||‘variable is [hedge]∗ term [and variable is [hedge]∗ term]∗ [with scalar]?‘, where elements in bold are rule keywords, within [brackets] are optional, ∗-marked may appear zero or more times, and ?-marked may appear once or not at all|
The FuzzyLite Dataset fld is a format that describes the operation of a fuzzy logic controller according to its inputs and outputs. The format of the operation of an Engine expressed in fld is as follows, where a single white space is the basic unit of separation.
inputVariable1 inputVariable2 ... inputVariableP outputVariable1 outputVariable2 ... outputVariableQ #Variable names inputValue1a inputValue2a ... inputValuePa outputValue1a outputValue2a ... outputValueQa #Variable values . . . inputValue1z inputValue2z ... inputValuePz outputValue1z outputValue2z ... outputValueQz #Variable values