Поиск генератора случайных программ на питоне - PullRequest
5 голосов
/ 26 февраля 2011

Я ищу программу, которая может генерировать случайные, но действительные программы на Python, аналогичные

Генератору случайных программ на C .

Я пытался сделать это сам, выдавая случайный ввод в функцию python tokenize.untokenize(), но, конечно, большая часть сгенерированного исходного кода не была верной программой, которую я мог интерпретировать с eval().Поэтому я хотел бы знать, знаете ли вы какой-либо способ генерации случайных, но действительных программ на Python (возможно, с использованием модуля ast?) Или такой генератор уже существует.

РЕДАКТИРОВАТЬ: Я хочу использовать случайный исходный код Python в качестве отправной точки для выполнения генетического программирования с Python.Поэтому я хочу иметь список случайных программ, а затем развивать их, скажем, программу, которая возвращает «Hello World!».

Ответы [ 3 ]

3 голосов
/ 26 февраля 2011

Поиск в Google по запросу python "генератор случайных программ" включил Генератор случайных программ Python .

Если вы хотите загружаемый скрипт, взгляните на pyfuzz .

2 голосов
/ 26 февраля 2011

Выполнение генетического программирования для развития императивных программ не совсем тривиально.

Вероятно, стоит задуматься о том, в каком представлении вы хотите эти программы, потому что, если вы планируете выполнять кроссовер / мутацию над ними, тогдаСтроковое представление, вероятно, не идеально.Скорее, предпочтительнее какой-то вид дерева разбора или дерева абстрактного синтаксиса .Это позволит вашим генетическим операторам легко манипулировать поддеревьями.Тогда большая часть трудностей заключается в поддержании достоверности программ во время этих операций.

Один из подходов, который вы хотели бы рассмотреть, - это использование основанной на грамматике эволюционной техники, такой как Grammatic Evolution или Whigham's CFG-GP .Затем вы можете предоставить синтаксис языка, используя грамматику BNF , и программы будут созданы в соответствии с этой грамматикой.Вы, несомненно, сможете найти грамматику для Python онлайн, которую вы можете адаптировать.У этих методов есть некоторые ограничения, так как они обычно используют контекстно-свободные грамматики и поэтому не могут представлять тонкие семантические ограничения, но при необходимости есть способы обойти это.

Дальнейшее рассмотрение заключается в том, действительно ли вам нужен весь питонязык должен быть доступен для эволюционного процесса.Чем больше функций вы сделаете доступными, тем больше пространство поиска.В традиционном GP набор функций и терминалов определяется в зависимости от решаемой проблемы, и одной из проблем является выбор синтаксиса, который достаточно выразителен, но не чрезмерен.Используя отдельную грамматику, вы сможете использовать разные грамматики для разных задач.

0 голосов
/ 26 февраля 2011

Я рекомендую PushGP . Здесь - ссылка на класс Python.

...