我正在尝试执行轮盘赌选择我发现了一些伪代码,并且我已经实现了它,但是,对于0适合度的基因组有一些我不理解的地方。
我找到的psudocode就是这个
for each genome in population:
totalFitness = totalFitness + genome.fitness
x = random(0, totalFitness)
currentCount = 0
for each genome in population:
currentCount = currentCount + genome.fitness
if currentCount >= x:
parent = genome
break
我担心的是:假设我有5个基因组,它们的适应度如下
G1 = 11
G2 = 0
G3 = 0
G4 = 0
G5 = 0
基于上述算法,肯定只有G1可以被选择,这将杀死遗传多样性我明白了吗?
最佳答案
是的,你已经正确地理解了。如果你想拥有更好的多样性,你应该对个人给予部分的赞扬,而不是在他们不太好的时候给他们零分。
实现这一点的一个简单方法是计算个体的错误,然后让适应度为1/(1+个错误)但只要找到一种方法给你的个人一些点,就能解决你的问题。
您可能还希望查看适应度值的缩放比例现在选择的机会与健康成正比。