profesor: Luigi Ceccaroni

Slides:



Advertisements
Presentaciones similares
INGENIERIA INFORMATICA Y BUSQUEDAS CON ADVERSARIOS
Advertisements

Solución de Problemas en AI
Arreglos Unidimensionales y Bidimensionales ESTRUCTURAS DE DATOS I
N-PUZZLE Resolución por Búsqueda
Búsqueda en árboles de juego
¿Por que estudiar búsquedas?
Inteligencia Artificial
Inteligencia Artificial
Inteligenica Artificial I Alejandro Permingeat Inteligencia Artificial de Russell y Norving 1° edición 1996 Parte II Capítulo V.
Grupo 4 Matías Melgar Pablo Carbonell
Inteligencia Artificial Búsqueda informada y exploración
PROGRAMACION DE ESTRUCTURAS DE DATOS
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Cap 4 Búsqueda Heurística
Búsqueda Informada Heurísticas.
Inteligencia Artificial Búsqueda informada y exploración
METODO DE ORDENAMIENTO POR SELECCIÓN.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Inteligencia Artificial Resolver problemas mediante búsqueda
Inteligencia Artificial Resolver problemas mediante búsqueda
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Inteligencia Artificial Búsqueda local
Algoritmos Genéticos (AG) Integrantes: Rubén Levineri Miguel Rozas Juan Yañez Faltan autores y bibliografía.
Modelos de Programación Entera - Heurísticas
Tema 2: Métodos de ajuste
Representación del Conocimiento
Temas importantes para el desarrollo de la segunda parte del TPE
Trabajo presentado por: LUIS FERNANDO OBANDO ING
Capítulo 4 BUSQUEDA INFORMADA.
Prog. Univ. Rodríguez Rey, Pablo Funciones Programación I.
Solución de problemas por Búsqueda
Optimización, Búsqueda Heurística
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Tema 10.3: Asignación de Espacio No Contiguo. Tema 10.3: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.),
DEFINICIONES Sea (P) el siguiente problema de programación lineal:
Aplicaciones de las Redes Neuronales Artificilaes Dr. Héctor Allende
ELO3201 Contenedores Biblioteca Estándar de Templates Agustín J. González ELO320 Contenido Contenedores: Vector, List, Deque, Stack, Queue, Priority Queue,
Asignación de Espacio No Contiguo
Administración de Memoria
Material de apoyo Unidad 4 Estructura de datos
Algoritmos de Búsqueda Simulated Annealing Es un algoritmo de Hill­Climmbing estocástico. Inspirado en el proceso físico (Termodinámica) de enfriamiento.
Optimización matemática Algoritmo de Búsqueda Tabú Por: Antonio H
EI, Profesor Ramón Castro Liceaga Agosto de 2005 UNIVERSIDAD LATINA (UNILA) PROGRAMACION ORIENTADA A OBJETOS EN JAVA (Optativa) PROGRAMACION DE INTERFASES.
Inteligencia Artificial Evaluación de la práctica de búsqueda Profesor: Luigi Ceccaroni Curso FIB - UPC.
¿Por que estudiar búsquedas? Recordemos que la mayoría de los problemas en inteligencia artificial, involucran como tema central un proceso de búsqueda.
METODOS DE BUSQUEDA INFORMADOS CAPITULO 5
Sistemas Inteligentes Distribuidos Sistemas Inteligentes Distribuidos Sesión 13 L. Enrique Sucar / Marco López Sesión 13 L. Enrique Sucar / Marco López.
1 Programación Declarativa Avanzada Resolución De Puzzles Vicente Andrade Alcántara Miguel Ángel Sánchez González.
Parte II. Algorítmica. 5. Backtracking. 1. Análisis de algoritmos.
Experimentación Numérica
Análisis y Diseño de Algoritmos
Una introducción a la computación evolutiva
TPE 1 - Sistemas de Producción: Rolling Cubes Sistemas de Inteligencia Artifcial Bergez, Brasca y García.
PROBLEMAS DE SATISFACCIÓN DE RESTRICCIONES
Parte I. Estructuras de Datos.
Sabemos reconocerlas, y calcularlas como soluciones de sistemas de ecuaciones, o de desigualdades Buscamos métodos de cálculo generales y eficientes Problemas.
profesor: Luigi Ceccaroni
ALEXANDER PEREZ FREDERICK MEJIA. Son una serie de esquemas de representación del conocimiento, que mediante diversos algoritmos permite resolver ciertos.
Estructura de Datos 4 Grafos Dirigidos
UNIDAD 2 Grafos Árboles abarcadores mínimos Caminos más cortos.
Reconocimiento de patrones
Conalep Coacalco Algoritmos Recursivos
Introducción a los TADs
Inteligencia Artificial
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
Búsqueda de ascensión de colinas (BLv)
Las interfaces Predicate y Function Versión Unidad Didáctica 17 Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos.
Diseño de tipos: clase PolinomioEntero Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 8 Versión
Transcripción de la presentación:

