平凡无所谓,\textbf{平凡无所谓,}
平淡无所谓,\textbf{平淡无所谓,}
但求每天早晨能望见你,\textbf{但求每天早晨能望见你,}
这已经足够满足。\textbf{这已经足够满足。}
身边的一切如风,\textbf{身边的一切如风,}
而你让我有了根,\textbf{而你让我有了根,}
就让我爱你多些,\textbf{就让我爱你多些,}
再多些,甚至满泻,\textbf{再多些,甚至满泻,}
与你一生一世。\textbf{与你一生一世。}
——畅宝宝的傻逼哥哥\textbf{——畅宝宝的傻逼哥哥}

过去使用最广泛的共轭方向法是由Powell提出来的,这个方法与共轭梯度法一样,开始也是来自凸二次问题,但是它也成功应用于非二次问题。

Powell法最显著的特征就是通过一系列线搜索生成共轭方向,所用的技术基于下面的定理:

定理1:\textbf{定理1:}如果凸二次问题

f(x)=a+xTb+12xTHx

f(\mathbf{x})=a+\mathbf{x}^T\mathbf{b}+\frac{1}{2}\mathbf{x}^T\mathbf{Hx}

在直线

x=xa+αda

\mathbf{x}=\mathbf{x}_a+\alpha\mathbf{d}_a

x=xb+αdb

\mathbf{x}=\mathbf{x}_b+\alpha\mathbf{d}_b

上分别对α\alpha最小化,得到的最小点分别为x∗a,x∗b\mathbf{x}_a^*,\mathbf{x}_b^*,如图1所示。

如果db=da\mathbf{d}_b=\mathbf{d}_a,那么向量x∗b−x∗a\mathbf{x}_b^*-\mathbf{x}_a^*与da\mathbf{d}_a(或者db\mathbf{d}_b)共轭。

证明:\textbf{证明:}如果f(xa+αda),f(xb+αdb)f(\mathbf{x}_a+\alpha\mathbf{d}_a),f(\mathbf{x}_b+\alpha\mathbf{d}_b)对α\alpha最小化,那么

df(xa+αda)dα=dTag(x∗a)=0df(xb+αdb)dα=dTbg(x∗b)=0(1a)(1b)

\begin{align} \frac{df(\mathbf{x}_a+\alpha\mathbf{d}_a)}{d\alpha}=\mathbf{d}_a^T\mathbf{g}(\mathbf{x}_a^*)=0\tag{1a}\\ \frac{df(\mathbf{x}_b+\alpha\mathbf{d}_b)}{d\alpha}=\mathbf{d}_b^T\mathbf{g}(\mathbf{x}_b^*)=0\tag{1b} \end{align}

因为

g(x∗a)=b+Hx∗ag(x∗b)=b+Hx∗b(2a)(2b)

\begin{align} \mathbf{g}(\mathbf{x}_a^*)=\mathbf{b}+\mathbf{Hx}_a^*\tag{2a}\\ \mathbf{g}(\mathbf{x}_b^*)=\mathbf{b}+\mathbf{Hx}_b^*\tag{2b} \end{align}

因为db=da\mathbf{d}_b=\mathbf{d}_a,所以由等式1与2可得

dTaH(x∗b−x∗a)=0

\mathbf{d}_a^T\mathbf{H}(\mathbf{x}_b^*-\mathbf{x}_a^*)=0

因此,向量x∗b−x∗a\mathbf{x}_b^*-\mathbf{x}_a^*与方向da\mathbf{d}_a(或者db\mathbf{d}_b)共轭,证毕。||||

在Powell算法中,假设初始点为x00\mathbf{x}_{00},nn个线性无关方向为d01,d02,…,d0n\mathbf{d}_{01},\mathbf{d}_{02},\ldots,\mathbf{d}_{0n},并且每次迭代执行一系列线搜索。虽然可以使用任意的线性无关方向集合,但是出于方便,我们使用坐标方向集。


图1

第一次迭代的时候, f(x)f(\mathbf{x})从初始点 x00\mathbf{x}_{00}开始,在方向 d01,d02,…,d0n\mathbf{d}_{01},\mathbf{d}_{02},\ldots,\mathbf{d}_{0n}上最小化分别得到点 x01,x02,…,x0n\mathbf{x}_{01},\mathbf{x}_{02},\ldots,\mathbf{x}_{0n},如图2所示,新的方向 d0(n+1)\mathbf{d}_{0(n+1)}为

d0(n+1)=x0n−x0

\mathbf{d}_{0(n+1)}=\mathbf{x}_{0n}-\mathbf{x}_0

且f(x)f(\mathbf{x})在这个方向上最小化得到新的点x0(n+1)\mathbf{x}_{0(n+1)},然后更新方向集为

d11d12d1(n−1)d1n=d02=d03⋮=d0n=d0(n+1)(3)

