代码细菌:进化的数学行为
我本来不想在我的博客上放链接,但我没有其他方法来解释我真正的意思。文章很长,分为三部分(1,2,3),但如果你感兴趣,值得一读。
很久以前(至少五年前),我写了一个Python程序,生成“数学细菌”。这些细菌是Python对象,拥有简单的基于操作码的遗传代码。你可以给它们一个数字,它们会根据执行的代码返回一个数字。我随机生成它们的遗传代码,并对这些对象进行环境选择,使得它们的结果接近一个预设的期望值。然后我让它们复制,加入突变,进行进化。结果相当有趣,因为它们的遗传代码基本上学会了如何解决简单的方程,即使是对于训练数据集以外的值。
不过,这个东西只是个玩具。我当时有时间想打发时间,也想满足我的好奇心。尽管如此,我想在研究方面应该有一些更严肃的尝试……我希望我不是在重复别人已经做过的事情。你知道有没有更严肃的尝试去创建像我编程的这种“体外细菌”吗?
请注意,这其实并不算是“遗传算法”。遗传算法是指使用进化/选择来改善一组参数,以便在给定的评分函数下表现更好。这有点不同。我优化的是代码,而不是参数,以便在给定的评分函数下表现更好。
4 个回答
2
这篇文章写得不错,
我想说你其实是在讲“基因表达编程”,而不是“遗传编程”。
2
这个免费的工具 Eureqa 有点像它可以根据多种输入数据创建复杂的符号函数(比简单的线性回归要复杂得多)。不过,它是通过遗传算法来生成这些函数的,所以我不太确定这是否正是你想要的。
你还可以看看 Wired 上的“下载你自己的机器人科学家”文章,里面详细介绍了它的工作原理。
10
如果你在优化代码,可能你是在进行遗传编程吧?