首页 > 解决方案 > 为 scipy.differential_evolution 设置初始参数

问题描述

scipy的差分进化优化算法中,如果我有一些好的起点,是否可以设置初始参数?

例如,假设我知道最好x的是[0.1, 0.5,0.3],是否可以将其添加到里面scipy.differential_evolution

标签: pythonscipymathematical-optimizationdifferential-evolution

解决方案


scipy.optimize.differential_evolution函数有两个可以使用的参数:

  1. bounds : sequence

    变量的界限。(min, max)中每个元素的对,定义funcx的优化参数的下限和上限。[切]

    你可以试试:

    >>> bounds = [(0.0, 0.2), (0.4, 0.6), (0.2, 0.4)]
    >>> result = differential_evolution(my_func, bounds)
    
  2. 该库的最新版本(来自 SciPy v1.1.0)允许通过init关键字指定执行哪种类型的人口初始化:

    init : str or array-like, optional

    指定执行哪种类型的人口初始化。应该是以下之一:

    • '拉丁超立方体'</li>
    • '随机'</li>
    • 指定初始种群的数组。数组应该有 shape (M, len(x)),其中len(x)是参数的数量。init在使用前被剪裁到边界。

    [切]

    例如,可以使用数组来指定总体子集,以便在已知存在解的位置创建一组紧密的初始猜测,从而减少收敛时间。


推荐阅读