问题描述
上下文:
- 我正在使用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 (将#修改为@)