Как улучшить имитацию отжига для playfair в python - как сделать так, чтобы оценка увеличивалась? - PullRequest
0 голосов
/ 11 декабря 2018

Кажется, что ребенок всегда устанавливает себе равного родителя, даже если условия не выполняются.Любая помощь?Это из-за наслоения?

def crack(ct):
    temp = 10 + 0.087 * (len(ct)-84)
    fit = ns.ngram_score('english_quadgrams.txt')
    while 1 == 1:
        parent = randkey()
        counter = 0
        while counter < 50000:
            ps = fit.score((de(ct,parent)).upper())
            number = rd.randint(1,25)
            if number == 1:
               child = nw(parent)
            else:
                if number == 2:
                    child = td(parent)
                else:
                    if number == 3:
                        child = lr(parent)
                    else:
                        if number == 4:
                            child = randr(parent)
                        else:
                            if number == 5:
                                child = randc(parent)
                            else:
                                child = rand2(parent)
            print(de(ct,child))
            cs = fit.score((de(ct,child)).upper())
            diff = ps-cs
            print(ps,cs, diff)
            prob = 1/(math.exp(diff/temp))
            print(prob)
            random = rd.uniform(0,1)
            print(random)
            if diff < 0:
                parent = child
            elif prob < random:
                counter = counter + 1
            else:
                parent = child

Оценка рассчитывается на основе рейтинга квадратов текстов и библиотеки на основе здесь.Любой совет будет полезен.

...