900 likes | 1.09k Views
硕博共选数学基础课系列. 第五讲 无约束 ( 多维 ) 最优化. 梯度法(最速下降法) 牛顿法与拟牛顿法 变尺度法 (DFP 法 ) 共轭梯度法 模式搜索法 Powell 法 单纯形加速 替换 复形法 最小二乘法. 1. 梯度法(最速下降法). 多变量无约束优化 间接 法. 搜索方向. 步长. 2. 牛顿法. 搜索方向:当 H k 可逆时,. ,其中. 步长 ≡ 1 。. 3. 拟牛顿法 ( 变尺度法 ). 搜索方向. 步长. 2. 4. 特殊拟牛顿法 1——DFP 算法:. 多变量无约束优化 间接 法. 其中.
E N D
硕博共选数学基础课系列 第五讲 无约束(多维)最优化 • 梯度法(最速下降法) • 牛顿法与拟牛顿法 • 变尺度法(DFP法) • 共轭梯度法 • 模式搜索法 • Powell法 • 单纯形加速\替换\复形法 • 最小二乘法
1. 梯度法(最速下降法) 多变量无约束优化间接法 搜索方向 步长 2. 牛顿法 搜索方向:当Hk可逆时, ,其中 步长≡1。 3. 拟牛顿法(变尺度法) 搜索方向 步长 2
4. 特殊拟牛顿法1——DFP算法: 多变量无约束优化间接法 其中 5. 特殊拟牛顿法2——BFGS算法: 3
6. 共轭梯度法1——Fletcher-Reeves共轭梯度法 多变量无约束优化间接法 搜索方向 其中 7. 共轭梯度法2——(PRP共轭梯度法) 4
硕博共选数学基础课系列 无约束最优化问题的直接方法 无约束最优化问题: 直接方法:不用计算导数,只需计算函数值的方法。 一、 模式搜索法 二、 Powell 算法 三、 单纯形加速\替换\复形法 四、 最小二乘法 5
5.1 模式搜索法 步长加速法(Hooke-Jeeves方法,1961年) 算法思想:算法从初始点(基点)开始,交替进行两种搜索:轴向搜索和模式搜索。轴向搜索依次沿n个坐标轴的方向进行,用来确定新的基点和有利于函数值下降的方向。模式搜索在沿着相邻两个基点的连线方向进行,试图使函数值下降更快。 算法分析 求解问题 令ej = (0, …, 0, 1, 0, …, 0)T,j = 1, 2, …, n,而n则是n个坐标轴方向。给定初始步长,加速因子α。任取初始点x(1)作为第一个基点,以下用x(j)表示第j个基点。 6
在每一轮轴向搜索中,用y(i)表示沿第i个坐标轴ei方向搜索时的出发点。在每一轮轴向搜索中,用y(i)表示沿第i个坐标轴ei方向搜索时的出发点。 轴向搜索: 令y(1) = x(1) 沿e1方向搜索: 如果f (y(1)+e1) < f (y(1)),则令 y(2) = y(1)+e1 否则,如果f (y(1)-e1) < f (y(1)), 则令y(2) = y(1)-e1 否则,令y(2) = y(1); 再从y(2)出发,仿上沿e2进行搜索到y(3) 7
依次进行搜索,直到得到点y(n+1)(到此,一轮轴向搜索结束)。依次进行搜索,直到得到点y(n+1)(到此,一轮轴向搜索结束)。 如果f (y(n+1)) < f (x(1)),则缩小步长,仍以x(1)为起点进行新的轴向搜索;否则,进行模式搜索。 注:如果只进行轴向搜索,则构成坐标轮换法。 模式搜索: 如果f (y(n+1)) < f (x(1)), 令x(2) = y(n+1), 则x(2) - x(1)方向可能有利于 函数值下降, 因此下一步沿x(2) - x(1)方向 进行模式搜索,即令 y(1) = x(2)+α(x(2) - x(1)) 8
如何判断模式搜索是否有效? 以y(1)为起点进行下一轮轴向搜索,所得点仍记为y(n+1)。 如果f (y(n+1)) < f (x(2)),表明此次模式搜索成功,令x(3)= y(n+1),然后仿上继续进行迭代。 如果f (y(n+1)) ≥ f (x(2)),表明此次模式搜索失败,返回基点x(2),进行下一轮轴向搜索。 9
初始x, , α, β, > 0 y(0) = x, 计算f =f (x) 模式搜索法框图 f1 =f (y(0)), k = 1 y(k) = y(k-1) + e(k) 计算f2 =f (y(k)) y(k) = y(k-1) +(-)e(k) 计算f2 =f (y(k)) No f2 <f1 ? yes yes f2 <f1 ? f2 =f1 No y(k) = y(k-1) yes k = k+1 k < n ? 2 no 1 11
2 1 Yes f1 <f? No No y(n) = x ? y(0) = x Yes Yes 停;x 为解 < ? No = 12
模式搜索法步骤: • 给定初始点x(1)Rn,初始步长,加速因子α≥ 1,缩减率β(0, 1),精度> 0。令y(1) = x(1),k = 1,j = 1。 • 轴向搜索:如果f (y(j)+ ej) < f (y(j)),则令y(j+1) = y(j)+ ej ,转3);否则,令y(j+1) = y(j); • 若j < n,则令j: = j+1,转2);如果f (y(n+1)) < f (x(k)) ,转4);否则,转5); • 模式搜索:令x(k+1) = y(n+1),y(1) = x(k+1)+α(x(k+1) – x(k)),令k: = k+1,j = 1,转2); • 如果< ,停止,得到x(k);否则,令 : = β , y(1) = x(k),x(k+1) = x(k),令k: = k+1,j = 1,转2)。 13
例1. 用模式搜索法求解 min f (x) = x12+x22,取初始点x(1) = (1, 1)T,初始步长= 0.25,加速因子α= 1,缩减率β= 0.2 解:第一轮迭代: 令y(1) = x(1) = (1, 1)T,则 f (y(1)) = 2 取加速方向 模式搜索 第二轮迭代: 14
第二轮迭代:y(1) = (0.5, 0.5)T, f (y(1))=0.5 f (y(1) + e1)= 0.8125 > f (y(1)) f (y(1) - e1)= 0.3125 < f (y(1)), y(2) = (0.25, 0.5)T f (y(2) - e2)= 0.125 < f (y(2)), y(3) = (0.25, 0.25)T 令 x(3) = y(1), x(4) = y(3) 加速方向:d (2) = x(4)-x(3) = (-0.25, -0.25)T 模式搜索: y(1) = x(4) +d(2) = (0, 0)T 收敛标准?? 15
步长加速法性质与评价 (1) 步长加速法的收敛速度是线性的,且如果目标函数可微,则可收敛到平稳点。 (2) 由于步长加速法不使用导数,故可应用于任何形式的目标函数,应用范围极广。 (3) 在进行坐标轮换试探时,如果不采用固定步长(亦称离散步长)而使用一维搜索技术求目标函数在坐标方向的极小点,则可加速迭代速度。 16
5.2 Powell 方法 1. 基本思想 Powell方法主要由基本搜索、加速搜索和调整搜索方向三部分组成。基本搜索包括从基点出发沿着已知的n个搜索方向进行一维搜索,确定一个新基点;加速搜索是沿着相邻的两个基点的连线方向进行一维搜索,使函数值下降更快;最后用基点连线方向代替已知的n个搜索方向之一,构成新的搜索方向组,进行下一轮迭代。 17
2. 原始 Powell 法步骤: 1) 给定初始点x0,n个线性无关的方向:d(1, 1), d(1, 2), …, d(1, n), 允许误差 > 0,令k = 1. 2) 令x(k, 0) = x(k-1),从x(k, 0)出发,依次沿方向d(k, 1), d(k, 2), …, d(k, n)进行搜索,即令 得到点x(k, 1), x(k, 2), …, x(k, n). 令d(k, n+1)= x(k, n)- x(k, 0),从点x(k, n)出发沿d(k, n+1)进行一维搜索得到点x(k). 3) 若||x(k)-x(k-1)|| < ,停止,得到点x(k);否则,令d(k+1, j)= d(k, j+1),j =1, 2, …, n. 令k: = k+1,返回2). 18
例2. 用原始Powell法求解下述问题: 初始点x(0)= (2, 1)T,初始搜索方向d(1, 1) = (1, 0)T, d(1, 2) = (0, 1)T 解:第一轮迭代: 令x(1, 0)= x(0)。从x(1, 0) 出发沿方向d(1, 1) 作一维搜索,即求解 记 令 解得 1 = -2 19
再从x(1, 1) 出发沿方向d(1, 2) 作一维搜索,即求解 解得 1 = -1,所以 令方向 求解 解得 ,所以 第二轮搜索: 初始点 ,搜索方向为: 20
求解 解得 ,所以 求解 解得 ,所以 令方向 求解 解得 所以,极小点为 21
定理 设f (x) = ½xTAx+bTx+c,其中A是n阶对称正定阵。任意取方 向d和点x(1)与x(2) ,从x(1)出发沿方向d作一维搜索得极小点y(1),从x(2)出发沿方向d作一维搜索得极小点y(2) ,则有y(2) - y(1)与方向d关于A共轭。 对例2的分析: 第一轮搜索方向 第二轮搜索方向 沿方向d(1, 3)搜索得极小点x(1)= x(2, 0) ,沿方向d(2, 2)搜索得极小点x(2, 2),所以,由定理可知方向d(2, 3)= x(2, 2)- x(2, 0)和方向d(2, 2)共轭。而 x(2)是沿共轭方向搜索得到的,因此,必为极小点。 22
定理 设f (x) = ½xTAx+bTx+c,其中A是n阶对称正定阵。 用原始Powell方法求解下述最优化问题 min f (x) 若迭代已进行了m (m ≤ n),且每一轮迭代后为下一轮所确定的前n个搜索方向d(k, 1), d(k, 2), …, d(k, n) (k ≤ m)线性无关,则各轮迭代所产生的加速方向必构成与矩阵A共轭的向量组。 • 注: • 原始Powell算法是一种共轭方向算法; • 原始Powell算法不能保证各轮迭代的前n个搜索方向线性无关。 23
例3. 用原始Powell法求解下述问题: 初始点x(0)= (1, 1)T,初始搜索方向d(1, 1) = (1, -1)T, d(1, 2) = (0, 1)T 解:第一轮迭代: 令x(1, 0)= x(0)。从x(1, 0) 出发沿方向d(1, 1) 作一维搜索,即求解 求解 解得1 = 0,所以 求解 解得2 = -1,所以 令方向 24
解得2 = -1,所以 令方向 求解 解得3 = 0,所以 第二轮迭代: 搜索方向 由于d(2, 1)和d(2, 2)线性相关,以下迭代得到的x(k) = (1, 0)T (k ≥ 2),不能得到最优解x* = (0, 0)T 25
问题:如何确保各轮迭代的前n个搜索方向线性无关?问题:如何确保各轮迭代的前n个搜索方向线性无关? 1)分析:搜索方向线性相关的原因 如果1 = 0 ,则d(k, n+1)是d(k, 2), d(k, 3), …, d(k, n)的线性组合。 令d(k+1, i) = d(k, i+1),则第k+1轮的n个搜索方向线性相关。 26
2)解决方法: 每次用d(k, n+1)换出原来的n个搜索方向中的一个,但不一定是 第一个。 如何确定应该换出哪一个搜索方向? 假设初始的n个搜索方向是单位向量。 令 选择搜索方向d(s, k) ,使其满足 令 27
则用d(k, n+1) 换出d(k, s) ,构成第k+1次的搜索方向。 否则,令d(k+1, i) = d(k, i),i = 1, 2, …, n. 3)行列式的计算 28
改进的Powell方法 • 给定初始点x(0),n个线性无关的方向:d(0, j) = ej,j = 1, 2, …, n. • 允许误差> 0,令0 = 1,k =1. • 2) 令x(k, 0)= x(k-1, n),依次沿n个方向进行一维搜索,即 3) 令 ,令 29
如果|| x(k) - x(k-1) || < ,算法结束 ,令x* = x(k) ;否则,转5) • 若k = n,则令d(0, i) = ei , i = 1, 2, …, n. 令x(0) = x(n), k: = 1, 转2) • 若k < n,确定s使得 如果 ,则d(k, i) = d(k-1, i), i = 1, 2, …, n. 令k = k-1,转2). 如果 ,则令d(k, i) = d(k-1, i), i = 1, 2, …, s-1. 令 ,k: = k+1,转2). 30
5.3 单纯形加速\替换\复形法 1. 单纯形加速法: Spendley、Hext 和Himsworth 于1962年提出; Nelder 和Mead 1965年改进 单纯形加速法是一种不使用导数的求解无约束极小化问题的直接搜索方法. • 问题: f (x)是Rn上的连续函数 即f (x) C(Rn) 31
3. 算法思想 1) 集合迭代的思想 S0 S1 … Sk Sk+1 … 这里Si (i =1, 2, …)为单纯形 2) 下降迭代的思想 使Si中顶点的目标函数值下降。 32
4. 单纯形概念 (1)例 R1:线段 R2:三角形 R3:四面体 33
(2)单纯形的定义 设V0, V1, …, Vn Rn, 如果Vj – V0初始(j = 1, 2, …, n)线性无关, 则V0, V1, …, Vn的凸组合 称为由V0, V1, …, Vn构成的单纯形 记为S = [V0, V1, …, Vn],即 S = [V0, V1, …, Vn] ,其中 称V0, V1, …, Vn为该单纯形的顶点。 34
5. 如何构造单纯形? 对于给定的点x0和正数,可按以下方式构造单纯形: 其中e1, e2, …, en,为n维空间中的基坐标, 则S = [V0, V1, …, Vn]构成一个单纯形。 35
例:设V0 = (1, 0, 1)T, = ½. 则 则S = [V0, V1, V2, V3]构成一个单纯形。 36
6. 单纯形加速法的几何解释 给定单纯形S = [V0, V1, …, Vn] 设 劣点 形心点 反射点 延伸点 37
令 ——形心 反射步: V r:反射点,α:反射系数,一般取α = 1. 如果f (V r) < f (Vl): 延伸步:则令 , V e:延伸点,β:延伸系数,一般取β = 2. 如果f (V e) < f (Vl),则用V e代替V h,构成新的单纯形, 否则,用V r代替V h,构成新的单纯形。 38
收缩步 (情形一): i≠ h,有f (V i) ≤ f (V r) ≤ f (V h),则 令V c = V + γ(V r - V), V c:收缩点, γ :收缩系数,一般取 γ = ½. 若f (V c) < f (V h),则用V c代替V h 构成新的单纯形。 39
收缩步 (情形二): 若f (V r) > f (V h),则 令V c = V + γ(V h - V), V c:收缩点, γ :收缩系数,一般取 γ = ½. 若f (V c) < f (V h),则用V c代替V h 构成新的单纯形。 如果f (V c) > f (V h),棱长减半步: 40
7. 单纯形加速法的步骤 • (初始步) 给定初始点x0,构造初始单纯形 • S0 = [V0, V1, …, Vn],精度> 0,k: = 0 • (准备步) 计算 • (反射步) • (V r:反射点,α:反射系数,一般取α = 1) • 如果f (V r) < f (Vl),则转4). • 如果f (V r) ≥ f (Vl),则转5). 41
4) (延伸步) • (V e:延伸点,β:延伸系数,一般取β = 2) • 如果f (V e) < f (Vl), [f (V e) < f (V r)], • 则V h: = V e,Sk+1 = [V0, V1, …, Vn],转7) (判断步). • 如果f (V e) ≥ f (Vl), [f (V e) ≥ f (V r)], • 则V h: = V r,Sk+1 = [V0, V1, …, Vn],转7) (判断步). • (收缩步) • 1. 如果存在i ≠ h,使得f (V r) < f (V i),则 • V h: = V r,Sk+1 = [V0, V1, …, Vn],转7); • 2. 如果i≠ h,有f (V i) ≤ f (V r) ≤ f (V h),则 • V c = V + γ(V h - V), • (V c:收缩点, γ :收缩系数,一般取 γ = ½) 42
如果f (V c) < f (V r), • 则V h: = V c,Sk+1 = [V0, V1, …, Vn],转7) (判断步). • 如果f (V c) ≥ f (V r),则转6) (棱长减半步). • 3. 如果f (V r) > f (V h),则 . • 如果f (V c) < f (V r), • 则V h: = V c,Sk+1 = [V0, V1, …, Vn],转7) (判断步). • 如果f (V c) ≥ f (V r),则转6) (棱长减半步). • (减半步) • ,转7) (判断步). 43
7) (判断步) 计算 如果 ,或 ,则算法结束, 得到 如果 ,或 ,则 Sk+1 = [V0, V1, …, Vn],k: = k+1,转2) (准备步). 44
例: 用单纯形加速法解 解: 任取点x(1) = (3, 5)T, x(2) = (4, 7)T, x(3) = (5, 6)T 构成初始单纯形,分别 计算相应函数值: 比较得最坏点x(h) = x(3),计算由x(1)、x(2)构成的线段的形心 计算x(3)关于x(0)的反射点(取α= 1)和相应函数值 因为f (x(1)) < f (x(r)) < f (x(2)),所以以x(r)代替x(3), 经过第一次迭代,得到新的单纯形,其顶点和相应的函数值为: 45
比较得最坏点x(h) = x(2),计算由x(1)、x(3)构成的线段的形心 计算x(2)关于x(0)的反射点(取α= 1)和相应函数值 因为f (x(r)) > f (x(h)),所以计算x(c) 因为f (x(c)) < f (x(r)),所以以x(c)代替x(h), 经过第二次迭代,得到新的单纯形,其顶点和相应的函数值为: 46
比较得最坏点x(h) = x(3),计算由x(1)、x(2)构成的线段的形心 计算x(3)关于x(0)的反射点(取α= 1)和相应函数值 因为f (x(r)) > f (x(h)),所以计算x(c) 因为f (x(c)) < f (x(r)),所以以x(c)代替x(h), 经过第三次迭代,得到新的单纯形,其顶点和相应的函数值为: 47
比较得最坏点x(h) = x(1),计算由x(2)、x(3)构成的线段的形心 计算x(1)关于x(0)的反射点(取α= 1)和相应函数值 因为f (x(r)) > f (x(h)),所以计算x(c) 因为f (x(c)) < f (x(h)),所以以x(c)代替x(h), 经过第四次迭代,得到新的单纯形,其顶点和相应的函数值为: 可以继续迭代,直到满度一定的精度 48
例: 用复形法解 min 5(x1-3)2+(x2-6)2 解:任取点 x1=(3, 5)T, x2=(4, 7)T, x3=(5, 6)T, x4=(6, 3)T 构成初始复形,分别计算相应函数值: x x1 x2 x3 x4 f(x) 1 6 20 54 比较最坏点xh = x4,计算由x1, x2, x3构成的三角形的形心 计算x4关于x0的反射点(取= 1)和相应函数值 ,f (x)=14 由于f (x) < f (x4),故以x代替x4. 经过第一次迭代,得到新的复形,其顶点和相应函数值为: x (3, 5)T (4, 7)T (5, 6)T (2, 9)T f(x) 1 6 20 14 49
经过第一次迭代,得到新的复形,其顶点和相应函数值为:经过第一次迭代,得到新的复形,其顶点和相应函数值为: x (3, 5)T (4, 7)T (5, 6)T (2, 9)T f(x) 1 6 20 14 比较出最坏点xh = (5, 6)T,计算由(3, 5)T, (4, 7)T, (2, 9)T构成的三角形形心 计算由 (5, 6)T关于 (3, 7)T的反射点及相应函数值 ,f (x)=24 注意到f (x) < f (xh) ,把减小一半,令=1/2,重新计算x ,f (x)=7.25 由于f (x) < f (xh),故以x代替xh构成新的复形,其顶点和相应函数值为: x (3, 5)T (4, 7)T (2, 9)T (2, 7.5)T f(x) 1 6 14 7.25 可继续进行迭代直到满足给定的精度要求。 50