数值最优化—无约束问题信赖域算法

一、参考

《数值最优化算法与理论》

二、线性搜索与信赖域算法区别

数值最优化—无约束问题最速下降法和Newton法数值最优化—无约束问题共轭梯度法 中介绍的求解无约束问题的几类算法的共同点是基于方向和步长确定一个下降方向 d ( k ) d^{(k)} d(k),然后从 x ( k ) x^{(k)} x(k)出发,沿方向 d ( k ) d^{(k)} d(k)进行线性搜索确定步长 α k \alpha _k αk,得到下一个迭代点 x ( k + 1 ) = x ( k ) + α k d ( k ) x^{(k+1)} = x^{(k)} + \alpha _kd^{(k)} x(k+1)=x(k)+αkd(k)。称这类算法为线性搜索算法

下面介绍求解无约束问题:
m i n   f ( x ) , ( x ∈ R n ) min \ f(x), \quad (x \in R^n) min f(x),(xRn)
的另一类算法—信赖域算法。信赖域算法的基本思想是:在当前迭代点 x ( k ) x^{(k)} x(k)的附近用一个简单函数近似目标函数 f f f。用该近似函数在 x ( k ) x^{(k)} x(k)的某个邻域内的极小值点作为下一个迭代点。与线性搜索型算法比较,信赖域算法在每次迭代同时确定搜索方向和步长。

三、信赖域算法

由于信赖域方法用 f f f的某个近似函数在 x ( k ) x^{(k)} x(k)邻域的极小值点作为下一个迭代点,因此,设计信赖域算法需要考虑如下相关问题:

  1. 目标函数 f f f的(简单)近似形式。
  2. x ( k ) x^{(k)} x(k)的邻域(称为信赖域)大小的确定。
  3. 函数值序列的下降性检测。
  4. 近似问题(称为信赖域子问题)的求解。

考虑到一般非线性函数在任何点的邻域内都可以用二次函数近似,而且二次函数的极小值问题相对容易求解。因此,在信赖域算法中,通常我们采用二次函数作为目标函数 f f f的近似,用该二次函数在 x ( k ) x^{(k)} x(k)某邻域内的极小值点作为下一个迭代点,即 x ( k + 1 ) x^{(k+1)} x(k+1)为下面问题的解:
m i n   f ( x ( k ) ) + ∇ f ( x ( k ) ) T ( x − x ( k ) ) + 1 2 ( x − x ( k ) ) T B k ( x − x ( k ) ) min \ f(x^{(k)}) + \nabla f(x^{(k)})^T (x - x^{(k)}) + \frac 1 2 (x - x^{(k)})^T B_k(x - x^{(k)}) min f(x(k))+f(x(k))T(xx(k))+21(xx(k))TBk(xx(k)) s . t .   ∣ ∣ x − x ( k ) ∣ ∣ ≤ Δ k s.t. \ ||x-x^{(k)}|| \le \Delta _k s.t. xx(k)Δk
其中, B k ∈ R n × n B_k \in R^{n \times n} BkRn×n f f f x x x处的Hessian矩阵或其近似,参数 Δ k > 0 \Delta _k > 0 Δk>0控制 x ( k ) x^{(k)} x(k)的邻域大小。若令 d = x − x ( k ) d = x - x^{(k)} d=xx(k),则上面的问题可改写为如下等价的二次函数极小值问题
m i n   f ( x ( k ) ) + ∇ f ( x ( k ) ) T d + 1 2 d T B k d = △ q k ( d ) min \ f(x^{(k)}) + \nabla f(x^{(k)})^T d + \frac 1 2 d^T B_kd \overset {\bigtriangleup } {=} q_k (d) min f(x(k))+f(x(k))Td+21dTBkd=qk(d) s . t .   ∣ ∣ d ∣ ∣ ≤ Δ k s.t. \ ||d|| \le \Delta _k s.t. dΔk
d ( k ) d^{(k)} d(k)是问题的解。则下一个迭代点为 x ( k + 1 ) = x ( k ) + d ( k ) x^{(k+1)} = x^{(k)} + d^{(k)} x(k+1)=x(k)+d(k)。问题中的可行域:
D = { d ∈ R n   ∣   ∣ ∣ d ∣ ∣ ≤ Δ k } D = \{d \in R^n \ | \ ||d|| \le \Delta _k \} D={dRn  dΔk}
称为信赖域,参数 Δ > 0 \Delta >0 Δ>0称为信赖域半径,等价的二次函数极小值问题称为信赖域子问题,其中范数可任意选取。本章采用Euclid范数。

信赖域子问题是仅有一个不等式约束的二次函数极小值问题。

