close Tablón IAIC

Anuncios

Diario

Fecha Actividad
25/09/2017 Presentación de la asignatura
El problema de la representación en IA
27/09/2017 Espacios de Estados: Definición y primeros ejemplos
02/10/2017 Ejercicios
04/10/2017 Implementación Espacios de Estados.
09/10/2017 Búsquedas No Informadas 
Búsquedas Informadas
Implementación de BFS
11/10/2017 Implementación A*
Ejercicios
16/10/2017 Búsquedas Locales
Implementación
18/10/2017 Ejercicios
23/10/2017 Sistemas Basados en reglas
Lógica Proposicional
Ejercicios
25/10/2017 Lógica Difusa
Ejercicios
30/10/2017 Examen NetLogo
31/10/2017 Análisis de la situación del curso
06/11/2017 Algoritmos Genéticos
Implementación
08/11/2017 PSO
Implementación
13/11/2017 Algoritmos de Hormigas
Implementación
15/11/2017 Satisfacción de Restricciones con ACO
Ejercicios
15/11/2017 Examen Recuperación NetLogo (Aula I0.10, 18:00)
20/11/2017 Ejercicios
22/11/2017 Introducción al ML
Aprendizaje Supervisado y No Supervisado
27/11/2017
29/11/2017
Examen Bloque I (por determinar uno de los 2 días)
04/12/2017 ID3
Métodos Combinados de Aprendizaje
05/12/2017 Examen Convocatoria Diciembre
13/12/2017 Ejercicios
18/12/2017 SOM
Ejercicios
20/12/2017 Examen Bloque II
08/01/2018 Redes Neuronales
10/01/2018 Ejercicios
15/01/2018 Ejercicios
17/01/2018 Examen Bloque III

Anuncios Anteriores

close Tablón IAIC

Anuncios

Diario

Fecha Actividad
25/09/2017 Presentación de la asignatura
El problema de la representación en IA
27/09/2017 Espacios de Estados: Definición y primeros ejemplos
02/10/2017 Ejercicios
04/10/2017 Implementación Espacios de Estados.
09/10/2017 Búsquedas No Informadas 
Búsquedas Informadas
Implementación de BFS
11/10/2017 Implementación A*
Ejercicios
16/10/2017 Búsquedas Locales
Implementación
18/10/2017 Ejercicios
23/10/2017 Sistemas Basados en reglas
Lógica Proposicional
Ejercicios
25/10/2017 Lógica Difusa
Ejercicios
30/10/2017 Examen NetLogo
31/10/2017 Análisis de la situación del curso
06/11/2017 Algoritmos Genéticos
Implementación
08/11/2017 PSO
Implementación
13/11/2017 Algoritmos de Hormigas
Implementación
15/11/2017 Satisfacción de Restricciones con ACO
Ejercicios
15/11/2017 Examen Recuperación NetLogo (Aula I0.10, 18:00)
20/11/2017 Ejercicios
22/11/2017 Introducción al ML
Aprendizaje Supervisado y No Supervisado
27/11/2017
29/11/2017
Examen Bloque I (por determinar uno de los 2 días)
04/12/2017 ID3
Métodos Combinados de Aprendizaje
05/12/2017 Examen Convocatoria Diciembre
13/12/2017 Ejercicios
18/12/2017 SOM
Ejercicios
20/12/2017 Examen Bloque II
08/01/2018 Redes Neuronales
10/01/2018 Ejercicios
15/01/2018 Ejercicios
17/01/2018 Examen Bloque III

Anuncios Anteriores

Docencia: Inteligencia Artificial 2017-18

Modificado el 15 de Noviembre de 2017

Ficha Técnica

Grado: Ingeniería de Computadores

Aula: I0.10

Horario: Lunes (10:40 - 14:30) y Miércoles (12:40 - 14:30)

Lugar Tutorías: Despacho H1.48

Horario Tutorias: Acordar cita con el profesor

Sistema de Implementación: NetLogo

Profesor: Fernando Sancho Caparrini

Objetivos

