首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >进化算法有可能创建机器代码吗?

进化算法有可能创建机器代码吗?
EN

Stack Overflow用户
提问于 2012-08-12 19:22:20
回答 3查看 1.2K关注 0票数 8

这是一个普遍关心的问题,因为我不是在试图解决一个具体的问题。我环顾四周,试图找到一些涉及这一领域的文章,但我甚至很难把一些好的搜索词组合在一起。

让我们从我所知道的开始吧:我接受了大学程度的人工智能教育,包括遗传编程和更广泛的进化算法,尽管自从我十年前毕业以后,我就很少和他们玩了。我想知道这些方法是否可以用来创建解决问题的机器代码(可能是x86,或者是一些“任意”的指令集)。我们是否可以自己进化算法,比如计算平方根的算法,或者在屏幕上画出令人愉悦的图像?进化算法可以用来创建完整的编译器来创建优化的代码(包括大小、速度等)吗?

此外,我经常认为遗传规划或进化算法本身并不能很好地证明物种的进化。涉及进化算法的问题解决方法似乎总是需要智能。一个人如何创造一个真正的进化算法,使真正有趣和令人惊讶的结果能够真正发生?

TLDR:进化算法的使用在创建一种机器代码时是否有用,以前是否有进化算法的例子来产生真正有趣和令人惊讶的结果?

尼克

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-12 19:47:50

进化在自然界中发挥作用的一件事是,它是非常开放的;你只要找到一种方法,任何方式,传递你的基因,就会有各种各样的成功率。

相比之下,人们期望程序做一些非常具体的事情,而且通常要么有效,要么不起作用。对于遗传算法来说,小的变化需要能够做出小的(或大的)改进,才能在健身领域爬升。但是,项目的健身前景是可怕的。

换句话说:有无限多的程序“几乎”排序一个列表,这些列表与确实对列表进行排序的程序完全不同,因此不能通过一个小的变异来将列表排序为一个列表。大多数对列表进行排序的程序也只需一个突变就会崩溃,而不是产生几乎正确的结果,不管这意味着什么。这些组合意味着很难通过小程度的渐进进化来产生这样的算法(或任何算法)。

至少,当我尝试做类似的事情时,我想这就是我学到的东西。我希望被证明是错的。

票数 6
EN

Stack Overflow用户

发布于 2012-08-13 20:01:11

GP能产生可执行代码吗?好的!就用LISP吧。

约翰·科扎( John )很久以前就已经确定,你可以利用基因编程来创建程序。http://www.genetic-programming.com/johnkoza.html他写了两本关于这个主题的很厚的书。

大多数GP是用LISP完成的,因为机器代码是非常结构化的,所以你的基因组到物候图“让00000是MOV,00001是JNE等等”是不可行的。实际上,您必须使用更复杂的编码。S-表达式作为真正明显的构建块出现。

票数 4
EN

Stack Overflow用户

发布于 2012-08-13 19:41:39

我至少知道一种叫做芬奇的方法,这是一种进化Java字节码的方法。他们的网站上有一些专题介绍和参考出版物。我认为字节码可能比x86机器代码更容易进化,因为这是堆栈机器的代码,而不是寄存器机器的代码。寄存器机器要复杂得多,因为您需要将写指令的寄存器与读指令对齐。在堆栈机器上,您只需在堆栈上推送一个值,下一个操作就会读取它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11925142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档