我使用的是一个遗传算法,它是用Python的DEAP库实现的。为了避免早熟收敛,并迫使探索的特征空间,我希望变异的概率是高的,在第一代。但是为了防止它们一旦被识别就偏离极值,我希望最后几代的突变概率更低。我怎样才能让突变概率在几代人中降低呢?DEAP中有没有内置函数来完成这个任务?你知道吗
例如,当我注册一个变异函数时
toolbox.register('mutate', tools.mutPolynomialBounded, eta=.6, low=[0,0], up=[1,1], indpb=0.1)
indpb
参数是一个float。我怎样才能使它成为其他东西的函数呢?你知道吗
听起来像是Callbackproxy的作业,每次调用函数参数时都对其求值。我添加了一个简单的示例,其中修改了官方的DEAPn-queen example 使得突变率被设置为
2/N_GENS
(任意选择只是为了说明问题)。你知道吗请注意,Callbackproxy接收lambda,因此必须将突变率参数作为函数传递(可以使用完全展开的函数,也可以仅使用lambda)。不管怎样,结果是每次对
indpb
参数求值时,都会调用这个lambda,如果lambda包含对全局变量生成计数器的引用,就得到了所需的结果。你知道吗相关问题 更多 >
编程相关推荐