![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
优化方法
Kingdom_bo
西部某985毕业生,现就职于阿里巴巴集团。
展开
-
牛顿下降回溯直线及基于停止准则的搜索算法结果分析和比较(XJTU优化课第四章算法实现)
今天这个程序的主要是比较在求一个约束函数的最优值时,采取停止准则的搜索方法和回溯直线搜索方法的优劣。话不多说,先上结论:就我所测试的函数,我改变了多个测试函数和不同的初始值,并测试了不同的回溯因子。结论是我要吹爆停止准则的搜索方法,该方法总是能够获得较好的优化值,但是回溯法甚至不能满足初始迭代条件,即使能够满足,得到的优化结论误差也大得离谱。话不多说,我直接上相关算法,算法如下:基于以上算法,我构造了一个二元函数,并编写了以下代码进行测试。读者可以直接上手我的代码进行测试。#等式约束的牛顿方法+回溯原创 2021-06-13 01:41:16 · 1073 阅读 · 0 评论 -
优化方法之正定二次函数的共轭梯度法及其实现(基于Python)
共轭梯度法也是共轭方向法中的一种,但是它减少了梯度方向的搜索量,它直接采取经过一维搜索最小点处的梯度方向作为我们的搜索方向,因而在计算速度上有了一定的提升。如果你对这些优化算法感到困惑,现在你需要明白共轭方向法是基于最速下降法的改进,因为最速下降法在接近最优值时的锯齿现象降低了迭代搜索的速度,共轭法则提升了最速下降法的速度。本节所讲的共轭梯度法则是共轭方向法的进一步改进,一个直观原因是它减少了方向的搜索。同时此算法需要同时计算当前点和下一点并据此得到一些新的中间变元。在你明白这个逻辑 后,请参考以下算法原理原创 2021-06-12 15:44:24 · 2497 阅读 · 3 评论 -
优化方法之共轭梯度法分析与实现(基于Python)
共轭梯度法也是解决无约束优化问题的常用迭代算法,它结合了最速下降法矩阵共轭梯度的性质,可以加快算法的迭代过程。且如果初始点选取后的最终优化中不满足精度条件,还可保存上一步得到的迭代点进行再次迭代直到获得较好的优化值。以上过程一般都可以获得较好的迭代点和优化值。该算法简介如下:根据以上算法过程,我们可以选取目标函数进行测试,以下是测试代码:(注:读者可以自由地在初始数据修改初始点、精度等参数,以观察和比较不同初始点的迭代过程,迭代最优值的差异等,如果读者希望修改目标函数,则需要在相应的函数定义处进行原创 2021-06-12 01:47:19 · 3260 阅读 · 2 评论 -
优化方法之最速下降法(采用解析法求解步长+直接采用一阶导求解下降方向+python 代码实现(可直接拿走使用))
最速下降法是我们在求解优化问题时经常使用的方法,它的核心思想在于步长以及方向向量的选择和求解。最速下降法要求我们在每一步都尽可能下降最大的函数值。它的核心算法步骤可见下:其中,在确定方向向量后,我们需要求解该方向上的最优步长,以使步长下降最多。步长的求解主要有以下两种方法:这里,我们选择解析法求解最佳步长。它的核心思想在方法二中已有体现。步长选取过大或者过小都是不利于函数下降的。以下是几幅比较直观的图。我们这里对以下函数使用最速下降法求解其最优值。这里就依据前述算法编写代码如下:# 这个程原创 2021-06-04 22:13:17 · 3460 阅读 · 10 评论 -
优化方法之牛顿法
这个程序利用牛顿迭代的方法求解最优值程序如下:#这个程序利用牛顿法求解最优化问题import mathimport numpy as npfrom matplotlib import pyplot as pltdef Fun(x): return math.exp(x)-5*x-8def Fun1(x): return math.exp(x)-5def Fun2(x): return math.exp(x)# 设置初始值x0=3x1=x0+Epsilon原创 2021-06-04 19:26:27 · 185 阅读 · 0 评论 -
优化方法之黄金分割法(Python实现)
今天给大家带来的是黄金分割法的Python实现,不同于传统代码,这里Python代码可以直接使用,对于你想求取的目标函数的最小值,你只需要修改代码中的目标函数的表达式以及对于的函数区间即可运行。(这里你仅需要保证他是单峰函数即可)因此,这个程序非常适合转移使用。另外,如果大家对黄金分割法求解单峰函数最小值的思想不是很了解,可以自行谷歌or百度。import mathimport numpy as npimport matplotlib.pyplot as plt#This program is u原创 2021-06-04 02:05:17 · 2244 阅读 · 0 评论 -
优化方法之进退法(Python实现)
在求解函数最小值时,有一种方法叫做进退法,此法又名成功失败法。它的核心思想是从指定的某个初始值出发,任意选择一个方向和步长,向前试探性地走一步,并求出该点函数值。如果该点函数值优于当前函数值,则向前走一步,并加大探测的步长继续进行探索。否则,则将步长向反方向后退一小步。如此反复探索,直到步长缩小到一定程度为止。最后搜索到的点即为极小值点,对应函数值即为极小值。该算法可简述如下:1.给定初始点x0,初始步长Step>0,精度Epsilon>0,k=0,步长因子0<Alpha<1,原创 2021-06-04 18:17:06 · 1687 阅读 · 0 评论 -
优化方法之最速下降法(Python实现)
最速下降法是优化方法中很重要的一类基础搜素算法,其具体算法如下:在接下来的算法实现中,我们使用二阶微分的方法求解最优步长(当然也可以用一维搜索算法进行实现),直接取函数的一阶偏导作为方向向量.具体实现代码如下:from sympy import*import mathimport matplotlib.pyplot as pltimport numpy as npdef ObjFunction(x1,x2): value =2*x1*x1+x2*x2 return valu原创 2021-06-04 11:47:46 · 4231 阅读 · 0 评论