1、62第 5 章 一维搜索5.1 最优化算法的简单介绍1算法概念在解非线性规划时,所用的计算方法,最常见的是迭代下降算法迭代:从一点 出发,按照某种规则 A 求出后继点 用 代替 ,重复以)(kx )1(kxk上过程,产生点列 。规则 A 是在某个空间 X 中点到点的映射,即对每一个 ,有点Xk)(xkk)()1(更一般地,把 A 定义为点到集的映射,即对每个点 ,经 A 作用,产生一个点xk)(集 .任意选取一个点 ,作为 的后继点k)( )()1(kkAx定义 1: 算法 A 是定义在空间 X 上的点到集映射,即对每一个点 ,给定个子Xx集 .Xx)(例 1 考虑线性规划: 1 s.tmin
2、2x最优解 设计一个算法 A 求出这个最优解1x1 ,)(21 ,x从一点出发,经 A 作用得到一个闭区间.从此区间中任取一点作为后继点,得到一个点列.在一定条件下,该点列收敛于问题的解利用算法 A 可以产生不同的点列,如以为起点可产生点列:3x ,5/4 32,其聚点是问题的最优解在许多情况下,要使算法产生的点列收敛于全局最优解是比较困难的因此,一般把满足某些条件的点集定义为解集合.当迭代点属于这个集合时,就停止迭代63无约束最优化问题可以定义解集合为 0)(|xf约束最优化问题可以定义解集合为 T-K为|点x2. 算法收敛问题设 为解集合, 是一个算法,集合 .若以任一初点 开始,XA:
3、XYYx)1(算法产生的序列其任一收敛子序列的极限属于 ,则称算法映射 A 在 Y 上收敛收敛速率:定义 2: 设序列 收敛于 ,定义满足)(k*pk*)(1lim0的非负数 p 的上确界为序列 的收敛级)(k若序列的收敛级为 p,就称序列是 p 级收敛的若 且 ,则称序列是以收敛比 线性收敛的1若 或者 且 ,则称序列是超线性收敛的p0例 2 序列 .0 ,akk 1limak序列 以收敛比 a 线性收敛于零k例 3 序列 10 ,2k2ka1lim2ka序列 是 2 级收敛的k注 1:收敛级取决于当 时该序列所具有的性质,它反映了序列收敛的快慢k收敛级 p 越大,序列收敛得越快当收敛级 p
4、 相同时,收敛比 越小,序列收敛得越快。645.2 一维搜索基本概念5.2.1 基本概念在许多迭代下降算法中,得到点 后,需要按某种规则确定一个方向 ,再从)(kx )(kd出发,沿方向 在直线(或射线) 上求目标函数的极小点,从而得后继点 )(kx)(kdL)1(x求目标函数在直线上的极小点,称为一维搜索,或称为线搜索一维搜索可归结为单变量函数的极小化问题求目标函数 在直线 上极小点转化为求一元函数)(xf )()()kkdxf的极小点一维搜索大体可分成两类:试探法: 按某种方式找试探点通过一系列试探点来确定极小点函数逼近法,或插值法:用某种较简单的曲线逼近本来的函数曲线,通过求逼近函数的极
5、小点来估计目标函数的极小点这两类方法一般只能求得极小点的近似值,称为非精确一维搜索5.2.2 搜索区间及其确定方法一维搜索需要事先给定一个包含极小点的区间,此区间称为搜索区间。搜索区间确定方法:进退法进退法是一种试探法:从一点出发,按一定的步长,试图确定出函数值呈现“高-低-高”的三点。一个方向不成功,就退回来再沿相反方向寻找进退法的计算步骤:(l)给定初点 ,初始步长 置 , ,计算 ,并置1)0(Rx0h0h)0()1(x)(1xf.0k(2)令 ,计算 ,置 .h)1()4( )(4xf:k(3)若 ,则转步骤(4);否则,转步骤(5))()(fxf(4)令 , , , ,置 ,)1()
6、2()()(x)()12(xff)()(41xff02:h转步骤(2). 65(5) 若 ,则转步骤(6);否则,转步骤(7).1k(6) 置 , , ,转步骤( 2).h:)4()2(x)()42(xff(7) 令 , , ,停止计算)()3(x)1()(得到含有极小点的区间 或者 ,)3( ,)1(3注 2:实际应用中,为了获得合适的 ,有时需要做多次试探才能成功0h5.2.3 单峰函数及其性质定义 3: 设 是定义在闭区间 上的一元实函数, 是 在 上的极小点,并fbaxf,ba且对任意的 , ,有当 时, ,当,)2(1x)2()1(x)2( )()(21x时, ,则称 是在闭区间 上
7、的单峰函数)(xfff,ba单峰函数的性质:通过计算区间 内两个不同点处的函数值,就能确定一个包含,ba极小点的子区间定理 1: 设 f 是区间 上的单峰函数, ,且 .如果, ,)2(1bax)2()1(x,则对每一个 ,有 ;如果 ,)()(2xff)1(xa)(fff则对每一个 ,有 .,(b(f根据定理 1,只需选择两个试探点,就可将包含极小点的区间缩短5.3 0.618 法和 Fibonacci 法5.3.1 0.618 法0.618 法(黄金分割法)适用于单峰函数66基本思想:通过取试探点使包含极小点的区间(不确定区间)不断缩短,当区间长度小到一定程度时,区间上各点的函数值均接近极
8、小值,因此任意一点都可作为极小点的近似试探点计算公式:设 在 上单峰,极小点 .设进行第 次迭代时,)(xf,1ba,1baxk有 为缩短包含极小点的区间,取两个试探点 ,并规,k ,kba定 k(1))(382.0kkba(2)61a计算步骤:(1)置初始区间 及精度要求 ,计算试探点 和 ,计算函数值,1ba0L1和 计算公式:)(f1f)(382.01)(618.1ab令 .k(2)若 ,则停止计算否则,当 时,转步骤(3);当Labk)(kkff时,转步骤(4).)(kff(3)置 , , ,k1kb1k1)(68.0k aa计算函数值 ,转步骤(5).)(1kf(4)置 , , ,k
9、b1k1)(382.01kaa67计算函数值 ,转步骤(5).)(1kf(5)置 ,返回步骤(2).:例 4:解下列问题: 。12)(minxf初始区间 ,精度 .1 ,1ba60Lkkkkk)(kf)(kf1 -1 1 -0.236 0.236 -0.653 -1.1252 -0.236 1 0.236 0.528 -1.125 0.9703 -0.236 0.528 0.056 0.236 -1.050 -1.1254 0.056 0.528 0.236 0.348 -1.125 -1.1065 0.056 0.348 0.168 0.236 -1.112 -1.1256 0.168 0.
10、348 0.236 0.279 -1.125 -1.1237 0.168 0.279经 6 次迭代达到 ,极小点 .Lab1.07 2790,168.x该问题的最优解 可取 作为近似解25*x 3/).(5.3.2 Fibonacci 法Fibonacci 法与 0.618 法类似,也是用于单峰函数. Fibonacci 法与 0.618 法的主要区别:(1)区间长度缩短比率不是常数,而是由 Fibonacci 数确定(2)需要事先知道计算函数值的次数.定义 4:设有数列 ,满足条件:kF(1) ;(2)10),21( 1kFk则称 为 Fibonacci 数列kF0 1 2 3 4 5 6
11、7 8 9 k1 1 2 3 5 8 13 21 34 55 Fibonacci 法在迭代中计算试探点的公式:68(3)1, ),(1nkabFaknk (4), ),(1kknk n 是计算函数值的次数.利用(3)式和(4)式计算试探点时,第 k 次迭代区间长度的缩短比率恰为.1/knF给定初始区间长度 及精度要求 L,可求出计算函数值的次数 (不包括初始区1abn间端点函数值的计算)由下式 LabFn1求出 Fibonacci 数 ,根据 确定计算函数值的次数 n .nFnFibonacci 法与 0.618 法的关系:(1)0.618 法可作为 Fibonacci 法极限形式: 618.
12、0limnF(2)Fibonacci 法精度高于 0.618 法在计算函数值次数相同条件下,0.618 法的最终区间大约比使用 Fibonacci 法长 17%(3)Fibonacci 法缺点是要事先知道计算函数值次数0.618 法不需要事先知道计算次数,且收敛速率与 Fibonacci 法比较接近.在解决实际问题时,一般采用 0.618 法5.4 插值法 (二次)5.4.1 牛顿法(一点二次插值法)基本思想:在极小点附近用二阶 Taylor 多项式近似目标函数 ,进而求出极小点)(xf的估计值考虑问题 (5)1),(minRxf令 2)()()()()( “21( kkkkkxfxf 69又
13、令 0)(“)() () kkkxfxf得到 的驻点,记作 ,则(x1((6))(“)()1( kkkxfx在点 附近, ,因此可用函数 的极小点作为目标函数 极小)(kx)(f)(xf点的估计如果 是 极小点的一个估计,那么利用(6)式可以得到极小点的一个进一步)(kf的估计.利用迭代公式(6)可以得到一个序列 )(kx可以证明,在一定条件下,这个序列收敛于问题(5)的最优解,而且是 2 级收敛牛顿法的计算步骤:(1)给定初点 ,允许误差 ,置 .)0(x0k(2)若 ,则停止迭代,得到点 .|)(kf )(x(3)计算点 , ,置 ,转步骤(2).)1(kx)(“)()( kkfx1:注
14、3:运用牛顿法时,如果初始点靠近极小点,则可能很快收敛;如果远离极小点,迭代产生的点列可能不收敛于极小点5.4.2 割线法(二点二次插值法)基本思想:用割线逼近目标函数的导函数的曲线 ,把割线的零点作为目标)(xfy函数的驻点的估计.70迭代公式: )()( )1)()1( kkkkk xffxfx得到序列 可以证明,在一定的条件下,这个序列收敛于解(收敛级为 1.618))(kx注 4:与牛顿法相比,收敛速率较慢,但不需要计算二阶导数注 5:缺点与牛顿法类似,都不具有全局收敛性,如果初点选择得不好,可能不收敛5.4.3 抛物线法(三点二次插值法)基本思想:在极小点附近,用二次三项式 逼近目标
15、函数 ,令 与)(x)(xf)(在三点 处有相同的函数值,并假设)(xf )3()2()1(x, .)()(ff)(3)2(ff令 2cba又令(7))()( 12)1()(1 xfcbxa(8)2)()2(2x(9))( 3(2)3()(3 xfc解方程组(7)-(9),求二次逼近函数 的系数 b 和 c为书写方便,记)(12)3()21xfxB )(1)3)21xfxC)()()(2 )2()()(2)3(2)()1(3xfx )3()()1(3xfx)()()()()(D由方程(7)-(9)得到(10)DBb/)(321(11)Cc的极小点对应的驻点为 .)(xx271把驻点 记作 ,则x)(k(12))(2321)( CBxk把 作为 的极小点的一个估计)(kx)(f再从 , , , 中选择目标函数值最小的点及其左、右两点,给予相应的)1()2()3(x)(k上标,代入(12)式,求出极小点的新的估计值 .)1(kx以此类推,产生点列 .)(k注 6:在一定条件下,这个点列收敛于问题的解,其收敛级为 1. 3