你的目光像桥梁,\textbf{你的目光像桥梁,}
指引我通往你心路的捷径。\textbf{指引我通往你心路的捷径。}
你的魅力像磁铁,\textbf{你的魅力像磁铁,}
加快我靠向你身边的步伐。\textbf{加快我靠向你身边的步伐。}
想在你颈边轻轻呼吸,\textbf{想在你颈边轻轻呼吸,}
想在你耳边吐露真言,\textbf{想在你耳边吐露真言,}
想成为你生命的韵律。\textbf{想成为你生命的韵律。}
Pasito a pasito, suave suavecito\textbf{Pasito a pasito, suave suavecito}
Nos vamos pegando, poquito a poquito\textbf{Nos vamos pegando, poquito a poquito}
Y es que esa belleza es un rompecabezas\textbf{Y es que esa belleza es un rompecabezas}
Pero pa montarlo aun tengo la pieza\textbf{Pero pa montarlo aun tengo la pieza}
——畅宝宝的傻逼哥哥\qquad\qquad\qquad\quad\textbf{——畅宝宝的傻逼哥哥}
Fletcher-Reeves法是共轭梯度法的变种,它的主要特征是参数αk,k=0,1,2,…\alpha_k,k=0,1,2,\ldots是用线搜索最小化f(x+αdk)f(\mathbf{x}+\alpha\mathbf{d}_k)确定的,这与最速下降或者牛顿法一样。而不同点在于dk\mathbf{d}_k是对dk−1,dk−2,…,d0\mathbf{d}_{k-1},\mathbf{d}_{k-2},\ldots,\mathbf{d}_0共轭,而不是最速梯度方向或者牛顿方向。
如果所求的问题是凸的,二次的且方向按共轭梯度发选择,那么

df(xk+αdk)dα=gTk+1dk=0

\frac{df(\mathbf{x}_k+\alpha\mathbf{d}_k)}{d\alpha}=\mathbf{g}_{k+1}^T\mathbf{d}_k=0

其中k=0,1,2,…k=0,1,2,\ldots,更进一步,共轭的方向集合确保

df(xk+αdi)dα=gTk+1di=0for 0≤i≤k

\frac{df(\mathbf{x}_k+\alpha\mathbf{d}_i)}{d\alpha}=\mathbf{g}_{k+1}^T\mathbf{d}_i=0\quad\text{for}\ 0\leq i\leq k

或者

gTkdi=0for 0≤i<k

\mathbf{g}_{k}^T\mathbf{d}_i=0\quad\text{for}\ 0\leq i

所以通过线搜索确定的αk\alpha_k等价于共轭梯度法。因为线搜索需要更多的计算量,所以Fletcher-Reeves的修正是退化的一步,但不管怎样,这样做得到两个非常明显的好处:

  • 这个修正使得该方法更加适应非二次问题的最小化,这是因为对不在解邻域内的点,f(x)f(\mathbf{x})沿着dk\mathbf{d}_k方向能够更大程度的减少,这是因为对于非二次问题,共轭梯度法得到的α\alpha沿着dk\mathbf{d}_k方向不会得到最小值。
  • 这个修正避免了推导计算海森矩阵。

如果每nn次迭代后重新初始化,那么Fletcher-Reeves算法能够收敛,该算法的具体实现如下:

算法1:共轭梯度算法步骤1输入x0并初始化容忍误差ε步骤2令k=0计算g0并令d0=−g0步骤3求αk,也就是最小化f(xk+αdk)的α令xk+1=xk+αkdk步骤4如果∥αkdk∥<ε,输出x∗=xk+1,f(x∗)=fk+1算法结束步骤5如果k=n−1,令x0=xk+1,然后回到步骤2步骤6计算gk+1计算βk=gTk+1gk+1gTkgk令dk+1=−gk+1+βkdk令k=k+1然后回到步骤3

\begin{align*} &\textbf{算法1:共轭梯度算法}\\ &\textbf{步骤1}\\ &\text{输入}\mathbf{x}_0\text{并初始化容忍误差}\varepsilon\\ &\textbf{步骤2}\\ &\text{令}k=0\\ &\text{计算}\mathbf{g}_0\text{并令}\mathbf{d}_0=-\mathbf{g}_0\\ &\textbf{步骤3}\\ &\text{求}\alpha_k,\text{也就是最小化}f(\mathbf{x}_k+\alpha\mathbf{d}_k)\text{的}\alpha\\ &\text{令}\mathbf{x}_{k+1}=\mathbf{x}_k+\alpha_k\mathbf{d}_k\\ &\textbf{步骤4}\\ &\text{如果}\lVert\alpha_k\mathbf{d}_k\rVert

