我不了解算法对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个可能的起始值?