scipy.optimize.

BFGS#

class scipy.optimize.BFGS(exception_strategy='skip_update', min_curvature=None, init_scale='auto')[source]#

Broyden-Fletcher-Goldfarb-Shanno (BFGS) Hessian 更新策略。

参数:
exception_strategy{‘skip_update’, ‘damp_update’}, optional

定义当曲率条件被违反时如何处理。设置为‘skip_update’以跳过更新。或者,设置为‘damp_update’以在实际的BFGS结果和未修改的矩阵之间进行插值。两种异常策略都在[1],p.536-537中解释。

min_curvaturefloat

这个数字,通过归一化因子缩放,定义了不受异常策略影响的最小曲率dot(delta_grad, delta_x)。默认情况下,当exception_strategy = 'skip_update'时,它等于1e-8;当exception_strategy = 'damp_update'时,它等于0.2。

init_scale{float, np.array, ‘auto’}

此参数可用于初始化Hessian或其逆矩阵。当给定一个浮点数时,相关数组将初始化为np.eye(n) * init_scale,其中n是问题维度。另外,如果给定一个精确的(n, n)形状的对称数组,则将使用此数组。否则会生成错误。设置为‘auto’以使用自动启发式方法选择初始比例。该启发式方法在[1],p.143中描述。默认为‘auto’。

方法

dot(p)

计算内部矩阵与给定向量的乘积。

get_matrix()

返回当前内部矩阵。

initialize(n, approx_type)

初始化内部矩阵。

update(delta_x, delta_grad)

更新内部矩阵。

说明

该更新基于[1],p.140的描述。

参考文献

[1] (1,2,3)

Nocedal, Jorge, and Stephen J. Wright. “Numerical optimization” Second Edition (2006)。