我有一个关于轮盘赌选择的lisp程序,我试图理解它背后的理论,但我什么都听不懂。
如何计算所选strng的适应度?
例如,如果我有一个字符串01101,他们如何得到健身值为169?
01101的二进制编码是否计算为13,所以我将值平方并得到169的答案?
这听起来很蹩脚,但不知何故我通过这样做得到了正确的答案。
答案 0 :(得分:1)
答案 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}}值直接相关。