你是我的小公主,\textbf{你是我的小公主,}
像宠你宠你宠你。\textbf{像宠你宠你宠你。}
你是我的小公主,\textbf{你是我的小公主,}
我的天空是晴是雨是彩虹,\textbf{我的天空是晴是雨是彩虹,}
受到了你的操控。\textbf{受到了你的操控。}
你是我的小公主,\textbf{你是我的小公主,}
让幸福不再是幻想,\textbf{让幸福不再是幻想,}
而是实实在在的感受。\textbf{而是实实在在的感受。}
你是我的小公主,\textbf{你是我的小公主,}
我愿做你的青蛙王子,\textbf{我愿做你的青蛙王子,}
呱呱呱。\textbf{呱呱呱。}
——畅宝宝的傻逼哥哥\qquad\textbf{——畅宝宝的傻逼哥哥}

前面描述的方法要么是搜索,要么是近似,Davies,Swann,Campey发明了一种算法,它结合了搜索法与近似法,用搜索法来确定包含 x∗x^*的范围,而用近似法来生成 x∗x^*的估计值。

对于这种方法,从xx的正方向或者反方向估计f(x)f(x),直到包含x∗x^*,然后用二次插值形式来预测x∗x^*,重复执行这个过程直到达到所求的精度。

算法的输入包括初始点x0,1x_{0,1},初始增长量δ1\delta_1,常数KK以及优化容忍误差ε\varepsilon。

在第kk次迭代,初始点x0,kx_{0,k}与初始增长量δk\delta_k是可以得到的,我们需要求出下次迭代的x0,k+1,δk+1x_{0,k+1},\delta_{k+1}。

初始时刻,估计f(x)f(x)在点x0,k−δk,x0,k,x0,k+δkx_{0,k}-\delta_k,x_{0,k},x_{0,k}+\delta_k处的值,会有三种可能的情况,即

  • f(x0,k−δk)>f(x0,k)>f(x0,k+δk)f(x_{0,k}-\delta_k)>f(x_{0,k})>f(x_{0,k}+\delta_k)
  • f(x0,k−δk)<f(x0,k)<f(x0,k+δk)f(x_{0,k}-\delta_k)
  • f(x0,k−δk)≥f(x0,k)≤f(x0,k+δk)f(x_{0,k}-\delta_k)\geq f(x_{0,k})\leq f(x_{0,k}+\delta_k)

对于第一种情况,f(x)f(x)的最小值位于正方向,所以增加xx的值并计算相应的f(x)f(x),直到出现较大的为止。如果这种情况在第nn次发生,那么区间[x0,k,xn,k][x_{0,k},x_{n,k}]包含x∗x^*,相邻的两个区间是呈几何增长的,所以这个过程会产生如下的点序列:

x0,kx1,kx2,kx3,kxn,k=x0,k+δk=x1,k+2δk=x2,k+4δk⋮=xn−1,k+2n−1δk

\begin{align*} x_{0,k}&\\ x_{1,k}&=x_{0,k}+\delta_k\\ x_{2,k}&=x_{1,k}+2\delta_k\\ x_{3,k}&=x_{2,k}+4\delta_k\\ &\vdots\\ x_{n,k}&=x_{n-1,k}+2^{n-1}\delta_k \end{align*}

如图1所示。显然,最新产生的区间是前者的两倍,并且如果在点

xm,k=xn−1,k+2n−2δk

x_{m,k}=x_{n-1,k}+2^{n-2}\delta_k

处将其分成两个相等的区间,那么我们会得到四个等区间的点。


图1

如果计算 f(x)f(x)在点 xm,kx_{m,k}处的值,我们能得到

fn−2,kfn−1,kfm,kfn,k≡f(xn−2,k)≡f(xn−1,k)≡f(xm,k)≡f(xn,k)

\begin{align*} f_{n-2,k}&\equiv f(x_{n-2,k})\\ f_{n-1,k}&\equiv f(x_{n-1,k})\\ f_{m,k}&\equiv f(x_m,k)\\ f_{n,k}&\equiv f(x_n,k) \end{align*}

如果fm,k≥fn−1,kf_{m,k}\geq f_{n-1,k},那么x∗x^*位于区间[xn−2,k,xm,k][x_{n-2,k},x_{m,k}]中(如图2所示),利用二次插值的结论可得x∗x^*的估计值为

x0,k+1=xn−1,k+2n−2δk(fn−2,k−fm,k)2(fn−2,k−2fn−1,k+fm,k)

x_{0,k+1}=x_{n-1,k}+\frac{2^{n-2}\delta_k(f_{n-2,k}-f_{m,k})}{2(f_{n-2,k}-2f_{n-1,k}+f_{m,k})}

同样地,如果fm,k<fn−1,kf_{m,k},那么x∗x^*位于区间[xn−1,k,xn,k][x_{n-1,k},x_{n,k}]中(如图3所示),x∗x^*的估计值为

x0,k+1=xm,k+2n−2δk(fn−1,k−fn,k)2(fn−1,k−2fm,k+fn,k)

x_{0,k+1}=x_{m,k}+\frac{2^{n-2}\delta_k(f_{n-1,k}-f_{n,k})}{2(f_{n-1,k}-2f_{m,k}+f_{n,k})}


图2

对于第二种情况, x∗x^*位于反方向,所以 xx沿着δk,2δk,…\delta_k,2\delta_k,\ldots递减直到定位到 f(x)f(x)的最小值,这个过程与第一种情况一样,只需要将 δk\delta_k的符号改为负即可。


