推送进化计算

李·斯佩克特

推动是一种编程语言(实际上是一个语言家族)设计用于进化计算,用作编程用于表达不断发展的程序的语言。

熟悉Push核心思想的最快方法是观看此视频:更快速地介绍推式编程语言

您可以在浏览器中试用Push解释器在这里.

的公共页面推动语言话语网站提供了更多信息。

将Push称为语言家族更准确的原因与单一语言相比,它是连续的主题多年来的变化和研究。Push的版本已经编写几个人用几种语言编写,每个新版本通常都有添加新功能、删除旧功能和/或更改命名习俗。

Push的所有版本都与每种类型的独立堆栈,以及允许的类型和指令代码的运行时操作和执行。这允许实现和使用任意和潜在新颖控制的程序结构。这种表达性与句法的简约性相结合:唯一的语法规则是括号必须平衡。因此生成和转换语法有效的Push程序非常简单。

姓名PushGP(推送GP)用于任何遗传编程系统用Push编程语言开发程序。PushGP系统具有用于从智能代理设计到自动量子计算机编程。

大多数PushGP实现的功能包括:

其他基于Push的进化计算系统已经是开发,包括一些实现自动构造演化.在一个自动构造的进化系统中,进化程序操纵构建自己孩子的代码,包括孩子的代码再生产和多样化。这与标准遗传形成对比编程系统(如PushGP)中的手写遗传操作符用来从父母那里生孩子。推送的许多功能最初开发的编程语言支持自动构造进化,但事实证明对标准遗传是有用的编程。

许多Push相关出版物可以在上找到Spector的出版物页面,包括2002文章在日志中遗传编程与进化机器它介绍了Push项目。这个GECCO-2005年纸张引入了重要的新功能按下3,其中许多已通过后续版本的语言。后续出版物中描述了其他扩展。 较旧(在某些情况下不完整或过时)的信息是在中可用推动Redux、, 艾伦罗宾逊的第三部分(高级)论文,这个Push 2.0编程语言描述,这个Push 3.0编程语言描述、的档案非活动的推动电子邮件列表和非活动推动项目博客.


代码

Push3和后续变体:

按下2:

按下1:


相关工作


致谢

本材料基于国家科学局支持的工作基金会,批准号:0308540、0216344、1017817、1129139,以及1331283.任何意见、调查结果、结论或建议本出版物中表达的是作者的观点,而不是必然反映国家科学基金会的观点。

该项目还得到了国防高级研究项目的支持美国国防部高级研究计划局(DARPA)和空军研究实验室(AFRL)通过项目资金”多类型,自适应复杂应用的遗传编程.