轮盘赌选择例子的说明

时间:2013-03-05 14:09:56

标签: lisp genetic-algorithm

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

01101的二进制编码是否计算为13,所以我将值平方并得到169的答案?

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

2 个答案:

答案 0 :(得分:1)

因此,您的健身功能为F=X^2

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

建议您多次阅读this

答案 1 :(得分:0)

针对给定问题的“适应度函数”被选择(通常)任意地记住,随着“适应度”度量的增加,解决方案应该接近最优性。例如,对于目标是最小化正值的问题,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对应区间的四倍。对于与1对应的那个。

换句话说,假设您要旋转轮盘式结构,每个x分配一个扇区,扇区的面积与它们各自的值F(x)成比例,那么指标在任何特定部门停止的概率与F(x)的{​​{1}}值直接相关。