通过编写一个遗传编程类型的应用程序,我有很多乐趣学习Python。我需要加快功能。我应该使用cython,ctypes还是其他?
我从Torsten Marek,Paul Hankin和Alex Martelli在这个网站上得到了一些很好的建议。
该方案有4个主要功能:
- 生成(随机)的表达式树。
- 评估树的健身
- 杂交
- 发生变异
由于所有产生,杂交和变异称之为“评估健身”。这是最繁忙的功能,并且是速度上的主要瓶颈。
由于遗传算法的本质,它必须搜索巨大的解决方案空间,所以越快越好。我想加快这些功能。我将从健身评估员开始。我的问题是做这件事的最好方法是什么。我一直在研究cython,ctypes和'链接和嵌入'。他们对我来说都是新手,现在已经超出了我的视野,但我期望学习一门,最终全部学习。
'适应度函数'需要比较表达式树的值和目标表达式的值。所以它将包含一个后缀评估器,它将以后缀顺序读取树。我有Python中的所有代码。
我需要建议我应该学习和使用现在:cython,ctypes或链接和嵌入。
谢谢。
当您使用python的配置文件或cProfile时,我发现真正方便且有用的一件事是让我看到图示的数字。我最喜欢的是RunSnakeRun。它需要wxPython和其他一些依赖项。在你的cProfile输出上运行它会产生一个GUI squaremap-thingy,其中每个函数都被绘制成一个矩形,其大小为该函数内的(平均或累积)时间,并为它所调用的函数封装了rects。让理解的分析器输出变得轻而易举。 – 2010-11-22 23:39:56