2

我正在使用python的pp模块。我需要做的是并行运行“scipy.optimize”的“fmin”函数。我正在像这样导入 fmin:

from scipy.optimize import fmin

接下来,我定义了一个执行 fmin 函数的函数,如下所示:

def fitting():
v = fmin(e, v0, args=(x,y),maxiter=10000, maxfun=10000)
return v

为了使其并行运行,我正在使用:

job5 = job_server.submit(fitting, (e, v0, x, y,), (fitting,), ("scipy.optimize",))
v = job5()

然后我在 job5 的模块中得到一个 PicklingError。我猜那是“scipy.optimize”。我也尝试过import scipy.optimize as sth,但 job_server.submit 不接受“sth”作为模块。有什么解决办法吗?

谢谢你。

4

2 回答 2

0

你不能pp很容易地做到这一点。但是,如果您使用dill并且其分支pp位于pathos(ie pathos.pp) 中,那么它在大多数情况下都有效。

查看优化包中的几个示例mystic,它使用 scipy 优化器的扩展提供并行和分布式优化。

例如,这适用于pathos.multiprocessingpathos.pphttps ://github.com/uqfoundation/mystic/blob/master/examples/buckshot_example06.py

上面的代码fmin_powell并行启动了几个实例,这可以为您提供具有最陡下降速度的伪全局优化。

在此处获取代码:https ://github.com/uqfoundation

于 2014-12-15T14:12:26.497 回答
0

from scipy.optimize import fminimport 行fitting直接放入函数中,不要再传入submit.

于 2012-12-22T18:05:49.643 回答