2011-01-31 122 views
1

我一直在研究一个遗传算法,其中有一个由具有颜色和偏好的个体组成的群体。 (例如:1 | 1,5 | 2,3 | 3等)在“选民”中选择一个幸存的遗传算法遗传算法

每个人都会根据自己的喜好投下一个“投票”,其中协助那些以这种投票作为他们的颜色的人。

我目前的想法是循环每个人,并计算他们应该生存的机会,基于投票数量等,然后掷骰子,看看他们是否生活。

我目前做的这样,如果v[x]代表投票的颜色x的百分比,个人k颜色cv[c]机会尚存。但是,这意味着,如果所有5种类型的(a | a)个体中有相同数量的人,则其中4/5会消亡,这并不好。

有没有人有任何想法的随机性我可以用来确定一个人的生存机会?例如,vc,v投票的算法可以在颜色c中生存(统计平均值)。

+0

我不知道你在找什么。你说你的人口规模为N,正好有N个选民。如果每个人都为自己投票,你希望每个人都能生存下来?你想在每个回合中死亡多少人? – 2011-01-31 18:54:29

回答

0

分配你的健康(在你的情况下生存likelyness)到每一个人为是,那么降健身对它们进行排序,并使用二进制锦标赛选择或类似的采样你所选择的尺寸的另一群体的东西。

+0

谢谢。我认为这应该很好。 – TaslemGuy 2011-01-31 20:35:31

0

那么,您可以根据将每个 人口成员传递给成本函数而返回的值来加权概率。

对我来说,这似乎是最直接的方式,与元启发式的遗传基因 一致。

比较常见的,虽然,是将当前的人口成段的基础上,从 将它们传递给成本函数的返回值。

因此,举例来说,如果 每一代由100个成员,然后的前N(N是仅有一个用户定义的参数 ,往往像总数的5-10%)的成员瓦特/最低成本 函数结果)就像它们一样(精英主义)传播到下一代。也许这就是你'生存'的意思。如果是,则再次,这些“幸存者” 通过根据成本函数 值居群体的成员与选择您所定义精英分数以上的那些成员常数确定。 下一代的其余部分(多数)由 突变或交叉或者创建。

突变

# one member of the current population: 
[4, 5, 1, 7, 4, 2, 8, 9] 

# small random change in one member of prior generation, to create mutant that is 
# a member of the next generation 
[4, 9, 1, 7, 4, 2, 8, 9] 

交叉

# two of the 'top' members of the current generation 
[4, 5, 1, 7, 4, 2, 8, 9] 
[2, 3, 6, 9, 2, 1, 6, 4] 

# offpsring is a member of the next generation 
[4, 5, 1, 7, 2, 1, 6, 4] 
+0

我并不需要知道如何使下一代,这是独立于问题。在这种情况下采取最高'N'的唯一问题是他们会一致,并且不允许其他人参与。 – TaslemGuy 2011-01-31 20:34:31