El objetivo general del curso es introducir al estudiante en técnicas avanzadas de Inteligencia Artificial, desde las más clásicas hasta las más novedosas, haciendo especial énfasis en las relacionadas con sistemas multiagente, con el fin de que sea capaz de explicar, analizar e implementar dichas técnicas en sus proyectos futuros, ya sean profesionales o académicos.

Tras haber realizado este curso con aprovechamiento, el estudiante ideal debería ser capaz de:

  • Describir y reconocer un buen número de las principales técnicas de Inteligencia Artificial, tanto en términos generales como a un nivel técnico detallado.
  • Comparar y evaluar la idoneidad de varias técnicas de Inteligencia Artificial para resolver un problema concreto dado.
  • Combinar diferentes técnicas de Inteligencia Artificial tanto desde un punto de vista teórico como práctico.
  • Aplicar una técnica concreta de Inteligencia Artificial a un problema concreto dado.
  • Reconocer las dificultades generales y los errores más habituales en el uso práctico de técnicas de Inteligencia Artificial.
  • Explorar de manera independiente la literatura relevante de un proyecto de Inteligencia Artificial específico.
  • Implementar técnicas no triviales de Inteligencia Artificial.
  • Escribir un informe de estilo científico con la documentación de un sistema de Inteligencia Artificial implementado y de las teorías sobre las que se soporta.

Contenido

Introducción: Generalidades 
Introducción a la IA    
NetLogo (NetLogo QuickGuide) (snnipets)  
Parte I: IA Clásica      
Espacios de Estados
Estrategias de Búsqueda


Juegos con Adversario: Minimax
Introduciendo decisiones:



Parte II: Inteligencia Computacional      
AG: Algoritmos Genéticos 
PSO: Optimización por Enjambres de Partículas
ACO: Algoritmos de Colonias de Hormigas
Problemas de Satisfacción de Restricciones
Parte III: Aprendizaje Automático      
Introducción al Aprendizaje Automático
   
Algoritmos Supervisados y No Supervisados
 
Aprendizaje Inductivo: Árboles de Decisión
Métodos Combinados de Aprendizaje    
Mapas Auto-Organizados (Self Organizing Maps in NetLogo)
Redes Neuronales Artificiales (Artificial Neural Networks in NetLogo)
Aprendizaje por Refuerzo: Algoritmo Q Learning    

A partir de este esquema inicial se irá rellenando un diario de clase (disponible en el Tablón del curso) que indicará qué se ha hecho en cada día del curso.

En la columna de la derecha se ofrecen los enlaces a las librerías y ejemplos implementados en NetLogo de los métodos vistos en el tema (y que están disponibles como un proyecto de Github), así como un enlace a la sección correspondiente de los ejercicios propuestos. Puedes bajarte la colección completa de archivos en un solo ZIP haciendo clic en el icono de la derecha.

Colección de Problemas Propuestos

Cada unidad (o en su defecto, un bloque de unidades temáticamente relacionadas) dispone de un conjunto de ejercicios propuestos que son de realización indispensable para una correcta asimilación de los conceptos teóricos introducidos, así como de sus aplicaciones prácticas.  A lo largo del curso se destinarán algunas de las clases presenciales para la realización de ejercicios seleccionados y para responder dudas que puedan haber surgido durante en su resolución. Se recomienda encarecidamente su realización como medio de preparación para los exámenes de la evaluación alternativa.

Criterios de Evaluación

La asignatura tiene un marcado carácter práctico, lo que significa que todos los contenidos teóricos (aquellos que tengan sentido) van acompañados de implementaciones de los algoritmos estudiados que se pueden reutilizar de forma directa para la resolución de muchos de los ejercicios propuestos y exámenes.

La nota de la evaluación alternativa del curso se obtendrá a partir de la valoración de 3 exámenes (que se corresponden con cada una de las 3 partes en que se divide la asignatura) junto con 1 control adicional sobre el sistema de implementación que se usará en el curso, siguiendo la siguiente proporción:

 

Control NetLogo
2º Control NetLogo

Examen Parte I Examen Parte II Examen Parte III
Peso 10% 30% 30% 30%
Mínimo 5/10 3/10 3/10 3/10

