コード例 #1
0
def compara_metodos(pos_inicial, heuristica_1, heuristica_2):
    """
    Compara en un cuadro lo nodos expandidos y el costo de la solución
    de varios métodos de búsqueda

    @param pos_inicial: Una tupla con una posicion inicial
    @param heuristica_1: Una función de heurística
    @param heuristica_2: Una función de heurística

    @return None (no regresa nada, son puros efectos colaterales)

    Si la búsqueda no informada es muy lenta, posiblemente tendras que quitarla
    de la función

    """
    solucion1 = busquedas.busqueda_A_estrella(ProblemaLightsOut(pos_inicial),
                                              heuristica_1)
    solucion2 = busquedas.busqueda_A_estrella(ProblemaLightsOut(pos_inicial),
                                              heuristica_2)

    print('-' * 50)
    print('Método'.center(10) + 'Costo'.center(20) + 'Nodos visitados')
    print('-' * 50 + '\n\n')
    print('A* con h1'.center(10) + str(solucion1.costo).center(20) +
          str(solucion1.nodos_visitados))
    print('A* con h2'.center(10) + str(solucion2.costo).center(20) +
          str(solucion2.nodos_visitados))
    print('-' * 50 + '\n\n')
コード例 #2
0
def probando(pos_ini, tipo):
    """
    Muestra el resultado de aplicar un tipo de búsqeda
    al problema del 8 puzzle con una posición inicial
    determinada.

    Por el momento muy manual, solamente descomentar
    las búsquedas que se deseen realizar.
    
    Recuerda que las búsquedas no informadas pueden ser
    muy lentas.
    
    Tipo:
        0: busqueda_ancho,
        1: busqueda_profundo,
        2: busqueda_profundidad_iterativa,
        3: busqueda_costo_uniforme,
        4: busqueda_A_estrella con heuristica h1,
        5: busqueda_A_estrella con heuristica h2
    """
    print(Modelo8puzzle.dibuja(pos_ini))
    tipos = ["BFS", "DFS", "IDS", "UCS", "A* con h1", "A* con h2"]
    print("---------- Utilizando {} -------------".format(tipos[tipo]))
    problema = Ocho_puzzle(pos_ini)
    t_inicial = time()
    solucion = (busquedas.busqueda_ancho(problema) if tipo is 0 else
                busquedas.busqueda_profundo(problema, 50) if tipo is 1 else
                busquedas.busqueda_profundidad_iterativa(problema, 50) if tipo is 2 else
                busquedas.busqueda_costo_uniforme(problema) if tipo is 3 else
                busquedas.busqueda_A_estrella(problema, h_1) if tipo is 4 else
                busquedas.busqueda_A_estrella(problema, h_2))
    t_final = time()
    print(solucion)
    print("Explorando {} nodos".format(solucion.nodos_visitados))
    print("Tiempo: {} segundos".format(t_final-t_inicial))
コード例 #3
0
def probando(pos_ini):
    """
    Muestra el resultado de aplicar un tipo de búsqeda
    al problema del 8 puzzle con una posición inicial
    determinada.

    Por el momento muy manuel, solamente descomentar
    las búsquedas que se deseen realizar.

    Recuerda que las búsquedas no informadas pueden ser
    muy lentas.

    """
    print(Modelo8puzzle.dibuja(pos_ini))
    """
    # ------- BFS -----------
    print("---------- Utilizando BFS -------------")
    problema = Ocho_puzzle(pos_ini)
    solucion = busquedas.busqueda_ancho(problema)
    print(solucion)
    print("Explorando {} nodos\n\n".format(solucion.nodos_visitados))

    # ------- DFS -----------
    print("---------- Utilizando DFS -------------")
    problema = Ocho_puzzle(pos_ini)
    solucion = busquedas.busqueda_profundo(problema, 50)
    print(solucion)
    print("Explorando {} nodos\n\n".format(solucion.nodos_visitados))

    # ------- IDS -----------
    print("---------- Utilizando IDS -------------")
    problema = Ocho_puzzle(pos_ini)
    solucion = busquedas.busqueda_profundidad_iterativa(problema, 50)
    print(solucion)
    print("Explorando {} nodos\n\n".format(solucion.nodos_visitados))
    
    # ------- UCS -----------
    print("---------- Utilizando UCS -------------")
    problema = Ocho_puzzle(pos_ini)
    solucion = busquedas.busqueda_costo_uniforme(problema)
    print(solucion)
    print("Explorando {} nodos\n\n".format(solucion.nodos_visitados))
    """
    # # ------- A* con h1 -----------
    print("---------- Utilizando A* con h1 -------------")
    problema = Ocho_puzzle(pos_ini)
    solucion = busquedas.busqueda_A_estrella(problema, h_1)
    print(solucion)
    print("Explorando {} nodos".format(solucion.nodos_visitados))

    # # ------- A* con h2 -----------
    print("---------- Utilizando A* con h2 -------------")
    problema = Ocho_puzzle(pos_ini)
    solucion = busquedas.busqueda_A_estrella(problema, h_2)
    print(solucion)
    print("Explorando {} nodos".format(solucion.nodos_visitados))
    """