Fuzzy preference relations


Fuzzy preference relations, FPRs, are preference structures commonly used in the scientific literature on the field of consensus reaching processes.

The first version of AFRYCA was designed to work exclusively with these preferences structures. Therefore, although recent versions start to include experimentally other preference structures, FPRs are still the best integrated structures in the framework. Current models of AFRYCA, including visual editors, are designed to work with FPRs, providing commands to perform habitual operations with these structures.


The functionality is provided by these features:


Plug-ins for the basic functionality of FPRs.

  • Included Plug-ins:
    • afryca.fpr
    • afryca.valueforcer
  • Included features :
    • afryca.ase.feature


Plug-ins for the graphic functionality of FPRs.

  • Included Plug-ins:
    • afryca.fpr.gui
    • de.kupzog.ktable
    • org.eclipse.wb.swt
  • Included features :
    • afryca.fpr.feature


Designed Plug-ins for provide the funcionality are:


Basic functionality of FPRs.

  • Branchs:
    • afryca.ase
    • afryca.valueforcer
    • afryca.workspace.services.events
    • org.eclipse.core.runtime
    • org.eclipse.core.commands
    • org.eclipse.e4.core.services
    • org.eclipse.e4.core.di.extensions
    • org.eclipse.e4.core.di.annotations
    • org.eclipse.ui


Graphic functionality of FPRs

  • Branchs:
    • afryca.fpr
    • afryca.ase
    • de.kupzog.ktable
    • org.eclipse.wb.swt
    • org.eclipse.core.runtime
    • org.eclipse.e4.core.di
    • org.eclipse.e4.core.di.extensions
    • org.eclipse.e4.core.services
    • org.eclipse.e4.core.contexts
    • org.eclipse.e4.ui.services
    • org.eclipse.e4.ui.model.workbench
    • org.eclipse.jface


The useful of the diferent packages and classes of plug-ins are:


  • afryca.fpr
    • FPR: Model for the representation of FPR.
    • FPRParser: FPR converter. Supports different types of inputs.
  • afryca.fpr.addon
    • E4DIAddon: Add-on for access to the dependency injection container in code that can´t be injected.
    • PreferencesAddon: Add-on for the management of preferences. Subscribed to changes in the workspace to maintain consistency.
  • afryca.fpr.command
    • CompleteFPR: Controller to complete FPR with missing values.
    • GenerateRandomFPR: Controller to generate consistent random RPF.
  • afryca.fpr.command.parameter
    • FPRParameterConverter: Parameter converter FPR.
    • IntegerParameterConverter: Parameter converter Integer.
  • afryca.fpr.i18n: Internationalization messages in different languages. Used in code that is not injected.
  • afryca.fpr.l10n:
    Localization messages in different languages. Used in injected code.
  • afryca.fpr.preferences
    • PreferenceConstants: Constants used for the preferences set in the 'preferences.ini'.


  • afryca.fpr.gui.command
    • ModifyFPRPreferences: Driver to modify FPR preferences.
  • afryca.fpr.gui.composite
    • FPRComposite: Composite for editing and displaying a RPF.
    • FPRDifferenceComposite: Composite for the visualization the differences between two FPRs.
  • afryca.fpr.gui.contentprovider
    • FPRContentProvider: FPR content provider.
  • afryca.fpr.gui.dialog
    • FPRPreferencesDialog: Dialogue for the modification of FPR preferences.
  • afryca.fpr.gui.icons: Patch localized to the icons used in different languages.
  • afryca.fpr.gui.l10n: Localization messages in different languages.


The function of the add-ons provided by the plug-ins is :


Defined in the afryca.fpr plug-in and implemented by the afryca.fpr.addon.E4DIAddon class. It realizes an implementation of the Singleton pattern to offer through static methods services injected by the container of dependencies of E4. Capturing services is done in the @PostConstruct method.


Defined in the afryca.fpr plug-in and implemented by the afryca.fpr.addon.PreferencesAddon class. It guarantees the consistency of the preferences offered by afryca.fpr. The consistency of the preferences is analyzed each time the application is started or a change is made in the application's workspace that can affect its state.


The commands added by the plug-ins are:


Defined in the afryca.fpr plug-in and implemented by the afryca.fpr.command.GenerateRandomFPR class. It generates a consistent random RPF using the ASE function set for the preference 'random.fpr.function' .


Defined in the afryca.fpr plug-in and implemented by the afryca.fpr.command.CompleteFPR class. Complete a FPR with missing values ​​and a generator set using the ASE function set for the 'complete.fpr.function' preference.


Defined in the afryca.fpr.gui plug-in and implemented by the afryca.fpr.gui.command.ModifyFPRPreferences class. Launches the dialog window for modifying the preferences associated with the FPRs.


The plug-ins use the following preferences:


Used by the afryca.fpr plug-in. Allows set the name of the function wich will be used when random FPRs are generating.


Used by the afryca.fpr plug-in. It allows to establish the name of the function that will be used when completing a FPR with missing values ​​and a generator set.

Final notes

  1. It is recommended to create the RPFs indicating the number of alternatives.
  2. A created RPF contains the indifference value on the diagonal and NaN on the rest of values.
  3. It is recommended to use the setValueSymmetrically function to modify the RPFs.
  4. The use of FPRParser for the generation of random RPFs is disuse. It is recommended to use the afryca.fpr.command.generate_random_fpr command or the desired ASE function.