【发布时间】:2018-12-30 09:45:57
【问题描述】:
在scipy 的differential evolution 优化算法中,如果我有一些好的起点,是否可以设置初始参数?
例如,假设我知道最好的x 是[0.1, 0.5,0.3],是否可以在scipy.differential_evolution 中添加它
【问题讨论】:
标签: python scipy mathematical-optimization differential-evolution
在scipy 的differential evolution 优化算法中,如果我有一些好的起点,是否可以设置初始参数?
例如,假设我知道最好的x 是[0.1, 0.5,0.3],是否可以在scipy.differential_evolution 中添加它
【问题讨论】:
标签: python scipy mathematical-optimization differential-evolution
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指定执行哪种类型的人口初始化。应该是以下之一:
- ‘拉丁超立方体’
- ‘随机’
- 指定初始种群的数组。数组的形状应为
(M, len(x)),其中len(x)是参数的数量。init在使用前被剪裁到边界。[剪切]
可以使用数组来指定人口子集,例如,在已知存在解的位置创建一组紧密的初始猜测,从而减少收敛时间。
【讨论】: