0

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

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

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

4

2 回答 2

1

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

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

建议你多读几遍。

于 2013-03-05T14:48:35.443 回答
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]的区间的四倍。41

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

于 2013-03-06T18:06:24.170 回答