第3章_一维优化方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
■ 二次插值法
求解一维目标函数 f (X)最优解的过程,称为一维优化(或一维 搜索),所使用的方法称为一维优化方法。 一维优化方法,它不仅可用来解决一维目标函数的求优问题, 且常用于多维优化问题在既定方向上寻求最优步长的一维搜索。 由前数值迭代法可知,求某目标函数的最优值时,迭代过程每 一步的格式都是从某一定点 X (k ) 出发,沿着某一使目标函数下降的 规定方向S (k ) 搜索,以找出此方向的极小点 X ( k 1)。这一过程是各种 最优化方法的一种基本过程。
在此过程中因 X (k ) 、 S (k ) 已确定,要使目标函数值为最小,只需 找到一个合适的步长 (k )就可以了。 这也就是说,在任何一次迭代计算过程中,当起步点 X (k )和搜索 方向 S (k )确定之后,就把求多维目标函数极小值这个多维问题,化解 为求一个变量(步长因子α )的最优值 (k ) 的一维问题。 如图3-1 所示。
■ 然后采用缩小区间或插值逼近的方法得到最优步长,即求出该 搜索区间内的最优步长α*和一维极小点 X *。
常用的一维搜索方法主要有: 分数法 黄金分割法( 0.618法 ) 二次插值 三次插值法等 本节介绍最常用的黄金分割法和二次插值法。
3.1 搜索区间的确定
根据函数的变化情况,可将区间分为单峰区间和多峰区间。 所谓单峰区间,就是在该区间内的函数变化只有一个峰值,即函 数的极小值,如图3-2所示。 设区间 [α1,α3] 为单峰区间, 而α2 为该区间内的一点, 若有 α1<α2<α3 或 α1>α2>α3 成立,则必有 f(α1)> f(α2)< f(α3) 同时成立。 图3-2 单峰区间 即在单峰区间内的极小值点 X* 的左侧: 函数值呈下降趋势, 而在极小值点 X* 的右侧: 函数值呈上升趋势。 也就是说,单峰区间的函数值呈 “高-低-高” 的变化特征。
dp( ) B 2C 0 d
解得
*
* p
B 2C
(3-5)
为求得 p ,应设法求得式(3-5)中的待定系数 B和C。
由于所构造的二次插值函数曲线通过原函数上的三个点,因 此将三个点 1, f1 ),(2 , f2 ) 及 3 , f3 ) 代人方程式(3-5)可得 ( (
黄金分割法的内插点选取原则是: 每次区间缩短都取相等的区间缩短率。按照这一原则,其区间缩 短率都是取λ= 0.618,即该法是按区间全长的0.618倍的关系来选取两 个对称内插点α 1,α 2的。 如图3-6所示, 设原区间[a,b]长度为L, 区间缩短率为λ。 为缩短区间,黄金分割法 要求在区间[a,b]上对称地取 两个内分点α1和α2,设两个对 称内分点交错离两端点距离为 l,则 图3-6 0.618法新、旧区间的几何关系
图3-1 一维搜索示意图
从点X (k)出发,在方向S (k)上的一维搜索可用数学表达式为
min f ( X ( k ) S ( k ) ) f ( X ( k ) ( k ) S ( k ) ) X ( k 1) X ( k ) ( k ) S ( k ) )
目前,在一维优化搜索中,确定单峰区间常用的方法主要是 进退试算法。 进退试算法的基本思想为: 按照一定的规律给出若干试算点,依次比较各试算点的函数 值的大小,直到找到相邻三点的函数值按 “高-低-高” 变化的 单峰区间为止。
进退试算法的运算步骤如下: (1)给定初始点α0和初始步长h ,设搜索区间[a, b],如图3-3所示。
f1 f (1 )
若 f1 ≥ f2 ,则取[ 1,b]为新区间,而 2 作为新区间内的第一个 试算点,即令 a 1 , 1 2 , f1 f2
而另一试算点可按下式计算出来: 2 a 0.618(b a),
f2 f (2 )
(4) 迭代终止条件判别 若满足b-a ≤ε ,则转 下一步; 否则返回步骤(3),进 行下一次迭代计算,进一步 缩短区间。 (5) 输出最优解
C
( 2 3 ) f1 ( 3 1 ) f 2 (1 2 ) f3 (1 2 )( 2 3 )( 3 1 )
将B,C之值代入式(3-5),可求得
2 2 2 2 B 1 ( 2 3 ) f1 (3 12 ) f 2 (12 2 ) f3 2C 2 ( 2 3 ) f1 (3 1 ) f 2 (1 2 ) f3 * p
图3-3 求搜索区间
(2)将α0 及α0+h 代入目标函数 f(X) 进行计算并比较它们的大小。
(3)若 f (0 ) f (0 h) ,则表明极小点在试算点的右侧,需做前进 试算。 在做前进运算时,为加速计算,可将步长 h 增加 2倍,并取计算 新点为α0+h+2h =α0+3h。 若 f (0 h) f (0 3h) ,则所计算的相邻三点的函数值已具“高 -低-高” 特征,这时可确定搜索区间为 a 0 , b 0 3h 否则,将步长再加倍,并重复上述运算。 (4)若 f (0 ) f (0 h) ,则表明极小点在试算点的左侧,需做后退 试算。在做后退运算时,应将后退的步长缩短为原步长 h 的 1/4,则 取步长为-h/4,并从 0 点出发,得到后退点为 0 h / 4 , 若 f ( 0 h ) f ( 0 ) ,则搜索区间可取为
第3章

一维优化方法
Optimal Design
第3章 一维优化方法
内容简介
一维优化方法是优化方法中最简单、最基本的优化方法。它不 仅用来解决一维目标函数的求优问题,而且也常用于多维优化问题 在既定方向上寻求最优步长的一维搜索。 本章主要介绍了如下方面内容:
■ 搜索区间的确定
■ 黄金分割法(0.618法)
(3-1)
式(3-1)表示对包含唯一变量α的一元函数 f ( X ( k ) S ( k ) )求极小 值,得到最优步长因子 (k ) 和方向S (k)上的一维极小点X (k+1) 。
一维搜索方法一般分两步进行:
■ 首先在方向 S (k)上确定一个包含函数极小点的初始区间,即确 定函数的搜索区间,该区间必须是单峰区间;
4
否则,将步长再加倍,继续后退,重复上述步骤,直到满足单峰区间 条件为止。
h a 0 , 4
b 0 h
上述进退试算法的程序计算框图,如图3-4所示。
图3-4
进退法的程序框
3.2 黄金分割法
3.2.1 黄金分割法的基本原理
黄金分割法,又称0.618法,它是一种等比例缩短区间的直接搜 索方法。 该算法的基本思路是: 通过比较单峰区间内两个插点的函数值,不断舍弃单峰区间的 左端或右端一部分,使区间按照固定区间缩短率(缩小后的新区间 与原区间长度之比)逐步缩短,直到极小点所在的区间缩短到给定 的误差范围内,而得到近似最优解。

5 1 0.6180339887 0.618 2
这意味着,只要取λ= 0.618,就以满足区间缩短率不变的要求。 即每次缩小区间后,所得到的区间是原区间的0.618倍,舍弃的区间 是原区间的0.382倍。 根据以上结果,黄金分割法的两个内插点的取点规则为:
1 a (1 )(b a) a 0.382(b a) 2 a (b a) a 0.618(b a)
第三次: a= -3, b=0.056; a1= -1.833, f2= -0.306; a2= -1.111, f2= -0.988。
3.3 二次插值法
二次插值法又称近似抛物线法。 该法的基本思想是: 在给定的单峰区间中,利用目标函数上的三个点来构造一个二次 插值函数 p( X ),以近似地表达原目标函数 f (X ) ,并求这个插值函数的 极小点近似作为原目标函数的极小点。 该法是以目标函数的二次插值函数的极小点作为新的中间插入点, 进行区间缩小的一维搜索方法。 设一元函数 f (X),在单峰区间 [1,3 ] 内取一点 2 且1 2 3 这三点对应的函数值分别为 f1 f (1 ), f2 f (2 ), f3 f (3 ) ,
如图3-5所示,为使a~b 区间缩小,在单峰区间[a, b]内插入两 个内分点 、 ,且满足 a 1 b,并计算它们的函数值 f(α1), f(α2),并比较它们的大小,可能发生以下情况:
图3-5
黄金分割法的序列消去原理
(1) 若 f(α1)< f(α2),则由于函数的单峰性,极小点必位于区间[a, α2]内,因而可以去掉区间[a2,b],得到缩短了的搜索区间[a,a2], 如图3-5(a)所示; (2) 若 f(α1) > f(α2),显然,极小点必位于[α1,b]内,因而可去 掉区间[a,α1],得到新区间[α1,b],如图3-5(b)所示; (3) 若 f(α1) = f(α2),则极小点应在区间[α1,α2]内,因而可去掉[a, α1] 或 [α2,b],甚至将此二段都去掉,如图3-5(c)所示。 对于上述缩短后的新区间,可在其内再取一个新点α3,然后将此 点和该区间内剩下的那一点进行函数值大小的比较,以再次按照上述 方法,进一步缩短区间,这样不断进行下去,直到所保留的区间缩小 到给定的误差范围内,而得到近似最优解。
p(1 ) A B1 C12 f1 2 p( 2 ) A B 2 C 2 f 2 p( ) A B C 2 f 3 3 3 3
(3-6)
解得系数
2 2 ( 2 32 ) f1 ( 32 12 ) f 2 (12 2 ) f3 B (1 2 )( 2 3 )( 3 1 )
(3-2)
综上所述,黄金分割法的计算步骤如下: (1) 给定初始单峰区间[a, b]和收敛精度ε ; (2) 在区间[a, b]内取两个内插点并计算其函数值: 1 a 0.382(b a), f1 f (1 ) 2 a 0.618(b a), f 2 f ( 2 ) (3) 比较函数值 f1和 f2 的大小: 若 f1 < f2 ,则取[a, 2 ]为新区间,而1 则作为新区间内的第一个 试算点,即令 b 2 , 2 1 , f 2 f1 而另一试算点可按下式计算出 1 a 0.382(b a),
(3-10)
由上可知,在已知一个单峰搜索区间内的 1 , 2 , 3 三点值后, 便可通过二次搜值方法求得极小点的近似值 X * 。由于在求 * p p 时,是采用原函数的近似函数,因而求得的 * 不一定与原函数的极 p 值点 X *重合,见图3-8。 为了求得满足预定精度要求的原函数的近似极小点,一般要进 行多次迭代。为此,可根据前述的序列消去原理,在已有的四个点 1 , 2 , 3 及 * 中选择新的三个点,得到一个缩小了的单峰区间, p 并利用此单峰区间的三个点,再一次进行插值。如此进行下去,直 至达到给定的精度为止。
于是通过原函数曲线上的三个点 (1, f1 ),(2 , f2 ) 和 (3 , f3 ) 可以构成一个 二次插值函数,如图3-8所示。设该二次插值函数为 p( ) A B C 2 (3-4)
图3-8
二次插值法原理
此函数可以很容易地求得它的极小点 * 。令其一阶导数等于零,即 p
首次区间缩短率为:
l L
再次区间缩短率为: ( L l )
l
根据每次区间缩短率相等的原则,则有

l (L l) L l
由此得
2
l 2 L( L l ) 0
l l 即 1 0,或 L L
2 1 0,解此方程取其正根可得
x* ab , 2 f * f ( x* )
黄金分割法的计算框图, 如图3-7所示。
图3-7a1=0.056, f1=0.115; a2=1.944, f2=7.667。
第二次:a= -3, b=1.944; a1= -1.111, f2= -0.988 ; a2=0.056, f2=0.115。
相关文档
最新文档