在“选民”遗传算法中选择幸存的人口

时间:2011-01-31 18:33:12

标签: algorithm statistics genetic-algorithm

我一直在研究一种遗传算法,其中有一个由具有颜色和偏好的个体组成的群体。偏好和颜色来自少数有限状态,可能在4或5左右。(例如:1 | 1,5 | 2,3 | 3等)

每个人都会对他们的偏好进行“投票”,这可以帮助那些投票的人作为他们的颜色。

我目前的想法是循环每个人,并根据投票数等计算他们应该存活的机会,然后掷骰子以确定他们是否活着。

我目前正在这样做,以便如果v[x]代表颜色x的投票百分比,则具有颜色k的个人cv[c]次机会幸存者但是,这意味着,如果所有5种类型的(a | a)个体数量相等,则其中4/5会死亡,而且这种情况并不好。

有没有人知道我可以用来确定个人生存的机会的随机性方法?例如,v投票给cv颜色为c的个人的算法存活(统计平均值)。

2 个答案:

答案 0 :(得分:0)

将您的健康状况(在您的情况下生存的可能性)按原样分配给每个人,然后根据适应性下降对其进行排序,并使用二元锦标赛选择或类似的方法来对您选择的其他人群进行抽样。

答案 1 :(得分:0)

好吧,您可以根据传递每个值返回的值来加权概率 人口成员成本函数

在我看来,这是最直接的方式,与遗传一致 元启发式。

更常见的是,将当前人口分成几个部分,基于 将它们传递给cost函数返回的值。

所以,例如, 如果每一代由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]