Para aprobar el curso es imprescindible sacar el mínimo indicado en la tabla en cada uno de ellos, y además la suma ponderada de todos ellos debe superar el 5.

Cada examen se realizará unos días después de la finalización de la parte correspondiente, durante las horas de clase (salvo que haya un consenso que especifique lo contrario entre el profesor y los alumnos) y su fecha se comunicará al alumnado con suficiente antelación y será publicada en la página de la asignatura. El control será de carácter técnico, para comprobar que el alumno ha adquirido la destreza suficiente en el uso del sistema de implementación, y se hará a mediados de Octubre, dando tiempo así a que el alumno adquiera la destreza necesaria.

Calificaciones

Si eres alumno del curso podrás acceder a la hoja de calificaciones de la evaluación alternativa por medio de este enlace (requiere contraseña que se proporcionará en clase):

Sistema de Implementación

El sistema de implementación seleccionado para todos los bloques del curso ha sido NetLogo:

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. 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 en un proyecto Open Source mantenido por una comunidad de desarrollo en Github.

Entre las variadas razones por las que ha sido elegido NetLogo para un curso de Inteligencia Artificial podemos destacar las siguientes:

  • El tiempo de desarrollo de modelos es extremadamente reducido, lo que facilita que en cuestión de minutos se puedan poner en práctica ideas acerca de cómo aplicar soluciones teóricas a problemas concretos.
  • Gracias a las capacidades gráficas que proporciona, las soluciones a los problemas se presentan de una forma visual que mejora la comprensión de los conceptos subyacentes.
  • Presenta un lenguaje de programación y entorno de trabajo sencillo, por lo que no se emplea un tiempo excesivo en su aprendizaje y se puede dedicar la mayoría del tiempo disponible en la asignatura a conceptos propios de su contenido, no a resolver dificultades técnicas de implementación.
  • Proporciona de forma nativa y natural un sistema de modelado basado en agentes, algo especialmente adecuado a un enfoque moderno de Inteligencia Artificial.
  • Es capaz de cubrir diversas áreas de Inteligencia Artificial de manera uniforme y sin el uso de extensiones del lenguaje o librerías externas, algo que con otros lenguajes de programación requeriría mayor esfuerzo.
  • Está basado en un paradigma de programación declarativo y con tintes funcionales, lo que por sí solo supone una razón suficientemente fuerte para ser incluído en el currículo de una Ingeniería Informática.
  • Tiene una amplia comunidad de usuarios y proporciona cientos de ejemplos de modelado que facilitan una primera aproximación al modelado de problemas.

Los conocimientos mínimos de NetLogo que el alumno debe adquirir para poder seguir la asignatura con comodidad contienen (pero no se limitan a) la siguiente lista:

  • Estructuras de datos básicas (incluyendo los agentes): listas, patches, tortugas, links, ...
  • Estructuras de programación: repeat, while, if, ifelse, ask (with), ...
  • Cómo crear procedimientos y funciones.
  • Funciones y procedimientos más habituales: min, max, list, remove, ...
  • Contextos de ejecución y procedimientos específicos de agentes.
  • Creación de propiedades y razas de agentes.
  • Manipulación, comunicación y modificación entre agentes.
  • Funciones de orden superior: map, reduce, filter, foreach.

Recursos Digitales

NetLogo se puede descargar gratuitamente en sus versiones para Linux, Mac o Windows, así como su reciente versión web (todavía no es 100% funcional): Videocurso de NetLogo que cubre los conocimientos mínimos necesarios sobre el lenguaje de programación para la realización de este curso: Repositorio Github con códigos fuente de las librerías y modelos/ejemplos vistos en clase, donde además se explica el uso de cada una de las librerías:

Bibliografía

En cada una de las unidades se proporciona un conjunto de enlaces que sirven de referencia específica y ampliación al contenido asociado a la unidad.

Además, junto a esta bilbiografía específica se propone la siguiente bibliografía general que puede usarse de forma transversal al curso (algunas podrán servir para todos los bloques, y otras solo para algunos de ellos):