在differential evolution中的scipy优化算法中,如果我有一些好的出发点,是否可以设置初始参数?
例如,假设我知道最好的x
是[0.1, 0.5,0.3]
,是否可以将其添加到scipy.differential_evolution
答案 0 :(得分:0)
scipy.optimize.differential_evolution
函数具有两个可以使用的参数:
bounds : sequence
变量的界限。
(min, max)
中每个元素的x
对,为 func 的优化参数定义了上下限。 [剪切]
您可以尝试:
>>> bounds = [(0.0, 0.2), (0.4, 0.6), (0.2, 0.4)]
>>> result = differential_evolution(my_func, bounds)
最新版本(来自SciPy v1.1.0)允许指定通过init
关键字执行的总体初始化类型:
init : str or array-like, optional
指定执行哪种类型的填充初始化。应该是以下之一:
- “ latinhypercube”
- “随机”
- 指定初始人口的数组。数组应具有形状
(M, len(x))
,其中len(x)
是参数的数量。init
在使用前已被裁剪到边界。[剪切]
使用数组来指定总体子集,例如,可以在已知存在解决方案的位置创建一堆紧紧的初始猜测,从而减少收敛时间。