限制锦标赛选择

时间:2013-11-28 17:17:58

标签: genetic-algorithm genetic-programming

我需要实施限制锦标赛选择。该方法包括将每个后代个体与随机个体组进行比较。选择最类似于后代个体的那个,并选择两个中最好的一个插入到新的种群中。

我已经实施了所有运营商,但我不知道该怎么做:

def reduccion(self, hijos):

    for hijo in hijos:
        torneo = random.sample(self.generacion, 5)
        for i in range(0,len(torneo)):
            distancia=self.levenshtein(hijo.fenotipo, torneo[i].fenotipo)
            print(distancia)

self.generacion =实际人口

self.levenshtein =两个长度不同的字符串之间的距离

1 个答案:

答案 0 :(得分:0)

因此,distancia为您提供hijo与给定成员之间的距离。与后代最相似的个体将是具有最低距离的个体。最简单的方法是在内部for循环之前初始化变量,以跟踪到目前为止看到的最相似的变量。然后,您只需要将最相似个体的适应度与hijo的适应度进行比较,并将其最适合下一代。这里有一些伪造的代码:

def reduccion(self, hijos):

    for hijo in hijos:
        torneo = random.sample(self.generacion, 5)

        mostSimilar = torneo[0] #Initialize this to be the 
                                #first population member in the tournament
        lowestDistance = self.levenshtein(hijo.fenotipo, mostSimilar.fenotipo)

        for i in range(1,len(torneo)): #now we've already looked at #1
            distancia=self.levenshtein(hijo.fenotipo, torneo[i].fenotipo)

            if distancia < lowestDistance:    #see if this distance is lower
                lowestDistance = distancia    #than what we've seen before
                mostSimilar = torneo[i]

        if mostSimilar.fitness < hijo.fitness:   #compare the fitnesses
             add hijo to next generation
        else:
             add mostSimilar to next generation