- Contenidos
- El problema
- Implementación
- Reglas del juego
- Optimización vs Búsquedas
- Entorno del agente
- Algoritmo
- Estrutura del agente
- Programación lógica
- Base de datos Prolog
- Entrega
- Bibliografía
Esta práctica involucra los contenidos del módulo de Modelos de Inteligencia Artificial tratados en las sesiones del curso:
- Algoritmos de búsqueda.
- Algoritmos de optimización.
- Representación del conocimiento.
- Lógica de primer orden.
- Prolog.
Programa en Python y/o Prolog la lógica para resolver una partida del juego quién es quién. Puedes construir de manera completa el programa en Prolog. Si prefieres utilizar Python, al menos debes satisfacer el requisito de construir una base de datos de hechos en Prolog con los personajes y sus rasgos.
Si optas por esta segunda opción (Python + Prolog), lee los casos test que proporciono para observar cómo debes utlizar el paquete Python pyswip para lanzar consultas a la base de datos Prolog y recibir la respuesta en una estructura Python. En la documentación de pyswip encontrarás más ejemplos de uso.
Si optas por la primera de las opciones (empleando únicamente Prolog), puedes utilizar los casos test que proporciono como guía para el desarrollo de la aplicación practicando programación dirigida por casos test (TDD).
No he especificado ni publicado en el repo la función que codifica el algoritmo de optimización puesto que es decisión de cada uno/a proponer el algoritmo de optimización que considere más adecuado al problema.
No se permite el uso de ninguna librería externa con algoritmos de búsqueda u optimización.
El código entregado ha de contener una implementación original (i.e., no reutilizada) del algoritmo seleccionado de entre los de la bibliografía proporcionada.
Cualquier sospecha de implementación derivada de cualquier agente de IA de uso comercial será penalizada.
La lógica del juego es la esperada, salvo porque en las instrucciones del juego vintage se indica que la primera pregunta no puede ser "es hombre" o "es mujer" (consecuencia de la cultura de los 80).
Extrae de la imagen proporcionada (versión vintage del juego) las características de los personajes, de la manera más realista posible, sin inventar ninguno de los rasgos. Respeta los nombres de los personajes.
Si alguien necesita jugarlo de manera táctil ;) que me pida el juego.
Justifica por qué este juego puede considerarse un problema de optimización. Consulta la bibliografía recomendada.
Describe el entorno del agente en los términos tratados en la primera unidad didáctica y proyecto de este módulo.
Resume las características del entorno en una tabla con el formato:
Entorno de tareas | Completamente / parcialmente Observable | Agentes | Determinista / Estocástico | Episódico / Secuencial | Estático / Dinámico | Discreto / Continuo |
---|---|---|---|---|---|---|
RPS | - | - | - | - | - | - |
Justifica la adecuacióm del algoritmo de optimización que has seleccionado.
Nuestro propósito és diseñar el programa agente que implementa la función agente o la función que mapea las percepciones a las acciones.
A partir del modelo general de agente inteligente de la figura:
dibuja un modelo adecuado al entorno de tareas y a un de los cuatro tipos de programas agente:
- Agentes reactivos simples.
- Agentes reactivos basados en modelos.
- Agentes basados en objetivos.
- Agentes basados en utilidad.
Cada clase de agente combina componentes particulares de un modo particular para generar las acciones.
Justifica por qué el "quién es quién" puede considerarse un problema adecuado para ser resuelto empleando el paradigma de programación lógica. Chequea el capítulo 1 del libro Beginning Java 8 Fundamentals disponible en la bibliografía, explicado en las sesiones del curso.
Justifica la representación que has implementado mediante estructuras Prolog.
Repasa los contenidos de mis apuntes Prolog disponibles en Prolog for IA.
En un proyecto en tu github /gitlab con tu código y la documentación, esta última recogida en el README
del proyecto y escrita en formato Markdown.
Para la instalación del proyecto, puedes utilizar el tutorial sobre distribución de código Python en el proyecto explicado en las sesiones del módulo:
Bratko, I. Prolog, programming for Artificial Intelligence. Addison-Wesley/Pearson, 2012.
Hurbans, Rishal. grokking Artificial Intelligence Algorithms. Manning Publications Co, 2020.
Lutz, Mark. Learning Python. Sebastopol, Ca, O’reilly, 2018.
Martin, Robert C. Clean Code a Handbook of Agile Software Craftmanship. Upper Saddle River [Etc.] Prentice Hall, 2010.
Martin, Robert C. Clean Architecture: A Craftsman’s Guide to Software Structure and Design. Prentice Hall, 2018.
S. McConnel. Code Complete: A Practical Handbook of Software Construction, 2dn Edition. Microsoft Press, 2004.
Sharan, Kishori. Beginning Java 8 Fundamentals: Language Syntax, Arrays, Data Types, Objects, and Regular Expressions. Apress, 2014.
Russell, Peter. ARTIFICIAL INTELLIGENCE : A Modern Approach, Global Edition. S.L., Pearson Education Limited, 2021.
“Título de la fuente”, Título de recurso contenedor en cursiva, Fecha de publicación. Localización.
@dfleta. "Prolog for IA". github, 28 de febrero de 2024. https://github.com/dfleta/prolog-for-IA
@dfleta. "API REST con Flask y Mongo Atlas". github, 29 de marzo de 2022. https://github.com/dfleta/ollivanders