欢迎访问我的个人博客:青山白雪
非线性一维搜索
what?
沿某一已知方向求目标函数的极小点
思想
从某个初始点 x ( 0 ) x^{(0)} x(0)出发,沿方向 p ( 0 ) p^{(0)} p(0)进行搜索,得到目标值较小的点 x ( 1 ) x^{(1)} x(1);然后,从 x ( 1 ) x^{(1)} x(1)出发,沿方向 p ( 1 ) p^{(1)} p(1)再次进行一维搜索,得到目标函数更小的点 x ( 2 ) x^{(2)} x(2);依次进行下去。
在每次迭代寻求 x ( k + 1 ) x^{(k+1)} x(k+1)时,在确定的搜索方向 p ( k ) p^{(k)} p(k)上,求一个步长 λ k \lambda _k λk,使目标函数下降最多,即 f ( x ( k + 1 ) ) < f ( x ( k ) ) f(x^{(k+1)}) < f(x^{(k)}) f(x(k+1))<f(x(k))。
λ k \lambda _k λk为最优步长因子,每次求解是一个求一元函数的极值问题,即:
f ( x ( k ) + λ k p ( k ) ) = min λ f ( x ( k ) + λ p ( k ) ) = m i n φ ( λ ) f(x^{(k)} + \lambda _k p^{(k)}) = \displaystyle \min_{\lambda} f(x^{(k)} + \lambda p^{(k)}) = min \varphi(\lambda) f(x(k)+λkp(k))=λminf(x(k)+λp(k))=minφ(λ)
每一次一维搜索就是对函数 φ ( λ ) \varphi(\lambda) φ(λ)求极值,极值 λ ∗ \lambda^* λ∗就是本次迭代的最优步长。
因此求多元函数 f ( x ) = f ( x 1 , x 2 , ⋯ , x n ) f(x) = f(x_1,x_2, \cdots, x_n) f(x)=f(x1,x2,⋯,xn)的极值点问题,转化为一系列沿逐次确定方向求极值点的问题。
这里总结下更简单的形式:
一维函数寻优:
m i n f ( x ) x ∈ [ a , b ] min f(x) \qquad x \in [a,b] minf(x)x∈[a,b]
基本思想为
- 确定 φ ( λ ) \varphi(\lambda) φ(λ)的搜索区间,即:函数极值点所在区间
- 用逐步逼近的方法,确定函数极值点
实施步骤
有初始点 x 1 x_1 x1和步长 h h h,确定搜索区间 [ a , b ] [a,b] [a,b]的方法
- 计算 f ( x 1 ) f(x_1) f(x1)与 f ( x 1 + h ) f(x_1 + h) f(x1+h)
若 f ( x 1 ) > f ( x 1 + h ) f(x_1) > f(x_1 + h) f(x1)>f(x1+h),
极小点在试探点右侧,从 x 1 + h x_1+h x1