将达尔文演化应用于编程

时间:2010-10-07 15:46:52

标签: evolutionary-algorithm genetic-programming

前段时间我回忆起一篇关于将达尔文进化论应用于创建更好程序的程序的杂志文章(在Wired中我相信)。基本上会产生一个程序的多个突变,并且将为下一轮突变选择表现最佳的突变。

不幸的是,我无法使主题听起来像文章中听到的那样有趣,但我找不到文章。

因为这听起来对我来说只是最酷的事情,所以我想知道一个程序中可能有什么突变

5 个答案:

答案 0 :(得分:4)

是。它被称为Genetic Programming,其中是一个自己编写程序的主程序。它编写的程序可以发展到一定的标准。

E.g。 8 queen可由GP解决。

答案 1 :(得分:2)

我认为你指的是Genetic Algorithms。我想为我的论文研究这个主题。我不能停止阅读它: - )

答案 2 :(得分:1)

找到这个article/paper - 这是你所指的吗?还找到this PDF。相当有趣的话题

听起来是你可以使用自修改代码,根据自我监控优化来重现程序本身。目前这将指向解释语言程序。

答案 3 :(得分:0)

我在Coding Horror上阅读了一篇关于前几天类似内容的文章:Go That Way, Really Fast。基本上,我从中获得的想法是软件应该不断改进,这意味着不断推出新的版本/发布。这似乎与进化的想法相匹配,因为您的软件总是在不断改进。

答案 4 :(得分:0)

如前所述,它被称为遗传编程(GP)。

有趣的是,GP是一种系统的,与域无关的方法,可以让计算机从需要完成的高级语句开始自动解决问题。

使用来自自然进化的思想,GP从一群随机计算机程序开始,并通过突变和交叉(重组)过程逐步完善它们,直到出现解决方案。

所有这一切都没有用户提前知道或指定解决方案的形式或结构。

GP已经产生了过多的人类竞争results and applications,包括新的科学发现和可获得专利的发明(另见What are good examples of genetic algorithms/genetic programming solutions?)。

  

我想知道程序中可能有什么突变

有许多遗传算子(不仅是突变)和许多实现。他们需要具备的基本属性是闭合(他们必须保持遗传程序的结构完整性)。

通常,突变用从一组可用符号中选择的兼容终端/功能替换程序的符号。交叉运算符混合了两个或更多程序的信息。

该主题的最佳免费介绍可能是A Field Guide to Genetic Programming

一些不错的链接是: