【优化算法】信赖域折线(狗腿)法(Trust Region Dogleg Method)

出发点

刘红英老师的最优化课程需要用到信赖域方法,求解问题并画图,网上找到的中文内容的矩阵实验室(MATLAB)信赖域折线(狗腿)法求解代码,都很繁琐,而且心理感觉不可靠(手动狗头),而且我没心思一点一点调试,最后不如自己写一个靠谱。

特点

信赖域法相比线搜索而言,最大的特点在于用少量的步骤,在一定约束范围内(通常是限定迭代步长),求出一个局部优化的值。

折线法算法

其中,函数dogleg就是用折线法求信赖域子问题,即二次近似函数步长约束最优问题,即

min ⁡ q ( s ) = g T s + s T B s , s . t . ∣ s ∣ ≤ Δ \min q(s)=g^Ts+s^TBs,s.t.|s|≤\Delta minq(s)=gTs+sTBs,s.t.sΔ
g , B g,B g,B 分别为 x k x_k xk 点的梯度和(近似)二阶导, B B B 不要求正定
s s s 是下一步的最优迭代步长(下面用 p p p 表示)

全局最优点 p B = − B − 1 g p_B=-B^{-1}g pB=B1g
沿负梯度方向的全局最优点 p U = − g T g g T B g g p_U=-\cfrac{g^Tg}{g^TBg}g pU=