【问题标题】:Selecting a surviving population in a "voter" Genetic Algorithm在“选民”遗传算法中选择幸存的种群
【发布时间】:2011-02-01 03:13:57
【问题描述】:

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

每个人都为自己的偏好投下“一票”,这有助于那些以该票为代表的人。

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

我目前这样做是为了如果v[x] 代表颜色x 的选票百分比,则具有颜色c 的个人kv[c] 幸存的机会。但是,这意味着如果所有 5 种类型的 (a|a) 个体数量相等,则其中 4/5 会灭亡,这是不好的。

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

【问题讨论】:

  • 我不确定您在寻找什么。你说你有,对于 N 的人口规模,正好有 N 个选民。如果每个人都只为自己投票,您希望每个人都生存吗?每回合你想死多少人?

标签: algorithm statistics genetic-algorithm


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    好吧,您可以根据传递每个返回的值对概率进行加权 成本函数

    在我看来,这是最直接的方式,符合遗传 元启发式。

    不过,更常见的是将当前人口划分为多个部分,基于 将它们传递给成本函数返回的值。

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

    【讨论】:

    • 我真的不需要知道如何制作下一代,这与问题无关。在这种情况下,占据前“N”的唯一问题是它们都是一样的,并且不允许其他人进入。
    猜你喜欢
    • 2019-10-04
    • 2016-07-18
    • 2013-08-09
    • 1970-01-01
    • 2019-06-27
    • 2020-08-06
    • 1970-01-01
    • 2012-02-06
    • 2016-09-11
    相关资源
    最近更新 更多