搜索随机python程序生成器

时间:2011-02-26 17:44:44

标签: python random metaprogramming genetic-programming

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

Random C program generator

我试图自己给python tokenize.untokenize()函数提供随机输入,但当然大多数生成的源代码都不是我用eval()解释的有效程序。所以我想知道,如果你知道如何生成随机但有效的python程序(可能使用ast模块?)或者如果这样的生成器已经存在。

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

3 个答案:

答案 0 :(得分:3)

谷歌搜索 python“随机程序生成器”打开了Random Python Program Generator

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

答案 1 :(得分:2)

执行遗传编程以发展命令式程序并非完全无足轻重。

关于你想要这些程序的表示,可能值得考虑一下,因为如果你打算对它们执行交叉/变异,那么字符串表示可能并不理想。相反,某种parse treeabstract syntax tree可能更可取。这将允许您的遗传操作员轻松操纵子树。然而,很大的困难在于在这些操作中保持程序的有效性。

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

进一步的考虑是你是否真的希望整个python语言可用于进化过程。您提供的功能越多,搜索空间就越大。在传统的GP中,功能和终端集是根据正在处理的问题来指定的,并且挑战之一是决定具有足够表达力而不过度的语法。使用单独的语法,您将能够针对不同的问题使用不同的语法。

答案 2 :(得分:0)

我建议PushGPHere是指向python类的链接。