**SVRAI $2026$-$27$** Síntesis, Verificación y Razonamiento de Agentes Inteligentes Máster Universitario en Lógica, Computación e Inteligencia Artificial (MULCIA), $2026/2027$ Dpto. Ciencias de la Computación e Inteligencia Artificial - Universidad de Sevilla
!!!att:Dos Cursos en Uno En este curso aprovecharemos la presencia de **Nataliya Gulayeva**, experta en Algoritmos Evolutivos, para hacer una división de temas en dos bloques que se impartirán de forma consecutiva: 1. **Agentes Inteligentes**: Profesor: Fernando Sancho Caparrini | Duración: $20$ h | Fechas: $5$ oct - $4$ nov. 2. **[Algoritmos Evolutivos]()**: Profesora: Nataliya Gulayeva | Duración: $10$ h | Fechas: $9$ nov - $23$ nov. En este sitio web puedes encontrar el material correspondiente al primer bloque.
!!!def: ① Contenido del curso | # | 📅 | 📑 | ![](img/julia-1.svg width=20px) | |:-----:|:-------------:|:----------------------------------------------------------------------:|:---------:| | $0$ | 05-oct-2026 | **Introducción al curso** | | | $1$ | 07-oct-2026 | [**Agentes Inteligentes**](.\Temas\1_Introduccion\) | [⚙️](.\Practicas\clase1.jl) [⚙️](.\Practicas\c1-Busqueda.jl) | | $2$ | 14-oct-2026 | [**Arquitecturas**](.\Temas\2_Arquitecturas\) | [⚙️](.\Practicas\clase2.jl) [📝](.\Practicas\c2.md.html)| | $3$ | 19-oct-2026 | [**Planificación vs Aprendizaje**](.\Temas\3_Planificacion_Aprendizaje\) | [⚙️](.\Practicas\clase3.jl) [📝](.\Practicas\c3.md.html)| | $4$ | 21-oct-2026 | [**Comunicación y Protocolos**](.\Temas\4_Comunicacion_Protocolos\) | [⚙️](.\Practicas\clase4.jl) [📝](.\Practicas\c4.md.html)| | $5$ | 26-oct-2026 | [**Sistemas Multi-Agente**](.\Temas\5_MultiAgente\) | [⚙️](.\Practicas\clase5.jl) | | $6$ | 28-oct-2026 | [**De BDI/ReAct a Agentes LLM**](.\Temas\6_LLMs_I\) | ⚙️ | | $7$ | 04-nov-2026 | [**Sistemas Multi-Agente LLM y CodeAct**](.\Temas\7_LLMs_II\) | ⚙️ | | |**08-nov-2026**| **Propuesta de trabajo** | | | |**20-dic-2026**| **Entrega de trabajo** | |
!!!alg: ♾ Material complementario * [Introducción a la IA](./Temas/Pre_Introduccion_a_la_IA/) * [Historia de la IA](./Temas/Pre_Historia_de_la_IA/) * [Teoría de la Probabilidad](./Temas/Pre_Probabilidad/) * [Metaheurísticas](./Temas/Pre_Metaheuristicas) * [Lógica (Proposicional y de Primer Orden)](./Temas/Pre_Logica/) * [Satisfacción de Restricciones](./Temas/Pre_Satisfaccion_de_Restricciones) * [Espacios de Estados](./Temas/Pre_Espacios_de_Estados) * [Planificación](./Temas/Pre_Planificacion) * [Fundamentos de Machine Learning](./Temas/Pre_Fundamentos_de_ML) * [Modelos Fundacionales](https://www.cs.us.es/~fsancho/Blog/posts/Modelos_Fundacionales/) * [Computación Científica con Julia](./Temas/JuliaSC/)
Este curso trata de los métodos y técnicas que puede utilizar un agente computacional para **planificar y actuar de forma inteligente** (es decir, para decidir tanto qué acciones emprender como la forma de llevarlas a cabo) con el fin de alcanzar algún objetivo. El estudio de la agencia inteligente responde tanto a motivaciones científicas como ingenieriles. Desde el punto de vista científico, comprender y mejorar la toma de decisiones es un objetivo central en las ciencias cognitivas. En Inteligencia Artificial, este reto se aborda modelando la deliberación mediante enfoques computacionales que permitan provocar y explicar dicho proceso. Por otro lado, las capacidades investigadas se comprenden y evalúan mejor cuando los conceptos y teorías se implementan en sistemas y experimentos diseñados para probar, medir y validar empíricamente los modelos propuestos. La motivación ingenieril para estudiar la toma de decisiones es (1) construir sistemas que exhiban capacidades inteligentes y, (2) desarrollar tecnologías que respondan a necesidades socialmente útiles. Se necesitan estas capacidades si se requiere realizar de forma autónoma un conjunto de tareas demasiado diversas -o en entornos demasiado diversos- como para diseñar esas tareas como comportamientos innatos. La autonomía y la diversidad de tareas y entornos es una característica crítica en muchas aplicaciones: robótica (por ejemplo, robots de servicio y personales; robots de rescate y exploración; estaciones, satélites o vehículos espaciales autónomos), sistemas de simulación social complejos (por ejemplo, comportamiento de grupos, interacciones sociales o entretenimiento) o gestión de infraestructuras complejas (por ejemplo, plantas industriales o energéticas, redes de transporte, instalaciones urbanas). La **planificación automática** es un campo técnico muy rico, que se beneficia del trabajo de una comunidad investigadora activa y que ha estado en constante crecimiento. Algunas áreas de este campo han sido ampliamente exploradas y corresponden a una serie de técnicas ya maduras. Sin embargo, hay otros ámbitos en los que es imprescindible seguir investigando para obtener mayor repercusión en un conjunto más amplio de aplicaciones. Podemos destacar algunas líneas que precisan un desarrollo urgente: la integración de la planificación y la actuación; planificación y actuación bajo incertidumbre; y planificación en agentes basados en LLM. En este curso intentaremos introducir (no hay tiempo a más) distintos tipos de modelos y enfoques para el modelado de sistemas de agentes inteligentes y, para cada uno de ellos, presentaremos brevemente las técnicas disponibles. En el panorama más clásico de la IA se suelen priorizar técnicas que produzcan respuestas rápidas al problema de la toma de decisiones y actuación a cambio de hacer una serie de fuertes suposiciones sobre el problema, todas ellas relacionadas con la certidumbre o no de los elementos del problema. Algunas de estas suposiciones pueden resumirse en acciones **deterministas**, entornos que solo cambian como resultado de una acción realizada por un agente, conocimiento perfecto de los eventos (**omnisciencia**), presencia de un actor único (**omnipotencia**), y funcionamiento bajo reglas de un **modelo conocido**. Es interesante observar, sin embargo, que las aplicaciones más necesarias imponen situaciones que precisan técnicas de resolución de IA aplicables cuando estas suposiciones no se pueden confirmar, algo muy común cuando estamos construyendo agentes inteligentes que deben tomar decisiones bajo contextos complejos e interactivos. Daremos por supuesto que el alumno del curso tiene un mínimo conocimiento de las aproximaciones clásicas porque, aunque algunas de ellas no se usen explícitamente en el curso, sí aportan una visión de conjunto que da valor y sentido a las aproximaciones que veremos aquí, ya que examinaremos aproximaciones que nacieron por la incapacidad de los métodos tradicionales para resolver problemas en los que ciertos supuestos no están garantizados. Concretamente, se espera que el alumno tenga conocimientos de un curso inicial de IA y conozca diversos sistemas de representación de problemas, como **Lógica Formal**, **Espacios de Estados** y **Problemas de Satisfacción de Restricciones**, así como los algoritmos más clásicos de **Búsqueda**, **Planificación** y **Optimización**. !!!att En **Material Complementario** puedes encontrar algunos temas adicionales que buscan unificar y establecer los mínimos imprescindibles en esta tarea. Frente a la aproximación más habitual de la IA, basada en la generación de algoritmos que se ejecutan de forma centralizada, aquí proponemos una aproximación transversal a diversos temas desde un punto de vista **distribuido**. En la práctica, la **Inteligencia Artificial Distribuida** está asociada al uso de *Agentes* (denominados *Inteligentes* cuando verifican algunas propiedades específicas) que abordan de forma no centralizada (por medio de capacidades como la *comunicación*, *cooperación*, *negociación*, *sincronización*, etc.) la resolución de problemas. El curso hace uso de metodologías concretas de representación y resolución general de problemas para motivar e introducir principios y técnicas fundamentales en los sistemas de agentes inteligentes. Los temas que se verán contactan con conceptos de *Teoría de la Decisión*, *Teoría de Juegos*, *Diseño de Procedimientos*, *Razonamiento con Restricciones*, *Aprendizaje Automático*, *Sistemas Multiagente Distribuidos* y *Sistemas Basados en Agentes Sociales*.
| | | |-----------------------------|----------------------------------------------------------------------------------------------------------------------| |**Profesores** | [Fernando Sancho Caparrini](http://www.cs.us.es/~fsancho)| |**Contacto** | fsancho@us.es, Despacho H1.48 | |**Aula** | H0.10 | |**Horario** | Lunes: 15:30-17:30 y Miércoles: 17:30-19:30 | |**Calendario** | $05/10/2026 - 4/11/2026$ |
Como corresponde a un Máster, esta asignatura tiene un marcado carácter de motivación del descubrimiento. Para ello, intentar cubrir nuestros objetivos impone algunos condicionantes que deben ser reconocidos y asumidos por todas las partes: 1. Todo el **contenido está disponible de forma abierta** en este mismo sitio web con antelación suficiente para que el alumno lo pueda revisar antes de las sesiones presenciales (una versión inicial de todo el contenido está disponible desde el primer día de clase, pero podrá sufrir ligeras modificaciones durante la ejecución del curso). 1. Se proporciona más contenido del que se puede cubrir en las sesiones presenciales, de forma que el alumno pueda **elegir qué temas le interesan más** y profundizar en ellos. 1. El alumno ha de ser capaz de **prever y seguir una planificación adecuada** del esfuerzo a realizar en el curso para llevar un ritmo constante pero sin sobresaltos, teniendo en cuenta que presenta un **formato temporal más concentrado** que otras asignaturas del mismo máster. 2. El contenido se articula alrededor de una serie de sesiones (teórico-prácticas) que marcan un ritmo continuo y común al conjunto de la clase. 3. Siguiendo el sistema de créditos ECTS, las sesiones tendrán un desarrollo paralelo (e imprescindible) tanto dentro del aula (explicaciones y trabajo colaborativo) como fuera de ella (lecturas y trabajo personal).
Junto a los contenidos de carácter teórico, puntualmente presentaremos implementaciones de experimentos, estructuras y métodos para facilitar la adquisición de nuevos conocimientos. Para ello, se ha buscado un lenguaje de alto nivel, de orientación científica y que tenga una sintaxis clara y cercana a la formalización matemática que se está usando. Siguiendo estas directrices, se propone el uso de **Julia** (y podremos ver algo de **NetLogo** si el tiempo lo permite), ya que presentan características propias muy interesantes y diferenciadas que cuadran muy bien con nuestros objetivos. Para las soluciones por parte del alumno también se permiten otras opciones, como **Python**, **Haskell** o **Javascript/Typescript**.
!!!ejemplo: Julia y la Programación Científica ![](img/logo.svg align="right" width="150px")[**Julia**](https://julialang.org/) es un lenguaje de programación **homoicónico** (palabra rebuscada para decir que la representación primaria de los programas escritos en Julia es también una estructura de datos en un tipo primitivo del lenguaje), **multiplataforma**, **multiparadigma** (se adapta al estilo del usuario y la necesidad del problema, pudiendo mostrar características de programación funcional, imperativa, declarativa, etc.), de **tipado dinámico** (aunque puede pasarse a un tipado estático si se considera más adecuado), de **alto nivel** y alto desempeño para la **computación genérica, técnica y científica**, con una sintaxis similar a la de otros entornos de computación similares. Dispone de un compilador avanzado con ejecución principalmente en modo **JIT** (Just in Time), mecanismos para la ejecución paralela y distribuida, además de una extensa biblioteca de funciones matemáticas. La biblioteca, desarrollada fundamentalmente en Julia, también contiene código desarrollado en C o Fortran, proporcionando librerías para el álgebra lineal, álgebra abstracta, cálculo real, generación de números aleatorios, procesamiento de señales, aprendizaje automático, ciencia de datos, procesamiento de cadenas, programación paralela, etc. Adicionalmente, la comunidad de desarrolladores de Julia contribuye con la creación y distribución de paquetes externos a un paso acelerado a través del [gestor de paquetes](https://juliapackages.com/) integrado en Julia. En particular, para este curso pueden ser especialmente interesantes algunas librerías que abordan diversos temas que se tocan con diferentes profundidades: * [POMDP.jl](https://juliapomdp.github.io/POMDPs.jl): Una interfaz Julia para definir, resolver y simular procesos de decisión de Markov parcialmente observables y sus homólogos totalmente observables. * [GameTheory.jl](https://github.com/QuantEcon/GameTheory.jl): Librería que proporciona algoritmos y estructuras de datos específicas para el tratamiento de Teoría de Juegos en Julia. * [Agents.jl](https://juliadynamics.github.io/Agents.jl): Se trata de un framework puro de Julia para el modelado basado en agentes (ABM). * [PromptingTools.jl](https://siml.earth/PromptingTools.jl/v0.94.0/): Librería que proporciona herramientas para la generación de prompts y la interacción con modelos de lenguaje. Además, hay muchos entornos de programación (como [VSCode](https://code.visualstudio.com/), [Atom](https://atom.io/), etc.) que proporcionan extensiones específicas para facilitar el trabajo con Julia, así como sistemas de notebooks que permiten usar Julia como lenguaje de desarrollo ([Jupyter/JupyterLab](https://jupyter.org/), y [Pluto](https://www.juliapackages.com/p/pluto)) o entornos interactivos como [IJulia](https://juliapackages.com/p/ijulia). !!!alg: Algunos recursos para Julia ![](img/logo.svg align="right" width="250px") * [Instalación y Ecosistema de Julia: `juliaup`](Julia\installJulia.md.html) * [Paquetes y Entornos de Julia](Julia\PkgEnv.md.html) * [Manual Rápido de Programación](Julia\Julia.md.html) * [Manual de Julia Plots](Julia\Plots.md.html) * [Colección: Beautiful Algorithms](https://github.com/mossr/BeautifulAlgorithms.jl)
Esta sección del curso supone $\frac{2}{3}$ de la nota final del mismo. $\frac{1}{3}$ restante se obtendrá por medio del sistema de evaluación propuesto por la profesora Gulayeva sobre su contenido. La evaluación de esta parte del curso provendrá de la calificación obtenida por la realización de un trabajo teórico-práctico relacionado con alguno de los temas tratados en el curso, y que tendrá que ser propuesto por el alumno al profesor (y aceptado por este). Las fechas de propuesta y entrega del trabajo para la **Evaluación Alternativa** son: * **Propuesta: ≤ 8 de noviembre**. * **Entrega: ≤ 20 de diciembre**. Para la **Convocatoria oficial**, el alumno tendrá que ponerse en contacto con el profesor para acordar la fecha de propuesta, entrega y del trabajo. En cualquiera de las dos opciones, y en caso de que el profesor lo considere necesario, el alumno tendrá que defender presencialmente su trabajo en una fecha acordada con el profesor.