Python 如何通过scipy.optimize.differential_evolution的并行版本使函数可拾取,从而使其最小化
我需要使用差分进化的scipy实现最小化一个函数。 我想利用并行性来加速计算,并尝试将workers设置为-1 我得到一个错误,搜索发现问题是我试图最小化的函数不可拾取。 我需要帮助来了解如何使它可拾取 最小化工作的功能如下所示:Python 如何通过scipy.optimize.differential_evolution的并行版本使函数可拾取,从而使其最小化,python,parallel-processing,minimize,scipy-optimize,differential-evolution,Python,Parallel Processing,Minimize,Scipy Optimize,Differential Evolution,我需要使用差分进化的scipy实现最小化一个函数。 我想利用并行性来加速计算,并尝试将workers设置为-1 我得到一个错误,搜索发现问题是我试图最小化的函数不可拾取。 我需要帮助来了解如何使它可拾取 最小化工作的功能如下所示: 类对象有一个属性向量,即观察到的数据 该类的一种方法获取一些参数并计算向量的估计值 最小化计算向量和计算估计值之间的均方误差的函数 函数的伪代码可以是这样的: def function_to_minimize(self, parameters): true
- 类对象有一个属性向量,即观察到的数据
- 该类的一种方法获取一些参数并计算向量的估计值
- 最小化计算向量和计算估计值之间的均方误差的函数
def function_to_minimize(self, parameters):
true_vector = self.true_vector
estimated_vector = self.estimate_vector(parameters)
return mse(true_vector, estimated_vector)
像这样的方法应该会奏效:
class Objective(object):
def __init__(self, data):
self.measured_data = data
def __call__(self, parameters):
# need to return a scalar value
estimated_vector = self.estimate_vector(parameters)
return np.sum(np.power(self.measured_data - estimated_vector, 2))
def estimate_vector(parameters):
# calculate what you expect to happen with the parameters
pass
您应该将目标(数据)
传递给差异进化
作为最小化的函数。在使用spawn
作为创建新进程默认方式的macOS和Windows上,此功能应为