0

我需要使用差分进化的 scipy 实现来最小化一个函数。我想利用并行性来加快计算速度,我尝试设置workers=-1。

我收到一个错误并搜索我发现问题是我试图最小化的功能不可选择。我需要帮助来了解如何让它变得可挑选。

最小化函数的工作方式如下:

  • 一个类对象有一个属性向量,即观察到的数据。
  • 该类的一种方法采用一些参数并计算向量的估计值。
  • 最小化函数计算向量和计算估计之间的均方误差。

该函数的伪代码可能是这样的:

def function_to_minimize(self, parameters):
    true_vector = self.true_vector
    estimated_vector = self.estimate_vector(parameters)
    return mse(true_vector, estimated_vector)
4

1 回答 1

0

像这样的东西应该工作:

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

你应该传递Objective(data)differential_evolution函数来最小化。在用作创建新进程的默认方式的 macOS 和 Windows 上,spawn此函数应定义在可导入的文件中

于 2021-01-05T04:00:49.107 回答