HTW Dresden > FuzzyIDE

Fuzzysystem Model


First of all we had to design a data-model describing a Fuzzy-System. We decided to do this with XML, because of the advantages of XML. These definition is encapsulated in the Data-Model.

Every plugin can access this model by a set of standardized interfaces, so the developers don't have to deal with XML. There are still possibilities to extend this model. Up to now we just defined the data structure for the rulebase and the variablebase of a Fuzzy-System.


XSD FuzzySystem


a Fuzzysystem has:

  • name (name of the Fuzzysystem)
  • variablebase (holds all the variables)
  • rulebase (holds all the rules)
XSD Rule and FuzzyValue


see: NRC FuzzyJ API

  • LarsenProductMaxMin
  • MamdaniMinMax


  • NameOfVariable --> "temperature"
  • LinguisticExpression --> "slightly hot" ('very', 'not', 'slightly', 'extremly', 'moreorless', 'above', 'norm'...)


'very', 'not', 'slightly', 'extremly', 'moreorless', 'above', 'norm'...

See the Documentation of the core or NRC FuzzyJ API for further information.


The plugin programmer has to use the Interfaces and Methods made available by the "de.htwdd.robotic.fuzzyide.xmlmodel" package.

Work Overview

Every Plugin can get the FuzzyModelController-Instance from the Framework. The Plugin just has to implement the Interface "Datamodelaccessable"... See also the Documentation of the core and the NRC FuzzyJ API.


          // inherited from DataModelAccessable
          * called when a datamodel is created gives the plugin the reference to the
          * datamodel inside this method the plugin should register his observation
          *@param fm the FuzzyModel
          public void dataModelCreated(FuzzyModel fm)
          // now you can use the DataModel and manipulate it --> see API
          Vector vars = fm.getVariableBase().getAllVariables(); //get all Variables saved in the XML-Model

Technology - How it works

Technology Overview

We used the Observer- and Observable-Mechanism of the JDK1.4 to stay informed about any changes and update all objects and properties.

The Plugin can register themselves for observing the FuzzyModel by implementing the "ModelObserver" interface. The Plugin will be informed about any changes on the Model by calling the "public void update(Observable obs, Object obj)"-Method.

The whole Implementation itself works with this mechanism... For example: The rulebase observs all rules and will receive a message as soon sth. has changed on any rule... the FuzzyModelControler will also get this message cause it observs the rulebase and if any rule has changed the rulebase has changed to..


classdiagram (gif) de.htwdd.robotic.fuzzyide.xmlmodel
XSD - Documentation (zip) documentation to the XML-Schema of the FuzzyModel