高性能且易于使用的非 GPL 遗传编程库
我想构建一个使用遗传编程来弄清楚用户到底在问什么的应用程序。这是一款面向非程序员的编程应用程序。基本上,用户向应用程序提供一堆示例,并且应用程序将从这些示例中导出构建新程序以供用户自己使用/分发所需的规则。
我已经使用线性回归构建了原型,但它只能解决简单的问题。本周我使用 pyevolve 实验了遗传编程,它的效果比我预期的要出色得多!然而,我怀疑它是用纯 python 编写的,因此需要几十秒来解决一个示例,而在我的应用程序中我最多只有几秒钟的时间。
我一直在尝试寻找一个性能更高、像 pyevolve 一样易于使用的库,但找不到合适的库。我尝试了 openBeagle,但是在运行了一个示例,并在之后的几个小时仔细研究文档之后,我仍然找不到一种方法来实际从“Vivarium”中挑选一个个体。我见过有人推荐 GAUL,但那是一个 GPL 库,会限制我未来应用程序的许可方式。我尝试下载 lil-gp,但 ftp 下载链接被大学的登录屏幕锁定。
由于该应用程序将是 Mac OS X cocoa 应用程序,因此我没有考虑 Java、C# 或 Matlab GP 库。
I would like to build an application that uses Genetic Programming to figure out what exactly the user is asking. It's a programming application for non-programmers. Basically the user feeds the application a bunch of examples, and from the examples the application will derive the rules required to build a new program for the user's own use/distribution.
I've built prototypes using linear regression but it could only solve simple problems. This week I experimented genetic programming using pyevolve and it worked much more brilliantly than I expected! However, I suspect it being written in pure python made it require dozens of seconds to solve an example, whereas in my application I only have at most a couple of seconds time.
I've been trying to find a more performant library that was as easy to use as pyevolve but cannot find a suitable one. I tried openBeagle but after getting an example running, and hours of poring through the documentation later, I still cannot find a way to actually pick an individual out of the "Vivarium". I've seen people recommend GAUL but that is a GPL library and will limit how I can license my future application. I've tried to download lil-gp but the ftp download links are locked by a university's login screen.
Since the application will be a Mac OS X cocoa application, I did not consider Java, C# or Matlab GP libraries.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
作为 Open BEAGLE 的开发人员,如果您寻求快速的 GP 库,我仍然建议您使用该库。实际上,要检索最好的个体,可以通过运行第二个程序来解析进化结束时记录的 XML 文件。否则,您可以通过 Vivarium.getHallOfFame() 方法访问它,然后对其进行排序并使用 HallOfFame.operator[] 访问第一个元素。您将获得的成员是个人的结构,包含其记录的年代和所属的族群。
这样你就可以接触到你进化过程中最优秀的个体。
如果您对 Open BEAGLE 有具体问题,我建议您直接向开发人员列表询问,我们通常会很快回答。
不过,如果您想在 Python 中尝试一个非常不同的库,我建议您使用 DEAP,它比 Pyevolve 具有更大的灵活性。一些 GP 示例在 PyPy 下的运行速度比 Python 快得多。
As a developer of Open BEAGLE I still recommend you to use that library if you seek a fast GP library. Retrieving your best individual would actually be done by running a second program that parses the XML file that is logged at the end of the evolution. Otherwise, you can access it through the Vivarium.getHallOfFame() method and then sort it and access the first element with the HallOfFame.operator[]. The Member you'll get is a struct of the individual with the generation it was recorded and in what deme it was.
That way you can get access to the best individual that ever lived in your evolution.
If you have specific questions on Open BEAGLE I recommend you to ask them directly to the developer list, we usually answer very quickly.
Although, if you wish to try a very different library in Python I recommend you DEAP that allows a lot more flexibility than Pyevolve. Some GP examples run much faster under PyPy than Python.
如果您向 GAUL 项目的关键开发人员请求使用替代许可协议的许可,那么他*很可能会同意。
*“他”就是我。
If you ask the key developer of the GAUL project for permission to use an alternative license agreement, then he* is quite likely to agree.
*"he" is me.