profesor: Luigi Ceccaroni Inteligencia Artificial (laboratorio) Resolver problemas mediante búsqueda heurística Primavera 2009 profesor: Luigi Ceccaroni

Las clases Java de AIMA (Artificial Intelligence, a Modern Approach) AIMA está constituido por un conjunto de clases Java que permiten definir problemas de búsqueda. Las clases implementan varios algoritmos: búsqueda ciega: anchura, profundidad y profundidad iterativa búsqueda heurística: A*, A*PI búsqueda local: ascensión de colinas, temple simulado Las clases para la representación del problema están separadas de las clases para los algoritmos de búsqueda.

Definición de problemas La definición de un problema requiere la instanciación de una serie de clases: representación de los estados operadores función generadora de estados accesibles (aima.search.framework.SuccessorFunction) función que determina si se ha llegado al estado final (aima.search.framework.GoalTest) función heurística (aima.search.framework.HeuristicFunction)

Representación de los estados y operadores La representación de los estados se implementa a través del constructor de una clase independiente, por ejemplo: /* Constructor */ public ProbIA15Board(char[] b) { for(int i=0;i<5;i++) board[i]=b[i]; } Adicionalmente, hay funciones que transforman el estado según los posibles operadores a utilizar. Es conveniente que haya funciones que indiquen si un operador se puede aplicar sobre un estado. Se pueden incluir otras funciones auxiliares, si necesarias.

Función generadora de estados accesibles Implementa la clase aima.search.framework.SuccessorFunction y la función public List getSuccessors(Object aState). Esta función genera la lista de los estados accesibles a partir del que recibe como parámetro. Esta lista contiene pares de elementos que consisten en: una cadena que representa la operación que se ha aplicado el estado sucesor resultante La función usa necesariamente otras funciones declaradas en la clase que define el problema (representación del estado, operadores). 5

Función que determina si se ha llegado al estado final Implementa la clase aima.search.framework.GoalTest y la función public boolean isGoalState(Object aState). Esta función ha de retornar cierto cuando un estado sea final. 6

Función heurística Implementa la clase aima.search.framework.HeuristicFunction y la función public int getHeuristicValue(Object n). Esta función ha de retornar el valor de la función heurística (la h’). Las características de la función dependen del problema. 7

Ejemplo: el 8 puzzle Definido en el paquete aima.search.eightpuzzle Cuatro clases que representan el problema: EightPuzzleBoard representa el tablero (un vector de 9 posiciones, números del 0 al 8, el 0 es el blanco). ManhattanHeuristicFunction implementa la función heurística (suma de distancia Manhattan de cada ficha). EightPuzzleSuccessorFuncion implementa la función que genera los estados accesibles desde uno dado (posibles movimientos del blanco). EightPuzzleGoalTest define la función que identifica el estado final. La clase aima.search.demos.EightPuzzleDemo tiene las funciones que permiten solucionar el problema con distintos algoritmos. 8

Ejemplo: vector de 5 posiciones Definido en el paquete IA.probIA15 Cuatro clases que representan el problema: ProbIA15Board representa el tablero (un vector de 5 posiciones con la configuración inicial de fichas). ProbIA15HeuristicFunction implementa la función heurística (número de piezas blancas). ProbIA15SuccessorFunction implementa la función que genera los estados accesibles desde uno dado operadores: saltos y desplazamientos ProbIA15GoalTest define la función que identifica el estado final. La clase IA.probIA15.ProbIA15Demo permite ejecutar los algoritmos de búsqueda ciega y heurística. 9

Cómo ejecutar los algoritmos El funcionamiento se puede ver en los ejemplos, de los que es útil analizar el código. Definir un objeto Problem que recibe: otro objeto que representa el estado inicial la función generadora de sucesores la función que prueba el estado final la función heurística, si se utiliza un algoritmo de búsqueda informada Definir un objeto Search que sea una instancia del algoritmo que se va a usar. Definir un objeto SearchAgent que recibe los objetos Problem y Search. Las funciones printActions y printInstrumentation permiten imprimir el camino de búsqueda y la información de la ejecución del algoritmo de búsqueda. 10

Cómo ejecutar los algoritmos: ejemplo

Ejecución de los ejemplos Podéis ejecutar las demos ejecutando el fichero I:\AIA\AIMA.bat y escogiendo la demo que queráis desde el interfaz.

