我不明白算法期望init
参数的形状。
在帮助中,它说:
init
str 或类似数组,可选指定执行哪种类型的人口初始化。应该是以下之一:
‘latinhypercube’ ‘random’ array specifying the initial population.
数组应具有形状 (M, len(x)),其中 len(x) 是参数的数量。init 在使用前被剪裁到边界。
我正在传递形状为(1,17)的东西(数组数组)作为初始值(=init
参数)。因此,代表我的 17 个参数的 17 个值的 numpy 数组并收到以下错误消息:
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 个可能的起始值呢?