Esempio n. 1
0
    def __init__(self, n=3, tabini=None,heuristica=cebola):
        self.heuristica = heuristica(n)
        self.lista_pesos = []
        self.n = n
        self.hash_tab = {}
        self.hash_nodos = {}

        # Se usuário não forçou um tabuleiro inicial, cria um aleatório
        if not tabini:
            tabini = tabuleiro.random_tab(self.n)
        else:
            tabini = tabuleiro.Tabuleiro(tabini)

        # Calcula peso do primeiro tabuleiro
        peso = self.heuristica.calcula(tabini)

        # Adiciona o tabuleiro na lista de hashs
        self.hash_tab[hash(str(tabini.get_tab()))] = 0

        # Cria um nodo
        nodoini = Nodo(tabini, None, peso, None, 0)

        # Adiciona nodo a lista de nodos
        self.adiciona_nodo(nodoini)
Esempio n. 2
0
def cpu_time():
    return resource.getrusage(resource.RUSAGE_SELF)[0]
    #return time.time()

def usage():
    print "Uso: heuristica (-f arquivo|-r tamanho movimentos)"

def solver(heuri,tab):
    tam_tabuleiro = len(tab[0])
    print 'Tabuleiro inicial'
    print Tabuleiro(tab)
    c1 = cpu_time()
    s = Solver(n=tam_tabuleiro,tabini=tab,heuristica=eval(heuri))
    n_mov,sol = s.magic()
    cf = cpu_time() - c1
    print "Num. de movimentos, tempo"
    print n_mov,cf

if __name__ == "__main__":
    heuri = sys.argv[1]
    argtab = sys.argv[2]
    if argtab == '-h':
        usage()
    if argtab == "-f":
        tab = le_arquivo(sys.argv[3])
        solver(heuri,tab)
    elif argtab == "-r":
        tab = random_tab(int(sys.argv[3]),int(sys.argv[4])).get_tab()
        solver(heuri,tab)