亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Equipment >> 工业机器人

遗传编程简介:一种自我编程的系统?

也许在我们的机器可以编写自己的程序的那一天,计算机科学的“圣杯”就会被发现。遗传编程 (GP) 是一种相对较新的机器学习范式,代表了朝这个方向迈出的一步。

GP 在控制工程领域大有可为。在本文中,我们将讨论什么是遗传编程,它是如何表示的,并看一看示例程序。

本文是系列文章的第一篇。要跳到下一个条目,请选择下面的一个:

遗传编程和遗传算法

GP 本质上是 John Holland 最初构想的遗传算法 (GA) 的变体。与 GA 一样,GP 是一种进化算法,它依赖于遗传算子,例如适应度成比例的繁殖、交叉和变异,以驱动编码程序群体或“个体”,通过连续的世代来寻找解决方案。

然而,与通常使用固定长度位串编码的 GA 不同,GP 使用实际程序的可变大小、基于树的表示。因此,成功运行 GP 的结果会生成一个计算机程序,当给出适当的输入并执行时,该程序会产生所需的结果。

Nichael Cramer 和 John Koza 因奠定 GP 的基础而受到赞誉。 John Koza(他还拥有 GP 的专利)对 GP 进行了大量研究,他的里程碑式著作“遗传编程”被认为是该主题的开创性工作。目前的研究已经证明了 GP 在广泛的应用中取得了一些令人鼓舞的成功,包括机器人导航、游戏策略获取、符号回归分析和控制系统。

遗传编程表示

前面提到的基于树的表示是 GP 主题的核心,因为实际上任何计算机程序都可以用这种方式表示。在实践中,像 LISP 这样的函数式语言非常适合这种形式,很容易看出如何将 LISP S 表达式绘制为树(图 1)。

下面,您会发现相同信息的三种不同表示形式:

一个简单的程序片段: 开始 IF a LISP 等效: (progn (if (a  

图 1. 程序的树形表示。请注意, (progn arg1 arg2 arg3 ... argn) 按顺序计算每个参数。

树的内部节点由函数组成,而叶节点由终端组成。函数必须有一个至少为 1 的参数计数(通常称为 arity),让它们可以连接到其他函数或终端,从而为树中的分支提供“粘合剂”。

终端通常包括诸如常量和变量之类的东西。由于终端形成树的叶子,因此它们的元数始终为零。您需要为要解决的问题选择一组功能和终端。例如,逻辑函数 AND、OR 和 NOT 以及代表两个布尔输入变量的接线端 X1 和 X2,如果您正在尝试发现能够合成 XOR 布尔函数的程序,则是合适的。还需要适应度函数,因为您必须提供一种方法来衡量一个程序与另一个程序的对比,即一个程序更擅长解决给定的问题。

例如,在 XOR 情况下,我们可以通过对对应于 X1 和 X2 的四个可能的布尔输入(0 0, 0 1, 1 0, 1 1)的每个适应度情况执行一次程序来测试程序的适应度,并且对于每个测试用例,分别将正确响应的数量 (0, 1, 1, 0) 相加。

显然,一个得到满分 4 分的程序被认为是 XOR 问题的解决方案,如清单 1 所示。

GP发现的XOR问题的完美解决方案: (defun 程序 () (与(或 X1 X2) (不是(和 X1 X2)) ) ) 
清单 1。 异或结果

下一步:遗传算子

在下一篇文章中,我们将看看使进化算法成为可能的遗传算子。我们还将在更复杂的示例算法中使用它们。

推荐阅读

  • Kinnear, Jr., K. E. (ed.)。 遗传编程的进展 .马萨诸塞州剑桥:麻省理工学院出版社,1994 年。
  • Knuth, D. E. 计算机编程的艺术,第 3 卷,排序和搜索 .马萨诸塞州雷丁:Addison-Wesley,1973 年
  • Koza, J. R. 遗传编程 .马萨诸塞州剑桥:麻省理工学院出版社,1992 年。
  • Koza, J. R. 遗传编程 II .马萨诸塞州剑桥:麻省理工学院出版社,1994 年。
  • Montana, D. J.“强类型遗传编程”。 BBN 技术报告 #7866,1993 年 5 月。
  • Mitchell、Melanie,遗传算法简介 ,麻省理工学院出版社,1998 年。

工业机器人

  1. 微处理器编程
  2. 什么是嵌入式系统编程及其语言
  3. 什么是 C 编程语言?基础知识、简介、历史
  4. C 编程中的函数与示例:递归和内联
  5. 无需电源的廉价被动冷却系统
  6. 如何实施制造学徒计划
  7. 加工基础:工作坐标系简介
  8. 什么是 Arduino 以及如何编程? – Arduino 编程
  9. 谐波简介——谐波对电力系统的影响
  10. 海德汉发布在线数控培训计划
  11. 使精益生产蓬勃发展的 5 种工具
  12. 我的液压设备需要维修的迹象