单变量最优值求解问题
来源:互联网 发布:什么咖啡最提神知乎 编辑:程序博客网 时间:2024/05/29 11:53
背景
- 讨论目标函数为一元单值函数
f:R→R 时的最值求解问题 - 通过迭代求解得到结果
- 这些方法统称为一维搜索法或线性搜索法
- 这是多变量问题求解的特例,也是多变量问题求解的算法的一部分
- 主要逻辑为从初始搜索点
x(0) 开始,产生一个迭代序列x(1) ,x(2),... ,在第k=0,1,2,... 次迭代中,通过当前迭代点x(k) 和目标函数f 构建下一个迭代点x(k+1)
解法
黄金分割法
- 适用范围
- 求解在闭区间
[a0 ,b0] 上的极点 - 必须存在唯一局部极点,即在
[a0,b0] 上是单峰的
- 求解在闭区间
- 思想
- 挑选区间
[a0,b0] 中的点,计算对应的目标函数值,并不断缩小极点所在的区间 - 利用尽可能少的计算次数来找出极点,直到达到足够的精度水平
- 如果只挑一个点,并不知道极点在点的左侧还是右侧,因此需要挑两个点进行计算,假设挑中
a1 和b1 ,满足a0<a1<b1<b0 ,且有a1−a0=b0−b1=ρ(b0−a0) ,也就是说,这里的ρ 是用来控制区间缩小的范围的,因此ρ<12 。并且根据f(a1) 和f(b1) 的值来判断新区间为[a1,b0] 还是[a0,b1] ρ 的取值究竟多少才使得效率最高?假设第一次计算出来了a1 和b1 ,然后根据大小关系把范围缩小成[a0,b1] ,那么a1 不能白计算啊,所以如果让a1=b2 是不是下次只需要计算a2 的函数值就可以了,每次迭代少计算一次区间边界的函数值。按照这个思想来计算ρ ,则不妨设b0−a0=1 ,有计算后得到a1−a0=b1−b0=ρ且a1=b2 b1−a0=1−ρ 又根据b1−a1=1−2ρ 得到ρ(b1−a0)=b1−b2=b1−a1 ρ(1−ρ)=1−2ρ ρ=3−5‾√2≈0.382 - 在上面计算出的
ρ 的条件下,每次迭代都会将区间压缩为原来的1−ρ=5√−12 ,正好这个比例是黄金分割比,因此该算法成为黄金分割法。
- 挑选区间
斐波那契数列法
- 思想
- 该算法在黄金分割法的基础上,允许
ρ 的值不断调整,例如第i 次迭代使用参数ρi ,第i+1 次迭代使用参数ρi+1 ,以此类推。 - 同样还是希望每次迭代只计算一次区间边界的函数值,因此稍微修改一下黄金分割法中的式子,有有多组序列
ρk+1(1−ρk)=1−2ρk {ρk} 都满足上式,其中,在黄金分割法中的序列ρ1=ρ2=ρ3=...=3−5√2 就满足上式 - 对于给定的
{ρk} ,经过n 次迭代后,可以把区间长度压缩至(1−ρ1)(1−ρ2)...(1−ρn) ,所以如果我们希望压缩效率尽量高,就让压缩后的长度尽量小,因此我们的目标是min(1−ρ1)(1−ρ2)...(1−ρn) s.t.ρk+1=1−ρk1−ρk,0≤ρk≤12,k=1,...,n−1 - 可以证明
ρ1=1−FnFn+1 ρ2=1−Fn−1Fn ... ρk=1−Fn−k+1Fn−k+2 ... 是上述问题的解,其中ρn=1−F1F2 Fk 表示斐波那契数列的第k 项,此时压缩后的长度(1−ρ1)(1−ρ2)...(1−ρn)=FnFn+1Fn−1Fn...F1F2=F1Fn+1=1Fn+1 - 由于该序列是最优的,因此斐波那契数列法是会优于黄金分割法的。
- 需要注意的地方: 当最后一次迭代时,
ρn=1−F1F2=12 ,在这种情况下,缩进的两个点将重合在区间中点处,为了避免这种情况,在最后一次迭代时,令ρn=12−ϵ
- 该算法在黄金分割法的基础上,允许
二分法
- 适用范围
- 在黄金分割法的适用范围中,还要求函数
f 是连续可微的,这样在区间压缩的过程中还可以使用函数的一阶导数f′
- 在黄金分割法的适用范围中,还要求函数
- 思想
- 确定区间的中点x^{(n)}=\frac{a_{n-1} + b_{n-1}}{2},计算
f 在x^{(n)}处的一阶导数f′(x(n)) ,根据导数的正负判断区间保留左半边还是右半边 - 经过
n 次迭代后,区间压缩至原来的12n
- 确定区间的中点x^{(n)}=\frac{a_{n-1} + b_{n-1}}{2},计算
牛顿法
- 适用范围
- 在二分法的基础上,还要要求函数
f 是连续二阶可微的,也就是说在x(k) 处的f(x(k)) ,f′(x(k)) ,f″(x(k)) 均可以求得
- 在二分法的基础上,还要要求函数
- 思想
- 刚开始随机选择一个点
x(0) ,将原式f 在做二阶泰勒展开,得到该二阶泰勒展开可以看做q(x)=f(x(0))+f′(x(0))(x−x(0))+12f″(x(k))(x−x(k))2 f(x) 在x(0) 处的近似,因此求出二阶展开的极值点可以近似于求出f 的极值点,因此有得到0=q′(x)=f′(x(k))+f″(x(k))(x−x(k)) 可以令x=x(k)−f′(x(k))f″(x(k)) x(k+1)=x 进行下一次迭代,不断逼近极值点,即x(k+1)=x(k)−f′(x(k))f″(x(k))
- 刚开始随机选择一个点
割线法
- 适用范围
- 牛顿法需要用到二阶导数,但是如果二阶导数不存在,则可以通过一阶导数进行近似得到二阶导数,即
f″(x(k))≈f′(x(k))−f′(x(k−1))x(k)−x(k−1)
- 牛顿法需要用到二阶导数,但是如果二阶导数不存在,则可以通过一阶导数进行近似得到二阶导数,即
- 算法
- 将二阶导数的一阶导数近似带入牛顿法迭代公式中,得到
x(k+1)=x(k)−x(k)−x(k−1)f′(x(k))−f′(x(k−1))f′(x(k)) - 和牛顿法不同的是,该方法需要找到两个初始点
x(−1) 和x(0) ,而非牛顿法的一个初始点
- 将二阶导数的一阶导数近似带入牛顿法迭代公式中,得到
阅读全文
0 0
- 单变量最优值求解问题
- 优化与求解非线性方程组(单变量问题)
- 批量单变量求解 office wps 单变量求解比较
- Python使用tensorflow中梯度下降算法求解变量最优值
- 动态规划求解资源最优分配问题
- python回溯法求解0-1背包问题的最优值
- 【python学习笔记】13:用梯度下降法求解最优值问题
- 惩罚函数法(内点法、外点法)求解约束优化问题最优值 matlab
- 动态规划求解最大子段问题的最优解
- 蚁群算法求解迷宫最优路径问题
- poj1141根据不同规模构造最优子问题求解DP
- 穷举/动态规划 求解商品最优价格问题
- 数据结构--用栈求解迷宫问题(非最优解)
- 罚函数法求解约束问题最优解
- 关于迷宫求解及其最优解的问题
- 黄金分割法推导及单变量函数近似最优解
- 迷宫求解最优路径
- 最优控制LQR求解
- 0MQ -- zmq_recv
- 堆排序-代码版
- javaweb的错误解决
- UML活动图的编写
- bootstrop中显示元素需要注意以什么方式显示的问题
- 单变量最优值求解问题
- ssm mabits 遇到Mapped Statements collection does not contain value。
- 线程安全与可重入函数对比
- 随性而发
- Linux awk命令详解
- 个人学习之提取app以及Assets.car包中的素材
- 0MQ -- zmq_poll() async I/O
- iOS11 新特性-Core ML (二)手把手教你生成 Core ML 模型
- Java正则表达式匹配