XFL3: The Xfuzzy 3 specification language


XFL3: The Xfuzzy 3 specification language

Formal languages are usually defined for the specification of fuzzy systems because of its several advantages. However, two objectives may conflict. A generic and high expressive language, able to apply all the fuzzy logic-based formalisms, is desired, but, at the same time, the (possible) constraints of the final system implementation have to be considered. In this sense, some languages focus on expressiveness, while others are focused on software or hardware implementations.

One of our main objectives when we began to develop a fuzzy system design environment was to obtain an open environment that was not constrained by the implementation details, but offered the user a wide set of tools allowing different implementations from a general system description. This led us to the definition of the formal language XFL. The main features of XFL were the separation of the system structure definition from the definition of the functions assigned to the fuzzy operators, and the capabilities for defining complex systems. XFL is the base for several hardware- and software-oriented development tools that constitute the Xfuzzy 2.0 design environment.

As a starting point for the third version of Xfuzzy, a new language, XFL3, which extends the advantages of XFL, has been defined. XFL3 allows the user to define new membership functions and parametric operators, and admits the use of linguistic hedges that permit to describe more complex relationships among variables. In order to incorporate these improvements, some modifications have been made in the XFL syntax. In addition, the new language XFL3, together with the tools based on it, employ Java as programming language. This means the use of an advantageous object-oriented methodology and the flexibility of executing the new version of Xfuzzy in any platform with JRE (Java Runtime Environment) installed.

XFL3 divides the description of a fuzzy system into two parts: the logical definition of the system structure, which is included in files with extension ".xfl", and the mathematical definition of the fuzzy functions, which are included in files with extension ".pkg" (packages).

The language allows the definition of complex systems. It does not limit the number of linguistic variables, membership functions, fuzzy rules, etc. Systems can be defined by hierarchical modules (including rule bases and crisp blocks), and fuzzy rules can express complex relationships among the linguistic variables by using connectives AND and OR, and linguistic hedges like greater than, smaller than, not equal to, etc. XFL3 allows the user to define its own fuzzy functions by means of packages. These new functions can be used as membership functions, families of membership functions, fuzzy connectives, linguistic hedges, crisp blocks and defuzzification methods. The standard package xfl contains the most usual functions.

The description of a fuzzy system structure, included in ".xfl" files, employs a formal syntax based on 8 reserved words: operatorset, type, extends, rulebase, using, if, crisp and system. An XFL3 specification consists of several objects defining operator sets, variable types, rule bases, crisp blocks and the description of the system global behavior. An operator set describes the selection of the functions assigned to the different fuzzy operators. A variable type contains the definition of the universe of discourse, linguistic labels and membership functions related to a linguistic variable. A rule base defines the logical relationship among the linguistic variables. A crisp block describes a mathematical operation on the system variables, and, finally, the system global behavior includes the description of the modular hierarchy.

For comments, patches, bug reports, etc contact us at:   xfuzzy-team@imse-cnm.csic.es

©IMSE-CNM 2018