scipy中初始参数的形状。优化差分进化

时间:2019-08-05 03:24:32

标签: python numpy scipy scipy-optimize differential-evolution

我不了解算法对init参数的期望形状。

help中,它表示:

  

init str或类似数组的可选内容

     

指定执行哪种类型的填充初始化。应该是以下之一:

‘latinhypercube’

‘random’

array specifying the initial population. 
     

数组应具有形状(M,len(x)),其中len(x)是参数的数量。使用前,init会被限制到边界。

我正在传入形状为(1,17)作为初始值(= init参数)的东西(数组的数组)。因此,一个由17个值组成的numpy数组代表了我的17个参数,并收到以下错误消息:

  

ValueError:提供的总体必须具有形状(M,len(x)),其中M> 4。

尝试深入研究它,我在源代码中得到了这一行:

        if (np.size(popn, 0) < 5 or
                popn.shape[1] != self.parameter_count or
                len(popn.shape) != 2):
            raise ValueError("The population supplied needs to have shape"
                             " (M, len(x)), where M > 4.")

我理解if中3个语句中的最后2个。您要确保它是一个数组数组,并且所有数组都具有正确的大小(即参数数量)。

但是为什么算法希望用户给它至少4个可能的起始值?

1 个答案:

答案 0 :(得分:2)

M必须大于4的原因是Rand2的进化策略至少需要5个种群成员。您可以了解有关here.

的更多信息