6

我正在寻找一个可以生成随机但有效的 python 程序的程序,类似于

随机 C 程序生成器

我自己尝试这样做,给 pythontokenize.untokenize()函数随机输入,但当然大多数生成的源代码不是我可以用eval(). 所以我想知道,如果您知道如何生成随机但有效的 python 程序(也许使用ast模块?)或者这样的生成器是否已经存在。

编辑:我想使用随机 python 源代码作为使用 python 进行遗传编程的起点。所以我想要一个随机程序列表,然后将它们演变成一个返回“Hello World!”的程序。

4

3 回答 3

4

谷歌搜索python“随机程序生成器”出现了随机 Python 程序生成器

如果您想要可下载的脚本,请查看pyfuzz

于 2011-02-26T17:48:22.663 回答
2

执行遗传编程以发展命令式程序并非完全微不足道。

可能值得考虑一下您希望这些程序采用什么表示形式,因为如果您打算对它们执行交叉/变异,那么字符串表示可能并不理想。相反,某种解析树抽象语法树可能更可取。这将允许您的遗传操作员轻松操作子树。大部分困难在于在这些操作期间保持程序的有效性。

您可能想考虑的一种方法是使用基于语法的进化技术,例如Grammatical Evolution或 Whigham 的CFG-GP。然后,您可以使用BNF 语法提供语言语法,并且将生成符合此语法的程序。毫无疑问,您将能够在线找到可以适应的 Python 语法。这些技术有一些限制,因为它们通常使用上下文无关的语法,因此不能表示微妙的语义约束,但如有必要,有一些方法可以解决。

进一步的考虑是你是否真的希望整个 python 语言都可用于进化过程。您提供的功能越多,搜索空间就越大。在传统的 GP 中,函数和终端集是根据要解决的问题来指定的,其中一个挑战是决定一种足够表达而又不过分的语法。使用单独的语法,您将能够对不同的问题使用不同的语法。

于 2011-02-26T19:40:16.920 回答
-1

我推荐PushGP是一个python类的链接。

于 2011-02-26T17:59:22.010 回答