由函数的二阶Taylor展开可知,当 Δ k \Delta _k Δk充分小时,二次函数 q q q在信赖域 D D D中是 f f f的一个很好的近似。另一方面,当 f f f本身是一个二次函数或近似与二次函数时, q q q可能在某一个较大范围内也是 f f f的一个很好的近似。如何确定信赖域半径是信赖域算法的一个重要环节。一方面,我们希望在 D D D q q q f f f的近似程度好,另一方面希望信赖域半径尽可能大。为了合理确定信赖域半径,我们定义 Δ F k \Delta F_k ΔFk f f f在第 k k k步的实际下降量。即:
Δ f k = f ( x ( k ) ) − f ( x ( k ) + d ( k ) ) \Delta f_k = f(x^{(k)}) - f(x^{(k)} + d^{(k)}) Δfk=f(x(k))f(x(k)+d(k))
其中, d ( k ) d^{(k)} d(k)是信赖域子问题的解。令 Δ q k \Delta _{q_k} Δqk为对应的预测下降量,即:
Δ q k = f ( x ( k ) ) − q k ( d ( k ) ) \Delta _{q_k} = f(x^{(k)}) - q_k(d^{(k)}) Δqk=f(x(k))qk(d(k))
注意到 r k r_k rk从某种程度反映了二次函数 q k ( d ( k ) ) q_k(d^{(k)}) qk(d(k))与目标函数 f ( x ( k ) + d ( k ) ) f(x^{(k)} + d^{(k)}) f(x(k)+d(k))近似程度。若 r k r_k rk接近于1,则可认为二次函数 q k ( d ( k ) ) q_k(d^{(k)}) qk(d(k))在信赖域 D D D上与目标函数 f ( x ( k ) + d ( k ) ) f(x^{(k)} + d^{(k)}) f(x(k)+d(k))的近似程度很好。反之,若 r k r_k rk离1较远,我们认为 q k ( d ( k ) ) q_k(d^{(k)}) qk(d(k))在信赖域 D D D上与目标函数 f ( x ( k ) + d ( k ) ) f(x^{(k)} + d^{(k)}) f(x(k)+d(k))的近似程度不好。基于上述观察,我们可以用 r k r_k rk与1的近似程度作为对信赖域半径是否合适的准则。即,可通过如下方式调整信赖域半径

给定常数 η , η 1 , η 2 ∈ ( 0 , 1 ) \eta , \eta _1, \eta _2 \in (0,1) η,η1,η2(0,1)满足 η < η 1 < η 2 \eta < \eta _1< \eta _2 η<η1<η2(一般地, η \eta η接近于或等于0, η 2 \eta _2 η2接近于1,如 η 2 = 3 4 \eta _2=\frac 3 4 η2=43)。

① 若 r k ≥ η 2 r_k \ge \eta _2 rkη2,我们可认为 q q q D D D中是 f f f的一个很好的近似,或者说得到一个成功的迭代点 x ( k + 1 ) = x ( k ) + d ( k ) x^{(k+1)} = x^{(k)} + d^{(k)} x(k+1)=x(k)+d(k)。此时, q q q有可能在一个更大一点的区域也是 f f f的一个很好的近似。因此,我们可将信赖域半径扩大,即令 Δ k + 1 > Δ k \Delta _{k+1} > \Delta _k Δk+1>Δk

② 若 η 1 < r k < η 2 \eta _1 < r_k <\eta _2 η1<rk<η2,即 q q q D D D中是 f f f的一个好的近似,或者说得到一个好的迭代点 x ( k + 1 ) = x ( k ) + d ( k ) x^{(k+1)} = x^{(k)} + d^{(k)} x(k+1)=x(k)+d(k)。此时可以保持信赖域半径不变,即令 Δ k + 1 = Δ k \Delta _{k+1} = \Delta _k Δk+1=Δk(为了下一次得到一个更成功的点,也可减少信赖域半径,即令 Δ k + 1 < Δ k \Delta _{k+1} < \Delta _k Δk+1<Δk)。

③ 若 r k ≤ η r_k \le \eta rkη,即 q q q D D D中是 f f f的一个不好的近似,或者说得到一个不成功的迭代点 x ( k + 1 ) = x ( k ) + d ( k ) x^{(k+1)} = x^{(k)} + d^{(k)} x(k+1)=x(k)+d(k)。说明信赖域半径过大,此时需要减少信赖域半径,即令 Δ k + 1 < Δ k \Delta _{k+1} < \Delta _k Δk+1<Δk

