Thomas Ray 的Tierra是一个模拟生活的计算机程序。
在链接的论文中,他论证了这种模拟如何在现实世界中应用,展示了他的数字有机体(计算机程序)如何以一种有趣的方式进化:它们开发出新的自我复制方式并变得更快(他认为进化的生物体采用的算法比他写的原始算法快 5 倍)。
Tierra 的方法与标准 GA 不同:
- 虽然在 GA 中通常有一组基因组被程序操纵、复制和突变,但在 Tierra 中,一切都是由程序本身完成的:它们自我复制。
- 没有明确的适应度函数:相反,数字生物竞争能量资源(CPU时间)和空间资源(内存)。
- 需要很长时间才能复制的生物的繁殖频率较低,而产生许多错误的生物会受到惩罚(它们死得更快)。
- Tierran 机器语言非常小:包括操作数,它只有 32 条指令。通常,所谓的 RISC 指令集具有一组有限的操作码,但如果您考虑操作数,您将获得数十亿条可能的指令。
- 因此,Tierran 代码不那么脆弱,您可以在不破坏代码的情况下对其进行变异。相反,通常,如果你随机改变一些机器代码,你会得到一个损坏的程序。
我想知道我们是否可以使用这种方法来优化机器代码。例如,假设我们有一些类似汇编的程序来计算某个函数. 我们可以将复制时间与高效计算联系起来,以及正确计算它的寿命。这可以激励程序寻找新颖和更快的计算方法.
有没有尝试过类似的东西?它可以工作吗?我应该去哪里看?