不久前,我记得读过一篇关于将达尔文进化论应用于程序以创建更好的程序的杂志文章(我相信是在连线)。基本上会产生一个程序的多个突变,而表现最好的一个将被选择用于下一轮突变。
不幸的是,我无法使主题听起来像文章中听起来那样有趣,但我找不到这篇文章。
因为这听起来对我来说是最酷的事情,所以我想知道一个程序内部可能有什么突变
不久前,我记得读过一篇关于将达尔文进化论应用于程序以创建更好的程序的杂志文章(我相信是在连线)。基本上会产生一个程序的多个突变,而表现最好的一个将被选择用于下一轮突变。
不幸的是,我无法使主题听起来像文章中听起来那样有趣,但我找不到这篇文章。
因为这听起来对我来说是最酷的事情,所以我想知道一个程序内部可能有什么突变
我认为您指的是遗传算法。我想为我的论文研究这个主题。我不能停止阅读它:-)
如前所述,它被称为遗传编程(GP)。
有趣的是,GP 是一种系统的、独立于领域的方法,它让计算机从需要做什么的高级陈述开始自动解决问题。
GP 使用来自自然进化的想法,从一组随机计算机程序开始,并通过突变和交叉(重组)过程逐步完善它们,直到出现解决方案。
所有这一切都无需用户事先知道或指定解决方案的形式或结构。
GP 已经产生了大量具有人类竞争力的成果和应用,包括新的科学发现和可申请专利的发明(另请参阅什么是遗传算法/遗传编程解决方案的好例子?)。
我想知道程序内部可能有哪些突变
有许多遗传算子(不仅是变异)和许多实现。它们需要具备的基本特性是封闭性(它们必须保持遗传程序的结构完整性)。
通常,突变用从一组可用符号中选择的兼容终端/功能替换程序的符号。交叉算子混合了两个或多个节目的信息。
可能对该主题最好的免费介绍是A Field Guide to Genetic Programming
一些不错的链接是:
前几天我读了一篇关于Coding Horror的文章,关于类似的事情:Go That Way,Really Fast。基本上,我从中得到的想法是软件应该不断改进,这意味着不断推出新版本/发布。这似乎符合进化的想法,因为您的软件总是在改进为更好的东西。