首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >传递一个“地图一样”的可调用的differential_evolution

传递一个“地图一样”的可调用的differential_evolution
EN

Stack Overflow用户
提问于 2021-04-01 06:40:48
回答 1查看 966关注 0票数 1

我有一个现有的多处理池,用于我想要传递给differential_evolution的其他函数,但我似乎无法正确地获得工人输入集。这个是可能的吗?文档workers应该是

类似于...a映射的可调用性,例如用于并行计算人口的multiprocessing.Pool.map。

我试过:

代码语言:javascript
复制
import multiprocessing as mp
from scipy.optimize import rosen, differential_evolution

pool = mp.Pool(2)  # existing worker pool

bounds = [(0,2), (0, 2), (0, 2), (0, 2), (0, 2)]
result = differential_evolution(rosen, bounds, updating='deferred', workers=pool)
# TypeError: int() argument must be a string, a bytes-like object or a number, not 'Pool'

result = differential_evolution(rosen, bounds, updating='deferred', workers=pool.map)
# RuntimeError: The map-like callable must be of the form f(func, iterable), returning a sequence of numbers the same length as 'iterable'

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-01 09:55:48

对我来说,你的第二个解决方案是有效的。

代码语言:javascript
复制
import multiprocessing as mp
from scipy.optimize import rosen, differential_evolution

pool = mp.Pool(2)  # existing worker pool

bounds = [(0,2), (0, 2), (0, 2), (0, 2), (0, 2)]

result = differential_evolution(rosen, bounds, updating='deferred', workers=pool.map)
result

输出

代码语言:javascript
复制
     fun: 0.0
 message: 'Optimization terminated successfully.'
    nfev: 51006
     nit: 679
 success: True
       x: array([1., 1., 1., 1., 1.])

我的scipy版本是

代码语言:javascript
复制
import scipy
print(scipy.__version__)
1.6.1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66899561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档