寻找一个随机Python程序生成器

6
我正在寻找一个能够生成随机但有效的Python程序的程序,类似于Random C program generator
我曾经尝试自己给Python的tokenize.untokenize()函数提供随机输入,但是大多数生成的源代码都不是我可以用eval()解释的有效程序。所以我想知道,你是否知道如何生成随机但有效的Python程序(也许使用ast模块?),或者是否已经存在这样的生成器。
编辑:我想使用随机的Python源代码作为进行Python遗传编程的起点。因此,我想要一个随机程序列表,然后将它们演化成返回“Hello World!”等程序。
3个回答

4
一次关于“python随机程序生成器”的谷歌搜索结果中出现了这个Python随机程序生成器
如果您需要可下载的脚本,请查看pyfuzz

2
进行遗传编程以进化命令式程序并非完全简单。需要考虑要使用何种表示形式来表示这些程序,因为如果您计划对其进行交叉/突变,则字符串表示可能不是理想的选择。相反,一些类似于解析树抽象语法树的形式可能更可取。这将使您的遗传算子轻松地操作子树。在这些操作中,许多困难在于保持程序的有效性。
您可能想考虑的一种方法是使用基于语法的进化技术,例如语法进化 或 Whigham 的CFG-GP。然后,您可以使用BNF语法提供语言语法,并生成符合该语法的程序。尽管这些技术通常使用无上下文语法,因此无法表示微妙的语义约束,但如果必要,也有解决方法。
另一个考虑因素是,您是否真的希望整个Python语言都可以用于进化过程。您提供的功能越多,搜索空间就越大。在传统的遗传编程中,功能和终端集根据所处理的问题进行指定,其中一个挑战是决定语法是否足够表达而不过度。使用单独的语法,您可以为不同的问题使用不同的语法。

-1

我推荐使用PushGP这里是一个Python类的链接。


1
PushGP 生成的程序是使用 Push 而不是 Python。 - Tom Castle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接