首页 > 其他分享 >【最优化】第二次要点整理

【最优化】第二次要点整理

时间:2024-10-31 15:43:14浏览次数:3  
标签:bar leftarrow varphi mu 要点 alpha 第二次 最优化 lambda

目录

【问题】在迭代中,已知 \(x^{(k)}\) 和下降方向 \(d^{(k)}\),如何确定下降步长 \(\alpha^{(k)}\),使得 \(f(x^{(k)} + \alpha^{(k)} d^{(k)}) < f(x^{(k)})\)?

精确线搜索技术

【思想】\(\alpha^{(k)} = \mathop{\arg\min}\limits_{\alpha \geq 0} = \varphi(\alpha) = f(x^{(k)} + \alpha d^{(k)})\),通过解以下方程求出 \(\alpha^{(k)}\):

\[\frac{\mathrm{d} \varphi}{\mathrm{d} \alpha} \bigg|_{\alpha = \alpha^{(k)}} = \nabla f(x^{(k)} + \alpha^{(k)} d^{(k)})^T d^{(k)} = 0 \]

【主要框架】

  • 确定包含 \(\alpha^{(k)}\) 的搜索区间
  • 基于分割技术或插值技术,不断缩小搜索区间,求出 \(d^{(k)}\)

进退法确定搜索区间

【定义】令 \(\alpha^{*} = \mathop{\arg\min}\limits_{\alpha \geq 0} = \varphi (\alpha)\)(即 \(\alpha^*\) 为某个区间的极小值点),若 \([a,b] \subset [0,+\infty)\),且 \(\alpha^{*} \in [a,b]\),则称 \([a,b]\) 为一个搜索区间。

【算法步骤】假设搜索区间 \([a,b]\) 是一个单峰区间,

  • 第一步:初值 \(\alpha_0 \geq 0, h_0>0, k=0\),计算 \(\varphi_0 = \varphi(\alpha_0)\)
  • 第二步:令 \(\alpha_{k+1} = \alpha_k + h_k\),计算 \(\varphi_{k+1} =\varphi(\alpha_{k+1})\)
    • 若 \(\varphi_{k+1} < \varphi_{k}\),跳转第三步
    • 若 \(\varphi_{k+1} \geq \varphi_{k}\),跳转第四步
  • 第三步:作前进运算,令 \(h_{k+1} \leftarrow 2 h_{k}\),\(\alpha \leftarrow \alpha_{k}\),\(\alpha_{k} \leftarrow \alpha_{k+1}\),\(\varphi_{k} \leftarrow \varphi_{k+1}\),\(k \leftarrow k+1\),返回第二步
  • 第四步:
    • 若 \(k=0\),作后退运算,令 \(h_{1} \leftarrow -h_{0}\),\(\alpha \leftarrow \alpha_1\),\(\alpha_1 \leftarrow \alpha_0\),\(\varphi_1 \leftarrow \varphi_0\),\(k=1\),返回第二步
    • 若 \(k>0\),停止迭代,令 \(a = \min(\alpha, \alpha_{k+1})\),\(b = \max(\alpha, \alpha_{k+1})\),则 \([a,b]\) 为包含极小值的搜索区间

分割法确定极小值

二分法

