Python 元启发式包

数据挖掘 Python 优化 遗传算法
2022-03-14 08:54:16

我需要使用元启发式算法来解决 Python 代码库上的优化问题。

元启发式通常需要用 C++ 或 Java 编写,因为它们涉及大量迭代,而 Python 从这个角度来看很弱。

问题:

  1. 是否存在任何将更快的语言包装为 C++/Java 的 Python 元启发式包?
  2. 是否存在任何基于 numba 上的 cython 的 Python 元启发式软件包?
  3. 其他解决方案?
2个回答

在 Python 中,运行遗传算法的人通常运行 Python 实现,特别是DEAP 库非常流行。

还有一个不太流行的库PGApy,它包装PGA Pack的一个分支,它是用 C 编写的。

另一种选择是通过Cython自己定制一些东西,这是一个 Python 扩展,用于编写具有本机性能的代码。这就是一些人在这里所做的。也许你可以重用他们的代码。

从长远来看,如果你有一个 Python 版本(或自己实现它),使用PyPy而不是 Python 运行它可能会使事情变得更快,因为它非常适合使用 Python 内置函数和许多循环的代码。它通过垃圾收集等技巧很好地优化了这些情况。最新版本还支持 Python3.5 和 3.6 以及 NumPy。

从他们的网站来看,主要好处是:

速度:得益于其即时编译器,Python 程序通常在 PyPy 上运行得更快。(什么是 JIT 编译器?)

“如果你想让你的代码运行得更快,你应该只使用 PyPy。” — Guido van Rossum(Python 的创造者)

内存使用:需要大量内存的 Python 程序(数百 MB 或更多)最终可能会比 CPython 占用更少的空间。

兼容性:PyPy 与现有的 python 代码高度兼容。它支持 cffi 并且可以运行流行的 python 库,如 twisted 和 django。

无堆栈:PyPy 默认支持无堆栈模式,为海量并发提供微线程。