数值最优化—无约束问题共轭梯度法

本文介绍了二次函数极小化问题的共轭方向法和非线性共轭梯度法。共轭方向法通过构建相互共轭的向量组进行线性搜索,适用于大规模问题。非线性共轭梯度法则在求解无约束优化问题时,结合负梯度和前向方向生成搜索方向,确保在解决二次问题时保持共轭特性。两种方法均以存储量小和较快的收敛速度为特点。
摘要由CSDN通过智能技术生成

一、参考

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

二、前言

Newton法和拟Newton法算法具有较快的收敛速度。但算法需要储存矩阵 B k B_k Bk。因而,在求解大规模问题时遇到困难。

最速下降法具有存储量少的特点。但该算法收敛速度慢。

下面求解无约束问题的共轭梯度法。该算法具有存储量少且收敛速度较快的特点。

三、二次函数极小化问题的共轭方向法

二次函数极小化问题:
m i n f ( x ) = 1 2 x T Q x + q T x min f(x) = \frac 1 2 x^T Q x + q^T x minf(x)=21xTQx+qTx
其中, Q ∈ R n × n Q \in R^{n \times n} QRn×n对称正定, q ∈ R n 。 x ∈ R n 。 f : R n → R q \in R^n。\quad x \in R^n。\quad f:R^n \to R qRnxRnf:RnR

1、向量组共轭

A ∈ R n × n A \in R^{n \times n} ARn×n对称正定, d ( 1 ) , d ( 2 ) , ⋅ ⋅ ⋅ , d ( m ) d^{(1)},d^{(2)},···,d^{(m)} d(1),d(2),,d(m) R n R^n Rn中的非零向量。若对 i , j = 1 , 2 , ⋅ ⋅ ⋅ , m i,j = 1,2,···,m i,j=1,2,,m,有:
d ( i ) T A d ( j ) = 0 , ( i ≠ j ) d^{(i)T} A d^{(j)} = 0, \quad (i \neq j) d(i)TAd(j)=0,(i=j)
则称向量组 d ( 1 ) , d ( 2 ) , ⋅ ⋅ ⋅ , d ( m ) d^{(1)},d^{(2)},···,d^{(m)} d(1),d(2),,d(m)关于矩阵 A A A相互共轭

由共轭向量组的定义易知,若 A = I A=I A=I是单位向量,则向量组的共轭性等价于正交性。

向量正交: α T β = 0 \alpha ^T \beta = 0 αTβ=0

一般地,令 p ( i ) = A 1 / 2 d ( i ) p^{(i)} = A^{1/2} d^{(i)} p(i)=A1/2d(i)

实对称正定矩阵存在平方根的证明:证明

则向量组 d ( 1 ) , d ( 2 ) , ⋅ ⋅ ⋅ , d ( m ) d^{(1)},d^{(2)},···,d^{(m)} d(1),d(2),,d(m)关于矩阵 A A A相互共轭等价于向量组 p ( i ) , ( i = 1 , 2 , ⋅ ⋅ ⋅ , m ) p^{(i)}, (i=1,2,···,m) p(i),(i=1,2,,m)相互正交。因此共轭是正交概念的推广。

定理:设 A ∈ R n × n A \in R^{n \times n} ARn×n对称正定。非零向量组 d ( 1 ) , d ( 2 ) , ⋅ ⋅ ⋅ , d ( m ) ∈ R n × n d^{(1)},d^{(2)},···,d^{(m)} \in R^{n \times n} d(1),d(2),,d(m)Rn×n关于矩阵 A A A相互共轭。则 d ( 1 ) , d ( 2 ) , ⋅ ⋅ ⋅ , d ( m ) d^{(1)},d^{(2)},···,d^{(m)} d(1),d(2),,d(m)线性无关。(即共轭向量组线性无关。)

2. 二次函数极小值问题的共轭方向法

求解思想:从某个初始点 x ( 0 ) x^{(0)} x(0)出发,依次沿关于 Q Q Q相互共轭的 n n n个方向 d ( i ) , ( i = 0 , 1 , ⋅ ⋅ ⋅ , n − 1 ) d^{(i)}, (i=0,1,···,n-1) d(i),(i=0,1,,n1)进行精确线性搜索,即令:
x ( k + 1 ) = x ( k ) + α k d ( k ) , ( k = 0 , 1 , ⋅ ⋅ ⋅ , n − 1 ) x^{(k+1)} = x^{(k)} + \alpha _k d^{(k)}, \quad (k=0,1,···,n-1) x(k+1)=x(k)+αkd(k),(k=0,1,,n1)
其中, α k \alpha _k αk是下面问题的解:
f ( x ( k ) + α k d ( k ) ) = m i n α ∈ R f ( x ( k ) + α d ( k ) ) f(x^{(k)} + \alpha _k d^{(k)}) = \underset{\alpha \in R} {min} f(x^{(k)} + \alpha d^{(k)}) f(x(k)+αkd(k))=αRminf(x(k)+αd(k))

