logo资料库

自适应SPSA算法在气动优化设计中的优势比较.pdf

第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
资料共9页,剩余部分请下载后查看
中国科技论文在线 http://www.paper.edu.cn 自适应 SPSA 算法在气动优化设计中的优势比较 于文静 北京航空航天大学 数学与系统科学学院,北京(100191) E-mail:vidabaobei@sina.com 摘 要:本文先后选取 34、130 个设计变量分别对 BFGS、SPSA 及自适应 SPSA 三种优化 算法进行数值试验,并确定 BFGS 算法只能处理目标函数为二阶及二阶以上的优化问题。在 同样迭代 50 次的条件下,BFGS 算法以其高精度见长,但当设计变量数目上升为 130 时, 其计算消耗是其他两种算法的 10 倍以上;SPSA 计算时间最少,但其精确程度较差,与此 同时,在算法中加入适当的步长约束条件,可以提高它的收敛速度和计算精度;自适应 SPSA 算法以其较少的计算消耗同时保证较高的计算精度而力显优势,考虑到机翼优化中涉及调用 流场计算,同样精度下,该方法调用流场计算的次数较少,因此更适合进行气动优化设计, 具有较高的计算效率。 关键词:机翼优化;BGFS 算法;SPSA 算法;自适应 SPSA。 中图分类号:V211.41 1. 引言 机翼的气动优化设计已经成为流体力学中的一个重要研究分支。一般来说,基于 CFD 数值求解流场内的各参数是整个优化过程中计算量最大的部分,它直接影响计算时间。但是, 优化方法的选取也越来越被重视,选取合适的优化算法将很大程度提高计算时间以及结果的 精确性。 目前数值优化方法一般分为梯度法和非梯度法。非梯度法中比较典型的有基于遗传算法 的搜索算法、神经网络方法及响应面法[12],但是计算量大是这类方法目前为止难以解决的 问题。梯度法较为典型的是有限差分法,其缺点同样是计算消耗较大,基于这点,拟牛顿法 以及以其为原型的各种优化方法相继被提出,但是对于应用 N-S 方程对机翼进行较多设计 变量的气动优化设计存在一定难度。由 Jameson 等人提出的基于控制理论的优化设计方法再 很大程度上解决了梯度的快速求解问题。国外对于该方法的研究比较深入并取得了较为丰富 的研究成果,已经应用于工程实践中并取得较好的效果[1][7][8][10]。 BFGS 就是一种基于梯度法的经典的优化算法,但由于涉及矩阵计算,在处理大规模问 题时计算速度略显逊色[6]。同时扰动随机估计(SPSA)方法基于随机理论方法[3][7][8][9],不需 要直接求解梯度或者 Hessian 矩阵,大大减少了计算消耗。SPSA 已经成功应用到机翼优化 中[1][2][4],并且 Jameson 等人又对该方法提出很多修改意见,适用于多种不同问题[2][5]。但考 虑到随机理论方法的特点,当循环次数趋于无穷大时收敛性最好,同时 SPSA 方法仅仅对梯 度进行估计,因此它的收敛速度稍慢。而后基于随机理论,自适应 SPSA 方法等一些非梯度 优化法相继被提出[10][11],自适应 SPSA 通过随机方法给出 Hessian 矩阵的估计值,相对于 SPSA 方法收敛速度及效果有很大的提高。本文通过数值试验来检测上述三种方法计算效率, 说明自适应 SPSA 算法在机翼优化中的优势。文章第一部分分别介绍三种算法,在第二部分 给出数值试验结果,第三部分提出结论。 2.简介优化算法 设待优化的目标函数是 ( L X , X 是 p 维向量由控制点组成。找到一个向量 *X 使得 ) L ∂ X ∂ = 0 就是我们的目的。这是优化问题的典型形式,当然 L X 必须是可导的。有时目标 ( ) - 1 -
中国科技论文在线 函数带有噪音,我们引进一个与 ( 常用的目标函数。 2.1 BFGS 算法: L X 相关的函数, ( y X ) http://www.paper.edu.cn ) = L X ( ) + noise ,这是算法中最 BFGS 算法是准牛顿搜索法中的典型算法,它体现着牛顿法的基本思想,其突出贡献是 不用在每次迭代中生硬的计算矩阵的逆,而是给出了 Hessian 矩阵逆的解析表达式,将矩阵 求逆的计算量降低,同时用另外的子优化问题求解步长。BFGS 主要迭代格式: (2.1) x + = 1k p k x pα + k k k H y = − ∇ k k 同时, kα 需要满足下列条件: + y x ( k α k p k ) ≤ y x ( k ) + σα k ∇ y x ( k ) ⋅ p k (2.2) σ∈ 1(0, 2 ) ,一般取值为 410− , kα = 1( 2 m ) Hessian 矩阵的逆的更新格式为: ,m 是满足(1.2)式的最小整数。 − ρ k y z k T k ) + ρ k s s k T k (2.3) − ∇ , y k ρ = k 1 z s T k k H + = 1 k ( I − ρ k ) T k s z H I ( k k 其中 s k x += k 1 − , x k z k = ∇ y k 1 + 2.2 SPSA 算法: SPSA 算法沿用了 SA 算法的迭代格式: X + = 1 X − a g X k ( k ) k k 此时 ( g X 是每次迭代中对梯度的估计值。单侧梯度估计涉及到两个函数 ( (2.4) y X 和 X± ∆ 。同时扰动估计方法就是将控制向量 kX 的 每个元素分别独立的给于一个随机的扰动,以此获得两个衡量函数,进而估计待求梯度。双 侧同时扰动估计可以表示为: X+ ∆ ,双侧梯度估计涉及 ( y X ( y X )k )k ) ) k k k k g X ( ) = k y X ( k y X ( k c k ) + ∆ − c 2 k k k ⎡ ⎢ c ) − ∆ ⎢ k ⎢ ⎢ ∆⎢ ⎣ 1 ⎤∆ − k 1 ⎥∆ 1 − ⎥ k 2 M (2.5) ⎥ ⎥ ⎥ ⎦ 1 − kp - 2 -
中国科技论文在线 k = kc )m 参数 c 0 /( http://www.paper.edu.cn , 0c 是一个小的正数,m 是某个系数,在实践中推荐取值为 1/6。 k∆ 项代表随机扰动向量,它的每个元素都是独立地、随机的产生,最简单的能够产生随机扰动 向量的随机分布是 Bernoulli 1± 分布,每个元素都以 1/2 的概率产生 1 或者-1。SPSA 算法的 实现只涉及到两个衡量函数,基本上与 p 无关,因为无论 p 的取值如何分子都是一样的,因 , 0a 、A、α是保 ,对于壶嘴形状 ka a 0 /( = a = 0.167 证算法高效性的参数,一般来说,对于机翼形状设计 0 设计问题 1A = ,α可以取值为 1。 2.3 自适应 SPSA: 此当 p 值非常大时,该算法表现出良好的计算效率。 A k α ) + A = 300 和 自适应同时扰动方法的主要思想是建立两个循环体,一个用来估计控制变量θ,另一个 用来估计 Hessian 矩阵 ( )H θ 。第一个循环体类似于 Newton-Raphson 算法,第二个循环可以 简单的给出每次循环 Hessian 矩阵的估计值,同时在第二个循环中给出的矩阵估计值又可以 用于第一个循环体中。 上述两个递归式分别表示为: a H G k ) , H k = f H k ( k ) (2.6) + = 1 ˆ ˆ − θ θ k k k + H = k k 1 k ˆ( 1 θ− k k 1 + + k 1 H k 1 − 这里 ka 是非负的标量参数, ˆ( kG θ 是与 ˆ( ) k 的函数,并且 ˆ 以确定时,这两个并行的递推式就可以实现了。 kH 是每次循环中对 Hessian 矩阵的估计值。由于 ˆ H , k k = 0,1,2 K (2.7) )kg θ 相关的函数,属于已知信息。 kf 是 kH kH 可 kG θ 是已知量,当 ˆ ˆ( ) k p 某个正标量, 我们进一步介绍一下每次循环时 Hessian 矩阵的估计值 ˆ kH 。在一阶 SPSA 算法中, kc 是 k R ∆ ∈ 是一个由操作者给出的均值为零的随机向量,当然这个向量必须满足 ik∆ 必须独立取值、有边界的、对称分布的,例如 某些特定条件,一般来说,每个组成元素 k∆ 的每个元素都取值为 Bernoulli 1± 随机分布。应用向量相除,在每次循环中 Hessian 矩阵 的估计值可以表示为: ˆ H k = ⎡ G T 1 δ ⎢ k c 2 2 ∆ ⎢ ⎣ k k ⎛ + ⎜ ⎝ G T δ k c 2 ∆ k k T ⎞ ⎟ ⎠ ⎤ ⎥ ⎥ ⎦ (2.8) G G (1) k = ˆ ( θ k + ∆ − ) c k G (1) k ˆ ( θ k − ∆ ) c k k 这里 kG 有可能等于 ()kG ,这取决于初始的设置。在自适应 SPSA 算法中使用单侧梯度 k k δ (1)() 估计可以减小计算量同时取到很好的精确值。 kG 的表达形式与一阶 SPSA 算法中完全相同,在自适应 SPSA 算法中,为了估计梯度 - 3 -
中国科技论文在线 需要引入两个参量, ˆ( c k y k http://www.paper.edu.cn θ ± ∆ + ∆%% 。这两个参量用来估计单侧梯度的算法如下: ) c k k k G (1) k ˆ( θ k y ˆ ( θ k ± ∆ = ) c k k ± ∆ + ∆ − ) c k k %% c k k % c k y ˆ ( θ k % 1 ⎤∆ ⎡ − k 1 ⎥∆ ⎢ % 1 − c ) ± ∆ ⎢ ⎥ k 2 k ⎥ ⎢ M ⎥ ⎢ % 1 − ∆⎢ ⎥ ⎦ ⎣ kp k (2.9) 这时 % % % ∆ = ∆ ∆ k k , 1 k ( T ) ,是随机产生的向量并且每个元素都是独立产生的, kc%需 %L ∆ , kp , 2 要满足的条件与 kc 相似。 3.数值试验结果 机翼优化涉及流场分析与计算,本文只测评优化算法的计算性能,因此将模型简化为机 翼的拟合,不考虑流场计算部分。 3.1 目标函数光滑性的选取 以 NACA0012 为基准翼型,RAE2822 为目标翼型,选取基准翼型上 130 个点作为优化 变量(也称为设计变量),目标函数简单取为距离函数,即与目标翼型的距离的最大值。设 A(u)是不断优化的翼型曲线,通过三次样条拟合得到,C(u)表示目标翼型,则一阶目标函数 可以表示为: (3.1) 使用 BFGS 作为优化算法时,得到的效果图如图 1 所示,拟合效果非常不好,结果失真 min A u C u ( ) ( ) − 程度较高。但是,当提高目标函数光滑性使其变为二阶时,即二阶目标函数表示为: min 1 2 A u C u ( ) ( ) − 2 (3.2) BFGS 算法立刻表现出不一样的计算精度,见图 2。 与 BFGS 不同的是,对于不同阶数的目标函数,SPSA 的计算精度却没有太大变化,将 基准翼型变为 BOEING106,一阶目标函数效果图见图 3,二阶的见图 4。 可以看出,SPSA 二阶情况的效果图与目标函数是一阶时的相差不多,甚至还没有一阶 精确度高。究其原因可以发现,BFGS 算法用到目标函数的导数,当目标函数变成高阶更光 滑时,其算法的精确性越高,它反而不适用于目标函数为一阶最简单的情况。相对的,SPSA 以及自适应 SPSA 理论基础是随机理论,迭代过程中不使用导数,而是用随机的方法给出导 数以及 Hessian 矩阵的估计形式,便于计算,提高计算效率。因此下文算例中,BFGS 算法 使用二阶目标函数,SPSA、自适应 SPSA 使用一阶目标函数。 - 4 -
中国科技论文在线 http://www.paper.edu.cn 0.08 0.06 0.04 0.02 0 -0.02 -0.04 -0.06 -0.08 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 图 1 BFGS,目标函数为一阶,虚线 图 2 BFGS,目标函数为二阶,虚线 是最终优化结果,星线表示目标 是最终优化结果,星线表示目标 翼型曲线,实线是基准翼型。 翼型曲线,实线是基准翼型。 图 3 SPSA,目标函数为一阶,虚线是 图 4 SPSA,目标函数为二阶,虚线是 最终优化结果,星线表示目标翼 最终优化结果,星线表示目标翼 型曲线,实线是基准翼型。 型曲线,实线是基准翼型。 3.2 算法的数值试验 例一:以 BOEING106 为基准翼型,RAE2822 为目标翼型,选取基准翼型上、下表面各 17 个点作为优化变量,即 34 个优化变量。分别使用 BFGS、SPSA、自适应 SPSA 优化算法, 迭代 50 次,结果如下: SPSA 算法参数取值为, 0 a = 0.167 , A = 300 , c = ,alpha=0.602,m=0.101。 0 0.5 算法效果(目标函数一阶)见表 1,计算时间为 19.207 秒。效果见图 5。 自适应 SPSA 参数取值为: 0 c = ,alpha=0.602,m=0.101, 2.4 。 这里 0c 和 c%需要根据不同问题给出不同的取值,它们对结果的影响很大。算法效果见表 2, 计算时间为 23.885 秒。优化结果见图 6。 A = , 0 , 40 c =% a = 0.167 1 BFGS 算法的计算时间为 189.69 秒,结果见表 3。 表 1 SPSA(34 点)迭代 50 步的计算结果 0 10 20 30 40 50 与目标翼型的最大距离 0.027089 0.02199 0.01722 0.01348 0.010585 0.0083471 - 5 -
中国科技论文在线 http://www.paper.edu.cn 表 2 自适应 SPSA(34 点)迭代 50 步的计算结果 0 10 20 30 40 50 与目标翼型的最 大距离 0.049895 0.023678 0.0053206 0.0015048 1.1073e-005 3.4774e-006 表 3 BFGS 算法(34 点)迭代 50 步的计算结果 距离的 平方 0 4 15 30 40 50 0.0060717 4.6396e-005 3.4928e-005 3.3987e-005 3.3611e-005 3.3611e-005 可以看到 BFGS 算法在第 4 次迭代的时候已经取得不错的结果,但是计算时间较长,一 旦设计变量数目增加到很大时,BFGS 的计算时间将令人担忧。 将这三种算法比较,图 7,可以看出 SPSA 算法只涉及到梯度计算,因而收敛速度较慢, 如果要求达到一定精度,需要很大的迭代次数作保证,计算效率会随之降低。虽然 BFGS 算法精度要比 SPSA 高,收敛速度也较快,但其计算时间是其他二者的 8-10 倍。自适应 SPSA 算法的计算时间比 SPSA 稍微长一点,但是计算精度比 SPSA、BFGS 算法高很多。 图 5 SPSA,虚线是最终优化结果,星线 图 6 自适应 SPSA,虚线是最终优化结果, 表示目标翼型曲线,实线是基准翼型。 星线表示目标翼型曲线,实线是基准翼型 图 7 位置偏上的实线是 BOEING106 的基准翼型,偏下方的实线是 RAE2822 的目标翼型,虚线表示 BFGS 算法效果图,星线表示自适应 SPSA 算法效果图,小圆圈组成的曲线代表 SPSA 的结果。 - 6 -
中国科技论文在线 http://www.paper.edu.cn 例二: 以 NACA0012 为初始翼型,RAE2822 设为目标翼型,选取机翼上的 130 个点作为优化 变量,迭代 50 次,三种算法结果如下: 0.167 A = 计算时间为 55.78 秒,收敛效果见表 4、图 8。 , SPSA 算法参数取值为, 0 a = 300 , c = ,alpha=0.602,m=0.101。 0 0.5 与目标翼 型的最大 距离 表 4 SPSA 算法(130 点)迭代 50 步的计算结果 0 10 20 30 40 50 0.015937 0.012937 0.010131 0.0079307 0.0060799 0.0049108 可以看出,虚线与距离它最近的实线(目标翼型曲线)有一定差别,在翼型的上下部分 均有小凸起。因此考虑在优化迭代过程中加入一个约束条件,当距离差大于某个小数时,人 为修改步长,加快收敛速度,提高计算精度。 对 SPSA 算法进行修正后,结果见图 9。修改后的计算速度稍稍减慢,但是效果明显变 好,计算时间 78.062 秒,与目标翼型的最大距离减小为 0.0034791,并且最终图形规整没有 凸起。 图 8 SPSA,虚线是最终的优化结果 图 9 修正后 SPSA,虚线是最终优化结果 图 10 自适应 SPSA,虚线是最终优化结果,星线表示目标翼型曲线,实线表示初始翼型。 - 7 -
中国科技论文在线 自适 应 SPSA 算法:参数的取 值为 0 a = 0.167 , http://www.paper.edu.cn A = , 0 40 c = ,alpha=0.602, 1 m=0.101,, c =% 2.4 。这里计算时间为 98.041 秒。该算法拟合效果见表 5 和图 10。 表 5 自适应 SPSA 算法(130 点)迭代 50 步的计算结果 0 10 20 30 40 50 与目标翼型的最大 距离 0.14156 0.091685 0.016494 0.0012585 0.00069888 5.8065e-005 由于该算法涉及矩阵运算,计算时间稍长一点,但是算法提供了对 Hessian 矩阵的估计 值,在处理大规模问题上很有优势,计算量不是很大同时收敛效果很好。 BFGS 算法基于梯度法使用到 Hessian 矩阵的估计,计算量与选点个数成倍增加,因此 计算时间也是相对最久的,5 次迭代计算时间就到达 225.66 秒,预计完成 50 次迭代的时间 可以达到其他二者的 10-20 倍。但它的计算精度相对较高,仅仅迭代 5 次就到很小的距离范 围, 2 ,最终结果见图 11。 3.3538e-006 e = 0.08 0.06 0.04 0.02 0 -0.02 -0.04 -0.06 -0.08 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 图 11 BFGS,虚线是最终优化结果,星线表示目标翼型曲线,实线是初始翼型。 4. 结论 对于同一问题,优化目标函数的选取在一定程度上影响了优化算法的效果,不同问题使 用恰当的优化算法可以节省计算时间、大大提高计算效率。 上述三种优化方法各有特点, BFGS 作为经典的梯度法优化算法,以其高精度见长, 但是当变量数目达到很大时,使用 BFGS 计算消耗巨大。如果机翼曲线可以用较少参量表示, 使用 BFGS 作为最后的优化算法是不错的选择。相反的,SPSA 方法由随机理论发展而来, 它的计算量不因变量数目的增加而增加,计算时间可以控制在较短的范围内;但该方法收敛 速度较慢,需要一个很大的迭代次数作为高精度的保证。自适应 SPSA 是随后被提出的、基 于 SPSA 的方法,它的收敛速度和计算量相比前两种方法都有很大的改进,尤其在处理大规 模问题时优势更加明显。 另一方面,BFGS 算法在每次迭代中需要调用 5 次目标函数,而 SPSA 算法调用 2 次, 自适应 SPSA 算法调用 4 次。在处理跨音速机翼优化问题时涉及流场计算,每一次调用目标 函数即意味着调用一次流场计算,如果设定优化过程迭代 100 次,那么 BFGS 将调用 500 - 8 -
分享到:
收藏