logo
  • 快速入门
  • 用户指南
  • API参考
  • 发展
  • 发行说明
  • 群集包 ( scipy.cluster )
  • K-均值聚类与矢量量化 ( scipy.cluster.vq )
  • 层次聚类 ( scipy.cluster.hierarchy )
  • 常量 ( scipy.constants )
  • 离散傅立叶变换 ( scipy.fft )
  • 传统离散傅立叶变换 ( scipy.fftpack )
  • 整合与颂歌 ( scipy.integrate )
  • 插值 ( scipy.interpolate )
  • 输入和输出 ( scipy.io )
  • 线性代数 ( scipy.linalg )
  • 低级BLAS函数 ( scipy.linalg.blas )
  • 低级LAPACK函数 ( scipy.linalg.lapack )
  • Cython的BLAS函数
  • Cython的LAPACK函数
  • 插值矩阵分解 ( scipy.linalg.interpolative )
  • 杂项例程 ( scipy.misc )
  • 多维图像处理 ( scipy.ndimage )
  • 正交距离回归 ( scipy.odr )
  • 优化与寻根 ( scipy.optimize )
  • 非线性求解器
  • Cython优化零API
  • 信号处理 ( scipy.signal )
  • 稀疏矩阵 ( scipy.sparse )
  • 稀疏线性代数 ( scipy.sparse.linalg )
  • 压缩稀疏图形例程 ( scipy.sparse.csgraph )
  • 空间算法和数据结构 ( scipy.spatial )
  • 距离计算 ( scipy.spatial.distance )
  • 特殊功能 ( scipy.special )
  • 统计函数 ( scipy.stats )
  • 结果类
  • 掩蔽阵列的统计函数 ( scipy.stats.mstats )
  • 拟蒙特卡罗子模 ( scipy.stats.qmc )
  • 低级回调函数

scipy.optimize.line_search¶

scipy.optimize.line_search(f, myfprime, xk, pk, gfk=None, old_fval=None, old_old_fval=None, args=(), c1=0.0001, c2=0.9, amax=None, extra_condition=None, maxiter=10)[源代码]¶

找到满足强Wolfe条件的α。

参数
f可调用f(x,*args)

目标函数。

myfprime可调用f‘(x,*args)

目标函数梯度。

xkndarray

起点。

pkndarray

搜索方向。

gfkndarray,可选

x=xk的梯度值(xk是当前参数估计)。如果省略,将重新计算。

old_fval浮动,可选

x=xk的函数值。如果省略,将重新计算。

old_old_fval浮动,可选

x=xk之前的点的函数值。

args元组,可选

传递给目标函数的其他参数。

c1浮动,可选

Armijo条件规则的参数。

c2浮动,可选

曲率条件规则的参数。

amax浮动,可选

最大步长

extra_condition可调用,可选

表单的可调用对象 extra_condition(alpha, x, f, g) 返回布尔值。参数是建议的步骤 alpha 以及相应的 x , f 和 g 价值。行搜索接受的值为 alpha 仅当此可调用函数返回 True 。如果可调用函数返回 False 对于步长,算法将继续进行新的迭代。只有满足强Wolfe条件的迭代才会调用Callable。

maxiter整型,可选

要执行的最大迭代次数。

退货
alpha浮动或无

其中的Alpha x_new = x0 + alpha * pk ,如果线搜索算法不收敛,则为None。

fc集成

进行的功能评估次数。

gc集成

进行的渐变求值次数。

new_fval浮动或无

新函数值 f(x_new)=f(x0+alpha*pk) ,如果线搜索算法不收敛,则为None。

old_fval浮动

旧函数值 f(x0) 。

new_slope浮动或无

位于新值的沿搜索方向的局部坡度 <myfprime(x_new), pk> ,如果线搜索算法不收敛,则为None。

注意事项

使用线搜索算法来实施强Wolfe条件。见Wright和Nocedal,“数值优化”,1999年,第59-61页。

示例

>>> from scipy.optimize import line_search

定义了目标函数及其梯度。

>>> def obj_func(x):
...     return (x[0])**2+(x[1])**2
>>> def obj_grad(x):
...     return [2*x[0], 2*x[1]]

我们可以找到满足强Wolfe条件的α。

>>> start_point = np.array([1.8, 1.7])
>>> search_gradient = np.array([-1.0, -1.0])
>>> line_search(obj_func, obj_grad, start_point, search_gradient)
(1.0, 2, 1, 1.1300000000000001, 6.13, [1.6, 1.4])

上一页

scipy.optimize.bracket

下一页

scipy.optimize.LbfgsInvHessProduct

© Copyright 2008-2021, The SciPy community.

Created using Sphinx 4.2.0.