**SVRAI** Síntesis, Verificación y Razonamiento sobre Agentes Inteligentes Máster Universitario en Lógica, Computación e Inteligencia Artificial Dpto. Ciencias de la Computación e Inteligencia Artificial (Universidad de Sevilla) **Curso 2023-2024** ([Curso 2022-2023](https://www.cs.us.es/~fsancho/Cursos/SVRAI2223/)) ![](./img/DM.png align=right width=40%) | | | |-----------------------------|----------------------------------------------------------| |**Profesor** | [Fernando Sancho Caparrini](http://www.cs.us.es/~fsancho)| |**Correo electrónico** | fsancho@us.es | |**Aula** | H0.10 | |**Horario** | Lunes 16:30-18:30, Miércoles 18:30-20:30 | |**Despacho** | H1.48 | |**Calendario** | del 09/10/2023 al 27/11/2023 |
**INTRODUCCIÓN** Este curso trata de los métodos y técnicas que puede utilizar un agente computacional para **planificar y actuar de forma deliberativa**, 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 deliberación tiene varias motivaciones científicas y de ingeniería. Comprender la deliberación es un objetivo de la mayoría de las ciencias cognitivas. En la investigación sobre inteligencia artificial, esto se hace modelando la deliberación mediante enfoques computacionales que la permitan y la expliquen. Por otro lado, las capacidades que se investigan se comprenden mejor si se mapean conceptos y teorías en sistemas y experimentos diseñados para probar, medir y cualificar empíricamente los modelos propuestos. La motivación ingenieril para estudiar la deliberación es construir sistemas que exhiban capacidades deliberativas y desarrollar tecnologías que respondan a necesidades socialmente útiles. Un sistema tecnológico necesita capacidades deliberativas si debe realizar de forma autónoma un conjunto de tareas demasiado diversas -o debe llevarse a cabo en entornos demasiado diversos- como para diseñar esas tareas en comportamientos innatos. La autonomía y la diversidad de tareas y entornos es una característica crítica en muchas aplicaciones, como la robótica (por ejemplo, robots de servicio y personales; robots de rescate y exploración; estaciones, satélites o vehículos espaciales autónomos), los sistemas de simulación complejos (por ejemplo, tutoría, formación o entretenimiento) o la 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 en crecimiento. Algunas áreas de este campo están 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 que la planificación automatizada tenga una 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 -deterministas, jerárquicos, temporales, no deterministas y probabilistas (incluyendo LLMs)- y, para cada uno de ellos, presentaremos brevemente las técnicas disponibles y también cómo utilizarlas en la integración de la planificación y la actuación. En el panorama más clásico de la Inteligencia Artificial se suele hacer uso de técnicas que pueden producir soluciones rápidamente al problema de la planificación y acció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: 1. Las acciones son **deterministas**. 2. Los entornos solo cambian como resultado de una acción. 3. Hay un conocimiento perfecto de los eventos (**omnisciencia**). 4. Suele haber un actor único (**omnipotencia**). 5. Funcionan bajo las reglas de un **modelo conocido**. Es interesante observar, sin embargo, que las aplicaciones más necesarias imponen situaciones que obligan a abordar algunas técnicas de resolución de IA que pretenden resolver problemas precisamente cuando estas suposiciones no se pueden confirmar, algo muy común cuando estamos construyendo agentes inteligentes que deben tomar decisiones bajo contextos complejos. Se dará por supuesto en el alumno del curso 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 métodos que nacieron por la incapacidad de los métodos tradicionales para resolver problemas en los que los supuestos anteriores no se pueden asegurar. En este sentido, se espera que el alumno haya cursado un curso inicial de Inteligencia Artificial en el que haya estudiado diversos sistemas de representación de problemas, como **Lógica Formal**, **Espacios de Estados/Configuraciones** y **Problemas de Satisfacción de Restricciones**, así como los algoritmos más clásicos de **Búsqueda**, **Planificación** y **Optimización**. Asimismo, se espera que el alumno tenga un conocimiento básico de **Espacios de Probabilidad** para poder modelar el concepto de incertidumbre, y conocimientos de **programación** que le permitan leer y escribir algoritmos a nivel medio (no necesariamente en el lenguaje elegido para este curso).
**CONTENIDO** Con el fin disponer de un sistema de nivelación entre la diversidad de procedencias del alumnado, se ofrece un apartado de **Fundamentos** (que se recorrerá de forma muy ligera en las clases teóricas), y que sirve de complemento/recordatorio para todos los alumnos. !!!Tip:Contenido 0. Fundamentos: 0. [Probabilidad](Probabilidad.md.html). 1. [Lógica Clásica (Proposicional y de Primer Orden)](Logica.md.html). 2. [Problemas de Satisfacción de Restricciones](CSP.md.html). 3. [Espacios de Estados y Búsquedas](EspaciosEstados.md.html). 4. [Planificación](Planificacion.md.html). ([Ejemplos y Ejercicios](ejpl1.md.html)) 1. Introducción: 1. [Agentes Inteligentes y Sistemas Multiagente](agentes.md.html). 2. [Agentes Deliberativos](Agentes_Deliberativos.md.html). 2. [Deliberación con modelos deterministas](Deliberacion_Modelos_Deterministas.md.html). 3. [Refinamiento de acciones](Deliberacion_Refinamientos.md.html). 3. [Deliberación con modelos temporales](Deliberacion_Modelos_Temporales.md.html). 4. Deliberación con incertidumbre: 1. [Deliberación en un paso: Utilidad e Irracionalidad](DeliberacionSimple.md.html). 2. [Deliberación Secuencial: MDP](MDP.md.html). 3. [Algoritmos para la Deliberación Secuencial](AlgoritmosSecuenciales.md.html). 5. Sistemas Multiagente: Teoría de Juegos. 1. [Juegos No Cooperativos](TeoriaJuegosNoCoop.md.html). 2. [Juegos Cooperativos](TeoriaJuegosCoop.md.html). 6. [Agentes y LLMs](https://www.cs.us.es/~fsancho/Blog/posts/LLMAgentes.md.html).
**SISTEMA DE IMPLEMENTACIÓN** Aunque el curso es fundamentalmente teórico, veremos la implementación de algunos de los algoritmos. Teniendo en cuenta la diversidad de trayectorias que podemos encontrar en la clase, se ha optado por el uso simultáneo de dos lenguajes de alto nivel: * **Julia**: de orientación científica y con una estructura muy clara y cercana a la formalización matemática. * **NetLogo**: orientado a ABM (Agent Based Models), MSA (Sistemas Multiagente) y Sistemas Complejos/Dinámicos. !!!note: Julia ![](img/logo.svg align="right" width="150px")[**Julia**](https://julialang.org/) es un lenguaje de programación **homoicónico** (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**, de **tipado dinámico**, 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 (**JIT**, Just in Time), mecanismos para la ejecución en paralelo 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, para el álgebra lineal, generación de números aleatorios, procesamiento de señales, aprendizaje automático, ciencia de datos y procesamiento de cadenas. Adicionalmente, la comunidad de desarrolladores de Julia contribuye con la creación y distribución de paquetes externos a través del [gestor de paquetes](https://juliapackages.com/) integrado de Julia a un paso acelerado. Además, hay muchos entornos de programación (como [VSCode](https://code.visualstudio.com/)) que proporcionan extensiones específicas para facilitar el trabajo con Julia, así como sistemas de notebooks que permiten usar Julia como lenguaje exploración computacional ([Jupyter](https://jupyter.org/) y [Pluto](https://www.juliapackages.com/p/pluto)) o entornos interactivos como [IJulia](https://juliapackages.com/p/ijulia). **Recursos de Julia** * [Manual brevísimo](Julia.md.html). * [Colección de implementaciones: Beautiful Algorithms](https://github.com/mossr/BeautifulAlgorithms.jl). * [Instalar Julia con VSCode](https://www.juliabloggers.com/installing-julia-1-8-and-vscode/). * [Instalar paquetes en Julia](https://datatofish.com/install-package-julia/). * [Entendiendo los paquetes y entornos de Julia](https://jkrumbiegel.com/pages/2022-08-26-pkg-introduction/index.html) !!!note: NetLogo ![](img/netlogo.png align="right" width="120px")[**NetLogo**](http://ccl.northwestern.edu/netlogo) es un entorno completo de desarrollo de modelos orientado principalmente al uso del paradigma multi-agente, y que proporciona simultáneamente un **lenguaje de programación** (que también se llama NetLogo), un **generador de interfaces** para permitir al usuario interactuar con los modelos, y un **entorno de simulación y experimentación**. En sus inicios tuvo una marcada orientación educativa pero, debido a las buenas cualidades que presenta, su uso en entornos académicos y de investigación superior lo han convertido en el paquete de programación multi-agente más extendido y que ha inspirado la creación de muchos otros sistemas de modelado multiagente. El proyecto, iniciado por Uri Wilensky como un proyecto propietario, pero gratuito, dentro del **Center for Connected Learning** de la Universidad de Northwestern, se ha convertido desde hace unos años en un proyecto Open Source mantenido por una [comunidad de desarrollo en Github](https://github.com/NetLogo/NetLogo). **Recursos de NetLogo** * [Fundamentos de NetLogo](NetLogo_Fundamentos.md.html). * [NetLogo 6.0 QuickGuide](http://luis.izqui.org/resources/NetLogo-6-0-QuickGuide.pdf). * [Documentación Oficial](http://ccl.northwestern.edu/netlogo/docs/).
**EVALUACIÓN** La asignatura consta de dos apartados evaluables de manera independiente y que pueden complementarse: 1. Realizando ejercicios propuestos en los diversos temas del curso. **Hasta 6 puntos**. No es necesario hacerlos todos de forma completa, aunque sí se valorará la diversidad y cantidad de ejercicios realizdos. 2. Entregando y defendiendo un trabajo acordado con el profesor de la asignatura. **Hasta 4 puntos**. La temática del trabajo puede ser variada: profundizar en algún artículo de investigación que esté relacionado con el contenido de la asignatura; desarrollar de forma más completa algún problema en el que implementar las aproximaciones vistas (sería como una versión individual y con más profundidad que el apartado anterior); y preparar un tutorial sobre algún paquete/herramienta que facilite el modelado y ejecución del tipo de aproximaciones que veremos en el curso. Por supuesto, se considerarán las propuestas realizadas por los alumnos.
**BIBLIOGRAFÍA** * M. Ghallab, D. Nau, P. Traverso. [Automated Planning and Acting](https://projects.laas.fr/planning/). Published by Cambridge University Press, ISBN: 9781107037274, August 2016. Descargable para uso personal gratuitamente. * M.J. Kochenderfer, T.A. Wheeler, K.H. Wray. [Algorithms for Decision Making](https://algorithmsbook.com/), MIT Press, 2022. * S.J. Russell, P. Norvig. [Artificial Intelligence - A Modern Approach](http://aima.cs.berkeley.edu/). Pearson Education, 2012. * M. Wooldridge. [An Introduction to MultiAgent Systems](https://www.cs.ox.ac.uk/people/michael.wooldridge/pubs/imas//IMAS2e.html). John Wiley & Sons, 2009.