共轭方向法

共轭方向法

共轭方向法的收敛速度介于最速下降法和牛顿法之间。

  1. 对于n维二次型问题,能够在n步之内得到结果;
  2. 作为共轭方向法的典型代表,共轭梯度法不需要计算黑塞矩阵;
  3. 两次搜索方向之间是共轭的。

对于所有的 i ≠ j i\neq j i̸=j,有 d ( i ) T Q d ( j ) = 0 d^{(i)T}Qd^{(j)}=0 d(i)TQd(j)=0,则称它们是关于Q共轭的。

如果方向 d ( 0 ) , d ( 1 ) , . . . , d ( k ) ∈ R n , k ⩽ n − 1 d^{(0)},d^{(1)},...,d^{(k)}\in R^n,k\leqslant n-1 d(0),d(1),...,d(k)Rn,kn1非零,且是关于 Q Q Q共轭的,那么它们是线性无关的。

顺序主子式均为正数,Q矩阵为正定矩阵

基本的共轭方向算法

针对 n n n维二次型函数的最小化问题:
f ( x ) = 1 2 x T Q x − x T b f(x)=\frac{1}{2}x^TQx-x^Tb f(x)=21xTQxxTb
其中, Q = Q T > 0 , x ∈ R n Q=Q^T>0,x\in R^n Q=QT>0,xRn。由于 Q > 0 Q>0 Q>0,因此函数 f f f有一个全局极小点,可通过求解 Q x = b Qx=b Qx=b得到。

迭代公式:
g ( k ) = ∇ f ( x ( k ) ) = Q x ( k ) − b α k = − g ( k ) d ( k ) d ( k ) T Q d ( k ) x ( k + 1 ) = x ( k ) + α k d ( k ) g^{(k)}=\nabla f(x^{(k)})=Qx^{(k)}-b \\\alpha_k=-\frac{g^{(k)}d^{(k)}}{d^{(k)T}Qd^{(k)}} \\x^{(k+1)}=x^{(k)}+\alpha_kd^{(k)} g(k)=f(x(k))=Qx(k)bαk=d(k)TQd(k)g(k)d(k)x(k+1)=x(k)+αkd(k)

算法过程

  1. 根据给定初始点 x ( 0 ) x^{(0)} x(0)以及一组关于 Q Q Q共轭的一组方向 d ( 0 ) , d ( 1 ) . . . d^{(0)},d^{(1)}... d(0),d(1)...,计算 g ( 0 ) , α 0 g^{(0)},\alpha_0 g(0),α0
  2. 计算 x ( 1 ) x^{(1)} x(1)
  3. 重复1,2直到 x ( n ) x^{(n)} x(n)等于函数的维数 n n n

共轭梯度法

共轭梯度法不需要预先给定 Q Q Q共轭方向,而是随着迭代的进行不断产生 Q Q Q共轭方向————利用上一个搜索方向和目标函数在当前迭代点的梯度向量之间的线性组合构造一个新方向,使其与前面已经产生的搜索方向组成 Q Q Q共轭方向。

针对 n n n维二次型函数的最小化问题:
f ( x ) = 1 2 x T Q x − x T b f(x)=\frac{1}{2}x^TQx-x^Tb f(x)=21xTQxxTb
其中, Q = Q T > 0 , x ∈ R n Q=Q^T>0,x\in R^n Q=QT>0,xRn。初始点为 x ( 0 ) x^{(0)} x(0),搜索方向采用最速下降法的方向,即函数 f f f x ( 0 ) x^{(0)} x(0)处梯度的负方向,即:
d ( 0 ) = − g ( 0 ) d^{(0)}=-g^{(0)} d(0)=g(0)
产生下一个迭代点:
x ( 1 ) = x ( 0 ) + α 0 d ( 0 ) x^{(1)}=x^{(0)}+\alpha_0d^{(0)} x(1)=x(0)+α0d(0)
其中,步长为:
α 0 = a r g min ⁡ α ⩾ 0 f ( x ( 0 ) + α d ( 0 ) ) = − g ( 0 ) d ( 0 ) d ( 0 ) T Q d ( 0 ) \alpha_0=arg\min\limits_{\alpha\geqslant0}f(x^{(0)}+\alpha d^{(0)})=-\frac{g^{(0)}d^{(0)}}{d^{(0)T}Qd^{(0)}} α0=argα0minf(x(0)+αd(0))=d(0)TQd(0)g(0)d(0)
d ( 1 ) d^{(1)} d(1)写成 g ( 1 ) g^{(1)} g(1) d ( 0 ) d^{(0)} d(0)之间的线性组合:
d ( k + 1 ) = − g ( k + 1 ) + β k d ( k ) d^{(k+1)}=-g^{(k+1)}+\beta_kd^{(k)} d(k+1)=g(k+1)+βkd(k)
其中, β k = g ( k + 1 ) T Q d ( k ) d ( k ) T Q d ( k ) \beta_k=\frac{g^{(k+1)T}Qd^{(k)}}{d^{(k)T}Qd^{(k)}} βk=d(k)TQd(k)g(k+1)TQd(k)

算法过程

  1. k = 0 k=0 k=0;选择初始值 x ( 0 ) x^{(0)} x(0)
  2. 计算 g ( 0 ) = ∇ f ( x ( 0 ) ) ​ g^{(0)}=\nabla f(x^{(0)})​ g(0)=f(x(0)),如果 g ( 0 ) = 0 ​ g^{(0)}=0​ g(0)=0,停止迭代,否则,令 d ( 0 ) = − g ( 0 ) ​ d^{(0)}=-g^{(0)}​ d(0)=g(0)
  3. 计算 α 0 , x ( 1 ) \alpha_0,x^{(1)} α0,x(1)
  4. 计算 g ( 1 ) = ∇ f ( x ( 1 ) ) g^{(1)}=\nabla f(x^{(1)}) g(1)=f(x(1)),如果 g ( 1 ) = 0 g^{(1)}=0 g(1)=0,停止迭代;
  5. 计算 β 0 \beta_0 β0;
  6. 计算 d ( 1 ) ​ d^{(1)}​ d(1);
  7. 回到3。

非二次型的共轭梯度法

最优化导论== P 128 P_{128} P128==

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值