第三节一维搜索方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
k+1
− (k )
几何意义:从 x
出发 ,沿 s 方向一维搜索,就是求
(k)
方向与等值线的切点此时的步长因子即为最优步长因
有的一维搜索方法:黄金分割法和二次分割法 黄金分割法和二次分割法
图所示一维函数图象在 [a,e]区间有两个局部 点和两个局部极大点。 。无论求哪个极值点, 将原区间[a,e]划分出若干小区间 划分出若干小区间,即在区间 b] [c,d]中有局部极小点而区间 中有局部极小点而区间[b,c] [d,e]中有 极大点。这些子区间的共同特点是都单峰区 这些子区间的共同特点是都单峰区 谓单峰区间,是指函数在区间只有一个极值 是指函数在区间只有一个极值 f(x)
2 1 2 2
(x1) = ax + bx1 + c = f1
2 3
(x2 ) = ax + bx2 + c = f2
(x3 ) = ax + bx3 + c = f3
此方程组可得给定函数的表达式
2 2 2 3 2 3 2 1 2 1 2 2
(x2 − x1) f1 + (x3 − x1) f2 + (x1 − x2 ) f3 a=− (x1 − x2 )(x2 − x3 )(x3 − x1)
− (k)
α =α* 求最优步长 迭代公式:设 α*在 αa αb 区间内,则有迭代计算
(α ) →m 得 in
[
]
αk+1 =αk + ∆αk (k = 1,2 ⋯ n) 且在前后两次迭代计 ⋯ 中,应保证 f (αk+1) < f (αk )当 α −α < ε k+1 k 1 或 f ( k+1) − f ( k ) α α ε2为很小的正数)则停止迭代计算 则停止迭代计算,且认为 α* =α
峰区间即为
f (x )
[x1, x3]
)若
f2 > f3 步长加倍继续作前进算法 步长加倍继续作前进算法,即令h=2h,
⇐ f2
f2 ⇐ f3
x1 ⇐x2 x2 ⇐x3
x3 ⇐x2 + h
此重复该过程,直到符合大—小—大的情况为止。 直到符合大
)若
则说明极小点必在 x1 的左方。 作后退运算即步长改为负值,且缩短一定倍数. 如 作后退运算即步长改为负值
.1 概述: − (k 维搜索方法:对任一次迭代 对任一次迭代,总是从已 知点 x
− (k )
发,沿着给定的方向 s 搜索到目标函数的极小 称为一维搜索法
− (k+1)
+ 1)
若设 x s 已知,则目 − 数 f (x) 仅为最优步长α 的函数,即 (k) f (α ) 求使得 ) = f (x +α s ) = f (α) 对
次缩短区间都是取相等的区间收缩率即
x1
x2
b
a
x1
x2
b
分割法要求对称取点,则有 ax1 = x2b 则有
可以看出无论删除那一段,保留区间长度相等 保留区间长度相等
根据收缩率相等的原则
λ=
1− λ
2
(1 − λ ) L λL = λL L
则有
λ
5 −1 λ + λ −1 = 0 λ = 1= ≈ 0.618 2
* *
1 x = (a +b) 2
不能满足继续寻优(计算对称点 计算对称点)直到满足迭代精度为
缩率
次缩小所得的新区间长度与前区间长度之
称为区间收缩率用 λ 表示。 。也称为缩短率,收缩率 常数。 加快区间收缩应保证区间收缩率不变。因此必 加快区间收缩应保证区间收缩率不变 在搜索区间内对称地取计算点 x1 x2
定单峰区间:目的是寻找一个包含一个有函数 目的是寻找一个包含一个有函数 小点 x*的区间,也是一维优化方法要解决的问 也是一维优化方法要解决的问 x 本思想:欲求函数 f (x) 的单峰区间,先任选一个
始点 x0 及初始步长 h 然后进行前进或后退的试 搜索,找到三个点 x1 x2 x3 其中两端点的函数值 中间点的函数值。即 f (x1) > f (x2 ) < f (x3 ) 确定搜索区间 [x1x3 ]
前 进
a
1 2
← ←
a a
2 3
, ,
y1 ← y
2
y y
2 3
a
←
a
பைடு நூலகம்
3
←
a
2
+ h,
y
3
←
f (a
3
)
是
y
3
< y
2
否 输 出
h ←
2h
a1 a y1 y
2 2
, a y
3 3
、基本原理: 通过不断缩短搜索区间的长度来寻求一维函 ) 的极小点原理。
x1
x2
b
a
x1
x2
b
是一种等比例缩短区间的直接搜索方法。 是一种等比例缩短区间的直接搜索方法
*
说明 若(x − x1)(x3 − x ) ≤ 0时,说明
为最优解输出 x = x 2
f = f ( x2 )
*
判断是否满足要求
x − x2 < ε
* p
* p
说明搜索区间足够小 * f (xp ) ≤ f2时输出目标函数最优解 x * f ( x ) p (x 否则 f ( x ) > f 时输出目标函数最优解 x2 f (x2 )
(k) (k)
(k )
− (k) (k) (k)
代公式 x
= x +α s
−
(k )
− (k ) − (k)
k+1)
(α ) = f (x +αs ) = m f (α ) 的最优步长α in
(k) (k) *
−(k)
(k )
=α 的方
*
求α
(k)
基本思想:通过有限次的数值迭代计算 通过有限次的数值迭代计算,使
x2 = a +0.618(b−a)
x2
间[a b] ,区间缩短一次 内,将 b←x2 f1 ≤ f2 极小点在区间 [a x2 ] 内
←x2 f1 ← f2
生新区间 [a b] ,区间缩短一次 区间缩短一次
←x
f ←f
x = a +0.382(b−a)
a
x1
x2
度即
*
b −a ≤ ε 时
f = f (x ) 为近似极小点
区间内按如下规则对称地取两点 称地取两点
x1和 x2
= a +0.382(b −a) x2 = a +0.618(b−a) f1 = f (x1) f2 = f (x2 ) 算他们的函数值
f1 和 f2 的大小有两种可能 a x1 f1 > f2 极小点在区间 [x1 b] 内,将 a ←x1 产生
2)进退算法步骤: 设有一维函数 f (x) 给定初始点 x0初始步长h.
和
f2 存在两种情况 存在两种情况。
2
2
比较 f1 和
若 f1 > f2 则说明极小点在的右方 则说明极小点在的右方,应做前 算法。于是步长加倍,第三个试点 x3 = x1 +3h 第三个试点 算f3 = f (x1 +3h) 比较 f2 , f3 若 f2 ≤ f3 则说明相邻三点的函数值形成了大 则说明相邻三点的函数值形成了大—小 大的特征;构成初始单峰区间 构成初始单峰区间,令 x3 = x1 +3h
* p 2
(a)若
则需比较点 x 和 x2 在搜索区间的 相对位置及其对应的目标函数值的大小,以便 相对位置及其对应的目标函数值的大小 缩短搜索区间得到新的三点。 缩短搜索区间得到新的三点
* p
若
x * − x2 ≥ ε p
二次插值法区间缩短的4种情况 4
a → α , b → α ,0.5(α + α ) → α
(x2 − x3 ) f1 + (x3 − x1) f2 + (x1 − x2 ) f3 = 0
条直线上,此时可取中间插值点 x2 为近似 此时可取中间插值点
* p
* p * p
x
* p
其对应的函数值为近似极小值 f (x )
* p
x 已在区间之外。这种 情况只有当区间已缩小的很小和三个插值点十 接近时,由于计算机的舍入误差才可能性 由于计算机的舍入误差才可能性。因 可把 x 2 及其对应的目标函数的 f 2 = f ( x2 )
a3 ← a2 , y3 ← y2 a ←a , y ← y
f2 ⇐ f3
x1 ⇐x2 x2 ⇐x3
继续比较 f2, , 反复循环直到出现大—小—大情况为止
⇐ f2
x3 ⇐x2 + h
输 入 α , h ,h ←
0 0
h
0
a a
0 1
→ + H
a
1
y1 ← a
1
f (a1 ) y
2
→
←
f (a
2
)
后 退
y
2
> y1
h ← − h a3 ← a1,
y
3
←
y1
1 2
1 ⋯ ),将x1 ,x2, f1, f2对调,令 倍( n, n⋯ 2 = −h, x ⇐x1, x1 ⇐x2, x2 ⇐x, f ⇐ f1,
⇐ f 2 f 2 ⇐ f , x3 = x2 + h
计算
f3 = f (x3)
f2 ≤ f3则初始单峰区间以找到 即 x3 ,x 1
则步长加倍继续后退 ,即令 即令h=-2h,
(x − x ) f1 + (x − x ) f2 + (x − x ) f3 b= (x1 − x2 )(x2 − x3 )(x3 − x1) = (x3 − x2 )x2 x3 + (x1 − x3 )x1x3 f2 + (x2 − x1)x1x2 f3
p
插值多项式
= 2ax + b = 0
p(x)
* p
x) = ax2 + bx + c
(x2 − x1) x2 − x3
−c1
c1 1 x = (x1 + x3 − ) 2 c2 f p = f (x* ) p
可能看作是 f (x)在区间 [a b]上的近似最优点
、计算步骤 确定初始搜索区间[a b] 和精度ε(这里可以 [a 进退法确定一个很小的插值区间 (a b) 在区间内取三点 x x x
的极小点为
b x =− 2a 2 2 2 2 2 2 (x2 − x3 ) f1 + (x3 − x1 ) f2 + (x1 − x2 ) f3 1 * xp = 2 (x2 − x3 ) f1 +(x3 − x1) f2 + (x1 − x2 ) f3 f3 − f1 c1 = x3 − x1 ( f2 − f1) c2 =
1 3 1 3 1 1 2 2 3
输入a, b,ε
2
y = f (α ), y = f (α ), y = f (α )
3
C1 ←
y3 − y1 a3 − a1 ( y2 − y1 − C1 ) a2 − a1
C2 ←
(a2 − a3 )
a p ← 0.5(a1 + a2 − C1 yP ← f (a p )
C2
)
是
y2 − y p y2
≤ε
否
是
y2 < y p
否
是
(a p − a2 )h > 0
否
← a2 , y* ← y2
a* ← a p , y* ← y p
是
y2 ≥ y p
否 是
y2 ≥ y p
否
结束
a1 ← a2 , y1 ← y2 a ←a , y ← y
a3 ← a p
a1 ← a p y ←y
x1 < x2 < x3 三点的函数值为 f1 = f (x1) f2 = f (x2 ) f3 =
f1 > f2 < f3 即满足函数值是大 即满足函数值是大—小—大变化。原目
函数曲线上的3点 (x1 f1) (x2 f2 ) (x3 f3 ) 作为二次插
里a b c为待定系数.可用下述线形方程组确定 可用下述线形方程组确定
所以黄金分割法有称0.618 0.618法 点:程序结构简单容易理解可靠性好 程序结构简单容易理解可靠性好。但计 率偏低,使用于低维优化的一维搜索 使用于低维优化的一维搜索。
基本思想:在寻求目标函数 f (x ) 极小点的区间 在寻求目标函数 取三个点的函数值来构造一个二次插值多项式 )用它的极小点近似地作为原目标函数的极小 。若近似程度不满足精度要求时 若近似程度不满足精度要求时,可反复使用 法随着区间的缩短,二次插值多项式的极小点 二次插值多项式的极小点 逼近原目标函数的极小点一维函数 f (x ) 在搜索 间[a b] 内为单峰函数,在区间内取三点 x1 x2 x 在区间内取三点
1 2 3
计算函数值
* p
1 x1 = a x3 = b x2 = (x1 + x3 ) 2
1
= f (x1) f2 = f (x2 ) f3 = f (x3 )
插值计算 x
)若分母为零即
− f1 f3 − f1 = x2 − x1 x3 − x1
2
即 则说明三个插值点 (x1, f1) (x2 , f2 ) (x3, f3)在同
− (k )
几何意义:从 x
出发 ,沿 s 方向一维搜索,就是求
(k)
方向与等值线的切点此时的步长因子即为最优步长因
有的一维搜索方法:黄金分割法和二次分割法 黄金分割法和二次分割法
图所示一维函数图象在 [a,e]区间有两个局部 点和两个局部极大点。 。无论求哪个极值点, 将原区间[a,e]划分出若干小区间 划分出若干小区间,即在区间 b] [c,d]中有局部极小点而区间 中有局部极小点而区间[b,c] [d,e]中有 极大点。这些子区间的共同特点是都单峰区 这些子区间的共同特点是都单峰区 谓单峰区间,是指函数在区间只有一个极值 是指函数在区间只有一个极值 f(x)
2 1 2 2
(x1) = ax + bx1 + c = f1
2 3
(x2 ) = ax + bx2 + c = f2
(x3 ) = ax + bx3 + c = f3
此方程组可得给定函数的表达式
2 2 2 3 2 3 2 1 2 1 2 2
(x2 − x1) f1 + (x3 − x1) f2 + (x1 − x2 ) f3 a=− (x1 − x2 )(x2 − x3 )(x3 − x1)
− (k)
α =α* 求最优步长 迭代公式:设 α*在 αa αb 区间内,则有迭代计算
(α ) →m 得 in
[
]
αk+1 =αk + ∆αk (k = 1,2 ⋯ n) 且在前后两次迭代计 ⋯ 中,应保证 f (αk+1) < f (αk )当 α −α < ε k+1 k 1 或 f ( k+1) − f ( k ) α α ε2为很小的正数)则停止迭代计算 则停止迭代计算,且认为 α* =α
峰区间即为
f (x )
[x1, x3]
)若
f2 > f3 步长加倍继续作前进算法 步长加倍继续作前进算法,即令h=2h,
⇐ f2
f2 ⇐ f3
x1 ⇐x2 x2 ⇐x3
x3 ⇐x2 + h
此重复该过程,直到符合大—小—大的情况为止。 直到符合大
)若
则说明极小点必在 x1 的左方。 作后退运算即步长改为负值,且缩短一定倍数. 如 作后退运算即步长改为负值
.1 概述: − (k 维搜索方法:对任一次迭代 对任一次迭代,总是从已 知点 x
− (k )
发,沿着给定的方向 s 搜索到目标函数的极小 称为一维搜索法
− (k+1)
+ 1)
若设 x s 已知,则目 − 数 f (x) 仅为最优步长α 的函数,即 (k) f (α ) 求使得 ) = f (x +α s ) = f (α) 对
次缩短区间都是取相等的区间收缩率即
x1
x2
b
a
x1
x2
b
分割法要求对称取点,则有 ax1 = x2b 则有
可以看出无论删除那一段,保留区间长度相等 保留区间长度相等
根据收缩率相等的原则
λ=
1− λ
2
(1 − λ ) L λL = λL L
则有
λ
5 −1 λ + λ −1 = 0 λ = 1= ≈ 0.618 2
* *
1 x = (a +b) 2
不能满足继续寻优(计算对称点 计算对称点)直到满足迭代精度为
缩率
次缩小所得的新区间长度与前区间长度之
称为区间收缩率用 λ 表示。 。也称为缩短率,收缩率 常数。 加快区间收缩应保证区间收缩率不变。因此必 加快区间收缩应保证区间收缩率不变 在搜索区间内对称地取计算点 x1 x2
定单峰区间:目的是寻找一个包含一个有函数 目的是寻找一个包含一个有函数 小点 x*的区间,也是一维优化方法要解决的问 也是一维优化方法要解决的问 x 本思想:欲求函数 f (x) 的单峰区间,先任选一个
始点 x0 及初始步长 h 然后进行前进或后退的试 搜索,找到三个点 x1 x2 x3 其中两端点的函数值 中间点的函数值。即 f (x1) > f (x2 ) < f (x3 ) 确定搜索区间 [x1x3 ]
前 进
a
1 2
← ←
a a
2 3
, ,
y1 ← y
2
y y
2 3
a
←
a
பைடு நூலகம்
3
←
a
2
+ h,
y
3
←
f (a
3
)
是
y
3
< y
2
否 输 出
h ←
2h
a1 a y1 y
2 2
, a y
3 3
、基本原理: 通过不断缩短搜索区间的长度来寻求一维函 ) 的极小点原理。
x1
x2
b
a
x1
x2
b
是一种等比例缩短区间的直接搜索方法。 是一种等比例缩短区间的直接搜索方法
*
说明 若(x − x1)(x3 − x ) ≤ 0时,说明
为最优解输出 x = x 2
f = f ( x2 )
*
判断是否满足要求
x − x2 < ε
* p
* p
说明搜索区间足够小 * f (xp ) ≤ f2时输出目标函数最优解 x * f ( x ) p (x 否则 f ( x ) > f 时输出目标函数最优解 x2 f (x2 )
(k) (k)
(k )
− (k) (k) (k)
代公式 x
= x +α s
−
(k )
− (k ) − (k)
k+1)
(α ) = f (x +αs ) = m f (α ) 的最优步长α in
(k) (k) *
−(k)
(k )
=α 的方
*
求α
(k)
基本思想:通过有限次的数值迭代计算 通过有限次的数值迭代计算,使
x2 = a +0.618(b−a)
x2
间[a b] ,区间缩短一次 内,将 b←x2 f1 ≤ f2 极小点在区间 [a x2 ] 内
←x2 f1 ← f2
生新区间 [a b] ,区间缩短一次 区间缩短一次
←x
f ←f
x = a +0.382(b−a)
a
x1
x2
度即
*
b −a ≤ ε 时
f = f (x ) 为近似极小点
区间内按如下规则对称地取两点 称地取两点
x1和 x2
= a +0.382(b −a) x2 = a +0.618(b−a) f1 = f (x1) f2 = f (x2 ) 算他们的函数值
f1 和 f2 的大小有两种可能 a x1 f1 > f2 极小点在区间 [x1 b] 内,将 a ←x1 产生
2)进退算法步骤: 设有一维函数 f (x) 给定初始点 x0初始步长h.
和
f2 存在两种情况 存在两种情况。
2
2
比较 f1 和
若 f1 > f2 则说明极小点在的右方 则说明极小点在的右方,应做前 算法。于是步长加倍,第三个试点 x3 = x1 +3h 第三个试点 算f3 = f (x1 +3h) 比较 f2 , f3 若 f2 ≤ f3 则说明相邻三点的函数值形成了大 则说明相邻三点的函数值形成了大—小 大的特征;构成初始单峰区间 构成初始单峰区间,令 x3 = x1 +3h
* p 2
(a)若
则需比较点 x 和 x2 在搜索区间的 相对位置及其对应的目标函数值的大小,以便 相对位置及其对应的目标函数值的大小 缩短搜索区间得到新的三点。 缩短搜索区间得到新的三点
* p
若
x * − x2 ≥ ε p
二次插值法区间缩短的4种情况 4
a → α , b → α ,0.5(α + α ) → α
(x2 − x3 ) f1 + (x3 − x1) f2 + (x1 − x2 ) f3 = 0
条直线上,此时可取中间插值点 x2 为近似 此时可取中间插值点
* p
* p * p
x
* p
其对应的函数值为近似极小值 f (x )
* p
x 已在区间之外。这种 情况只有当区间已缩小的很小和三个插值点十 接近时,由于计算机的舍入误差才可能性 由于计算机的舍入误差才可能性。因 可把 x 2 及其对应的目标函数的 f 2 = f ( x2 )
a3 ← a2 , y3 ← y2 a ←a , y ← y
f2 ⇐ f3
x1 ⇐x2 x2 ⇐x3
继续比较 f2, , 反复循环直到出现大—小—大情况为止
⇐ f2
x3 ⇐x2 + h
输 入 α , h ,h ←
0 0
h
0
a a
0 1
→ + H
a
1
y1 ← a
1
f (a1 ) y
2
→
←
f (a
2
)
后 退
y
2
> y1
h ← − h a3 ← a1,
y
3
←
y1
1 2
1 ⋯ ),将x1 ,x2, f1, f2对调,令 倍( n, n⋯ 2 = −h, x ⇐x1, x1 ⇐x2, x2 ⇐x, f ⇐ f1,
⇐ f 2 f 2 ⇐ f , x3 = x2 + h
计算
f3 = f (x3)
f2 ≤ f3则初始单峰区间以找到 即 x3 ,x 1
则步长加倍继续后退 ,即令 即令h=-2h,
(x − x ) f1 + (x − x ) f2 + (x − x ) f3 b= (x1 − x2 )(x2 − x3 )(x3 − x1) = (x3 − x2 )x2 x3 + (x1 − x3 )x1x3 f2 + (x2 − x1)x1x2 f3
p
插值多项式
= 2ax + b = 0
p(x)
* p
x) = ax2 + bx + c
(x2 − x1) x2 − x3
−c1
c1 1 x = (x1 + x3 − ) 2 c2 f p = f (x* ) p
可能看作是 f (x)在区间 [a b]上的近似最优点
、计算步骤 确定初始搜索区间[a b] 和精度ε(这里可以 [a 进退法确定一个很小的插值区间 (a b) 在区间内取三点 x x x
的极小点为
b x =− 2a 2 2 2 2 2 2 (x2 − x3 ) f1 + (x3 − x1 ) f2 + (x1 − x2 ) f3 1 * xp = 2 (x2 − x3 ) f1 +(x3 − x1) f2 + (x1 − x2 ) f3 f3 − f1 c1 = x3 − x1 ( f2 − f1) c2 =
1 3 1 3 1 1 2 2 3
输入a, b,ε
2
y = f (α ), y = f (α ), y = f (α )
3
C1 ←
y3 − y1 a3 − a1 ( y2 − y1 − C1 ) a2 − a1
C2 ←
(a2 − a3 )
a p ← 0.5(a1 + a2 − C1 yP ← f (a p )
C2
)
是
y2 − y p y2
≤ε
否
是
y2 < y p
否
是
(a p − a2 )h > 0
否
← a2 , y* ← y2
a* ← a p , y* ← y p
是
y2 ≥ y p
否 是
y2 ≥ y p
否
结束
a1 ← a2 , y1 ← y2 a ←a , y ← y
a3 ← a p
a1 ← a p y ←y
x1 < x2 < x3 三点的函数值为 f1 = f (x1) f2 = f (x2 ) f3 =
f1 > f2 < f3 即满足函数值是大 即满足函数值是大—小—大变化。原目
函数曲线上的3点 (x1 f1) (x2 f2 ) (x3 f3 ) 作为二次插
里a b c为待定系数.可用下述线形方程组确定 可用下述线形方程组确定
所以黄金分割法有称0.618 0.618法 点:程序结构简单容易理解可靠性好 程序结构简单容易理解可靠性好。但计 率偏低,使用于低维优化的一维搜索 使用于低维优化的一维搜索。
基本思想:在寻求目标函数 f (x ) 极小点的区间 在寻求目标函数 取三个点的函数值来构造一个二次插值多项式 )用它的极小点近似地作为原目标函数的极小 。若近似程度不满足精度要求时 若近似程度不满足精度要求时,可反复使用 法随着区间的缩短,二次插值多项式的极小点 二次插值多项式的极小点 逼近原目标函数的极小点一维函数 f (x ) 在搜索 间[a b] 内为单峰函数,在区间内取三点 x1 x2 x 在区间内取三点
1 2 3
计算函数值
* p
1 x1 = a x3 = b x2 = (x1 + x3 ) 2
1
= f (x1) f2 = f (x2 ) f3 = f (x3 )
插值计算 x
)若分母为零即
− f1 f3 − f1 = x2 − x1 x3 − x1
2
即 则说明三个插值点 (x1, f1) (x2 , f2 ) (x3, f3)在同