我的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分钟! 一个更快或更优雅的解决方案将受到高度赞赏!