第三章 一维搜索方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
进
f1
f2
f3
h0
α1
h0
2h0
α3 α2 h
α2α αα3α α 3 1 2 2
2)若f1 f 2 , 则作后退运算,令 h h, 将
退
1 f1与 2 f 2 对调,并取第三试点 3 2 h, 并计算函数值 f 3 f ( ) ,
3
比较对调后的 f 2与f 3 .
第四节一维搜索的插值方法
假定要在某一区间内寻找函数的极小点的位置,虽然没有函数 表达式,但能够给出若干试验点处的函数值。 我们可以根据这些点处的函数值,利用插值的方法建立函数的 近似表达式,进而求处函数的极小点,作为原来函数的极小点 的近似值。这种方法称作插值法,也称函数逼近法。
一、牛顿法(切线法)
α2
α2
图3-1 具有单谷性的函数
说明:
单峰区间内,函数可以有不可微点,也可以是不连续
函数;
确定的搜索区间必定是一个含有最优点α*的单峰区间。
f (x) f (x)
0
α1
α3
α
0
α1
α3
α
2.进退法的基本思路:
由单峰函数的性质可知,在极小点α*左边函 数值应严格下降,而在极小点右边函数值应严格 上升,因此可以从某一个给定初始点α1出发,以 初始步长h0沿着目标值的下降方向,逐步前进或 后退,直至找到相继的3个试点的函数值按“大小-大”变化为止。
float golden(float a,float b) {float x,x1,x2,B=0.618,e=0.00001; x1=b-B*(b-a); x2=a+B*(b-a); do { if(f(x1)>=f(x2)) { a=x1; x1=x2; x2=a+B*(b-a); } else { b=x2; x2=x1; x1=b-B*(b-a); } }while(fabs(x1-x2)>=e); x=(x1+x2)/2; return(x); }
否则作4。 4)令
k k 1
转1。
优点:收敛速度快。 缺点:每一点都要进行二阶导数,工作量大; 要求初始点离极小点不太远,否则有可能使极小化 发散或收敛到非极小点。
二、二次插值(抛物线法)
利用 y f a 在单谷区间中 1 2 3 的函数值
f 1 f 2 f 3 ,作出如下的二次插值多项式
从极值的必要条件求得
P p a1 2a2 p 0
p a1 / 2a2
要求出系数 a1 和 a2 ,联立方程组(1)、(2)、(3)。
2 a1 a1 a2 a2 a12 a2 y1 y2
2 2 a1 a2 a3 a2 a2 a3 y2 y3
c 1 a p a1 a3 1 2 c2
图3-10 二次插值法
a)第一次迭代 b第二次迭代
(ap a2 )h 0
a1
a
2 2
2 a3 y1 a32 a12 y2 a12 a22 y3
a1 a2 a2 a3 a3 a1
a2
a
2
a3 y1 a3 a1 y2 a1 a2 y3
a1 a2 a2 a3 a3 a1
d T f x *d T Gd 0
则
T d f x * T d Gd
从上式看,需要求导进行计算,对于函数关系复杂的, 解析法十分不便。
2、数值法 数值法基本思路:确定 * 的搜索区间,在不断缩小 区间,最终获得近似值。
直接法——应用序列消去原理:
进退法、黄金分割法
P a0 a1 a2 2
它应满足条件
P 1 a0 a11 a212 y1 f 1 (1)
P 2 a0 a12 a222 y2 f 2
(2) (3)
P 3 a0 a13 a232 y3 f 3
3 . 进退法的步骤:
(1)给定初始点α0和初始步长h0;
(2)令α1 α0 , h h0 , α2 α1 h, 得到两试点α1、α2, 并计算函数值f1 f ( α1 ) , f 2 f ( α2 ) ;
(3)比较f1与f2,存在两种情况:
1)若f1 f 2 , 则作前进运算, 取第三个点α3 α2 h, 计算f 3 f ( α3 ) , 比较f 2与f 3
一维搜索函数 y f ,假定一给出极小点的一个较好的近 似点 0 ,因为一个连续可微的函数在极小点附近与一个二次 函数很接近,因此,在 0 点附近用一个二次函数 逼近。
1 2 f f 0 f 0 0 f 0 0 2
求二次函数 的极小点作为 f 极小点的新近似点 1
1 0 即
f 0 f 0 0 0
f 0 1 0 f 0
依次继续下去,可得牛顿法迭代公式:
f k k 1 k f k
a1 b b a
a2 a b a
除对称要求外,黄金分割法还要求在保留下来的区间再插入一点 所形成的区间新三段,与原来区间的三段具有相同的比例分布。
2
1
2
2 1 0
1: : 1
0.618
所谓的“黄金分割”是指将一线段分成两段的方法,使整段长 与较长段的长度比值等于较长段与较短段的比值,即
f x k 1 f x k ak d k ak
即在第K次迭代时,从已知点 X(k)出发,沿给定方向求 最优步长因子α(k),使 f (X(k) + akdk)达到最小值的过程,称 为一维搜索,它是优化搜索方法的基础。
求解一元函数 a 的极小点 a
*
1、解析法
把 f(X(k) + αd(k) ) 沿d(k) 方向泰勒展开,取二次近似:
1 T f x ad f x ad f x ad G ad 2
T
1 2 T f x d f x d Gd 2
T
上式求α的极值,即求α导数为零。
k 0,1, 2,...
牛顿法的几何解释:
图3-9 一维搜索的切线法
牛顿法的计算步骤:
给定初始点
0 ,控制误差 ,并令k=0。
f k
1)计算 f k
2)求 3)若ຫໍສະໝຸດ Baidu
f k k 1 k f k
* a ak 1 ak 则求得近似解 ak 1 ,停止计算,
#include<stdio.h> #include<math.h> float f(float x) {float y; y=x*x*x/3-x*x+1; return(y); }
void main() {float a,b,x; printf("Enter two numbers:"); scanf("%f,%f",&a,&b); x=golden(a,b); printf("x=%f,f(x)",x,f(x)); }
c) f a1 f b1
函数为单谷, 极小点必在区 间(a1, b)内。
函数为单谷, 极小点必在区 间(a1, b1)内。
为了避免多计算函数值,将第三种情况合并到前两种 情况中。
a)
f a1 f b1
b) f a1 f b1
三、一维搜索方法的分类
图3-3 反向搜索的外推法
三、区间消去法原理
搜索区间(a, b)确定后,采用区间消去法逐步缩短区间, 从而找到极小点的近似值,方法是在区间内任取两点a1,b1, 假设a1<b1,计算其函数值。分以下三种情况:
函数为单谷, 极小点必在区 间(a, b1)内。
a)
f a1 f b1
b) f a1 f b1
进
①若f 2 f 3 , 则找到三个试点α1、α2、α3并且函数
值满足“大 小 大”,搜索区间为 [α1 , α3 ]
h 2h, 1 2、 ② 若f 2 f 3 , 则步长加倍,即令
2 3、 3 2 h直到找到函数值满足 “大 小 大”,搜索区间 [a, b] [1 , 3 ]
① 若f 2
f 3,则搜索区间 [a, b] [3 , 1 ];
② 若f 2
f 3 , 则步长加倍,继续作后 退运算,即令 h 2h,
1 2、 2 3、 3 2 h计算f 2与f 3直到找到“大
小 大”搜索区间 [a, b] [ 3 , 1 ]
f3
退
f2
f1
f2
f1
2h0
α2
f3
h0
α1 α2
h0
α3 α2 h
α2α1 α3 α2 α3 α1 α2
总结进退法:给定初始值及初始步长向前试探,如果函数 值上升,则步长变号,即改变试探方向。如果函数值下降, 则不改变试探方向,并将步长加倍,最后找到函数值“高 -低-高”。
图3-2 正向搜索的外推法
从前面的分析可知,每次缩短区间,只需要在区间内 在插入一点并计算其函数值。 而插入点的位置,可以由不同的方法来确定。就形成 了不同的一维搜索方法。 试探法 一维搜索方法分类 插值法 二次插值法 黄金分割法
第三节一维搜索的试探法
最常用的一维搜索试探法是黄金分割法,又称0.618法。 对目标函数的要求:单谷、可以不连续。 原理:区间消去法,使搜索区间无限缩小,从而得到极 小点的近似解。特殊之处是要求插入点a1、a2的位置相 对于区间[a, b]两端点具有对称性,即:
黄金分割法的搜索过程: 1) 给出初始搜索区间(a, b)及收敛精度ξ,将λ赋 以0.618。 2)计算区间分割点α1和α2,并计算其对应的函数 值。 3)根据区间消去法原理缩短区间。注意:为了能 用原来的坐标点计算公式,须进行区间名称得代 换,并在保留区间中计算一个新的分割点及其函 数值。 4)检查区间是否满足迭代准则,如不满足返2)。 5)如果条件满足,则取最后两点的平均值作为极 小点的近似解。
第三章 一维搜索方法
第一节 概
第二节
述
搜索区间的确定和区
间消去法原理
第三节 一维搜索的试探方法
第四节 一维搜索的插值方法
第一节 概 述
采用数学规划法求函数极值点的迭代计算:
x
k 1
x ak d
k
k
K+1次迭代的搜索方向 搜索的最佳步长因子
k 当搜索方向d 给定,求最佳步长 ak 就是求一元函数的极值。
2 2 2
所以
p a1 / 2a2
y3 y1 c1 a3 a1
1 a 2 a
2 a3 y1 a32 a12 y2 a12 a22 y3
a3 y1 a3 a1 y2 a1 a2 y3
令 则
y2 y1 c1 a a c2 2 1 a2 a3
近似法——利用多项式函数逼近(曲线拟合)原理:
二次插值法、 三次插值法
步骤: ① 进退法找单谷区间; ② 0.618法或插值法在单谷区间找最优点。
第二节 搜索区间的确定和区间消去法原理
一、确定搜索区间的外推法
1. 单峰区间(高-低-高)
在区间 [a,b ]内,函数只 有一个峰值,则此区间为单峰 区间。单峰区间内,一定存在 一点α*,当任意一点α2>α* 时,f(α2)>f(α*), 当α2<α*时,仍有 f (α2 )> f(α*) ,则α*是 最优点,也即为最优步长因子α(k)。