Каков наилучший способ применения ограничений в DEAP? - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть 6-7 ограничений для использования в моем генетическом алгоритме DEAP. В настоящее время я использую и Decorate, и функциональность фильтра для их применения.Я использую функцию decorate, чтобы убедиться, что каждый ген в моем поколении 0 и в последующих поколениях находится в пределах определенной верхней и нижней границы.Чтобы использовать другие ограничения, я использую функциональность фильтра.Мой код выглядит следующим образом:

    pop = list(filter(valid,pop))


    while len(pop) < originalPopsize:
        popsize = originalPopsize-len(pop)
        toolbox.register("population", tools.initRepeat, list, toolbox.individual)
        newpop = toolbox.population(n=popsize)
        [pop.append(item) for item in newpop]

        pop = list(filter(valid,pop))
        print(len(pop))

Любое лицо, которое не следует условию, отфильтровывается, и алгоритм продолжает пытаться найти людей, которые удовлетворяют условию, и поместить их в совокупность.Но этот процесс очень медленный.Создание одного поколения из 10 человек занимает до 30 минут!Более быстрое или более элегантное решение будет очень цениться!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...