AFRYCA — Analytical Framework for Group Decision-Making
AFRYCA es una plataforma de software científico basada en Eclipse RCP para el análisis de problemas de toma de decisiones en grupo (GDM - Group Decision Making). Permite modelar, simular y analizar procesos de consenso con múltiples expertos, incorporando más de 20 modelos de consenso publicados en literatura científica.
Tabla de Contenidos
Descripción General
AFRYCA es una aplicación de escritorio (Rich Client Platform) desarrollada sobre Eclipse E4 que proporciona un entorno integrado para:
- Definir problemas de decisión en grupo (GDMP) con múltiples expertos, alternativas y criterios.
- Aplicar modelos de consenso basados en publicaciones científicas para simular procesos de negociación.
- Ejecutar scripts analíticos en múltiples lenguajes de programación (Python, Groovy, Ruby, Scala, Lua, R) a través del motor ASE.
- Visualizar resultados mediante gráficos y matrices de decisión interactivos.
- Modelar comportamientos de expertos (actitudes estándar y adversas) durante el proceso de consenso.
La plataforma está orientada a investigadores y académicos en el área de inteligencia computacional y toma de decisiones difusas.
Características Principales
Problemas de Decisión en Grupo (GDMP)
- Definición de problemas con múltiples expertos, alternativas y criterios
- Gestión de dominios de datos: números reales, enteros y conjuntos difusos
- Soporte para relaciones de preferencia de distintos tipos
- Workspace con ejemplos precargados (CAEPIA2016, Palomares2014)
Modelos de Consenso (20+)
- Implementaciones directas de modelos publicados en literatura científica
- Más de 20 modelos distintos cubriendo desde 2008 hasta 2020
- Soporte para variantes con clustering, workflow y ELICIT
Motor de Scripting Analítico (ASE)
- Ejecución de scripts en 6 lenguajes: Jython, Groovy, JRuby, Scala, LuaJ y R
- Sistema modular de fragmentos, funciones y módulos reutilizables
- Consola interactiva integrada
Simulación
- Simulación de rondas de negociación y convergencia al consenso
- Modelado de actitudes y comportamientos de expertos
- Generación de estadísticas y reportes detallados
Visualización
- Matrices de decisión interactivas
- Gráficos con JFreeChart y SWTChart
- Vistas de análisis de preferencias
- Soporte de gráficos 3D mediante JOGL
Tecnologías y Dependencias
Lenguajes de Programación
| Lenguaje |
Uso |
| Java 8 / 11 |
Lenguaje principal del proyecto |
| Groovy |
Motor de scripting embebido |
| Jython (Python) |
Motor de scripting embebido |
| JRuby (Ruby) |
Motor de scripting embebido |
| Scala |
Motor de scripting embebido |
| Lua (LuaJ) |
Motor de scripting embebido |
| R |
Motor de scripting embebido |
Framework y Plataforma
| Tecnología |
Versión |
Propósito |
| Eclipse RCP E4 |
Photon |
Plataforma Rich Client |
| OSGi |
- |
Arquitectura modular de plugins |
| Eclipse Tycho |
2.0.0 |
Build Maven para Eclipse RCP |
| EMF |
- |
Eclipse Modeling Framework |
Librerías de UI y Gráficos
| Librería |
Propósito |
| SWT |
Standard Widget Toolkit (GUI nativa) |
| JFace |
Componentes avanzados y databinding |
| SWTChart |
Gráficos integrados en SWT |
| JFreeChart |
Reportes y gráficos estadísticos |
| JOGL |
Gráficos 3D con OpenGL |
| KTable |
Componentes de tabla personalizados |
Librerías Científicas
| Librería |
Propósito |
| Apache Commons Math 3 |
Cálculos matemáticos avanzados |
| Apache Commons IO |
Utilidades de entrada/salida |
Herramientas de Construcción
- Apache Maven 3.x con extensión Tycho PomLess
- Scripts de build para Windows (
build.bat, clean.bat)
Arquitectura del Proyecto
El proyecto sigue una arquitectura en capas sobre OSGi/Eclipse E4:
Patrones Arquitectónicos Utilizados
- OSGi Plugin Architecture: Modularidad y extensibilidad mediante bundles
- E4 Dependency Injection: Inyección de dependencias nativa de Eclipse E4
- Strategy Pattern: Múltiples implementaciones de modelos de consenso
- Factory Pattern: Creadores de estructuras y conversores de parámetros
- MVVM: En componentes GUI con JFace databinding
- Service-Oriented: Servicios OSGi registrados mediante
ContextFunction
Requisitos del Sistema
Para ejecutar AFRYCA
- Java Runtime Environment: JRE 8 o superior
- Sistema Operativo compatible:
- Windows (32/64 bits)
- Linux GTK (32/64 bits)
- macOS Cocoa (64 bits)
- Memoria RAM: 512 MB mínimo recomendado
- Espacio en disco: ~200 MB para la instalación completa
Para construir AFRYCA desde código fuente
- Java Development Kit: JDK 8 o JDK 11
- Apache Maven: 3.6.x o superior
- Eclipse IDE con PDE (Plugin Development Environment) — opcional, para desarrollo
Instalación y Construcción
Construcción desde código fuente
En Windows:
Mediante Maven directamente:
Plataformas de construcción configuradas
| Sistema Operativo |
Arquitectura |
Estado |
| Linux GTK |
x86 |
Soportado |
| Linux GTK |
x86_64 |
Soportado |
| Windows win32 |
x86 |
Soportado |
| Windows win32 |
x86_64 |
Soportado |
| macOS Cocoa |
x86_64 |
Soportado |
Los artefactos de construcción se generan en releng/afryca.application.product/target/.
Estructura del Proyecto
Módulos y Plugins
1. Core de la Aplicación
| Plugin |
Descripción |
afryca.rcp |
Aplicación RCP principal, lifecycle manager |
afryca.workspace |
Gestión de ficheros y workspace |
afryca.theme |
Tema visual CSS de la aplicación |
2. Modelos de Datos y Dominio
| Plugin |
Descripción |
afryca.domain |
Dominio base abstracto |
afryca.domain.real |
Dominio de números reales |
afryca.domain.integer |
Dominio de números enteros |
afryca.domain.fuzzyset |
Dominio de conjuntos difusos |
afryca.structure |
Estructuras base del modelo |
afryca.cm |
Consensus Matrix |
afryca.twotuple |
Representación Two-Tuple |
afryca.decisionmatrix |
Matrices de decisión |
3. Relaciones de Preferencia
| Plugin |
Descripción |
afryca.pr |
Preference Relation (base) |
afryca.hpr |
Hesitant Preference Relations |
afryca.lpr |
Linguistic Preference Relations |
afryca.mpr |
Multiplicative Preference Relations |
afryca.fpr |
Fuzzy Preference Relations |
afryca.hlpr |
Hesitant Linguistic Preference Relations |
afryca.elicit |
Operaciones ELICIT |
4. Lógica Principal de Decisión
| Plugin |
Descripción |
afryca.gdmp |
Group Decision-Making Problem (núcleo) |
afryca.consensusmodel |
Base para todos los modelos de consenso |
afryca.behavior |
Modelos de comportamiento de expertos |
afryca.behavior.standard |
Comportamiento estándar |
afryca.behavior.standard_with_adverse |
Comportamiento con actitud adversa |
afryca.simulation |
Motor de simulación |
afryca.valueforcer |
Forzadores de valores |
afryca.parametervalueconverterhelper |
Conversores de parámetros |
5. Motor de Scripting (ASE)
| Plugin |
Descripción |
afryca.ase |
Analytical Scripting Engine (núcleo) |
afryca.ase.engine.Jython |
Motor Python |
afryca.ase.engine.Groovy |
Motor Groovy |
afryca.ase.engine.JRuby |
Motor Ruby |
afryca.ase.engine.Scala |
Motor Scala |
afryca.ase.engine.LuaJ |
Motor Lua |
afryca.ase.engine.R |
Motor R |
afryca.ase.gui |
Interfaz gráfica del ASE |
afryca.rcp.ase.context |
Contexto ASE para la aplicación |
6. Interfaces Gráficas (GUI)
| Plugin |
Descripción |
afryca.workspace.gui |
GUI del workspace |
afryca.gdmp.gui |
GUI de problemas de decisión |
afryca.consensusmodel.gui |
GUI de modelos de consenso |
afryca.simulation.gui |
GUI de simulación |
afryca.structure.gui |
GUI de estructuras |
afryca.decisionmatrix.gui |
GUI de matrices de decisión |
afryca.domain.*.gui |
GUIs de dominios de datos |
afryca.behavior.*.gui |
GUIs de comportamientos |
afryca.*.gui |
GUIs para cada módulo principal |
Modelos de Consenso Implementados
AFRYCA incluye implementaciones de los siguientes modelos de consenso publicados en literatura científica:
| Plugin |
Referencia |
afryca.consensusmodel.Chiclana2008 |
Chiclana et al. (2008) |
afryca.consensusmodel.HerreraViedma2002 |
Herrera-Viedma et al. (2002) |
afryca.consensusmodel.Kacprzyk2010 |
Kacprzyk et al. (2010) |
afryca.consensusmodel.Palomares2014 |
Palomares et al. (2014) |
afryca.consensusmodel.Palomares2014_clustering |
Palomares et al. (2014) — variante clustering |
afryca.consensusmodel.Palomares2014_workflow |
Palomares et al. (2014) — variante workflow |
afryca.consensusmodel.Labella2019 |
Labella et al. (2019) |
afryca.consensusmodel.Labella2020 |
Labella et al. (2020) |
afryca.consensusmodel.Labella2020ELICIT |
Labella et al. (2020) — variante ELICIT |
afryca.consensusmodel.Rodriguez2015 |
Rodríguez et al. (2015) |
afryca.consensusmodel.Rodriguez2018 |
Rodríguez et al. (2018) |
afryca.consensusmodel.Rodriguez2018_clustering |
Rodríguez et al. (2018) — variante clustering |
afryca.consensusmodel.Wu2012 |
Wu et al. (2012) |
afryca.consensusmodel.Xu2013 |
Xu et al. (2013) |
afryca.consensusmodel.Zhang2011 |
Zhang et al. (2011) |
afryca.consensusmodel.Zhang2012 |
Zhang et al. (2012) |
afryca.consensusmodel.Quesada2015 |
Quesada et al. (2015) |
afryca.consensusmodel.HongBin2018 |
Hong & Bin (2018) |
afryca.consensusmodel.Ishizaka2018 |
Ishizaka et al. (2018) |
afryca.consensusmodel.TransRisk2018 |
TransRisk (2018) |
afryca.consensusmodel.Fen2015 |
Fen et al. (2015) |
Motor de Scripting (ASE)
El Analytical Scripting Engine (ASE) permite a los investigadores ejecutar scripts de análisis directamente dentro de AFRYCA en múltiples lenguajes de programación.
Lenguajes Soportados
- Jython — Python 2.x embebido en Java
- Groovy — Lenguaje dinámico basado en JVM
- JRuby — Ruby embebido en Java
- Scala — Lenguaje funcional/OOP en JVM
- LuaJ — Lua embebido en Java
- R — Lenguaje estadístico
Componentes del ASE
- Fragmentos (Fragments): Porciones de código reutilizables
- Funciones (Functions): Funciones definidas por el usuario
- Módulos (Modules): Agrupaciones de funciones y lógica
- Snippets: Ejemplos y plantillas de código precargados
El workspace incluye un repositorio de snippets y ejemplos precargados para todos los motores disponibles.
Representaciones de Preferencia
AFRYCA soporta múltiples formas de expresar preferencias entre alternativas:
| Tipo |
Nombre Completo |
Descripción |
| PR |
Preference Relation |
Relación de preferencia base |
| HPR |
Hesitant Preference Relations |
Preferencias con hesitación |
| LPR |
Linguistic Preference Relations |
Preferencias lingüísticas |
| MPR |
Multiplicative Preference Relations |
Preferencias multiplicativas |
| FPR |
Fuzzy Preference Relations |
Preferencias difusas |
| HLPR |
Hesitant Linguistic Preference Relations |
Preferencias lingüísticas hesitantes |
Dominios de Datos
| Dominio |
Descripción |
| Real |
Valores en el intervalo [0, 1] o rangos personalizados |
| Integer |
Escalas enteras (ej. 1-9) |
| FuzzySet |
Conjuntos difusos triangulares/trapezoidales |
| Two-Tuple |
Representación two-tuple lingüística |
Configuración de la Aplicación
Información del Producto
- Nombre: AFRYCA
- Versión: 3.0 (Cameroon)
- Plataforma base: Eclipse E4 Application
- Tema visual:
afryca.theme (CSS)
- Lifecycle Manager:
afryca.rcp.lifecycle.LifeCycleManager
Temas Disponibles
| Versión |
Nombre |
| 2.0 |
Burundi |
| 3.0 |
Cameroon (actual) |
Configuración de Build (Tycho)
Ejemplos Precargados en el Workspace
CAEPIA2016 — Ejemplo de congreso CAEPIA 2016
Palomares2014_HR — Recursos Humanos
Palomares2014_Marketing — Marketing
Palomares2014_Sales — Ventas
Palomares2014_Technical — Técnico
Estadísticas del Proyecto
| Métrica |
Valor |
| Total de plugins OSGi |
91 |
| Plugins propios (afryca.*) |
78 |
| Features Eclipse |
43 |
| Ficheros Java |
~863 |
| Modelos de consenso |
20+ |
| Motores de scripting |
6 |
| Tipos de PR soportados |
6 |
Licencia
Este proyecto es software académico/de investigación. Consultar los términos de licencia específicos en cada plugin. Las dependencias externas incluidas mantienen sus propias licencias:
- JOGL: New BSD License
- Apache Commons: Apache License 2.0
- JFreeChart: GNU LGPL
- Groovy: Apache License 2.0
- JRuby: CPL/GPL/LGPL (triplicado)
- LuaJ: MIT License
- Jython: Python Software Foundation License