我需要实施限制锦标赛选择。该方法包括将每个后代个体与随机个体组进行比较。选择最类似于后代个体的那个,并选择两个中最好的一个插入到新的种群中。
我已经实施了所有运营商,但我不知道该怎么做:
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 =两个长度不同的字符串之间的距离
答案 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