2

这是我的问题。
我正在使用 DEAP 处理一个优化问题。

现在,我toolbox.register("select", tools.selNSGA2)习惯选择一些最适者生存。

但我想通过用户定义的函数添加一些阈值。

算法能否实现两步选择?

  1. 通过锦标赛或 selNSGA2 方法选择几个人

  2. 通过预定义的阈值消除几个人。

4

1 回答 1

1

这应该有效。

def myselect(pop, k, check):
    return [ind for in in tools.selNSGA2(pop, k) if check(ind)]

def mycheck(ind):
    return True

toolbox.register("select", myselect, check=mycheck)

但是,您最终会选择 <= k 个后代。

于 2017-02-07T08:13:28.263 回答