Scipy 的差分进化实现(https://docs.scipy.org/doc/scipy-0.17.0/reference/generated/scipy.optimize.differential_evolution.html)使用拉丁超立方体或随机方法进行种群初始化。拉丁超立方体采样试图最大化可用参数空间的覆盖范围。'random' 随机初始化总体。我想知道是否可以为每个参数指定起始值,而不是依赖这些默认算法。
对于复杂的模型(特别是那些在数学上难以处理并因此需要模拟的模型),我观察到 scipy 的差分进化的 2 次独立运行可能会在算法的 X 次迭代后给出不同的结果(我通常设置 X = 100 以避免运行数天的算法)。我认为这是因为(1)两次独立运行之间的总体初始化并不相同(因为总体初始化方法“随机”和“超立方体”的随机性)和(2)模型预测中存在噪声。因此,我正在考虑以 100 次迭代运行约 10 次独立的 DE 运行,在 10 次运行中选取最合适的参数集,并将该参数集用作具有更多迭代(例如 200)的最终运行的起始值。问题是我看不到在 scipy 的 DE 实现中手动输入这些起始值的方法。如果社区中有人可以帮助我,我将不胜感激。