\begin{align} \mathbf{d}_{11}&=\mathbf{d}_{02}\notag\\ \mathbf{d}_{12}&=\mathbf{d}_{03}\notag\\ &\vdots\notag\\ \mathbf{d}_{1(n-1)}&=\mathbf{d}_{0n}\notag\\ \mathbf{d}_{1n}&=\mathbf{d}_{0(n+1)}\tag3 \end{align}

第一次迭代的效果就是f(x)f(\mathbf{x})减少了Δf=f(x00)−f(x0(n+1))\Delta f=f(\mathbf{x}_{00})-f(\mathbf{x}_{0(n+1)})并且同时删除了d01\mathbf{d}_{01}加入了d0(n+1)\mathbf{d}_{0(n+1)}。

第二次得带执行同样的过程,从点

x10=x0(n+1)

\mathbf{x}_{10}=\mathbf{x}_{0(n+1)}

开始,f(x)f(\mathbf{x})在方向d11,d12,…,d1n\mathbf{d}_{11},\mathbf{d}_{12},\ldots,\mathbf{d}_{1n}上最小化分别得到点x11,x12,…,x1n\mathbf{x}_{11},\mathbf{x}_{12},\ldots,\mathbf{x}_{1n},如图3所示,然后生成新的方向d1(n+1)\mathbf{d}_{1(n+1)}

d1(n+1)=x1n−x10

\mathbf{d}_{1(n+1)}=\mathbf{x}_{1n}-\mathbf{x}_{10}

f(x)f(\mathbf{x})在方向d1(n+1)\mathbf{d_{1(n+1)}}上最小化得到点x1(n+1)\mathbf{x}_{1(n+1)}。因为

d1n=d0(n+1)

\mathbf{d}_{1n}=\mathbf{d}_{0(n+1)}

所以d1(n+1)\mathbf{d}_{1(n+1)}与dn\mathbf{d}_n共轭,因此我们令

d21d22d2(n−1)d2n=d12=d13⋮=d1n=d1(n+1)(4)

\begin{align} \mathbf{d}_{21}&=\mathbf{d}_{12}\notag\\ \mathbf{d}_{22}&=\mathbf{d}_{13}\notag\\ &\vdots\notag\\ \mathbf{d}_{2(n-1)}&=\mathbf{d}_{1n}\notag\\ \mathbf{d}_{2n}&=\mathbf{d}_{1(n+1)}\tag4 \end{align}

新的方向解将包含一对共轭方向,即d2(n−1),d2n\mathbf{d}_{2(n-1)},\mathbf{d}_{2n}。

用同样的方式执行上面的过程,每次迭代都会增加一个共轭方向。Powell法需要n(n+1)n(n+1)次线搜索,因为每次迭代包含(n+1)(n+1)次线搜索,共需要nn次迭代,Powell算法实现如下:

算法1:共轭梯度算法步骤1输入x00并初始化容忍误差ε令d01=[x01 0 ⋯ 0]Td02=[0 x02 ⋯ 0]T⋮d0n=[0 0 ⋯ x0n]T令k=0步骤2对于i=1从n求出αki,就是最小化f(xk(i−1)+αdki)的值α令xki=xk(i−1)+αkidki步骤3生成新方向dk(n+1)=xkn−xk0求出αk(n+1),就是最小化f(x0+αdk(n+1))的值α令xk(n+1)=xk0+αk(n+1)dk(n+1)计算fk(n+1)=f(xk(n+1))步骤4如果∥αk(n+1)dk(n+1)∥<ε,输出x∗=xk(n+1),f(x∗)=fk(n+1)算法结束步骤5更新方向d(k+1)1=dk2d(k+1)2=dk3⋮d(k+1)n=dk(n+1)令x(k+1)0=xk(n+1),k=k+1,令k=k+1然后回到步骤2

\begin{align*} &\textbf{算法1:共轭梯度算法}\\ &\textbf{步骤1}\\ &\text{输入}\mathbf{x}_{00}\text{并初始化容忍误差}\varepsilon\\ &\text{令}\\ &\mathbf{d}_{01}=[x_{01}\ 0\ \cdots\ 0]^T\\ &\mathbf{d}_{02}=[0\ x_{02}\ \cdots\ 0]^T\\ &\vdots\\ &\mathbf{d}_{0n}=[0\ 0\ \cdots\ x_{0n}]^T\\ &\text{令}k=0\\ &\textbf{步骤2}\\ &\text{对于}i=1\text{从}n\\ &\quad\text{求出}\alpha_{ki},\text{就是最小化}f(\mathbf{x}_{k(i-1)}+\alpha\mathbf{d}_{ki})\text{的值}\alpha\\ &\quad\text{令}\mathbf{x}_{ki}=\mathbf{x}_{k(i-1)}+\alpha_{ki}\mathbf{d}_{ki}\\ &\textbf{步骤3}\\ &\text{生成新方向}\mathbf{d}_{k(n+1)}=\mathbf{x}_{kn}-\mathbf{x}_{k0}\\ &\text{求出}\alpha_{k(n+1)},\text{就是最小化}f(\mathbf{x}_0+\alpha\mathbf{d}_{k(n+1)})\text{的值}\alpha\\ &\text{令}\mathbf{x}_{k(n+1)}=\mathbf{x}_{k0}+\alpha_{k(n+1)}\mathbf{d}_{k(n+1)}\\ &\text{计算}f_{k(n+1)}=f(\mathbf{x}_{k(n+1)})\\ &\textbf{步骤4}\\ &\text{如果}\lVert\alpha_{k(n+1)}\mathbf{d}_{k(n+1)}\rVert


