scipy.optimize 微分进化中初始参数的形状
Shape of init parameter in scipy.optimize differential evolution
我不明白算法期望 init
参数的形状。
在 help 中,它表示:
init
str or array-like, optional
Specify which type of population initialization is performed. Should be one of:
‘latinhypercube’
‘random’
array specifying the initial population.
The array should have shape (M, len(x)), where len(x) is the number of parameters. init is clipped to bounds before use.
我正在传递形状为 (1,17) 的东西(数组的数组)作为初始值(= init
参数)。因此,一个包含 17 个值的 numpy 数组代表我的 17 个参数,并且收到以下错误消息:
ValueError: The population supplied needs to have shape (M, len(x)), where 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 个可能的起始值?
之所以M
要大于4,是因为Rand2
进化策略至少需要5个种群成员。您可以阅读更多相关信息 here.
我不明白算法期望 init
参数的形状。
在 help 中,它表示:
init
str or array-like, optionalSpecify which type of population initialization is performed. Should be one of:
‘latinhypercube’ ‘random’ array specifying the initial population.
The array should have shape (M, len(x)), where len(x) is the number of parameters. init is clipped to bounds before use.
我正在传递形状为 (1,17) 的东西(数组的数组)作为初始值(= init
参数)。因此,一个包含 17 个值的 numpy 数组代表我的 17 个参数,并且收到以下错误消息:
ValueError: The population supplied needs to have shape (M, len(x)), where 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 个可能的起始值?
之所以M
要大于4,是因为Rand2
进化策略至少需要5个种群成员。您可以阅读更多相关信息 here.