Relaciones de preferencia difusas

Descripción

Las relaciones de preferencia difusas, las cuales se denominarán en adelante por el acrónimo de su traducción al inglés, FPR (Fuzzy Preference Relation), son una estructura de preferencias ampliamente utilizada en la literatura científica en el campo de los procesos de alcance de consenso.

La versión inicial de AFRYCA, fue diseñada para trabajar de forma exclusiva con estas estructuras de preferencias, por ello, aunque en las últimas versiones se ha comenzado a incluir de forma experimental otras estructuras de preferencias, las FPR siguen siendo las estructuras mejor integradas en el framework, estando diseñados todos los modelos actuales para trabajar con estas estructuras, incluyendo AFRYCA editores visuales para las mismas e incorporando varios comandos que permiten realizar operaciones habituales con las mismas.

Features

La funcionalidad se proporciona desde las siguientes features:

afryca.fpr.feature

Plug-ins para la funcionalidad básica de FPRs.

  • Plug-ins incluidos:
    • afryca.fpr
    • afryca.valueforcer
  • Features incluidas:
    • afryca.ase.feature

afryca.fpr.gui.feature

Plug-ins para la funcionalidad gráfica de FPRs.

  • Plug-ins incluidos:
    • afryca.fpr.gui
    • de.kupzog.ktable
    • org.eclipse.wb.swt
  • Features incluidas:
    • afryca.fpr.feature

Plug-ins

Los plug-ins desarrollados de forma específica para proveer su funcionalidad son los siguientes:

afryca.fpr

Funcionalidad básica de FPRs.

  • Dependencias:
    • 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

afryca.fpr.gui

Funcionalidad gráfica de FPRs

  • Dependencias:
    • 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

Estructura

La utilidad de los diferentes paquetes y clases que conforman los plug-ins es la siguiente:

afryca.fpr

  • afryca.fpr
    • FPR: Modelo para la representación de FPR.
    • FPRParser: Conversor de FPR. Soporta diferentes tipos de entradas
  • afryca.fpr.addon
    • E4DIAddon: Add-on para el acceso al contenedor de inyección de dependencias en código que no puede ser inyectado.
    • PreferencesAddon: Add-on para la gestión de las preferencias. Subscrito a cambios en el espacio de trabajo para mantener la consistencia.
  • afryca.fpr.command
    • CompleteFPR: Controlador para completar FPR con valores perdidos.
    • GenerateRandomFPR: Controlador para generar FPR aleatoria consistente.
  • afryca.fpr.command.parameter
    • FPRParameterConverter: Conversor de parámetro FPR.
    • IntegerParameterConverter: Conversor de parámetro Integer.
  • afryca.fpr.i18n: Mensajes de internacionalización en diferentes idiomas. Usados en código que no es inyectado.
  • afryca.fpr.l10n: Mensajes de localización en diferentes idiomas. Usados en código inyectado.
  • afryca.fpr.preferences
    • PreferenceConstants: Constantes usadas para las preferencias establecidas en el archivo 'preferences.ini'.

afryca.fpr.gui

  • afryca.fpr.gui.command
    • ModifyFPRPreferences: Controlador para modificar las preferencias de FPR.
  • afryca.fpr.gui.composite
    • FPRComposite: Composite para la edición y visualización de una FPR.
    • FPRDifferenceComposite: Composite para la visualización de las diferencias entre dos FPRs.
  • afryca.fpr.gui.contentprovider
    • FPRContentProvider: Proveedor de contenido de FPRs.
  • afryca.fpr.gui.dialog
    • FPRPreferencesDialog: Diálogo para la modificación de las preferencias de FPRs.
  • afryca.fpr.gui.icons: Rutas localizadas a los iconos usados en diferentes idiomas.
  • afryca.fpr.gui.l10n: Mensajes de localización en diferentes idiomas.

Add-ons

La función de los add-ons proporcionados por los plug-ins se indica seguidamente:

afryca.fpr.addon.E4DIAddon

Definido en el plug-in afryca.fpr e implementado por la clase afryca.fpr.addon.E4DIAddon. Realiza una implementación del patrón Singleton para ofrecer a través de métodos estáticos servicios inyectados por el contenedor de dependencias de E4. La captura de los servicios se realiza en el método @PostConstruct.

afryca.fpr.addon.PreferencesAddon

Definido en el plug-in afryca.fpr e implementado por la clase afryca.fpr.addon.PreferencesAddon. Garantiza la consistencia de las preferencias ofrecidas por afryca.fpr. La consistencia de las preferencias es analizada cada vez que se inicia la aplicación o que se realiza un cambio en el espacio de trabajo de la aplicación que pueda afectar su estado.

Comandos

Los comandos añadidos por los plug-ins son los siguientes:

 afryca.fpr.command.generate_random_fpr

Definido en el plug-in afryca.fpr e implementado por la clase afryca.fpr.command.GenerateRandomFPR. Genera una FPR aleatoria consistente empleando la función ASE establecida para la preferencia 'random.fpr.function'.

afryca.fpr.command.complete_fpr

Definido en el plug-in afryca.fpr e implementado por la clase afryca.fpr.command.CompleteFPR. Completa una FPR con valores perdidos y un conjunto generador empleando la función ASE establecida para la preferencia 'complete.fpr.function'.

afryca.fpr.gui.command.modify_fpr_preferences

Definido en el plug-in afryca.fpr.gui e implementado por la clase afryca.fpr.gui.command.ModifyFPRPreferences. Lanza la ventana de diálogo para la modificación de las preferencias asociadas a las FPRs.

Preferencias

Los plug-ins emplean las siguientes preferencias:

random.fpr.function

Usada por el plug-in afryca.fpr. Permite establecer el nombre de la función que será utilizada al generar FPRs aleatorias.

complete.fpr.function

Usada por el plug-in afryca.fpr. Permite establecer el nombre de la función que será utilizada al completar una FPR con valores perdidos y un conjunto generador.

Notas finales

  1. Se recomienda crear las FPRs indicando el número de alternativas.
  2. Una FPR creada contiene el valor de indiferencia en la diagonal y NaN en el resto de valores.
  3. Es recomendable emplear la función setValueSymmetrically para modificar las FPR.
  4. El uso de FPRParser para la generación de FPR aleatorias está en desuso. Se recomienda emplear en su lugar el comando afryca.fpr.command.generate_random_fpr o la función ASE deseada.