图2


图3

漫步最优化四十——Powell法(上)相关推荐

  1. 漫步最优化四十一——Powell法(下)

    四季交替,\textbf{四季交替,} 光阴推动了变更,\textbf{光阴推动了变更,} 但你一直印在我心.\textbf{但你一直印在我心.} 遇见你的那天,\textbf{遇见你的那天,} 心似 ...

  2. 漫步最优化四十二——Partan法

    漆黑的冷空中有你,\textbf{漆黑的冷空中有你,} 惺忪的眼睛中有你,\textbf{惺忪的眼睛中有你,} 心底的记忆中有你,\textbf{心底的记忆中有你,} 你留在我的脑海中,\textbf ...

  3. 漫步最优化四十五——矩阵S的生成

    想赖着你每一天,\textbf{想赖着你每一天,} 耽误多一秒都不愿意.\textbf{耽误多一秒都不愿意.} 想把你捧在手心,\textbf{想把你捧在手心,} 给你我最奢侈的温柔.\textbf{ ...

  4. 漫步最优化四十四——基本拟牛顿法

    你走进了我的视觉,\textbf{你走进了我的视觉,} 我开始发现,\textbf{我开始发现,} 心里有个角落,\textbf{心里有个角落,} 一直在等你出现.\textbf{一直在等你出现.} ...

  5. 漫步最优化四十三——拟牛顿法

    从相距千里,\textbf{从相距千里,} 到心与心的碰撞,\textbf{到心与心的碰撞,} 情感是一种随机,\textbf{情感是一种随机,} 也是一种必然.\textbf{也是一种必然.} 从一 ...

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

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

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

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

  8. 漫步最优化二十四——二分搜索

    你喜欢有小情绪,\textbf{你喜欢有小情绪,} 像夜晚的月亮,\textbf{像夜晚的月亮,} 但各有各的精彩.\textbf{但各有各的精彩.} 你情感丰富,\textbf{你情感丰富,} 时常 ...

  9. 漫步最优化三十九——Fletcher-Reeves法

    你的目光像桥梁,\textbf{你的目光像桥梁,} 指引我通往你心路的捷径.\textbf{指引我通往你心路的捷径.} 你的魅力像磁铁,\textbf{你的魅力像磁铁,} 加快我靠向你身边的步伐.\t ...

最新文章

  1. Log4j官方文档翻译(一、基本介绍)
  2. 招聘 | B站前端架构师(直播)
  3. windows phone开发第一步:搭建软件开发环境
  4. STM32F1笔记(一)GPIO输出
  5. tail 显示文件最后若干行内容
  6. Java 语义网编程系列二: 本体
  7. PHP 初学者资源收集
  8. 接口自动化测试框架搭建(4、公用方法之url的拼接)--python+HTMLTestRunnerCN+request+unittest+mock+db
  9. [九省联考2018] 一双木棋 chess
  10. linux下通过文件句柄恢复误删除的数据文件
  11. 如何打开.json文件
  12. vimpython配色_你认为最好看的 Vim 配色方案(color scheme)是哪款?
  13. IT服务及相关概念界定
  14. xlua 转webgl 遇到的一些错误
  15. 简析新型传感器的通信方式——SENT 信号
  16. 关于word中的DDE如何查看
  17. vue swiper click失效
  18. ibus中文拼音输入法安装以及遇到问题解决办法
  19. 计算机的doc命令怎么学,(转载)Windows批处理学习(一)——MS-DOS命令
  20. java调用腾讯云的乐固加固给apk进行加固处理。

热门文章

  1. .NET中使用Redis
  2. [Matlab]求解线性方程组
  3. windows内核初窥(二)-----系统机制
  4. 关于多画面窗口切换的刷新重绘问题
  5. 无线Hacking之D.O.S与AP欺骗
  6. Libreoffice实现office转pdf、html、jpg等格式数据
  7. Nginx高并发系统内核优化
  8. Vue笔记——Vue组件中引入jQuery
  9. 【Linux】设置虚拟内存
  10. 容器编排技术 -- Kubernetes kubectl 与 Docker 命令关系