0

关于我一直在思考的一个主题的问题。是否可以在蛮力搜索或进化编程中使用复合过程?我目前正在自己​​做这件事,尽管事实证明这很困难。

前提是应该可以使用类似于在普通储蓄账户中确定复利的方式的复利过程。

我一直在尝试通过以下方式实现进化算法。

A 具有生成新系统的能力并且具有 5.0 的“生成”适应度(即,它生成的系统的有效性是 A 本身的 5 倍) - 如果 A 生成 B,然后 B 生成 C,则系统的适应度 (有机体)应该这样复合

A = 5.0

B = 5.0 * A = 25.0

C = 25.0 * B = 625.0

任何人都可以协助在代码中实现这个启发式吗?(红宝石或伪代码)

我现在拥有的是这样的

我有一个名为 system 的类,它有一个生成随机数的方法,我想发展新系统,能够更好地生成与第二个生成的随机数匹配的随机数。成功将第二个生成的随机数与其“预测”(第一个随机数)匹配的系统将提高分数,不成功的系统将降低分数。

然后这些系统产生“子”系统,它们也以刚才提到的方式进行测试,尽管在这里我们利用子系统的适应度作为产卵系统的“产卵”适应度。这让我知道哪些“系统”产生了成功的系统。

虽然我可以很容易地确定哪些系统最擅长生成可以预测随机生成的数字的系统,但我不确定如何评估生成系统的生成系统(生成系统)的能力,并且由于这条链继续我相信适应度的确定可能是递归的。

最后,由于系统“适合度”的最终确定将取决于所生成系统的预测能力,那么“产卵”适合度因子如何复合到方程中?

此外,如果我进化出一个与 ruby​​ 使用的 PRNG 匹配的 PRNG,那么 PRNG 将逐步进化以匹配 ruby​​ 底层算法中的 PRNG。请不要这样,在时间 1,我们有一条来自我们试图预测的 PRNG 的信息,这为我们提供了那个时间步长的 1/1 或 100% 模型。如果我们然后在时间步二检索第二条信息,我们在时间步二的信息比时间步二之前的信息多 100%,因此预测能力应该是 200%(时间步二为 100%,额外信息为 0,100 % 在时间步二的额外信息,留下原始系统两倍的预测能力。

感谢您花时间阅读我的问题,如果您能以任何方式提供帮助,我将不胜感激。

如果您有任何问题,请告诉我

提前致谢

问候

马丁

4

1 回答 1

0

我认为您无法使用搜索算法来做到这一点,因为您无法知道匹配随机数生成算法有多“接近”。接近随机数的值更有可能是巧合,而不是实际证明您越来越接近底层算法。

如果您将此作为玩具项目进行,请使用可以为其创建适应度函数的数据集(如果是进化编程)。常见的数据集有垃圾邮件检测、图像识别、用户偏好等。

于 2012-05-11T13:53:38.597 回答