Python DEAP中的适应度共享
是否有任何方法可以通过使用来实现健身共享/小生境?具体来说,我正在寻找pdf第98页定义的方法(Goldberg的健身分享)的实现。如果您知道DEAP中的任何其他方法,这也会很有用Python DEAP中的适应度共享,python,genetic-algorithm,sharing,fitness,deap,Python,Genetic Algorithm,Sharing,Fitness,Deap,是否有任何方法可以通过使用来实现健身共享/小生境?具体来说,我正在寻找pdf第98页定义的方法(Goldberg的健身分享)的实现。如果您知道DEAP中的任何其他方法,这也会很有用 谢谢编写您自己的选择程序。 默认例程位于,可以作为入门指南 例如: def selYourSelectionRoutine(individuals, k): """Select the *k* best individuals among the input *individuals*. :para
谢谢编写您自己的选择程序。 默认例程位于,可以作为入门指南 例如:
def selYourSelectionRoutine(individuals, k):
"""Select the *k* best individuals among the input *individuals*.
:param individuals: A list of individuals to select from.
:param k: The number of individuals to select.
:returns: A list containing the k best individuals.
"""
return sorted(individuals, key=attrgetter("fitness"), reverse=True)[:k]
然后将其与deap的其他部分一起使用,因为他们规定:
toolbox.register("select", tools.selYourSelectionRoutine, yourargs)
我有一个更像是基于相对适合度的概率选择,我没有这个权利,它只有大约10-15行python,所以它可以完成,而且不难做到
我还不知道该特定选择例程的任何公开实现。要进行健身共享,您必须定义自己的共享健身功能,该功能取决于整个人群 假设您已经定义了一个
fitness
函数,您可以执行以下操作:
来自scipy.spatial导入距离矩阵的
def共享(距离、西格玛、阿尔法):
res=0
if Distance注意这是在统计网站上。问题已从统计网站上删除。链接中描述的方法涉及修改适应度函数,而不是选择函数。
population = toolbox.population()
toolbox.register('evaluate', shared_fitness, population=population, sigma=0.1, alpha=1.)