The Xfuzzy 3 development environment

The package edition tool - Xfpkg

The description of a fuzzy system within the Xfuzzy 3 environment is divided into two parts. The system logical structure (including the definitions of operator sets, variable types, rule bases, and hierarchical behavior structure) is specified in files with the extension ".xfl", and can be graphically edited with xfedit. On the other hand, the mathematical description of the functions used as fuzzy connectives, linguistic hedges, membership functions, families of membership functions, crisp blocks, and defuzzification methods are specified in packages.

The xfpkg tool is dedicated to easing the package edition. The tool implements a graphical user interface that shows the list of the different functions included in the package, and the contents of the different fields of a function definition. Most of these fields contains code describing the function in different programming languages. This code must be introduced manually. The tool can be executed from the command line or from the main window of the environment, using the option Edit package in the Design menu.

The previous figure shows the main window of xfpkg. The File menu contains the options "Save", "Save as", "Compile", "Delete" and "Close edition". The first two options are used to save the package file. The option "Compile" carries out a compilation process that generates the ".java" and ".class" files related to each function defined in the package. The option "Delete" is used to remove the package file and all the ".java" and ".class" files generated by the compilation process. The last option is used to close the tool.

The main window  contains six lists showing the different kinds of functions included in the package: binary functions (related to conjunction, disjunction, aggregation, and implication operators), unary functions (associated with linguistic hedges), membership functions (related to linguistic labels), families of membership functions (used to describe a set of membership functions), crisp functions (associated with crisp blocks),  and defuzzification methods (used to obtain representative values of the fuzzy conclusions).

A double click on any element of the lists will open the function definition window. This window shows the content of the different fields of a function definition. The bottom of this part contains a group of three buttons: "Edit", "Apply" and "Reload". When a function is selected in a list, its fields cannot be modified at first. The Edit command is used to allow the user modifying the fields. The Apply command saves the changes of the definition. This includes the generation of the ".java" and ".class" files. The Reload command rejects the modifications and actualizes the fields with the previous values.

The fields of a function definition are distributed among eight tabbed panels. The Alias panel contains the list of alternative identifiers.

The Parameters panel contains the enumeration of the parameters used by the edited function.

The panel titled Requirements is used to describe the constraints on the parameter values.

The Java, C and C++ panels contain the description of the function behavior in these programming languages.

The Derivative panel contains the description of the derivative function.

The last panel contains the source block with the Java code of local methods that can be used in another fields and that are directly incorporated in the ".java" file.

The definition of a membership function or a family of membership functions requires additional information to describe the function behavior in the different programming languages. In these cases, the Java, C, C++ and Derivative panels contain five fields to show the contents of the subblocks equal, greatereq, smallereq, center, and basis.

In addition, the definition window for membership functions and families of membership functions also include an Update panel describing how to modify the values of the function parameters in terms of a set of displacements.

The definition of a family of membership functions contains an additional panel describing how to compute the number of functions included in that family.

Regarding defuzzification methods, they can include the enumeration of the membership functions that can be used by each method. This enumeration appears in the Requirements panel.

Finally, the window describing a crisp function includes an Inputs panel that defines the number of input variables of the function.

The xfpkg tool implements a graphical interface that allows the user to view and edit the definition of the functions included into a package file. This tool is used to describe the mathematical behavior of the defined functions in a graphical way. So, this tool is the complement of the xfedit tool, which describes the logical structure of the system, in the fuzzy system description stage.

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

©IMSE-CNM 2018