拟牛顿法(DFP以及BFGS算法)

拟牛顿法(DFP以及BFGS算法)

DFP Method

核心思想:

  • 通过迭代方法,对Hessian阵做近似

算法步骤

  • S t e p 1 : 初 始 点 x 1 , 精 度 ϵ > 0 , g 1 = − ∇ f ( x 1 ) , H 1 = I n , k = 1 ; Step1:初始点x_1,精度\epsilon>0,g_1=-\nabla f(x_1),H_1=I_n,k=1; Step1:x1,ϵ>0,g1=f(x1),H1=In,k=1;
  • S t e p 2 : 如 果 ∣ ∣ g k ∣ ∣ < ϵ , 停 止 迭 代 , 输 出 x k , Step2:如果||g_k||<\epsilon,停止迭代,输出x_k, Step2:gk<ϵ,xk,
    否 则 , 搜 索 方 向 为 d k = − H k g k ; 否则,搜索方向为d_k=-H_kg_k; dk=Hkgk
  • S t e p 3 : 一 维 搜 索 f ( x k + λ k d k ) = m i n λ ≥ 0 f ( x k + λ d k ) , Step3:一维搜索f(x_k+\lambda_kd_k)=\underset{\lambda\geq0}{min}f(x_k+\lambda d_k), Step3:f(xk+λkdk)=λ0minf(xk+λdk) 取 x k + 1 = x k + λ k d k 取x_{k+1}=x_k+\lambda_kd_k xk+1=xk+λkdk
  • S t e p 4 : g k + 1 = − ∇ f ( x k + 1 ) , p k = x k + 1 − x k , q k = g k + 1 − g k , Step4:g_{k+1}=-\nabla f(x_{k+1}),p_k=x_{k+1}-x_k,q_k=g_{k+1}-g_k, Step4:gk+1=f(xk+1),pk=xk+1xk,qk=gk+1gk,
    H k + 1 = H k + p k p k T p k T q k − H k q k q k T H k q k T H k q k H_{k+1}=H_k+\frac{p_kp_k^T}{p_k^Tq_k}-\frac{H_kq_kq_k^TH_k}{q_k^TH_kq_k} Hk+1=Hk+pkTqkpkpkTqkTHkqkHkqkqkTHk
  • S t e p 5 : k = k + 1 , 转 到 S t e p 2. Step5:k=k+1,转到Step2. Step5:k=k+1,Step2.

BFGS Method

算法步骤

  • S t e p 1 : 初 始 点 x 1 , 精 度 ϵ > 0 , g 1 = − ∇ f ( x 1 ) , B 1 = I n , k = 1 ; Step1:初始点x_1,精度\epsilon>0,g_1=-\nabla f(x_1),B_1=I_n,k=1; Step1:x1,ϵ>0,g1=f(x1),B1=In,k=1;
  • S t e p 2 : 如 果 ∣ ∣ g k ∣ ∣ < ϵ , 停 止 迭 代 , 输 出 x k , Step2:如果||g_k||<\epsilon,停止迭代,输出x_k, Step2:gk<ϵ,xk,
    否 则 , 搜 索 方 向 为 B k d k = − g k ; 否则,搜索方向为B_kd_k=-g_k; Bkdk=gk
  • S t e p 3 : 一 维 搜 索 f ( x k + λ k d k ) = m i n λ ≥ 0 f ( x k + λ d k ) , Step3:一维搜索f(x_k+\lambda_kd_k)=\underset{\lambda\geq0}{min}f(x_k+\lambda d_k), Step3:f(xk+λkdk)=λ0minf(xk+λdk) 取 x k + 1 = x k + λ k d k 取x_{k+1}=x_k+\lambda_kd_k xk+1=xk+λkdk
  • S t e p 4 : g k + 1 = − ∇ f ( x k + 1 ) , p k = x k + 1 − x k , q k = g k + 1 − g k , Step4:g_{k+1}=-\nabla f(x_{k+1}),p_k=x_{k+1}-x_k,q_k=g_{k+1}-g_k, Step4:gk+1=f(xk+1),pk=xk+1xk,qk=gk+1gk,
    B k + 1 = B k + q k q k T q k T p k − B k p k p k T B k p k T B k p k B_{k+1}=B_k+\frac{q_kq_k^T}{q_k^Tp_k}-\frac{B_kp_kp_k^TB_k}{p_k^TB_kp_k} Bk+1=Bk+qkTpkqkqkTpkTBkpkBkpkpkTBk
  • S t e p 5 : k = k + 1 , 转 到 S t e p 2. Step5:k=k+1,转到Step2. Step5:k=k+1,Step2.

程序实现后续补充

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值