Inteligencia artificial laboratorio resolver problemas mediante b squeda heur stica
This presentation is the property of its rightful owner.
Sponsored Links
1 / 28

Inteligencia Artificial (laboratorio) Resolver problemas mediante búsqueda heurística PowerPoint PPT Presentation


  • 255 Views
  • Uploaded on
  • Presentation posted in: General

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).

Download Presentation

Inteligencia Artificial (laboratorio) Resolver problemas mediante búsqueda heurística

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Inteligencia artificial laboratorio resolver problemas mediante b squeda heur stica

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

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

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

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

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

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

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

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

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

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

Cómo ejecutar los algoritmos: ejemplo


Ejecuci n de los ejemplos

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

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

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

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 finder1

Ejemplos: path finder


Ejemplos path finder2

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

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 comercio1

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 comercio2

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 comercio3

Ejemplos: el viajante de comercio


Ejemplos antenas de telefon a

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 a1

Ejemplos: antenas de telefonía

  • La clase ProbAntenasJFrame permite ejecutar la ascensión de colinas y el temple simulado.


Ejemplos antenas de telefon a2

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

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

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 informados1

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

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


  • Login