注:由于 d ( k ) d^{(k)} d(k)可能不是函数 f f f x ( k ) x^{(k)} x(k)处的下降方向,因此,上面的精确线性搜索在整个实数轴上进行。

共轭方向可用类似于Gram-Schmidt(施密特)正交化过程产生:

  1. 给定线性无关向量组 p ( 0 ) , p ( 1 ) , ⋅ ⋅ ⋅ , p ( n − 1 ) ∈ R n p^{(0)},p^{(1)},···,p^{(n-1)} \in R^n p(0),p(1),,p(n1)Rn。令 d ( 0 ) = p ( 0 ) , k = 0 d^{(0)} = p^{(0)}, k=0 d(0)=p(0),k=0
  2. 计算:
    d ( k + 1 ) = p ( k + 1 ) − ∑ j = 0 k d ( j ) T Q p ( k + 1 ) d ( j ) T Q d ( j ) d ( j ) d^{(k+1)} = p^{(k+1)} - \sum^{k}_{j=0} \frac {d^{(j)T} Q p^{(k+1)}} {d^{(j)T} Q d^{(j)}} d^{(j)} d(k+1)=p(k+1)j=0kd(j)TQd(j)d(j)TQp(k+1)d(j)
  3. k = n − 2 k=n-2 k=n2,则停止。否则,令 k = k + 1 k=k+1 k=k+1。转1。

四、非线性共轭梯度法

求解无约束问题的非线性共轭梯度法是在求解二次函数极小值问题的共轭梯度法的基础上发展起来的。非线性共轭梯度法利用负梯度 − ∇ f ( x ( k ) ) -\nabla f(x^{(k)}) f(x(k))与算法的前一个方向的线性组合作为第 k k k次迭代的搜索方向。且取初始方向为 − ∇ f ( x ( 0 ) ) -\nabla f(x^{(0)}) f(x(0)),即:
d ( k ) = { − ∇ f ( x ( 0 ) ) , 若 k = 0 − ∇ f ( x ( k ) ) + β k d ( k − 1 ) , 若 k ≥ 1 d^{(k)} = \left\{ \begin{aligned} &- \nabla f(x^{(0)}), \quad &若k=0 \\ &- \nabla f(x^{(k)}) + \beta _k d^{(k-1)}, \quad &若k \geq 1 \\ \end{aligned} \right. d(k)={f(x(0)),f(x(k))+βkd(k1),k=0k1
其中,参数 β k \beta _k βk的确定使得算法用于求解二次函数极小值问题时, d ( k ) d^{(k)} d(k) d ( k − 1 ) d^{(k-1)} d(k1)关于 Q Q Q相互共轭。下面给出 β k \beta _k βk的计算公式:
β k = ∇ f ( x ( k ) ) T [ ∇ f ( x ( k ) ) − ∇ f ( x ( k − 1 ) ) ] d ( k − 1 ) T [ ∇ f ( x ( k ) ) − ∇ f ( x ( k − 1 ) ) ] , ( k = 1 , 2 ⋅ ⋅ ⋅ ) \beta_k = \frac {\nabla f(x^{(k)})^T [\nabla f(x^{(k)}) - \nabla f(x^{(k-1)})]} {d^{(k-1)T} [\nabla f(x^{(k)}) - \nabla f(x^{(k-1)})]} , \quad (k=1,2···) βk=d(k1)T[f(x(k))f(x(k1))]f(x(k))T[f(x(k))f(x(k1))],(k=1,2)
非线性共轭梯度法(HS算法)的计算步骤:

  1. 取初始点 x ( 0 ) ∈ R n , d ( 0 ) = − ∇ f ( x ( 0 ) ) x^{(0)} \in R^n, d^{(0)} = -\nabla f(x^{(0)}) x(0)Rnd(0)=f(x(0)),精度 ϵ > 0 \epsilon >0 ϵ>0。令 k = 0 k=0 k=0
  2. ∣ ∣ ∇ f ( x ( k ) ) ∣ ∣ ≤ ϵ ||\nabla f(x^{(k)})|| \leq \epsilon f(x(k))ϵ,则算法终止。得问题的解 x ( k ) x^{(k)} x(k)。否则,转3。
  3. 由线性搜索确定步长 α k \alpha _k αk
  4. x ( k + 1 ) = x ( k ) + α k d ( k ) x^{(k+1)} = x^{(k)} + \alpha _k d^{(k)} x(k+1)=x(k)+αkd(k)
  5. 由上面确定 d ( k + 1 ) d^{(k+1)} d(k+1),令 k = k + 1 k=k+1 k=k+1。转2。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Ta o

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

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

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

打赏作者

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

抵扣说明:

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

余额充值