我试图建立一个生化过程的模型,我把我的问题构造成一个优化问题,我用scipy的differential_evolution
来解决这个问题。
到目前为止,很好,我对15-19个参数的简化模型的实现非常满意。
我扩展了模型,现在有32个参数,花费的时间太长了。不是完全出乎意料,但仍然是一个问题,因此问题。在
我见过:
-对RParallel differential evolution
-以及关于这个主题的github问题https://github.com/scipy/scipy/issues/4864
但它希望留在python中(模型在python管道中),pull请求并没有导致正式接受的解决方案,尽管已经提出了一些选项。在
另外,我不能在要优化的函数中并行化代码,因为这是一系列连续的计算,每个都需要上一步的结果。理想的选择是有一些东西可以同时评估一些个体,并将它们返回给人群。在
总结:
-在scipy中有没有一个选项允许并行化差分进化,而我却忽略了这一点?(理想溶液)
-在scipy中是否有一个替代算法的建议,即串行化或并行化速度更快?
-有没有其他好的软件包可以提供并行的差分进化函数?或其他适用的优化方法?
-健全性检查:我是否用32个参数重载DE并需要彻底改变方法?在
PS
我是一名生物学家,正规的数学/统计学并不是我的强项,任何翻译成英语的公式都将不胜感激:)
PPS
作为一个极端的选择,我可以尝试迁移到R,但我不能编码C/C++或其他语言。在
Scipy
differential_evolution
现在可以非常容易地并行使用,方法是指定worker:scipy.optimize.differential_evolution documentation
感谢@jp2011指向pygmo
首先,值得注意的是与pygmo1的区别,因为google上的第一个链接仍然指向旧版本。在
其次,多处理岛仅适用于Python3.4+
第三,它起作用了。当我第一次提出这个问题时,我开始的过程还在运行,pygmo群岛在不到3小时的时间内对saDE中存在的18种DE变体进行了广泛的测试。使用Numba的编译版本可能会更早结束。起首部分。在
我个人觉得它比scipy版本更不直观,因为需要构建一个新类(相对于scipy中的single函数)来定义问题,但这可能只是个人偏好。第一次,可能会有人比较模糊地定义交叉点。
另外,我还发现了几个声称并行化DE的选项,我没有亲自测试它们,但是对于在这个问题上遇到问题的人来说可能是有用的。在
鸭嘴兽,专注于多目标进化算法 https://github.com/Project-Platypus/Platypus
Yabox
https://github.com/pablormier/yabox
从亚博克的创造者一个详细的,但IMHO水晶清楚,解释德 https://pablormier.github.io/2017/09/05/a-tutorial-on-differential-evolution-with-python/
我也有同样的问题。也许,你可以试试pygmo,它支持不同的优化算法(包括DE),并且有一个并行计算的模型。然而,我发现社区并不像scipy那么大。他们的教程、文档和示例质量都很好,人们可以从中得到一些东西。在
相关问题 更多 >
编程相关推荐