图3

对于第三种情况, x∗x^*位于 x0,k−δk,x0,k+δkx_{0,k}-\delta_k,x_{0,k}+\delta_k之间,如果

f−1,k=f(x0,k−δk)f0,k=f(x0,k)f1,k=f(x0,k+δk)

\begin{align*} f_{-1,k}=f(x_{0,k}-\delta_k)\\ f_{0,k}=f(x_{0,k})\\ f_{1,k}=f(x_{0,k}+\delta_k) \end{align*}

那么根据二次插值的结论可得x∗x^*得估计值为

x0,k+1=x0,k+δk(f−1,k−f1,k)2(f−1,k−2f0,k+f1,k)

x_{0,k+1}=x_{0,k}+\frac{\delta_k(f_{-1,k}-f_{1,k})}{2(f_{-1,k}-2f_{0,k}+f_{1,k})}

对于第kk次迭代,我们重新定义增长量为

δk+1=Kδk

\delta_{k+1}=K\delta_k

其中KK是0到1之间的常数。使用这个常量的动机是随着越来越靠近解,我们会慢慢找到xx的小区间,因此需要改变算法的步长,比较合适的K<script type="math/tex" id="MathJax-Element-8862">K</script>为0.1。

漫步最优化二十九——D.S.C.算法相关推荐

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

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

  2. 漫步最优化二十八——三次插值法

    没有你的世界,\textbf{没有你的世界,} 我会灵魂失控.\textbf{我会灵魂失控.} 没有你的世界,\textbf{没有你的世界,} 我被乌云拖着走.\textbf{我被乌云拖着走.} 没有 ...

  3. 漫步最优化二十五——斐波那契搜索

    白天与黑夜,\textbf{白天与黑夜,} 希望陪你共同走过.\textbf{希望陪你共同走过.} 整夜的美梦,\textbf{整夜的美梦,} 希望抱你一起回味.\textbf{希望抱你一起回味.} ...

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

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

  5. 漫步最优化二十二——收敛速率

    未来的你已在我的身边,\textbf{未来的你已在我的身边,} 虽然经过了很多个弯:\textbf{虽然经过了很多个弯:} 现在的我已经没了号码牌,\textbf{现在的我已经没了号码牌,} 虽然已经 ...

  6. 漫步最优化二十——下降函数

    就算言语无法表达,\textbf{就算言语无法表达,} 我仍能听见你的声音:\textbf{我仍能听见你的声音:} 就算阳光不再耀眼,\textbf{就算阳光不再耀眼,} 我也永远倾心与宝宝.\tex ...

  7. 漫步数理统计二十九——函数期望

    令X=(X1,-,Xn)′\mathbf{X}=(X_1,\ldots,X_n)^\prime表示某试验的随机变量,我们一般对X\mathbf{X}的函数感兴趣,表示为T=T(X)T=T(\mathb ...

  8. 漫步数学分析二十九——幂级数

    本篇文章我们介绍无限级数的相关理论,我们先从幂级数开始. 定义5\textbf{定义5} 幂级数就是形如Σ∞k=0akxk\Sigma_{k=0}^\infty a_kx^k的级数,其中系数aka_k ...

  9. 漫步微积分二十九——微积分基本定理

    目前为止,我们通过逼近和的极限,得到了一个相当复杂的连续函数定积分的定义, ∫baf(x)dx=limmax Δxk→∞∑k=1nf(x∗k)Δxk(1) \begin{equation} \int_ ...

最新文章

  1. SQL Server创建视图——视图的作用
  2. android apr分析,APR分析信号篇
  3. 【渝粤题库】国家开放大学2021春2681煤矿采掘技术题目
  4. java实现文件在线预览
  5. Java学习笔记——反射
  6. Elasticsearch 安装随笔
  7. 集合阿里云、达摩院、平头哥相关技术的HaaS,官宣出书啦
  8. cesium实现自定义地球球体背景效果
  9. 实操调试成功 基于NI-VISA的USBTMC接口程控仪器连接
  10. ESP32-CAM模块网络摄像头demo加装舵机控制教程
  11. windows安装syslog日志转发客户端nxlog
  12. 适用于5G网络的SAF Spectrum Compact 频谱仪
  13. win7如何设置wifi热点_博世壁挂炉“盖世7200i”WiFi功能如何设置
  14. html网站设计项目心得,网页设计制作心得体会,网页设计实训报告步骤
  15. 用php求圆柱圆锥的面积,认识圆锥体a href=http://ruiwen.com/friend/list.php(教师中心专稿)/a...
  16. 「Java工具类」汉语转拼音工具类HanyuPinyinHelper.java
  17. EditText自动弹出输入法问题
  18. 实验六201771010101 白玛次仁
  19. jquery如何根据id获取标签内的值,以及如何通过id赋值
  20. 根据数据库中的出生年份计算年龄

热门文章

  1. 腾讯地图api将物理地址转化成坐标
  2. 利用dbms_metadata.get_ddl查看DDL语句
  3. 用移动智能设备访问Ossim系统
  4. windows写文件到ubuntu之samba
  5. [摘自MSDN] ASP.Net2.0学习 [2] 主题 1 :ASP.NET 主题和外观概述
  6. Windows下自动备份Oracle数据库
  7. Linux系统下搭建BUG管理系统---禅道
  8. java 课后习题 输出正整数的顺序相反数
  9. 【JAVA 第三章 流程控制语句】课后习题 计算两个日期之间的天数
  10. Docker 部署clickhouse-server及添加用户配置密码