精确线搜索花费的计算量一般较大。一般问题中,特别是初始迭代点具体目标点较远时,不精确线搜索的效率往往要高于精确线搜索。并且牛顿法和拟牛顿法的收敛速度不依赖于步长的搜索,因此可以对α进行不精确线搜索。
不精确线搜索包括Goldstein准则、Wofle准则和Armijo准则。
1. GoldStein准则
其中0<ρ<1/2,第一个不等式是充分下降条件,第二个不等式表示αk不会太小.
也可以写成
2. Wolfe准则
Goldstein准则的第二个不等式可能造成把极小点排除在可接受区间外,为了解决这个问题,提出了下面的代替条件
σ∈(ρ,1)
即
这个条件叫做曲率条件
充分下降条件与曲率条件一起构成了Wolfe准则
其中
但曲率条件的不足之处是即使σ→0时也不能精确线搜索,因此有了强Wolfe准则
3. Armijo准则
给定β∈(0,1),ρ∈(0,1/2),τ>0,mk是使不等式
成立的最小非负整数,令
上面的不等式实际上就是充分下降条件,这个方法可以令α从1开始缩小(增大m),直到满足充分下降条件
下面给出这几种算法的python实现
Goldstein准则:
1 from linear_search.Function import * 2 from numpy