Proyecto de Sistemas Inteligentes (SI-31) > Una simulación avanzada de Inteligencia Ambiental donde agentes autónomos (BDI) gestionan el cuidado de una persona dependiente, controlan el stock de medicamentos y optimizan el consumo energético en un entorno domótico.
- Descripción General
- Los Agentes (Personajes)
- Simulación y Entorno
- Objetos Interactivos
- Arquitectura del Sistema
- Lógica Detallada de los Agentes
- Instalación y Ejecución
- Autores
Este proyecto implementa un sistema Multiagente (MAS) utilizando Jason (basado en AgentSpeak) y Java/CArtAgO. El sistema simula la vida diaria en una casa inteligente donde interactúan:
- Un paciente humano con rutinas de vida y necesidades médicas.
- Un equipo robótico encargado de su salud y el mantenimiento del hogar.
- Un proveedor externo (supermercado) para la logística.
El sistema resuelve problemas complejos como la navegación autónoma (A)*, la gestión de conflictos por recursos compartidos, el control de batería y la caducidad de productos.
El sistema se compone de 4 agentes inteligentes, cada uno con roles, creencias y objetivos específicos.
El entorno (HouseEnv) es una cuadrícula que representa la vivienda completa.
La interfaz gráfica muestra el movimiento en tiempo real, el estado del inventario y los niveles de energía de los robots.
Los agentes reciben percepciones específicas según su ubicación (sensores) y actúan sobre el entorno (actuadores).
Los agentes interactúan con objetos inteligentes distribuidos por la casa. Estos "Artefactos" son esenciales para la supervivencia de los robots y la salud del paciente.
Los agentes no trabajan aislados. Existe una estructura organizativa para cumplir la misión crítica: Getting Drug (Asegurar la medicación).
Figura: El Robot inicia la tarea, el Auxiliar apoya en logística y el Owner colabora consumiendo.
El árbol de objetivos muestra cómo se descompone la meta principal en sub-metas manejables.
Figura: Descomposición de objetivos. Si no hay medicina -> pedirla (order drug). Si hay -> cogerla (grab) y entregarla (bring).
Diagrama de secuencia que muestra el protocolo de comunicación (KQML) entre agentes.
Figura: Flujo de mensajes para coordinar una entrega de medicina y reposición de stock.
A continuación se detallan los diagramas de tareas (planes) que definen la "inteligencia" de cada agente. Los diagramas grandes se han dividido en dos partes para mayor detalle.
El Owner tiene libre albedrío simulado. Puede decidir cooperar con el robot o actuar por su cuenta ("competir" por la medicina).
| Diagrama General del Agente | Árbol de Tareas (Planes) |
|---|---|
![]() |
Parte 1:![]() ⬇️ Parte 2: ![]() |
Es el agente más complejo. Debe equilibrar la atención al paciente con su propia supervivencia (batería).
- Verificación: No confía ciegamente. Si el Owner dice "ya me la tomé", el robot va al botiquín a comprobar el stock.
- Gestión de Energía: Si la batería baja, busca el cargador. Si está ocupado o no llega, pide auxilio al Auxiliar.
| Diagrama General del Agente | Árbol de Tareas (Planes) |
|---|---|
![]() |
Parte 1:![]() ⬇️ Parte 2: ![]() |
Actúa reactivamente a las necesidades de la casa.
- Control de Caducidad: Revisa periódicamente las fechas de los medicamentos. Si algo caduca, lo retira y pide recambio.
- Soporte Energético: Actúa como "Power Bank" móvil para la Enfermera.
| Diagrama General del Agente | Árbol de Tareas (Planes) |
|---|---|
![]() |
Parte 1:![]() ⬇️ Parte 2: ![]() |
Agente simple reactivo que espera pedidos (order) y confirma entregas (delivered).
| Diagrama General del Agente | Árbol de Tareas (Planes) |
|---|---|
![]() |
![]() |
El sistema incluye mecanismos avanzados de simulación:
-
Reloj Simulado: El tiempo avanza más rápido que en la realidad (30 seg reales = 1 hora simulada) para ver ciclos completos de día/noche.

-
Batería: Los robots consumen energía al moverse. Deben gestionar sus ciclos de carga para no quedarse "muertos" en un pasillo.

- Java JDK 8 o superior.
- Gradle (incluido en el wrapper).
-
Clonar el repositorio:
git clone https://github.com/lKubi/SI-Project.git
-
Compilar y Ejecutar: Utiliza el wrapper de Gradle para arrancar la simulación Jason + CArtAgO.
./gradlew run
(En Windows usa
gradlew.bat run) -
Interfaz: Se abrirá automáticamente la ventana
MAS Console(logs de los agentes) y la ventana gráfica de la casa (HouseView).
Este proyecto ha sido desarrollado por el equipo SI-31 para la asignatura de Sistemas Inteligentes de la Universidad de Vigo:
- Miguel Ángel Seara Losada
- David Simón Nóvoa
- Mauro Zelenka Pedrosa
- Luis Fernando Pérez Moure
Este proyecto utiliza la plataforma Jason para el desarrollo de sistemas multiagente.



















