【问题标题】:explanation of roulette wheel selection example轮盘赌选择示例的说明
【发布时间】:2013-03-13 15:41:36
【问题描述】:

我有一个关于轮盘选择的 lisp 程序,我试图理解它背后的理论,但我什么都不懂。
如何计算所选字符串的适应度?
例如,如果我有一个字符串 01101,他们是如何得到 169 的适应度值的?

是不是01101的二进制编码计算为13,所以我把这个值平方,得到169的答案?

这听起来很蹩脚,但不知何故我这样做得到了正确的答案。

【问题讨论】:

    标签: lisp genetic-algorithm


    【解决方案1】:

    因此,您拥有的适应度函数是F=X^2。

    轮盘计算个人(字符串)占整体的比例(根据其适应度),然后用于为下一代随机选择一组字符串。

    建议你多读几遍this。

    【讨论】:

      【解决方案2】:

      (通常)任意选择给定问题的“适应度函数”,记住随着“适应度”指标的上升,解决方案应该接近最优。例如,对于目标是最小化正值的问题,F(x) 的自然选择是1/x。

      对于手头的问题,适应度函数似乎已被指定为F(x) = val(x)*val(x),尽管不能仅从 (x,F(x)) 的单个值对中确定。

      轮盘赌选择只是一种常用的基于适应度的伪随机选择方法。如果您玩过轮盘赌或看过“幸运之轮”,这很容易理解。

      让我们考虑最简单的情况,F(x) = val(x),

      假设我们有四个值,1,2,3 and 4。

      这意味着这些“个体”分别拥有1,2,3 and 4 的适应度。现在选择单个“x1”的概率计算为F(x1)/(sum of all F(x))。也就是说,由于适应度之和为10,因此选择概率分别为0.1,0.2,0.3 and 0.4。

      现在,如果我们从累积的角度考虑这些概率,x 的值将映射到以下“概率”范围:

      1 ---> (0.0, 0.1]
      2 ---> (0.1, (0.1 + 0.2)] ---> (0.1, 0.3]
      3 ---> (0.3, (0.1 + 0.2 + 0.3)] ---> (0.3, 0.6]
      4 ---> (0.6, (0.1 + 0.2 + 0.3 + 0.4)] ---> (0.6, 1.0]
      

      也就是说,一个均匀分布的随机变量的实例,比如R,位于归一化区间(0, 1],在4对应的区间内的可能性是4对应的区间的四倍1.

      换句话说,假设您要旋转一个轮盘式结构,每个x 分配一个扇区,扇区的面积与其各自的F(x) 值成正比,那么概率指标将在任何给定扇区停止与F(x) 的值成正比,对于x。

      【讨论】:

        猜你喜欢
        • 2018-07-04
        • 2012-05-06
        • 2021-06-02
        • 2014-05-25
        • 2010-11-19
        • 2010-09-15
        • 2018-04-23
        • 2011-05-02
        相关资源
        最近更新 更多