在DEAP中实施约束的最佳方法是什么?

时间:2018-12-13 22:28:29

标签: python genetic-algorithm nonlinear-optimization genetic-programming deap

我的DEAP遗传算法中有6-7个约束要使用 目前,我正在同时使用装饰和筛选器功能来使用它们。 我正在使用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分钟! 一个更快或更优雅的解决方案将受到高度赞赏!

0 个答案:

没有答案
相关问题