Ejecución de los ejemplos: 8 puzzle El problema se resuelve mediante los siguientes algoritmos: profundidad limitada profundidad iterativa primero el mejor (dos funciones) A* (dos funciones)

Ejemplos: vector de 5 posiciones (probIA15) El problema se resuelve mediante los siguientes algoritmos: anchura profundidad limitada profundidad iterativa A* A*PI con dos heurísticas

Ejemplos: path finder Interfaz a partir de la cual se puede seleccionar el problema, el algoritmo y varias heurísticas. El problema consiste en encontrar un camino entre la posición azul y la roja.

Ejemplos: path finder

Ejemplos: path finder Cosas a observar: Los algoritmos exhaustivos dejan de ser efectivos a partir de tamaños pequeños. La heurística influye mucho en la eficiencia de los algoritmos informados. A*PI gana a A* en tiempo y gasta menos memoria. A partir de cierto tamaño, A* deja de ser competitivo. Hay configuraciones de problemas (ver menús) que no se pueden resolver con ningún algoritmo en un tiempo razonable (hace falta un conocimiento mas especializado).

Ejemplos: el viajante de comercio Definido en el paquete IA.probTSP. Las 4 clases que representan el problema: ProbTSPBoard: representación del espacio (un vector de n posiciones que representan la secuencia de recorrido entre las n ciudades) ProbTSPHeuristicFunction: implementa la función heurística (suma del recorrido) ProbTSPSuccessorFunction: implementa la función que genera los estados accesibles desde uno dado (todos los posibles intercambios de 2 ciudades) probTSPGoalTest: define una función que siempre retorna falso como prueba de estado final (En este caso lo desconocemos.)

Ejemplos: el viajante de comercio La clase ProbTSPJFrame permite ejecutar la ascensión de colinas y el temple simulado. Se puede modificar el numero de ciudades. En cada panel aparece la ejecución del problema del viajante de comercio con ascensión de colinas y temple simulado.

Ejemplos: el viajante de comercio Se puede comprobar que frecuentemente la solución que da el temple simulado es mejor. Evidentemente, para cada tamaño de problema habría que reajustar los parámetros del temple simulado.

Ejemplos: el viajante de comercio

Ejemplos: antenas de telefonía Definido en el paquete IA.probAntenas. Las 4 clases que representan el problema: ProbAntenasBoard: representación del espacio (una matriz NxN que representa el mapa, y un vector de antenas) ProbAntenasHeuristicFunction, ProbAntenasHeuristicFunction2, ProbAntenasHeuristicFunction3: implementan varias funciones heurísticas ProbAntenasSuccessorFunction: implementa la función que genera los estados accesibles desde uno dado (mover antena, aumentar y disminuir potencia) probAntenasGoalTest: define una función que siempre retorna falso como prueba de estado final

Ejemplos: antenas de telefonía La clase ProbAntenasJ Frame permite ejecutar la ascensión de colinas y el temple simulado.

Ejemplos: antenas de telefonía Cosas a observar: Las heurísticas permiten elegir el tipo de solución (dar prioridad a la cobertura, al número de antenas, penalizar los solapamientos). Temple simulado es mas tolerante a funciones heurísticas peores y a la elección de la solución inicial. Se puede comprobar que las soluciones con el temple simulado tienen menos variación que las de la ascensión de colinas. Hay menos probabilidad de quedarse en mínimos locales y alcanzar el mínimo global.

Las clases de los algoritmos (no informados) aima.search.uninformed BreadthFirstSearch: búsqueda en anchura, recibe como parámetro un objeto TreeSeach DepthLimitedSearch: búsqueda con profundidad limitada, recibe como parámetro la profundidad máxima de exploración IterativeDeepeningSearch: búsqueda en profundidad iterativa, sin parámetros

Las clases de los algoritmos (informados) aima.search.informed AStarSearch: búsqueda A*, recibe como parámetro un objeto GraphSearch IterativeDeepeningAStarSearch: búsqueda A*PI, sin parámetros HillClimbingSearch: búsqueda ascensión de colinas, sin parámetros

Las clases de los algoritmos (informados) aima.search.informed SimulatedAnnealingSearch: temple simulado, recibe 4 parámetros: El número máximo de iteraciones El número de iteraciones por cada paso de temperatura Los parámetros k y  que determinan el comportamiento de la función de temperatura

Las clases de los algoritmos (temple simulado) La función de temperatura es k y  determinan cómo desciende la función al descender la temperatura El valor inicial de T se obtiene experimentalmente La función que determina la probabilidad de no aceptación de un estado es: Probabilidad de no aceptación = donde E es la diferencia de energía entre el estado actual y el siguiente y T es la temperatura actual