Example #1
0
def resolverRandom(tamaño):
    max_estados = 10000
    estado = 0
    reinas = ranrein(tamaño)
    start = time()
    while (True):
        next_step(reinas, estado)

        if (max_estados < estado or h(reinas) == 0):
            #print("Tomó",estado,"pasos para llegar a una solucion con",h(reinas),"reinas amenazadas")
            demora = time() - start
            return (estado, h(reinas), demora)
        estado += 1
Example #2
0
def next_step(reinas, estado):
    actual = h(reinas)
    reina = randint(0, len(reinas) - 1)
    pos = randint(0, len(reinas) - 1)
    temp = copy(reinas)
    temp[reina] = pos
    nuevo = h(temp)
    delta = nuevo - actual
    if (delta <= 0):
        reinas[reina] = pos
        return
    if (prob(delta, estado) >= random()):
        #print(prob(delta,estado),delta,estado,delta/(estado+1))
        reinas[reina] = pos
Example #3
0
def hill_climb(reinas):
    actual=h(reinas)
    reina=0
    pos=reinas[0]
    temp=copy(reinas)
    temp[reina]=pos
    mejor=h(temp)
    for i in range(len(reinas)):
        for j in range(len(reinas)):
            temp=copy(reinas)
            temp[i]=j
            if(h(temp)< mejor):
                mejor=h(temp)
                reina=i
                pos=j
    reinas[reina]=pos
    return h(reinas)<actual
Example #4
0
def resolverRandom(tamaño):
    max_estados=10000
    estado=0
    reinas=ranrein(tamaño)
    start=time()
    while(True):
        mejoro=hill_climb(reinas)
        sleep(1)
        if(not mejoro or max_estados<estado):
            #print("Tomó",estado,"pasos para llegar a una solucion con",h(reinas),"reinas amenazadas")
            demora=time()-start
            return (estado,h(reinas),demora)
        estado+=1
Example #5
0
def resolverRandom(tamaño):
    max_gen = 1000
    gen = 0
    start = time()
    pob = poblacion_inicial(POB_SIZE, tamaño)
    while (True):
        #print(pob)
        #print("-",pob.qPerPr())
        if (max_gen < gen or pob.contains(0)):
            demora = time() - start
            reinas = pob.pop()
            #print("Tomó",gen,"generaciones para llegar a una solucion con",h(reinas),"reinas amenazadas")
            return (gen, h(reinas), demora)
        pob = next_gen(pob)
        gen += 1