JDEXi: Open-source DEXi Java Library
Version 4.0
Purpose
JDEXi4.zip contains a library of
open-source Java classes that implement the evaluation of decision
alternatives based on qualitative multi-attribute models produced by
DEXi software.
JDEXi (version 4) supports:
- parsing and reading DEXi models from .dxi files or strings (XML format) [constructor Model()]
- obtaining information about model attributes and attribute scales [methods getAttribute*(), getScale*(), ...]
- obtaining information about utility functions and decision rules [methods getRule*(), rule*(), function*(), getFunctionString(), ...]
- clearing and setting model input values [methods setInputValue(s), ...]
- carrying out the evaluation [methods evaluate(), ...]
- obtaining evaluation results [methods getOutputValue(s), ...]
- modification of decision rules [method getFunctionString()]
- creating complex rules from elementary rules [two algorithms: methods createComplexRule() and createNewComplexRule()]
JDEXi4 supports only a fairly limited modification of decision rules.
DEXi software should be used for any more extensive modification of models.
Authors: Marko Bohanec, Dušan Omerčević, Andrej Kogovšek, Adem Kikaj
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
Contents of JDEXi4.zip
bin/ - contains compiled java files
src/ - contains java source files
doc/ - documentation of JDEXi classes
dxi/ - samples of DEXi files (DEXi models)
JDEXi4.jar - JDEXi classes; see the documentation (doc/) for the list of all classes
JDEXiEval.jar - runnable jar for running JDEXi (command-line)
TestJDEXi.jar and DumpFile.jar - runnable jars for showing the use of JDEXi library (see the sources in src/test/)
ComplexRules.jar and NewComplexRules.jar - runnable jars for showing complex rules
Licence.txt
lesser.txt - GNU LESSER GENERAL PUBLIC LICENSE
readme.html - this file
TestJDEXi.jar
Loads a DEXi model, displays some of its elements (attributes, value scales, decision rules, complex rules and new complex rules) and evaluates a random decision alternative.
java -jar TestJDEXi.jar dxi/Car.dxi
ComplexRules.jar
Loads a DEXi model and displays complex rules. It takes 4 parameters, the first two are mandatory:
- DEXi_file_name: file containing a DEXi model (.dxi)
- Attribute position (0 for root)
- Elapsed time
- Colorized output (only in terminal which support color output)
Example
java -jar ComplexRules.jar dxi/Car.dxi 0 t color
NewComplexRules.jar
Loads a DEXi model and displays new complex rules. It takes 3 parameters, the first two are mandatory:
- DEXi_file_name: file containing a DEXi model (.dxi)
- Attribute position (0 for root)
- Elapsed time
Example
java -jar NewComplexRules.jar dxi/Car.dxi 0 t
JDEXiEval.jar
Runnable jar for running JDEXi application through the command line. It takes 2 mandatory parameters:
- DEXi_file_name: file containing a DEXi model (.dxi)
- Variables: a ";"-separated list of name=value pairs
Example
java -jar JDEXiEval.jar dxi/Car.dxi "BUY.PRICE=low;MAINT.PRICE=low;#PERS=more;#DOORS=more;LUGGAGE=big;SAFETY=high"
DumpFunctions.jar
Loads a DEXi model and prints out all utility functions it contains.
java -jar DumpFunctions.jar dxi/Car.dxi
Version information
Previous versions
JDEXi version 1 (2004)
Version 2.0 (2012)
- Port to java 1.7:
- Using templates
- Class Vector --> ArrayList
- Model extensions (for compatibility with advanced/new DEXi features):
- Extensions of decision alternative evaluations:
- New methods for setting and getting model variables:
- Typical new evaluation sequence:
- model.clearInputValues()
- model.setInputValue(s)...
- model.evaluate()
- model.getOutputValue(s)...
- New set of robust evaluate() methods that:
- Handle incomplete models (missing scales, functions)
- Take into account under-specified functions (low/high intervals)
- Carry out three types of distribution-based evaluations:
- Model.Evaluation.SET: set-based (the same as DEXi)
- Model.Evaluation.PROB: probabilistic (not supported by DEXi)
- Model.Evaluation.FUZZY: fuzzy (not supported by DEXi)
- Improved documentation.
Download JDEXi 2.0: JDEXi2.zip
Version 3.0 (2015)
- Extended Model constructor to read models from File or String
- Fixed reading UTF-8 XML files
- Extended read-only access to model components: attributes, value scales and decision rules
- Added functionality to modify and check/maintain consistency of decision rules
- Added use showcases: TestJDEXi3.jar and DumpFunctions.jar
Download JDEXi 3.0: JDEXi3.zip
Version 3.1 (2016)
- Bug fix: recognizing linked attributes
Download JDEXi 3.1: JDEXi31.zip
Version 4.0 (2018)
- Added new algorithms for generating complex rules
- Added use showcases: ComplexRules.jar and NewComplexRules.jar
- Improved documentation. JDEXi 4.0 documentation
Download JDEXi 4.0: JDEXi4.zip
Maintained by Marko Bohanec.
Comments and suggestions to marko.bohanec@ijs.si.
Last update: March 9, 2018