如何解决SciPy差异进化:即使worker = -1
上下文:
- 我正在使用SciPy的差分进化包来开发优化器。在worker = 1的情况下,我得到了一些不错的结果,但是我想加快运行时间。
- 我已经检查了有关How to enable parallel in scipy.optimize.differential_evolution?的以下线程,即使我添加了
if __name__ == "main":
并将worker设置为-1,运行时间也完全相同。我在本地计算机(2个物理,4个逻辑处理器)或服务器环境(16个内核)上测试了代码。 - 我测试了以下用例https://medium.com/@grvsinghal/speed-up-your-code-using-multiprocessing-in-python-36e4e703213e。更改工作人员的数量确实会影响运行时间,因此并行处理也可以在笔记本电脑和服务器上进行。
- 因此,我的假设是可能是我定义目标函数和约束函数的方式。
伪代码:
class MyClass:
def __init__(configuration,array1,array2,dataframe):
# assigning attributes so that
self.something = datafame[column1]
...
def obj(self,x):
# based on the initialized values + optimized parameters,it calculates the objective
def cons(self,it calculates the constraint violations
然后,我创建一个类实例o = MyClass()
,并使用类模块differential_evolution(func = o.obj,...)
调用差分进化函数。
问题:
谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。