漫步最优化三十九——Fletcher-Reeves法相关推荐

  1. 漫步最优化三十六——基本共轭方向法

    用我的眼神,\textbf{用我的眼神,} 拍下你的睫毛,\textbf{拍下你的睫毛,} 你微笑的嘴角.\textbf{你微笑的嘴角.} 你的微笑像毒药,\textbf{你的微笑像毒药,} 却洋溢着 ...

  2. 漫步最优化三十五——共轭

    我对你的喜欢像玻璃,\textbf{我对你的喜欢像玻璃,} 透明的能被你看穿.\textbf{透明的能被你看穿.} 我对你的思念像影子,\textbf{我对你的思念像影子,} 傍晚时分就被拉长.\te ...

  3. 漫步最优化三十四——高斯-牛顿法

    你的温柔像羽毛,\textbf{你的温柔像羽毛,} 秘密躺在我怀抱.\textbf{秘密躺在我怀抱.} 你的微笑像拥抱,\textbf{你的微笑像拥抱,} 只有我能看到.\textbf{只有我能看到. ...

  4. 漫步最优化二十九——D.S.C.算法

    你是我的小公主,\textbf{你是我的小公主,} 像宠你宠你宠你.\textbf{像宠你宠你宠你.} 你是我的小公主,\textbf{你是我的小公主,} 我的天空是晴是雨是彩虹,\textbf{我的 ...

  5. 漫步最优化三十八——非二次函数最小化

    你独一无二的声音,\textbf{你独一无二的声音,} 穿越了繁杂喧嚣,\textbf{穿越了繁杂喧嚣,} 回荡在我的脑中.\textbf{回荡在我的脑中.} 你独一无二的声音,\textbf{你独一 ...

  6. 漫步最优化三十二——最速下降法

    爱需要勇气,\textbf{爱需要勇气,} 但是也许是天意,\textbf{但是也许是天意,} 让我爱上你,\textbf{让我爱上你,} 也许轮回里早已注定,\textbf{也许轮回里早已注定,} ...

  7. 漫步最优化三十——非精确线搜索

    说明:今天10.24,祝程序员们节日快乐,呜啦啦啦\textbf{说明:今天10.24,祝程序员们节日快乐,呜啦啦啦} 爱上一个人后,\textbf{爱上一个人后,} 发现自己变得主动了,\textb ...

  8. 漫步数学分析三十九——隐函数定理

    假设x,yx,y被方程F(x,y)=0F(x,y)=0关联起来,我们会说这定义了一个函数y=f(x)y=f(x)(或者说隐式定义了y=f(x)y=f(x)),然后打算计算dy/dxdy/dx.前面已经 ...

  9. C语言笔记 第三十九课 程序中的三国天下

    第三十九课 程序中的三国天下 程序中的栈 栈是现代计算机程序里最为重要的概念之一 栈在程序中用于维护函数调用上下文 函数中的参数和局部变量存储在栈上 栈是一种行为,一种先进后出的行为 栈保存了一个函数 ...

最新文章

  1. HDU - 6971 K - I love max and multiply sosdp
  2. python烟花表白_python炫酷烟花表白源代码
  3. npm使用taobao镜像
  4. 猎豹浏览器缓存文件在哪 猎豹浏览器缓存文件位置说明
  5. CListCtrl行高问题最终解决方法
  6. work summary(1)
  7. 深入解析C++ STL中的常用容器
  8. oracle系统AP对应的凭证编号,AP主要账户及会计分录
  9. PIC单片机学习-中断
  10. windows 中hosts文件
  11. AI 全自动玩斗地主,靠谱吗?Douzero算法教程
  12. 38000词汇词根统计
  13. Shiro(三)——三种不同的登录方式、RememberMe登录、Shiro 授权、其他配置(配置注销后的跳转页面、处理 JsessionID)
  14. matlab的subplot--子图位置大小随心所欲
  15. Matlab小实例(一)
  16. 深耕技术,与实践赛跑:一文告诉你如何稳妥快速完善区块链技术并有序推动商用​?...
  17. 关于PCM音频重采样思路及注意事项(频率变换和通道数变换(单通道转双通道))
  18. Win10微软输入法取消繁体简体切换快捷键的方法
  19. DebugView工具使用方法
  20. C语言RSA实现对字符串加密,C语言实现RSA加解密算法

热门文章

  1. barrel-distortion
  2. ASP.NET MVC PartialView用法
  3. win8 任务栏不合并隐藏标题
  4. Java thread(4)
  5. javacript中的mvc设计模式
  6. Android中文API(122) —— AudioRecord
  7. XML DOM 节点类型(Node Types)
  8. 怎么用javascript进行拖拽(转摘)
  9. Serverless 实战 —— 前端也可以快速开发一个 Puppeteer 网页截图服务
  10. 深入理解Java虚拟机(第三版)-13.Java内存模型与线程