【算法步骤】第 \(k\) 步:\([a_k, b_k]\),令 \(c = \frac{1}{2} (a_k + b_k)\),计算 \(\varphi'(c)\)

  • 若 \(\varphi'(c) = 0\),令 \(\alpha^* = c\),停止迭代
  • 若 \(\varphi'(c) > 0\),说明 \(\alpha^* \in [a_k, c]\),令 \([a_{k+1}, b_{k+1}] \leftarrow [a_k, c]\),继续迭代
  • 若 \(\varphi'(c) < 0\),说明 \(\alpha^* \in [c, b_k]\),令 \([a_{k+1}, b_{k+1}] \leftarrow [c, b_k]\),继续迭代

黄金分割法

【算法思想】第 \(k\) 步:\([a_k, b_k]\),往该区间插入两个试探点 \(\lambda_k\) 和 \(\mu_k\),其中 \(\lambda_k < \mu_k\),计算 \(\varphi(\lambda_k)\) 和 \(\varphi(\mu_k)\),

  • 若 \(\varphi(\lambda_k) \leq \varphi(\mu_k)\),说明 \(\alpha^* \in [a_k, \mu_k]\),令 \([a_{k+1}, b_{k+1}] \leftarrow [a_k, \mu_k]\),继续迭代
  • 若 \(\varphi(\lambda_k) > \varphi(\mu_k)\),说明 \(\alpha^* \in [\lambda_k, b_k]\),令 \([a_{k+1}, b_{k+1}] \leftarrow [\lambda_k, b_k]\),继续迭代

【试探点需满足的条件】(参考资料)两个条件:

  • 区间长度相同:\([a_k, \mu_k] = [\lambda_k, b_k]\),即 \(b_k - \lambda_k = \mu_k - a_k\),使得分割点是对称的。
  • 区间长度的缩短率相同:\(b_{k+1} - a_{k+1} = \rho(b_k - a_k)\),其中 \(\rho\) 为区间长度缩短率。

因此可得:

\[\begin{cases} \lambda_k = a_k + (1-\rho)(b_k - a_k) \\ \mu_k = a_k + \rho(b_k - a_k) \\ \end{cases} \]

现在考虑情形 \(\varphi(\lambda_k) \leq \varphi(\mu_k)\),此时新的搜索区间为 \([a_{k+1}, b_{k+1}] = [a_k, \mu_k]\)。为进一步缩短搜索区间,需取新的试探点 \(\lambda_{k+1}, \mu_{k+1}\),由上式可得:

\[\begin{aligned} \mu_{k+1} &= a_{k+1} + \rho(b_{k+1} - a_{k+1}) \\ &= a_{k} + \rho^2 (b_k - a_k) \end{aligned} \]

每次缩小搜索区间时,上一次迭代得到的分割点可复用为下一次的分割点,因此不必重新计算新的试探点,于是有 \(\mu_{k+1} = \lambda_k\),于是有 \(\rho^2 = 1-\rho\),解得 \(\rho = 0.618\)。

对于情形 \(\varphi(\lambda_k) > \varphi(\mu_k)\) 也有相同的结论,此处不再赘述。所以有:

\[\begin{cases} \lambda_k = a_k + 0.382(b_k - a_k) \\ \mu_k = a_k + 0.618(b_k - a_k) \\ \end{cases} \]

【算法步骤】

  • 第一步:初始区间 \([a_0, b_0]\),给定 \(\epsilon > 0\),\(k=0\),计算初始分割点:

\[\begin{cases} \lambda_0 = a_0 + 0.382(b_0 - a_0) \\ \mu_0 = a_0 + 0.618(b_0 - a_0) \\ \end{cases} \]

  • 第二步:计算 \(\varphi(\lambda_k)\) 和 \(\varphi(\mu_k)\),

    • 若 \(\varphi(\lambda_k) \leq \varphi(\mu_k)\),说明 \(\alpha^* \in [a_k, \mu_k]\),跳转第三步
    • 若 \(\varphi(\lambda_k) > \varphi(\mu_k)\),说明 \(\alpha^* \in [\lambda_k, b_k]\),跳转第四步
  • 第三步:若 \(\mu_k - a_k < \epsilon\),则输出 \(\alpha^* = \lambda_k\);否则,令 \(a_{k+1} \leftarrow a_k\),\(b_{k+1} \leftarrow \mu_k\),\(\mu_{k+1} \leftarrow \lambda_k\),\(\lambda_{k+1} = a_{k+1} + 0.382(b_{k+1} - a_{k+1})\),\(k \leftarrow k+1\),返回第二步

  • 第四步:若 \(b_k - \lambda_k < \epsilon\),则输出 \(\alpha^* = \mu_k\);否则,令 \(a_{k+1} \leftarrow \lambda_k\),\(b_{k+1} \leftarrow b_k\),\(\lambda_{k+1} \leftarrow \mu_k\),\(\mu_{k+1} = a_{k+1} + 0.618(b_{k+1} - a_{k+1})\),\(k \leftarrow k+1\),返回第二步

插值法

三点二次插值法(拉格朗日插值法)

(此处用 \(s\) 代替上文中的 \(\alpha\))

【算法原理】构造抛物线方程:\(q(s) = a_0 + a_1 s + a_2 s^2\),将 \(s_0, s_1, s_2\) 三个点代入求解 \(a_0, a_1, a_2\),解得:

\[\begin{cases} a_1 = ... \\ a_2 = ... \\ \end{cases} \]

设 \(\bar{s}\) 为该抛物线的极小值点,则有 \(q'(\bar{s})=0\),所以有:

\[\bar{s} = -\frac{a_1}{2a_2} \]

【算法步骤】

  • 第一步:在 \([a,b]\) 中由进退法取三个点:\(s_0, s_1, s_2\),使得对于 \(\varphi_0 = \varphi(s_0), \varphi_1 = \varphi(s_1), \varphi_2 = \varphi(s_2)\),有 \(\varphi_0 > \varphi_1 < \varphi_2\),即“两边高中间低”。

  • 第二步:由公式计算 \(\bar{s}\) 和 \(\bar{\varphi}(\bar{s})\),

    • 若 \(\bar{\varphi}(\bar{s}) > \varphi_1\),转步骤三。
    • 若 \(\bar{\varphi}(\bar{s}) \leq \varphi_1\),转步骤四。
  • 第三步:

    • 若 \(s_1 > \bar{s}\),则 \(s_2 \leftarrow s_1\),\(s_1 \leftarrow \bar{s}\),\(\varphi_2 \leftarrow \varphi_1\),\(\varphi_1 \leftarrow \bar{\varphi}\),转步骤五。
    • 若 \(s_1 \leq \bar{s}\),则 \(s_0 \leftarrow s_1\),\(s_1 \leftarrow \bar{s}\),\(\varphi_0 \leftarrow \varphi_1\),\(\varphi_1 \leftarrow \bar{\varphi}\),转步骤五。
  • 第四步:

    • 若 \(s_1 > \bar{s}\),则 \(s_0 \leftarrow \bar{s}\),\(\varphi_0 \leftarrow \bar{\varphi}\),转步骤五。
    • 若 \(s_1 \leq \bar{s}\),则 \(s_2 \leftarrow \bar{s}\),\(\varphi_2 \leftarrow \bar{\varphi}\),转步骤五。
  • 第五步:若 \(|s_2 - s_0| < \epsilon\),则输出 \(s^* = s_1\);否则,转步骤二。

标签:bar,leftarrow,varphi,mu,要点,alpha,第二次,最优化,lambda
From: https://www.cnblogs.com/Mount256/p/18517975

相关文章

  • 力扣-Mysql-1369-获取最近第二次的活动(困难)
    一、题目来源 1369.获取最近第二次的活动-力扣(LeetCode)二、数据表结构表: UserActivity+---------------+---------+|ColumnName|Type|+---------------+---------+|username|varchar||activity|varchar||startDate|Date......
  • 网络安全基础要点知识介绍
    文章目录网络安全网络安全问题概述两类密码体制数字签名鉴别报文鉴别实体鉴别密钥分配对称密钥的分配公钥的分配互联网使用的安全协议运输层安全协议参考文献网络安全网络安全问题概述计算机网络的通信面临两大类威胁:被动攻击和主动攻击。被动攻击:指攻击者从网络上......
  • 股市投资有哪些要点需要注意?
    炒股自动化:申请官方API接口,散户也可以python炒股自动化(0),申请券商API接口python炒股自动化(1),量化交易接口区别Python炒股自动化(2):获取股票实时数据和历史数据Python炒股自动化(3):分析取回的实时数据和历史数据Python炒股自动化(4):通过接口向交易所发送订单Python炒股自动化(5):......
  • 第二次考试函数编程
    05类##1publicintsum(double...values)//接受若干个,最后一个为valus##2//构造器条件判断if(x>0&&y>0&&z>0&&p>0)else ##3/数字转化成字符串后返回doublearea=this.width*this.height;returnString.forma......
  • 股票量化投资是什么,有哪些要点需要知道?
    Python股票接口实现查询账户,提交订单,自动交易(1)Python股票程序交易接口查账,提交订单,自动交易(2)股票量化,Python炒股,CSDN交流社区>>>量化投资的定义股票量化投资是一种依据数学模型和计算机算法开展的投资策略。它并非像传统投资那样依靠直觉或简单的基本面分析,而是深入......
  • 优秀图书推荐《单元测试:原则、模式和实践》与要点解析
    一.单元测试历史背景     单元测试在软件开发中已经存在了几十年,但直到21世纪初,它才成为软件开发过程中的一个标准实践。随着敏捷开发方法的兴起,单元测试变得更加重要,因为它支持快速迭代和持续集成。VladimirKhorikov的书《单元测试:原则、模式和实践UnitTesting:Principl......
  • MySQL基础函数的学习要点和步骤
    MySQL基础函数的学习要点和步骤可以归纳为以下几个方面:学习要点1.函数的概念:  -函数是一段可以直接被另一段程序调用的程序或代码。2.分类理解:  -字符串函数:如`CONCAT()`,`LOWER()`,`UPPER()`,`LPAD()`,`RPAD()`,`TRIM()`,`SUBSTRING()`等,用于处理字符串......
  • GDPR核心要点详解与实践应用
    1.基本原则(第5条)©ivwdcwso(ID:u012172506)GDPR的7个基本原则及其实践应用:合法性、公平性和透明度实例:Netflix清晰说明如何使用用户数据,并获得用户同意。目的限制实例:LinkedIn仅将收集的职业信息用于networking目的,不用于其他未经授权的用途。数据最小......
  • 数据采集与融合第二次实践
    第二次作业报告一、作业内容概述在本次作业中,我完成了以下三个任务:作业①:从中国气象网(http://www.weather.com.cn)爬取指定城市的7日天气预报,并将数据保存至数据库。作业②:使用requests和BeautifulSoup库定向爬取股票相关信息,并存储在数据库中。作业③:爬取中国大学2021主......
  • 八要点助你精准挑选沙发,确保家装避坑!
    沙发可以称作是家里的第二张床,舒适是必不可少的要素。但是现在市场上的沙发种类繁多、鱼目混珠,挑选起来让人头大。那么,应该怎么选择一款优质的沙发呢?我们应该从以下八个方面进行选择。沙发材质:经济预算充足,可以选择真皮沙发,记住要选择头层皮,不要选二层皮。预算少的可以选择棉麻......