2026-05-22 11:14:29 +02:00
2026-05-22 11:14:29 +02:00
2026-05-22 11:14:29 +02:00
2026-05-22 11:14:29 +02:00
2026-05-22 11:14:29 +02:00
2026-05-22 11:14:29 +02:00
2026-05-22 11:14:29 +02:00
2026-05-22 11:14:29 +02:00
2026-05-22 11:14:29 +02:00
2026-05-22 11:14:29 +02:00
2026-05-22 11:14:29 +02:00
2026-05-22 11:14:29 +02:00
2026-05-20 16:32:26 +02:00
2026-05-22 11:14:29 +02:00

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:

┌──────────────────────────────────────────────────────────────┐
│                    CAPA DE PRESENTACIÓN (UI)                  │
│   afryca.rcp  ·  afryca.*.gui  ·  afryca.workspace.gui       │
│   afryca.structure.gui  ·  afryca.decisionmatrix.gui          │
└───────────────────────────┬──────────────────────────────────┘
                            │
┌───────────────────────────▼──────────────────────────────────┐
│                   CAPA DE LÓGICA DE NEGOCIO                   │
│  afryca.consensusmodel (20+ modelos)  ·  afryca.gdmp          │
│  afryca.behavior  ·  afryca.simulation  ·  afryca.ase         │
└───────────────────────────┬──────────────────────────────────┘
                            │
┌───────────────────────────▼──────────────────────────────────┐
│                    CAPA DE DATOS / DOMINIO                    │
│  afryca.domain*  ·  afryca.pr  ·  afryca.cm  ·  afryca.hpr   │
│  afryca.lpr  ·  afryca.mpr  ·  afryca.fpr  ·  afryca.hlpr    │
│  afryca.structure  ·  afryca.twotuple  ·  afryca.elicit       │
└───────────────────────────┬──────────────────────────────────┘
                            │
┌───────────────────────────▼──────────────────────────────────┐
│               LIBRERÍAS EXTERNAS / PLATAFORMA                 │
│  Eclipse RCP/E4  ·  EMF  ·  Apache Commons  ·  JFreeChart    │
│  SWT/JFace  ·  Jython  ·  Groovy  ·  JRuby  ·  Scala  ·  R  │
└──────────────────────────────────────────────────────────────┘

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:

# Construcción completa
build.bat

# Limpieza y verificación
clean.bat

Mediante Maven directamente:

# Construcción completa
mvn clean install

# Solo empaquetado
mvn clean package

# Limpieza
mvn clean

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

afryca-master/
├── plugins/                    # Plugins OSGi del proyecto (91 total)
│   ├── afryca.*/               # 78 plugins propios de AFRYCA
│   ├── com.jogamp.jogl/        # Librería JOGL (OpenGL)
│   ├── de.kupzog.ktable/       # Widget KTable
│   ├── Jython/                 # Intérprete Python (Jython)
│   ├── org.apache.commons.math3/  # Apache Commons Math
│   ├── org.codehaus.groovy/    # Groovy
│   ├── org.jfree.chart.JFreeChart/ # JFreeChart
│   ├── org.jruby/              # JRuby (Ruby)
│   ├── org.luaj/               # LuaJ (Lua)
│   └── org.swtchart*/          # SWT Chart
│
├── features/                   # Features Eclipse (43 total)
│   └── afryca.*.feature/       # Agrupaciones de plugins
│
├── releng/                     # Release Engineering
│   ├── afryca.application.configuration/  # Configuración del build
│   ├── afryca.application.product/        # Definición del producto
│   └── afryca.application.update/         # Repositorio P2
│
├── design/                     # Assets de diseño
│   ├── logo/                   # Logos PNG y SVG
│   └── workspace/              # Recursos del workspace
│
├── theme/                      # Temas visuales
│   ├── 2.0 - Burundi/          # Tema versión 2.0
│   └── 3.0 - Cameroon/         # Tema versión 3.0 (actual)
│
├── workspace/                  # Workspace Eclipse de trabajo
├── pom.xml                     # POM raíz Maven
├── build.bat                   # Script de construcción (Windows)
└── clean.bat                   # Script de limpieza (Windows)

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)

<tycho.version>2.0.0</tycho.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>

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
S
Description
AFRYCA es un framework enfocado en la investigación de los procesos de alcance de consenso en la resolución de problemas de toma de decisión en grupo.
Readme 438 MiB
Languages
Python 60.4%
Java 26.9%
HTML 12.5%
C 0.1%