遗传编程 遗传编程或称基因编程簡稱GP是一种从生物演化过程得到灵感的自动化生成和选择计算机程序来完成用户定义的任务的技术从理论上讲人类用遗传编程只需要告诉计算机需要完成什么而不用告诉它如何去完成最终可能实现真正意义上的人工智能自动化的发明机器 遗传编程是一种特殊的利用进化算法的机器学习技术它开始于一群由随机生成的千百万个计算机程序组成的人群然后根据一个程序完成给定的任务的能力来确定某个程序的适合度应用达尔文的自然选择适者生存确定胜出的程序计算机程序间也模拟两性组合变异基因复制基因删除等代代进化直到达到预先确定的某个终止条件为止 遗传编程的首批试验由斯蒂芬史密斯 页面存档备份存于互联网档案馆年和Nichael克拉姆年发表约翰Koza年也写了一本著名的书遗传编程用自然选择让计算机编程ISBN 来介绍遗传编程 使用遗传编程的计算机程序可以用很多种编程语言来写成早期或者说传统的GP实现中程序的指令和数据的值使用树状结构的组织方式所以那些本来就提供树状组织形式的编程语言最适合与GP例如Koza使用的Lisp语言其他形式的GP也被提倡和实现例如相对简单的适合传统编程语言例如FortranBASIC和C語言的线性遗传编程有商业化的GP软件把线性遗传编程和汇编语言结合来获得更好的性能也有的实现方法直接生成汇编程序 遗传编程所需的计算量非常之大处理大量候选的计算机程序以至于在年代的时候它只能用来解决一些简单的问题近年来随着遗传编程技术自身的发展和中央处理器计算能力的指数级提升GP开始产生了一大批显著的结果例如在年左右GP在多个领域取得近项成果量子计算电子设计游戏比赛排序搜索等等这些计算机自动生成的程序算法中有些与年后人工产生的发明十分类似甚至有两项结果产生了可以申请专利的新发明 在年代人们普遍认为为遗传编程发展一个理论十分困难GP在各种搜索技术中也处于劣势年后GP的理论取得重大发展建立确切的GP概率模型和马尔可夫链模型已成为可能遗传编程比遗传算法适用的范围更广实际上包含了遗传算法 除了生成计算机程序遗传编程也被用与产生可发展的硬件 Juergen Schmidhuber进一步提出了宏遗传编程一种使用遗传编程来生成一个遗传编程系统的技术一些评论认为宏遗传编程在理论上不可行但是需要更多的研究来确认