代码细菌:不断演变的数学行为

时间:2009-12-11 18:00:28

标签: python genetic-programming evolutionary-algorithm

我不打算在我的博客上添加链接,但我没有任何其他方法来澄清我的真正含义。这篇文章很长,分为三个部分(123),但如果你很好奇,那么值得一读。

很久以前(至少5年)我编写了一个生成“数学细菌”的python程序。这些细菌是python对象,具有简单的基于操作码的遗传密码。您可以使用数字为它们提供数据,并根据其代码的执行返回一个数字。我随机生成他们的遗传密码,并将环境选择应用于那些产生类似于预定义预期值的结果的对象。然后我让他们复制,引入突变,并进化它们。结果非常有趣,因为他们的遗传密码基本上学习了如何解决简单方程,即使是训练数据集的不同值。

现在,这件事只是一个玩具。我有时间浪费,我想满足自己的好奇心。 但是,我认为在研究方面已经做了一些事情......我希望,我在这里重新发明轮子。您是否意识到更多尝试创造像我编程的细菌一样的细菌?

请注意,这不是真正的“遗传算法”。遗传算法是指您使用进化/选择来改进针对给定评分函数的参数向量。这有点不同。我根据给定的评分函数优化代码,而不是参数。

4 个答案:

答案 0 :(得分:10)

如果您正在优化代码,也许您参与了 genetic programming

答案 1 :(得分:2)

免费实用程序Eureqa在某种意义上类似于基于多变量输入数据可以创建拟合符号函数(比简单线性回归等复杂得多)。但是,它使用GA来提出这些功能,所以我不确定这是不是你的想法。

另请参阅"Download Your Own Robot Scientist" article on Wired,了解其运作方式的一般概念。

答案 2 :(得分:2)

好文章, 我会说你在谈论“基因表达编程”而不是“基因编程”,顺便说一句。

答案 3 :(得分:1)

您熟悉Core Wars吗?我记得有很多为游戏编写的代码进化器取得了一些成功。例如,MicroGP++是一个汇编代码生成器,可以应用于Core Wars汇编语言(以及实际问题!)。