Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python DEAP中的适应度共享_Python_Genetic Algorithm_Sharing_Fitness_Deap - Fatal编程技术网

Python 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

是否有任何方法可以通过使用来实现健身共享/小生境?具体来说,我正在寻找pdf第98页定义的方法(Goldberg的健身分享)的实现。如果您知道DEAP中的任何其他方法,这也会很有用


谢谢

编写您自己的选择程序。 默认例程位于,可以作为入门指南

例如:

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.)