在上面的基础上,给出求解无约束问题的信赖域算法如下:

  1. (初始化)取初始点 x ( 0 ) ∈ R n , Δ ˉ > 0 , Δ 0 ∈ ( 0 , Δ ˉ ) , η ∈ [ 0 , 1 4 ) x^{(0)} \in R^n,\bar \Delta >0, \Delta _0 \in (0,\bar \Delta),\eta \in [0, \frac 1 4) x(0)RnΔˉ>0,Δ0(0,Δˉ)η[0,41),精度 ϵ > 0 \epsilon >0 ϵ>0。令 k = 0 k=0 k=0
  2. (收敛性检测)若 ∣ ∣ ∇ f ( x ( k ) ) ∣ ∣ ≤ ϵ ||\nabla f(x^{(k)})|| \le \epsilon f(x(k))ϵ,则算法终止。得问题的解 x ( k ) x^{(k)} x(k)。否则,转2。
  3. (子问题求解)解信赖域子问题得解 d ( k ) d^{(k)} d(k)
  4. (信赖域修正)计算 r k r_k rk
    r k > 3 4 r_k>\frac 3 4 rk>43,则令 Δ k + 1 = m i n { 2 Δ k , Δ ˉ } \Delta _{k+1} = min\{2\Delta _k,\bar \Delta \} Δk+1=min{2Δk,Δˉ}
    1 4 < r k < 3 4 \frac 1 4 < r_k<\frac 3 4 41<rk<43,则令 Δ k + 1 = Δ k \Delta _{k+1} = \Delta _k Δk+1=Δk
    η < r k < 1 4 \eta < r_k < \frac 1 4 η<rk<41,则令 Δ k + 1 = 1 2 Δ k \Delta _{k+1} = \frac 1 2 \Delta _k Δk+1=21Δk
  5. (可接受检测)若 r k ≤ η r_k \le \eta rkη,令 x ( k + 1 ) = x ( k ) , k = k + 1 x^{(k+1)} = x^{(k)},k=k+1 x(k+1)=x(k)k=k+1,转2;否则令 x ( k + 1 ) = x ( k ) + d ( k ) , k = k + 1 x^{(k+1)} = x^{(k)} + d^{(k)},k=k+1 x(k+1)=x(k)+d(k)k=k+1。转1。

注:算法中的常数1/4,3/4,1/2是根据经验选取的。实际计算时,可根据问题对它们进行调整。

四、信赖域子问题的求解

