inteligencia artificial laboratorio resolver problemas mediante b squeda heur stica
Download
Skip this Video
Download Presentation
Inteligencia Artificial (laboratorio) Resolver problemas mediante búsqueda heurística

Loading in 2 Seconds...

play fullscreen
1 / 28

Inteligencia Artificial laboratorio Resolver problemas mediante b squeda heur stica - PowerPoint PPT Presentation


  • 344 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Inteligencia Artificial laboratorio Resolver problemas mediante b squeda heur stica' - khalil


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

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 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 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
ad