70722123 Sesiones 2 3 Busqueda Informada AIMA

download 70722123 Sesiones 2 3 Busqueda Informada AIMA

of 28

Transcript of 70722123 Sesiones 2 3 Busqueda Informada AIMA

  • Inteligencia Artificial (laboratorio)

    Resolver problemas mediante

    bsqueda heurstica 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 bsqueda.

    Las clases implementan varios algoritmos: bsqueda ciega: anchura, profundidad y

    profundidad iterativa

    bsqueda heurstica: A*, A*PI bsqueda local: ascensin de colinas, temple

    simulado

    Las clases para la representacin del problema estn separadas de las clases para los algoritmos de bsqueda.

  • Definicin de problemas

    La definicin de un problema requiere la instanciacin de una serie de clases:

    representacin de los estados

    operadores

    funcin generadora de estados accesibles (aima.search.framework.SuccessorFunction)

    funcin que determina si se ha llegado al estado final

    (aima.search.framework.GoalTest)

    funcin heurstica (aima.search.framework.HeuristicFunction)

  • Representacin de los estados

    y operadores La representacin de los estados se implementa a

    travs del constructor de una clase independiente, por ejemplo:

    /* Constructor */

    public ProbIA15Board(char[] b) {

    for(int i=0;i

  • 5

    Funcin generadora de estados

    accesibles Implementa la clase

    aima.search.framework.SuccessorFunction y la funcin

    public List getSuccessors(Object aState).

    Esta funcin genera la lista de los estados accesibles a partir del que recibe como parmetro.

    Esta lista contiene pares de elementos que consisten en:

    una cadena que representa la operacin que se ha aplicado

    el estado sucesor resultante

    La funcin usa necesariamente otras funciones declaradas en la clase que define el problema

    (representacin del estado, operadores). 5

  • 6

    Funcin que determina si se ha

    llegado al estado final

    Implementa la clase aima.search.framework.GoalTest y la

    funcin public boolean isGoalState(Object

    aState).

    Esta funcin ha de retornar cierto cuando un estado sea final.

    6

  • 7

    Funcin heurstica

    Implementa la clase aima.search.framework.HeuristicFunction

    y la funcin public int

    getHeuristicValue(Object n).

    Esta funcin ha de retornar el valor de la funcin heurstica (la h).

    Las caractersticas de la funcin dependen del problema.

    7

  • 8

    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, nmeros del 0 al 8, el 0 es el blanco).

    ManhattanHeuristicFunction implementa la funcin heurstica (suma de distancia Manhattan de cada ficha).

    EightPuzzleSuccessorFuncion implementa la funcin que genera los estados accesibles desde uno dado (posibles

    movimientos del blanco).

    EightPuzzleGoalTest define la funcin que identifica el estado final.

    La clase aima.search.demos.EightPuzzleDemo tiene las funciones que permiten solucionar el problema con distintos algoritmos.

    8

  • 9

    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 configuracin inicial de fichas).

    ProbIA15HeuristicFunction implementa la funcin heurstica (nmero de piezas blancas).

    ProbIA15SuccessorFunction implementa la funcin que genera los estados accesibles desde uno dado

    operadores: saltos y desplazamientos

    ProbIA15GoalTest define la funcin que identifica el estado final.

    La clase IA.probIA15.ProbIA15Demo permite ejecutar los algoritmos de bsqueda ciega y heurstica.

    9

  • 10

    Cmo ejecutar los algoritmos

    El funcionamiento se puede ver en los ejemplos, de los que es til analizar el cdigo.

    Definir un objeto Problem que recibe:

    otro objeto que representa el estado inicial

    la funcin generadora de sucesores

    la funcin que prueba el estado final

    la funcin heurstica, si se utiliza un algoritmo de bsqueda 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 bsqueda y la informacin de la ejecucin

    del algoritmo de bsqueda. 10

  • 11

    Cmo ejecutar los algoritmos:

    ejemplo

  • Ejecucin de los ejemplos

    Podis ejecutar las demos ejecutando el fichero I:\AIA\AIMA.bat y escogiendo la

    demo que queris desde el interfaz.

    12

  • Ejecucin 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)

    13

  • Ejemplos: vector de 5

    posiciones (probIA15)

    El problema se resuelve mediante los siguientes algoritmos:

    anchura

    profundidad limitada

    profundidad iterativa

    A*

    A*PI con dos heursticas

    14

  • Ejemplos: path finder

    Interfaz a partir de la cual se puede seleccionar el problema, el algoritmo y

    varias heursticas.

    El problema consiste en encontrar un camino entre la posicin azul y la roja.

    15

  • Ejemplos: path finder

    16

  • Ejemplos: path finder

    Cosas a observar:

    Los algoritmos exhaustivos dejan de ser efectivos a partir de tamaos pequeos.

    La heurstica influye mucho en la eficiencia de los algoritmos informados.

    A*PI gana a A* en tiempo y gasta menos memoria.

    A partir de cierto tamao, A* deja de ser competitivo.

    Hay configuraciones de problemas (ver mens) que no se pueden resolver con ningn algoritmo en un

    tiempo razonable (hace falta un conocimiento mas

    especializado).

    17

  • Ejemplos: el viajante de

    comercio Definido en el paquete IA.probTSP. Las 4 clases que representan el problema:

    ProbTSPBoard: representacin del espacio (un vector de n posiciones que representan la secuencia de recorrido entre las n ciudades)

    ProbTSPHeuristicFunction: implementa la funcin heurstica (suma del recorrido)

    ProbTSPSuccessorFunction: implementa la funcin que genera los estados accesibles desde uno dado (todos los posibles intercambios de 2 ciudades)

    probTSPGoalTest: define una funcin que siempre retorna falso como prueba de estado final (En este caso lo desconocemos.) 18

  • Ejemplos: el viajante de

    comercio

    La clase ProbTSPJFrame permite ejecutar la ascensin de colinas y el temple

    simulado.

    Se puede modificar el numero de ciudades.

    En cada panel aparece la ejecucin del problema del viajante de comercio con

    ascensin de colinas y temple simulado.

    19

  • Ejemplos: el viajante de

    comercio

    Se puede comprobar que frecuentemente la solucin que da el temple simulado es

    mejor.

    Evidentemente, para cada tamao de problema habra que reajustar los

    parmetros del temple simulado.

    20

  • Ejemplos: el viajante de

    comercio

    21

  • Ejemplos: antenas de telefona

    Definido en el paquete IA.probAntenas. Las 4 clases que representan el problema:

    ProbAntenasBoard: representacin del espacio (una matriz NxN que representa el mapa, y un vector de antenas)

    ProbAntenasHeuristicFunction, ProbAntenasHeuristicFunction2,

    ProbAntenasHeuristicFunction3: implementan varias funciones heursticas

    ProbAntenasSuccessorFunction: implementa la funcin que genera los estados accesibles desde uno dado (mover antena, aumentar y disminuir potencia)

    probAntenasGoalTest: define una funcin que siempre retorna falso como prueba de estado final

    22

  • Ejemplos: antenas de telefona

    La clase ProbAntenasJ

    Frame permite

    ejecutar la

    ascensin de

    colinas y el

    temple

    simulado.

    23

  • Ejemplos: antenas de telefona

    Cosas a observar:

    Las heursticas permiten elegir el tipo de solucin (dar prioridad a la cobertura, al nmero de

    antenas, penalizar los solapamientos).

    Temple simulado es mas tolerante a funciones heursticas peores y a la eleccin de la solucin

    inicial.

    Se puede comprobar que las soluciones con el temple simulado tienen menos variacin que las

    de la ascensin de colinas.

    Hay menos probabilidad de quedarse en mnimos locales y alcanzar el mnimo global. 24

  • Las clases de los algoritmos (no

    informados)

    aima.search.uninformed

    BreadthFirstSearch: bsqueda en anchura, recibe como parmetro un objeto TreeSeach

    DepthLimitedSearch: bsqueda con profundidad limitada, recibe como parmetro

    la profundidad mxima de exploracin

    IterativeDeepeningSearch: bsqueda en profundidad iterativa, sin parmetros

    25

  • Las clases de los algoritmos

    (informados)

    aima.search.informed

    AStarSearch: bsqueda A*, recibe como parmetro un objeto GraphSearch

    IterativeDeepeningAStarSearch: bsqueda A*PI, sin parmetros

    HillClimbingSearch: bsqueda ascensin de colinas, sin parmetros

    26

  • Las clases de los algoritmos

    (informados)

    aima.search.informed

    SimulatedAnnealingSearch: temple simulado, recibe 4 parmetros:

    El nmero mximo de iteraciones

    El nmero de iteraciones por cada paso de temperatura

    Los parmetros k y que determinan el comportamiento de la funcin de temperatura

    27

  • Las clases de los algoritmos

    (temple simulado) La funcin de temperatura es

    k y determinan cmo desciende la funcin al descender la temperatura

    El valor inicial de T se obtiene experimentalmente

    La funcin que determina la probabilidad de no aceptacin de un estado es:

    Probabilidad de no aceptacin = donde E es la diferencia de energa entre el

    estado actual y el siguiente y T es la temperatura actual

    28