信赖域算法中子问题的求解是算法实现的关键。子问题是一个目标为二次函数的约束优化问题。下面介绍采用Euclid范数时,精确求解与非精确求解子问题的特殊算法。为了方便起见,省略迭代指标,用 x ∈ R n x \in R^n xRn表示当前迭代点,此时信赖域子问题为:
{ m i n   f ( x ) + ∇ f ( x ) T d + 1 2 d T B d = △ q k ( d ) s . t .   ∣ ∣ d ∣ ∣ ≤ Δ \begin{cases} min \ f(x) +\nabla f(x)^T d + \frac 1 2 d^TBd \overset {\bigtriangleup } {=} q_k (d) \\\\ s.t. \ ||d|| \le \Delta \end{cases} min f(x)+f(x)Td+21dTBd=qk(d)s.t. dΔ

1. 精确求解方法

不难发现,若 B B B正定且 d ˉ = △ − B − 1 ∇ f ( x ) \bar d \overset {\bigtriangleup } {=} -B^{-1} \nabla f(x) dˉ=B1f(x)满足 ∣ ∣ d ∣ ∣ ≤ Δ ||d|| \le \Delta dΔ,即无约束问题:
m i n   f ( x ) + ∇ f ( x ) T d + 1 2 d T B d min \ f(x) +\nabla f(x)^T d + \frac 1 2 d^TBd min f(x)+f(x)Td+21dTBd
的解是信赖域子问题的可行点,则 d ˉ \bar d dˉ是信赖域子问题的解。

定理 d ∗ d^* d是信赖域子问题的全局最优解当且仅当 d ∗ d^* d可行,存在常数 λ ∗ ≥ 0 \lambda ^* \ge 0 λ0满足 B + λ ∗ I B+\lambda ^*I B+λI半正定,且有:
{ ( B + λ ∗ I ) d ∗ = − ∇ f ( x ) λ ∗ ( Δ − ∣ ∣ d ∗ ∣ ∣ ) = 0 \begin{cases} (B+\lambda ^* I) d^* = - \nabla f(x) \\\\ \lambda ^*(\Delta - ||d^*||) = 0 \end{cases} (B+λI)d=f(x)λ(Δd)=0
利用此定理构造求解子问题的算法。设矩阵 B + λ ∗ I B+\lambda ^*I B+λI正定。若线性方程组:
B d + ∇ f ( x ) = 0 Bd+\nabla f(x) = 0 Bd+f(x)=0
的解 d ˉ \bar d dˉ满足 ∣ ∣ d ˉ ∣ ∣ ≤ Δ ||\bar d|| \le \Delta dˉΔ,则 d ∗ = d ˉ d^*=\bar d d=dˉ。此情形对应于 λ ∗ = 0 \lambda ^* = 0 λ=0 B B B正定。否则,必有 λ ∗ > 0 \lambda ^* > 0 λ>0。此时求解信赖域子问题等价于解如下方程组:
{ ( B + λ I ) d = − ∇ f ( x ) ∣ ∣ d ∣ ∣ = Δ \begin{cases} (B+\lambda I) d = - \nabla f(x) \\\\ ||d|| = \Delta \end{cases} (B+λI)d=f(x)d=Δ
λ > 0 \lambda >0 λ>0充分大使得 B + λ I B+\lambda I B+λI正定,可通过解如下关于 λ \lambda λ的一元非线性方程:
ϕ 1 ( λ ) = ∣ ∣ ( B + λ I ) − 1 ∇ f ( x ) ∣ ∣ − Δ = 0 \phi _1(\lambda) = ||(B+\lambda I)^{-1} \nabla f(x)|| - \Delta = 0 ϕ1(λ)=(B+λI)1f(x)Δ=0
得到解 λ ∗ \lambda ^* λ。然后得子问题的解 d ∗ = d ( λ ∗ ) = − ( B + λ I ) − 1 ∇ f ( x ) d^* = d(\lambda ^*) = -(B+\lambda I)^{-1} \nabla f(x) d=d(λ)=(B+λI)1f(x)

基于此求信赖域子问题的方法称为子问题的精确解法。利用矩阵的对角化分解可知, ϕ 1 ( λ ) \phi _1(\lambda) ϕ1(λ)是非线性程度高的系统。为了简化方程的计算,定义:
ϕ 2 ( λ ) = 1 Δ − 1 ∣ ∣ d ( λ ) ∣ ∣ \phi_2(\lambda) = \frac {1} {\Delta} - \frac 1 {||d(\lambda)||} ϕ2(λ)=Δ1d(λ)1
ϕ 2 ( λ ) \phi_2(\lambda) ϕ2(λ)近似为线性方程系统。该方程可应用牛顿迭代法建立其迭代计算式为:
λ l + 1 = λ l − ϕ 2 ( λ l ) ϕ 2 ′ ( λ l ) = λ l + ( ∣ ∣ d l ∣ ∣ ∣ ∣ q l ∣ ∣ ) 2 ( ∣ ∣ d l ∣ ∣ − Δ Δ ) \lambda _{l+1} = \lambda _l - \frac {\phi _2 (\lambda _l)} {\phi _2 ' (\lambda _l)} = \lambda _l + (\frac {||d_l||} {||q_l||})^2 (\frac {||d_l|| - \Delta} {\Delta}) λl+1=λlϕ2(λl)ϕ2(λl)=λl+(qldl)2(ΔdlΔ)
根据如上分析可建立信赖域子问题精确求解的计算步骤如下:

  1. 给定 λ 0 > 0 , Δ > 0 \lambda _0 >0, \Delta > 0 λ0>0,Δ>0。令 l = 0 l=0 l=0
  2. λ l \lambda _l λl是问题的解,则解线性问题得解 d ( l ) d^{(l)} d(l)。否则,转2。
  3. 作Cholesky(乔列斯基)分解 B + λ ( l ) I = R T R B+\lambda ^{(l)}I = R^TR B+λ(l)I=RTR。解方程组:
    R T R d l = − ∇ f ( x ) ,   R T q l = d l R^TRd_l = -\nabla f(x),\ R^Tq_l = d_l RTRdl=f(x) RTql=dl
    得解 d l , q l d_l,q_l dl,ql
  4. λ l + 1 = λ l + ( ∣ ∣ d l ∣ ∣ ∣ ∣ q l ∣ ∣ ) 2 ( ∣ ∣ d l ∣ ∣ − Δ Δ ) \lambda _{l+1} = \lambda _l + (\frac {||d_l||} {||q_l||})^2 (\frac {||d_l|| - \Delta} {\Delta}) λl+1=λl+(qldl)2(ΔdlΔ)
  5. l = l + 1 l=l+1 l=l+1。转1。

2. 折线方法(Dogleg Method 狗腿法)

上面介绍的信赖域子问题精确求解计算量较大。而且当 B + λ ∗ I B+\lambda ^* I B+λI非正定时,子问题的求解较为复杂。

我们考虑非精确求解子问题,下面我们介绍非精确求解信赖域子问题的折线方法。有信赖域子问题知其解 d ∗ d^* d是信赖域半径 Δ \Delta Δ的函数,记为 d ∗ ( Δ ) d^*(\Delta) d(Δ)。几何上为一条曲线,称其为最优解曲线。如下图:
在这里插入图片描述
折线法的思想是用一条折线代替精确解曲线 d ∗ ( Δ ) d^*(\Delta) d(Δ)。为了构造合适的折线,首先分析子问题解的特性。若 B B B正定且 ∣ ∣ − B − 1 ∇ f ( x ) ∣ ∣ ≤ Δ ||-B^{-1} \nabla f(x)|| \le \Delta B1f(x)Δ,则精确解为:
d ∗ ( Δ ) = − b − 1 ∇ f ( x ) = △ d B d^*(\Delta) = -b^{-1} \nabla f(x) \overset {\bigtriangleup } {=} d^B d(Δ)=b1f(x)=dB
否则,我们可作如下分析。当 Δ \Delta Δ很小时,信赖域子问题中目标函数的二次项的作用不大。因此,可用函数 f ( x ) f(x) f(x)的一次(线性)近似,此时约束在 ∣ ∣ d ∣ ∣ ≤ Δ ||d|| \le \Delta dΔ下,子问题的近似解为 d ∗ ( Δ ) ≈ − Δ ∇ f ( x ) ∣ ∣ ∇ f ( x ) ∣ ∣ d^*(\Delta) \approx - \Delta \frac {\nabla f(x)} {||\nabla f(x)||} d(Δ)Δf(x)f(x)。这显示可采用最速下降方向作为解曲线的近似。基于最速下降的考虑和省略信赖域约束,我们取子问题解的形式为 d = − τ ∇ f ( x ) d = -\tau \nabla f(x) d=τf(x)。通过目标函数极小化可确定子问题沿最速下降方向的解为:
d U = − ∇ f ( x ) T f ( x ) ∇ f ( x ) T B ∇ f ( x ) ∇ f ( x ) d^U = - \frac {\nabla f(x)^Tf(x)} {\nabla f(x)^TB\nabla f(x)} \nabla f(x) dU=f(x)TBf(x)f(x)Tf(x)f(x)
另一方面,为了得到收敛性能更好的搜索方向,我们可以选择牛顿方向 d B d^B dB。由两方向 d U d^U dU d B d^B dB可分段构造折线搜索方向(如上图)。记由上图方式构造出的折线为 d ~ ( τ ) \tilde d(\tau) d~(τ),数学上的定义为:
d ~ ( τ ) = { τ d U , 0 ≤ τ ≤ 1 d U + ( τ − 1 ) ( d B − d U ) , 1 ≤ τ ≤ 2 \tilde d(\tau) = \left\{ \begin{aligned} & \tau d^U ,& 0 \le \tau \le 1\\\\ & d^U + (\tau -1)(d^B - d^U), &1 \le \tau \le 2 \end{aligned} \right. d~(τ)=τdU,dU+(τ1)(dBdU),0τ11τ2
上式说明当 τ \tau τ较小时方向选用最速下降方向 d U d^U dU,否则取 d U d^U dU d B d^B dB的组合方向。

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
非线性约束信赖算法是一种用于求解非线性约束优化问题数值方法。在MATLAB中,可以使用优化工具箱中的fmincon函数来实现该算法。 该算法的基本思想是通过建立一种确定信赖半径的机制,在信赖内通过迭代求解子问题来逐步逼近最优解。在每次迭代过程中,首先通过求解一个子问题来确定信赖的半径,然后在该信赖内寻找一个可行点,使得目标函数能够得到显著改善。如果找到的点满足一定的收敛条件,该点将作为下一次迭代的起始点,并重新确定信赖的半径。否则,信赖半径将缩小,并重新进行迭代,直到满足终止条件。 MATLAB中的fmincon函数可以通过设置参数来实现非线性约束信赖算法。其中,目标函数、约束条件、初始点以及信赖半径等是必须提供的输入参数。通过调用该函数,可以得到最优解以及相应的优化值。 在使用非线性约束信赖算法时,需要注意选择合适的信赖半径以及初始点,以充分利用算法的优势,快速求解非线性约束优化问题。此外,还需要根据实际问题对目标函数和约束条件进行合理的建模,以提高算法求解的效率和准确性。 总之,非线性约束信赖算法是MATLAB中用于求解非线性约束优化问题的一种有效数值方法。通过合理的设置参数和模型建立,可以得到高质量的最优解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ta o

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值