CN102779207B - 基于OpenCL的并行差分进化算法的翼型优化设计方法 - Google Patents
基于OpenCL的并行差分进化算法的翼型优化设计方法 Download PDFInfo
- Publication number
- CN102779207B CN102779207B CN201210208326.4A CN201210208326A CN102779207B CN 102779207 B CN102779207 B CN 102779207B CN 201210208326 A CN201210208326 A CN 201210208326A CN 102779207 B CN102779207 B CN 102779207B
- Authority
- CN
- China
- Prior art keywords
- function
- population
- individual
- airfoil
- mrow
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000013461 design Methods 0.000 title claims abstract description 107
- 238000000034 method Methods 0.000 title claims abstract description 94
- 238000004422 calculation algorithm Methods 0.000 title claims abstract description 41
- 230000006870 function Effects 0.000 claims abstract description 149
- 238000005457 optimization Methods 0.000 claims abstract description 50
- 239000013598 vector Substances 0.000 claims abstract description 20
- 238000004458 analytical method Methods 0.000 claims abstract description 13
- 238000012360 testing method Methods 0.000 claims abstract description 13
- 239000012530 fluid Substances 0.000 claims abstract description 8
- 230000035772 mutation Effects 0.000 claims abstract description 8
- 230000008569 process Effects 0.000 claims description 28
- 230000001172 regenerating effect Effects 0.000 claims description 9
- 238000007689 inspection Methods 0.000 claims description 6
- 210000000349 chromosome Anatomy 0.000 claims description 3
- 230000004069 differentiation Effects 0.000 claims description 2
- 238000010606 normalization Methods 0.000 claims description 2
- 238000012545 processing Methods 0.000 abstract description 9
- 238000012938 design process Methods 0.000 abstract description 2
- 241001264313 Semioptera wallacii Species 0.000 abstract 1
- 238000004364 calculation method Methods 0.000 description 18
- 230000002068 genetic effect Effects 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 238000010276 construction Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 210000004027 cell Anatomy 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 238000002939 conjugate gradient method Methods 0.000 description 1
- 238000012407 engineering method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 230000002028 premature Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 238000002945 steepest descent method Methods 0.000 description 1
- 230000004083 survival effect Effects 0.000 description 1
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提出一种基于OpenCL的并行差分进化算法的翼型优化设计方法,用于机翼翼型设计。选定基准翼型、型函数,将型函数系数作为设计变量,并确定优化目标函数,将差分进化算法的步骤根据所处理的数据分成不同的阶段,将各阶段封装在不同的内核中,基于OpenCL运行。种群更新中,应用变异算子产生测试向量,应用交叉算子产生子代;对种群中个体还原翼型形状,检验是否满足几何约束;使用CFD分析,求得个体的适应度,寻找最优个体,检验是否满足性能约束;最后迭代结束,将最优的结果拷贝回主机内存。本发明实现了翼型设计过程的并行处理,在有效空间内进行充分搜索,缩短了设计周期,实现跨平台的翼型优化设计,提高了设计效率。
Description
技术领域
本发明涉及机翼翼型设计技术领域,以及计算机仿真与优化技术领域,具体涉及一种基于OpenCL(Open Computing Language,开放计算语言)的并行差分进化算法的翼型优化设计方法。
背景技术
翼型选择与设计是飞机设计前必须进行的一项重要工作,D.P.Raymer指出:“就许多方面来说,翼型就是飞机的心脏。”这是因为机翼是飞机产生升力和阻力的主要部件,而构成机翼的翼型对飞机性能有很大影响。翼型影响着巡航速度,起飞和着陆性能,失速速度,操纵性能(特别是接近失速的时候)和所有飞行阶段的空气动力效率。设计具有诸如高升力、低阻力等优秀气动性能的翼型对于飞机、导弹等具有重要的意义。翼型优化设计的目的是在给定约束条件下,确定尽可能好的翼型形状,最大限度地提高飞机性能和飞行品质。传统翼型优化设计迭代过程中需要频繁的计算目标函数的梯度,计算梯度的方法如最速下降法,共扼梯度法,牛顿法等,而在工程计算中,梯度的计算往往很困难。现代基于遗传算法(GA)及计算流体动力学(CFD)的数值优化方法虽然可找出全局最优解,但是要对种群进行大量的选择、交差、变异操作,计算量很大,且受种群的规模及进化代数的影响,遗传算法容易收敛于局部解。
差分进化(Differential Evolution,DE)算法是一种基于群体进化的算法,是Storn R和PriceK在1995年提出的,是进化类算法的一个分支。它能够通过种群内个体间的合作与竞争来实现对优化问题的求解,即具有记忆个体最优解和种群内信息共享的特点,其本质是一种基于实数编码的具有保优思想的贪婪遗传算法。对于简单的变异操作和一对一的竞争生存策略,差分进化算法用实数编码来实现,这使得遗传操作的复杂性大大降低。和其他进化类算法相比,差分进化算法虽然保留了基于种群的全局搜索策略,但是其特有的记忆能力,使其不需要借助问题的特征信息就可以动态跟踪当前的搜索情况,及时地对搜索策略做出调整。这也是差分进化算法具有较强的全局收敛能力和较高的鲁棒性的主要原因之一。差分进化算法在被提出的第二年就证明其是最快的进化算法。同时它还具有内含并行性,算法采用种群的方式组织搜索,因而可以同时搜索解空间的多个区域,并相互交流信息,这种搜索方式使得它虽然每次只执行与种群规模N成比例的计算,而实质上己经进行了大约O(N2)次有效搜索,能以较少的计算获得较大的利益。由于其简单易用、稳健性好以及强大的全局搜索能力,使得差分进化算法已在多个领域取得成功。
由于设计当中计算量越来越大,往往使需求远远超过目前计算机的计算能力,为了解决这个矛盾,人们提出了并行计算的思想。目前并行计算的发展方向随着计算机技术的发展也经历着变化,从集中式机群到分布式PC再到当前出现的多处理器以及多CPU+GPU的架构发展。当今主流计算机的处理能力主要来自CPU和GPU(Graphic Processing Unit,图形处理器)。
2008年,苹果公司向Khronos工作组提交了一份关于跨平台计算框架的计划书,该计划由苹果公司发起,由AMD、IBM、Intel、NVIDIA等业界主要研发者和制造商作为技术合作方参与,旨在建立一个真正支持异构计算网络的API(Application Programming Interface,应用程序编程接口)。这样的异构计算网络可以包含各种形态的计算资源,如CPU、GPU、Cell、FPGA等。由各种处理器和软件制造商代表组成的Khronos计算工作组于2008年6月成立,它在苹果公司提交的计划书的基础上进一步细化该跨平台计算框架的功能,于2008年12月发布了OpenCL 1.0规范。目前OpenCL规范已发展到1.2版本。
OpenCL全称Open Computing Language,即开放计算语言,是一个用于异构平台上编程的开放性行业标准。OpenCL为异构平台提供了一个编写程序,尤其是并行程序的开放的框架标准。OpenCL所支持的异构平台可由多核CPU、GPU或其他类型的处理器组成,例如x86CPU、GPU、Cell处理器乃至于ARM构架的DSP处理芯片等等。OpenCL会将各类计算设备组织成一个统一的平台。OpenCL能够调用系统内全部计算资源,也就是说无论是CPU、GPU,还是今后额外加入的协处理器,全部都能够在公共计算平台上得到调用。OpenCL不仅仅是一种编程语言,更是一个完整的并行编程框架,它包括编程语言,API,函数库以及运行时系统来支持软件在整个平台上的开发。OpenCL提供了基于任务和基于数据两种并行计算机制,它极大地扩展了GPU的应用范围,使之不再局限于图形领域。
由于OpenCL的平台无关性和真正意义上的异构计算资源解决方案,它的使用者持续迅速增长,在并行计算领域具有广泛的应用前景。
发明内容
本发明的目的是将OpenCL的异构并行框架与差分进化算法相结合,实现基于并行差分进化算法的翼型优化设计方法。本发明翼型优化设计方法充分利用计算资源,在有效空间内进行充分搜索,缩短设计周期,实现跨平台的翼型优化设计,提高设计效率。
本发明提供的基于OpenCL的并行差分进化算法的翼型优化设计方法,包括如下步骤:
步骤一:选定基准翼型和型函数,将型函数的系数作为设计变量,确定所设计翼型的翼型解析函数:
其中,yub(x)、ylb(x)分别为基准翼型的上、下表面的几何形状,fk(x)为第k个基准翼型的型函数,ck为型函数fk(x)的系数,Nu表示控制基准翼型上表面几何形状的型函数的个数,(N-Nu)表示控制基准翼型下表面几何形状的型函数的个数。
步骤二:根据设计要求确定优化设计的目标函数。
步骤三:查找支持OpenCL的硬件设备,并创建上下文。
步骤四:创建命令队列及包含了内核的程序,并进行在线编译。
步骤五:创建程序执行过程中需要的内存对象,并初始化。
步骤六:创建内核函数并设置内核函数的参数。
步骤七:设置内核的索引空间并执行初始化种群内核,具体是:
设xi(t)是第t代种群中的第i个个体,xi(t)=(xi1(t),xi2(t),…,xiN(t)),i=1,2,…,M;t=1,2,…,tmax;其中,xi(t)的每个分量对应一个设计变量,N是构成个体的染色体数,等于设计变量的个数;M为种群规模;tmax是最大进化代数;
生成初始化种群内核的操作是:在N维空间里,根据设计变量的取值范围随机产生满足约束条件的M个个体,初始生成的第i个个体i=1,2,…,M;j=1,2,…,N;其中,分别是生成的第i个个体中第j个设计变量的上界和下界,randij(0,1)是[0,1]之间的随机小数;
使用clEnqueueNDRangeKernel函数将初始化种群内核放入命令队列中执行,并设置内核执行所需要的索引空间。
步骤八:对初始种群中每个个体还原翼型形状,并检验是否满足几何约束。本步骤具体是:将初始种群中的每个个体带入步骤一的翼型解析函数中,还原每个个体对应的翼型形状,根据翼型几何约束检验每个个体对应的翼型形状,对不满足约束的个体,重复过程A,直到初始种群中的每个个体都满足几何约束;过程A为:利用步骤七生成种群个体的方法,重新生成新的个体并进行几何约束检验。
步骤九:求得每个个体的适应度,具体是:首先,使用计算流体动力学分析方法,获取初始种群中每个个体对应的翼型的设计指标,然后通过目标函数确定每个个体的适应度值,最后判断种群中适应度最优的个体是否满足性能要求,若满足则终止,返回适应度最优个体到主机内存,否则执行下一步骤。
步骤十:应用变异算子产生测试向量。具体是:首先,从当前第t代种群中随机选择3个种群个体xp1、xp2和xp3,确定第t+1代种群中第i个个体的第j个设计变量所对应的测试向量hij(t+1):hij(t+1)=xp1j(t)+F*(xp2j(t)-xp3j(t)),i≠p1≠p2≠p3;其中,xp1j(t)、xp2j(t)和xp3j(t)分别表示个体xp1、xp2和xp3的第j个设计变量,xp2j(t)-xp3j(t)为差异化向量,F为缩放因子;然后,判断所确定的测试向量是否满足边界条件,如果不满足边界条件,则利用步骤七生成种群个体的方法重新生成测试向量。
步骤十二:对步骤十一得到的子代中每个个体还原翼型形状,并检验是否满足几何约束,具体是:将子代中的每个个体带入步骤一的翼型解析函数,还原每个个体对应的翼型形状,根据翼型几何约束检验每个个体对应的翼型形状,对不满足约束的个体,重复过程A,直到初始种群中的每个个体都满足几何约束,然后执行下一步骤;过程A为:利用步骤七生成种群个体的方法,重新生成新的个体并进行几何约束检验。
步骤十三:求得子代个体的适应度,具体是:使用计算流体动力学分析方法,获取初始种群中每个个体对应的翼型的设计指标,通过目标函数确定每个个体的适应度值。
步骤十四:更新第t+1代种群的个体,具体是:比较第t代种群中第i个个体xi(t)的适应度f1与子代个体vi(t+1)的适应度f2,若f1大于f2,则更新第t+1代种群的第i个个体xi(t+1)为vi(t+1),否则,更新xi(t+1)为xi(t);更新完第t+1代种群的个体后,判断第t+1代种群中适应度最优的个体是否满足性能要求,若满足或者达到迭代上限tmax,则终止,返回适应度最优个体到主机内存,若不满足要求则返回步骤十执行。
本发明的翼型优化设计方法具有如下优点和积极效果:
(1)本发明将差分进化算法的步骤根据所处理的数据分成不同的阶段,将各阶段封装在不同的内核中,并采用了OpenCL并行设计,实现了差分进化算法的并行计算,算法中所有的遗传操作都实现了并行处理,计算复杂度得以有效降低;每一个候选个体的处理过程在一个计算单元中进行;每一次内核调用都实现了对种群中所有个体的操作;本发明方法实现的高度并行化同时也体现在逻辑层面,产生与父代相同数量的候选子代只需要通过一个内核来实现,然后再执行更新种群的内核;适应度函数的计算过程同样实现了并行处理;通过上述手段提高了翼型设计效率,减少了设计时间;
(2)采用了OpenCL并行设计,充分利用计算资源,在有效空间内进行充分搜索,获得更好的设计结果;
(3)可在多种异构平台上实现并行计算,能够实现跨平台的翼型优化设计,具有良好的可移植性。
附图说明
图1是OpenCL的平台模型示意图;
图2是本发明的翼型优化设计方法的主要步骤流程图。
具体实施方式
下面将结合附图对本发明作进一步的详细说明。
翼型的几何形状可以采用多项式拟合或解析函数来表示,本发明中采用最常用的翼型表示方法——解析函数线性叠加法。解析函数线性叠加法通过基准翼型和型函数的线性叠加表示翼型形状。翼型的形状由基准翼型、型函数及型函数的系数定义:
其中,x,y为翼型的无量纲表面坐标,y(x)表示翼型的形状,y0(x)为基准翼型的形状,N表示控制翼型形状的型函数的个数,fk(x)为所选用的第k个型函数,ck表示第k个型函数的系数。优化设计的性能与型函数的选取有关,不同的型函数对优化设计的质量和效率会产生一定程度的影响。常用的型函数有多项式型函数、Hicks-Henne型函数和Wagner型函数三种。取型函数的系数作为设计变量,与基准翼型和固定的前后缘点一起来确定翼型形状。
翼型上表面和下表面的几何扰动是一系列形状函数的线性组合,分别表示为:
Nu表示控制翼型上表面形状的型函数的个数,Δyu(x)表示翼型上表面的几何扰动,Δyl(x)表示翼型下表面的几何扰动。
将上述光滑的几何扰动相应地叠加到要优化的基准翼型的上、下表面上,新的翼型的上下表面的几何形状则可以分别表示为以下两个式子:
yu(x)=yub(x)+Δyu(x)
yl(x)=ylb(x)+Δyl(x)
下标u表示上表面,下标l表示下表面(l为字母L的小写形式),yub(x),ylb(x)分别为基本翼型的上表面和下表面的几何形状,其中各型函数的权系数ck就是设计变量,它是连接优化算法和流场求解之间的一条纽带。
在优化设计中,设计变量的取值是要受到某些条件的限制,这些限制数学上统称为约束条件,它反映了有关设计规范、计算规程、安装、构造等各方面的要求,有些时候在具体的设计问题上,还反映了设计者有目的性的要求。对某个或某些变量有直接限制的约束条件称为显约束,对某个或某些与设计变量无明显关系的变量或者无法直接说明的变量来加以限制的约束条件称为隐约束。对于翼型优化设计,一般情况下约束条件比较多,可以分为两类:几何约束和性能约束。
要判断优化过程中计算出的翼型是否满足几何约束,只需要针对新得到的翼型进行简单的数学计算即可,是一种事前检查的方法;相应的,判断一种翼型是否满足性能约束,则必须进行流场求解,需要耗费大量的时间,这是一种事后检查的方法。
几何约束事前检查的方法,对整个优化过程有一定的加速作用,在生成一个新的翼型后,先进行几何约束的判断,若满足,则可以进行流场的求解;否则,抛弃这一翼型,重新生成新的翼型。通过这一方法可以过滤掉那些不符合几何约束条件的翼型,从而避免多余的调用流场分析程序。性能约束满足与否只能依靠流场程序求解来判断,作为该生成翼型是否是符合设计要求的最后一个标准。
优化设计要求在多种约束条件下寻求最能令人满意、最适宜的一组参数,从而使设计达到所要追求的目标,根据某个特定问题所追求的目标,用设计变量的数学关系式将其表达出来,这个数学关系式就是优化设计的目标函数。对于有n个设计变量的最优化问题,目标函数可以写成下列式子:
f(x)=f(x1,x2,…,xn)
目标函数是评价一个设计方案优劣程度的依据,所以选择目标函数是优化设计过程中最为重要的决策之一。一般情况下,目标函数值越小的设计方案就越优,但不是所有的问题都是追求目标函数值的极小;相反,是追求目标函数的极大,这时只要注意到求-f(x)或者1/f(x)极小值和求f(x)极大值是等价的,就可以把求目标函数极大值问题转化为求目标函数的极小值问题。
目标函数是优化设计过程中的一个重要指标,对于翼型优化设计,可以直接由工程实际上关心的某个性能参数组成,被称为单目标优化问题;也可以是某些性能参数,被称为多目标优化问题。这些参数通常是阻力系数(达到最小)、升力系数(达到最大)、巡航因子(达到最大)等。
这些参数都必须通过求解流场程序得到,若仅仅是对某个参数的优化,可以直接以该参数为目标函数进行优化,在每一次优化迭代过程当中,只需要求解一次流场程序;而一旦对不同状态的几个性能参数进行优化,在优化过程当中就需要进行相应于不同状态的流场程序的求解,这样,计算时间将会大大增加。
对于多个目标函数的优化,本发明中采用“统一目标函数”方法进行处理,将各个状态的性能参数统一到一个目标函数中,变成单目标优化问题进行处理。
统一目标函数的方法实质是将各个分目标函数,f1(x),f2(x),…,fq(x)统一到一个总的目标函数中去,这个目标函数被称为“统一目标函数”,即令:
f(x)=f{f1(x),f2(x),…,fq(x)}
从而将问题转化为以下的单目标函数的最优化问题:
min f(x)
s.t. gi(x)≥0 i=1,2,…,m
其中s.t.是约束条件的英语缩写,gi(x)是自变量满足的约束函数。为了使各个分目标函数都能均匀一致的趋向各自的最优目标,先将各项设计指标都转化为统一的无量纲值,并且将量级同时限定为0~1之间,使目标规格化,然后再根据各个目标函数的重要性分别给予一个加权因子,各个分目标函数的线性组合就构成了“统一目标函数”。
使用线性插值方法将各分目标函数规格化:
其中,fi(x)表示第i个分目标函数,表示规格化得到的第i个分目标函数,q表示分目标函数的个数,αi,βi分别表示工程上预估的第i个分目标函数的最小值和最大值。于是,统一目标函数可表示为:
wi(i=1,2,…,q)为根据各个分目标函数在优化过程中的重要性人为给定的加权因子。加权因子对优化的结果具有决定性的影响。
进行翼型的优化设计,通常是追求最小的阻力系数、最大的升力系数、最高的巡航因子,这些参数就是通过求解流场程序而得到的,所以,流场程序实用性、可靠性是一个至关重要的环节,从而直接影响到优化的结果和整个程序的有效性。
伴随着计算流体动力学(简称CFD)及计算机的快速发展,数值优化方法作为一种新型的气动设计方法开始广泛使用。当前,在借助数值优化方法进行气动优化设计的过程中,与优化方法相结合的气动分析方法多种多样,其中比较典型的有工程方法、速势方程数值解法、Euler方程数值解法和Navier-Stokes方程数值解法。
在OpenCL框架中计算设备是指系统中支持OpenCL的各类处理器,可以是CPU,GPU,甚至是DSP。一个系统中可以有多个设备(Device)连接到主机(Host)上。另外,每个Device中包含多个计算单元(Compute Unit),例如多核的CPU或者GPU中的多处理器(Multi-Processor)。而每个计算单元中还可以包含多个处理单位(Processing Element,简称PE)。CPU中每个计算单元只含有一个PE,而GPU中则含有多个。比如对NVIDIA平台来说,GPU是OpenCL设备,多处理器是计算单元,标量处理器是处理元素。
在OpenCL的平台模型中,如图1所示,主机运行OpenCL的应用程序,并负责调度主机与设备或设备与设备间的数据。在运行时,主机将命令发送给设备,设备上的处理元素执行接收到的命令。OpenCL的程序都分为两部分:在OpenCL设备上的部分,即核(或内核),以及在主机上的部分,即主机程序。
差分进化算法的基本思想是从某一随机产生的初始种群开始,通过把种群中任意两个个体的向量差加权后按一定的规则与第三个个体求和来产生新个体,然后将新个体与当代种群中某个预先决定的个体相比较,如果新个体的适应度值优于与之相比较的个体的适应度值,则在下一代中就用新个体取代旧个体,否则旧个体仍保存下来,通过不断地迭代运算,保留优良个体,淘汰劣质个体,引导搜索过程向最优解逼近。
本发明采用OpenCL中基于数据的并行机制,实现差分进化算法的用于翼型设计的并行计算。将差分进化算法用于翼型设计的各阶段封装在不同的内核中,由主机负责对内核的执行顺序进行调度,所有计算单元中执行的内核是相同的,只是处理的数据会根据内核代码分支等原因而不同。
本发明提出一种基于OpenCL的并行差分进化算法的翼型优化设计方法,其主要流程如图2所示。该方法具体包括以下几个步骤:
步骤一:选定基准翼型和型函数,将型函数的系数作为设计变量,确定所设计翼型的翼型解析函数,其中翼型上表面yu(x)表示为:
翼型下表面yl(x)表示为:
其中,yub(x)、ylb(x)分别为基准翼型的上下表面的几何形状函数,fk(x)为基准翼型上下表面的型函数,ck为型函数fk(x)的系数,为所设计翼型的设计变量。
步骤二:确定优化设计的目标函数f(x)。
根据设计要求确定优化设计目标,如:升力系数、阻力系数、升阻比等。若只有一个设计指标,则将该指标作为目标函数;若有多个设计指标,则采用“统一目标函数法”得到优化设计的目标函数。
步骤三:查找支持OpenCL的硬件设备,并创建上下文(Context)。
步骤3.1:首先调用clGetPlatformIDs函数。API函数clGetPlatformIDs用来获取指定系统上可用的计算平台,这个函数要调用2次。第一次得到系统中可使用的平台数目,然后为平台对象分配空间;第二次调用,查询所有的平台,选择需要的OpenCL平台。
步骤3.2:调用clGetDeviceIDs函数。clGetDeviceIDs函数用来获取指定的设备,这个函数也是调用2次,第一次调用查询设备数量,第二次调用检索得到要使用的设备。
步骤3.3:使用clCreateContext函数构造上下文(Context)。Context是指管理OpenCL对象和资源的上下文环境。上下文依托于运行平台,向下挂链该平台内的所有OpenCL设备(device),是联系整个OpenCL语境的要素,贯穿于整个运行时过程中。
步骤四:创建命令队列及包含了内核的程序,并进行在线编译。
步骤4.1:使用clCreateCommandQueue函数创建命令队列(command queue),来管理将要执行的各种命令。
步骤4.2:使用clCreateProgramWithSource函数创建OpenCL程序(program)对象,本发明中该program对象包括以下要素:(1)一个有效的上下文;(2)包含种群迭代算法内核(步骤七到步骤十四)的源程序或者是含有源程序的二进制代码;(3)可执行代码的编译过程,编译选项和编译文档;(4)与该程序对象关联的多个内核对象(kernel object)。
步骤4.3:调用clBuildProgram函数。针对Context中的每个设备,调用该函数编译、连接源代码对象,产生设备可以执行的文件。
步骤五:创建程序执行过程中需要的内存对象,并初始化。
步骤5.1:使用clCreateBuffer函数在设备上分配数据空间,存储输入数据和输出数据。
步骤5.2:使用clEnqueueWriteBuffer函数初始化OpenCL内存对象,并把相应的数据写到OpenCL内存关联的设备内存中。
步骤六:创建内核对象(内核中的函数)并设置内核对象所需参数。
步骤6.1:根据已编译的program对象,使用clCreateKernel函数为program对象中包含的算法各阶段对应的内核分别创建内核对象(即内核函数)。
步骤6.2:使用clSetKernelArg函数为算法各阶段对应的内核函数设置参数,即将参数传递给内核函数。
步骤七:设置内核的索引空间并执行初始化种群内核。
使用clEnqueueNDRangeKernel函数将初始化种群内核放入命令队列中执行,并设置内核执行所需要的索引空间。
若令xi(t)是第t代种群中的第i个个体,
xi(t)=(xi1(t),xi2(t),…,xiN(t)),
i=1,2,…,M;t=1,2,…,tmax
其中,xi(t)的每个分量对应一个设计变量,N是构成个体的染色体数,即设计变量的个数;M为种群规模;tmax是最大进化代数。
则生成初始化种群内核主要包含以下操作:
在N维空间里,根据设计变量的取值范围随机产生满足约束条件的M个个体,实施措施如下,
i=1,2,…,M;j=1,2,…,N
步骤八:对初始种群中每个个体还原翼型形状,并检验是否满足几何约束。
将初始种群中的每个个体带入翼型解析函数还原每个个体对应的翼型形状,根据有关设计规范、计算规程、安装、构造等各方面的要求确定的翼型几何约束检验每个个体对应的翼型形状,对不满足约束的个体,重新生成新的个体(与初始种群的产生方法相同)并进行几何约束检验,若不满足,再重新生成并进行几何约束校验,直到初始种群中的每个个体都满足几何约束。
步骤九:求得每个个体的适应度。
对于初始种群中每个个体对应的翼型使用CFD分析方法求得其设计指标,通过目标函数确定每个个体的适应度,目标函数的值就是适应度的值。判断种群中适应度最优的个体是否满足性能要求,若满足则终止,返回适应度最优个体到主机内存。
步骤十:应用变异算子产生测试向量。
将步骤十操作的内核放入命令队列中执行,此内核主要包含以下操作:
从当前第t代种群中随机选择3个个体xp1,xp2和xp3,则第t+1代种群第i个种群个体的第j个设计变量所对应的测试向量hij(t+1)为:
hij(t+1)=xp1j(t)+F*(xp2j(t)-xp3j(t)),i≠p1≠p2≠p3
其中xp1j(t)、xp2j(t)和xp3j(t)分别表示个体xp1,xp2和xp3的第j个设计变量,xp2j(t)-xp3j(t)为差异化向量,此差分操作是差分进化算法的关键;F为缩放因子。在进化过程中,为了保证解的有效性,必须判断测试向量是否满足边界条件,如果不满足边界条件,则用随机方法重新生成测试向量(与步骤七中初始种群的个体产生方法相同)。
步骤十一:应用交叉算子产生子代。
将步骤十一的操作内核放入命令队列中执行,交叉操作是为了增加种群的多样性,具体应用交叉算子产生的第t+1代种群第i个种群个体的第j个子代vij(t+1):
其中,randlij是[0,1]之间的随机小数,CR为交叉概率,CR∈[0,1],rand(i)为在[1,N]之间的随机整数,这种交叉策略可确保xi(t+1)至少有一个分量有xi(t)的相应分量贡献。
步骤十二:对子代中每个个体还原翼型形状,并检验是否满足几何约束。
将子代vi(t+1)带入翼型解析函数还原vi(t+1)对应的翼型形状,根据有关设计规范、计算规程、安装、构造等各方面的要求确定的翼型几何约束检验vi(t+1)对应的翼型形状,若不满足约束,则重新生成新的个体(与初始种群的产生方法相同)并检验。
步骤十三:求得子代个体的适应度。
对于子代vi(t+1)对应的翼型使用CFD分析方法求得其设计指标,通过目标函数确定vi(t+1)的适应度f(vi1(t+1),…,vin(t+1))。
步骤十四:更新种群。
将步骤十四的操作内核放入命令队列中执行,此内核是为了确定xi(t)是否成为下一代的成员,将子代vi(t+1)和父代xi(t)的适应度进行比较,则更新的第t+1代种群中的第i个个体xi(t+1)为:
f(vi1(t+1),…,vin(t+1))为子代vi(t+1)的适应度,f(xi1(t),…,xin(t))为父代xi(t)的适应度,判断新种群中适应度最优的个体是否满足性能要求,若满足性能,或者t+1超过了迭代上限tmax,则终止迭代,返回适应度最优个体到主机内存,若不满足要求则返回步骤十。
本发明中采用的差分进化算法为标准差分进化算法DE/rand/1/bin,即变异操作中随机选取基向量(如步骤七中所示),使用一个差异向量(如步骤七中所示),交叉模式采用二项式交叉方式(如步骤八中所示)。
算法中的运行参数主要有:缩放因子F,交叉因子CR,种群规模M和最大进化代数tmax。
变异因子F是控制种群多样性和收敛性的重要参数,一般在[0,2]之间取值。变异因子F值较小时,种群的差异度减小,进化过程不易跳出局部极值导致种群过早收敛。变异因子F值较大时,虽然容易跳出局部极值,但是收敛速度会减慢,一般可选F的取值范围为0.3~0.6。
交叉因子CR可控制个体参数的各维对交叉的参与程度,以及全局与局部搜索能力的平衡,一般在[0,1]之间。交叉因子CR越小,种群多样性减小,容易过早收敛。CR越大,收敛速度越大。但过大可能导致收敛变慢,因为扰动大于了种群差异度。一般CR的取值选在[0.6~0.9]之间。
CR越大,F越小,种群收敛逐渐加速,但随着交叉因子CR的增大,收敛对变异因子F的敏感度逐渐提高。
种群所含种群规模M一般介于5D与10D之间(D为问题空间的维度),但不能少于4,否则无法进行变异操作,M越大,种群多样性越强,获得最优解概率越大,但是计算时间更长,一般种群规模M取20-50。
最大迭代代数tmax一般作为进化过程的终止条件。迭代次数越大,最优解更精确,但同时计算的时间会更长,需要根据具体问题设定。
这四个参数对差分进化算法的求解结果和求解效率都有很大的影响,因此,要合理设定这些参数才能获得较好的效果。
Claims (9)
1.一种基于OpenCL的并行差分进化算法的翼型优化设计方法,其特征在于,该方法包括如下步骤:
步骤一:选定基准翼型和型函数,将型函数的系数作为设计变量,确定所设计翼型的翼型解析函数:
其中,yub(x)、ylb(x)分别为基准翼型的上、下表面的几何形状,fk(x)为第k个基准翼型的型函数,ck为型函数fk(x)的系数,Nu表示控制基准翼型上表面几何形状的型函数的个数,(N-Nu)表示控制基准翼型下表面几何形状的型函数的个数;N表示控制翼型形状的型函数的个数;
步骤二:根据设计要求确定优化设计的目标函数;
步骤三:查找支持OpenCL的硬件设备,并创建上下文;
步骤四:创建命令队列及包含内核的程序,并进行在线编译;
步骤五:创建程序执行过程中需要的内存对象,并初始化;
步骤六:创建内核函数并设置内核函数的参数;
步骤七:设置内核的索引空间并执行初始化种群内核,具体是:
设xi(t)是第t代种群中的第i个个体,xi(t)=(xi1(t),xi2(t),…,xiN(t)),,i=1,2,…,M;t=1,2,…,tmax;其中,xi(t)的每个分量对应一个设计变量,N是构成个体的染色体数,等于设计变量的个数;M为种群规模;tmax是最大进化代数;初始种群的t=0;
生成初始化种群内核的操作是:在N维空间里,根据设计变量的取值范围随机产生满足约束条件的M个种群个体,初始生成的第i个种群个体i=1,2,…,M;j=1,2,…,N;其中,分别是生成的第i个个体中第j个设计变量的上界和下界,randij(0,1)是[0,1]之间的随机小数;
使用clEnqueueNDRangeKernel函数将初始化种群内核放入命令队列中执行,并设置内核执行所需要的索引空间;
步骤八:对初始种群中每个个体还原翼型形状,并检验是否满足几何约束,具体是:将初始种群中的每个个体带入步骤一的翼型解析函数中,还原每个个体对应的翼型形状,根据翼型几何约束检验每个个体对应的翼型形状,对不满足约束的个体,重复过程A,直到初始种群中的每个个体都满足几何约束;过程A为:利用步骤七生成种群个体的方法,重新生成新的个体并进行几何约束检验;
步骤九:求得每个个体的适应度,具体是:首先,使用计算流体动力学分析方法,获取初始种群中每个个体对应的翼型的设计指标,然后通过目标函数确定每个个体的适应度,最后判断种群中适应度最优的个体是否满足性能要求,若满足则终止,返回适应度最优个体到主机内存,否则执行下一步骤;
步骤十:应用变异算子产生测试向量,具体是:首先,从当前第t代种群中随机选择3个种群个体xp1、xp2和xp3,确定第t+1代种群中第i个个体的第j个设计变量所对应的测试向量hij(t+1)=xp1j(t)+F*(xp2j(t)-xp3j(t)),i≠p1≠p2≠p3;其中,xp1j(t)、xp2j(t)和xp3j(t)分别表示个体xp1、xp2和xp3的第j个设计变量,xp2j(t)-xp3j(t)为差异化向量,F为缩放因子;然后,判断所确定的测试向量是否满足边界条件,如果不满足边界条件,则利用步骤七生成种群个体的方法重新生成测试向量;
步骤十一:应用交叉算子产生子代,所产生的第t+1代种群第i个种群个体的第j个设计变量所对应的子代vij(t+1)为:
其中,CR为交叉概率,randlij是[0,1]之间的随机小数,rand(i)是[1,N]之间的随机整数;
步骤十二:对步骤十一得到的子代中每个个体还原翼型形状,并检验是否满足几何约束,具体是:将子代中的每个个体带入步骤一的翼型解析函数,还原每个个体对应的翼型形状,根据翼型几何约束检验每个个体对应的翼型形状,对不满足约束的个体,重复过程A,直到初始种群中的每个个体都满足几何约束,然后执行下一步骤;过程A为:利用步骤七生成种群个体的方法,重新生成新的个体并进行几何约束检验;
步骤十三:求得子代个体的适应度,具体是:使用计算流体动力学分析方法,获取初始种群中每个个体对应的翼型的设计指标,通过目标函数确定每个个体的适应度;
步骤十四:更新第t+1代种群的个体,具体是:比较第t代种群中第i个个体xi(t)的适应度f1与子代个体vi(t+1)的适应度f2,若f1大于f2,则更新第t+1代种群的第i个个体xi(t+1)为vi(t+1),否则,更新xi(t+1)为xi(t);更新完第t+1代种群的个体后,判断第t+1代种群中适应度最优的个体是否满足性能要求,若满足或者达到迭代上限tmax,则终止,返回适应度最优个体到主机内存,若不满足要求则返回步骤十执行。
2.根据权利要求1所述的翼型优化设计方法,其特征在于,所述的步骤二中的目标函数,在设计指标超过1个的情况下,采用统一目标函数法得到,具体是:设有q个设计指标,对应q个分目标函数f1(x),f2(x),…,fq(x),将所有的分目标函数统一到一个总的目标函数中:f(x)=f{f1(x),f2(x),…,fq(x)},f(x)称为统一目标函数;
wi表示根据各个分目标函数在优化过程中的重要性而给定的加权因子。
3.根据权利要求1所述的翼型优化设计方法,其特征在于,所述的步骤三具体包括如下子步骤:
步骤3.1:两次调用clGetPlatformIDs函数,clGetPlatformIDs函数用来获取指定系统上可用的计算平台,第一次调用得到系统中可使用的平台数目,然后为平台对象分配空间,第二次调用,查询所有的平台,选择需要的OpenCL平台;
步骤3.2:两次调用clGetDeviceIDs函数,clGetDeviceIDs函数用来获取指定的设备,第一次调用查询设备数量,第二次调用检索得到要使用的设备;
步骤3.3:使用clCreateContext函数构造上下文,上下文是指管理OpenCL对象和资源的上下文环境。
4.根据权利要求1所述的翼型优化设计方法,其特征在于,所述的步骤四具体包括如下子步骤:
步骤4.1:使用clCreateCommandQueue函数创建命令队列,来管理将要执行的各种命令;
步骤4.2:使用clCreateProgramWithSource函数创建OpenCL程序对象;所创建的程序对象包括:(1)一个有效的上下文;(2)包含步骤七到步骤十四种群迭代的源程序或者是含有源程序的二进制代码;(3)可执行代码的编译过程、编译选项和编译文档;(4)与该程序对象关联的内核对象;
步骤4.3:调用clBuildProgram函数,针对下文中的每个设备,编译、连接源代码对象,产生设备执行的文件。
5.根据权利要求1所述的翼型优化设计方法,其特征在于,所述的步骤五具体包括如下子步骤:
步骤5.1:使用clCreateBuffer函数在设备上分配数据空间,存储输入数据和输出数据;
步骤5.2:使用clEnqueueWriteBuffer函数初始化OpenCL内存对象,并把相应的数据写到OpenCL内存关联的设备内存中。
6.根据权利要求1所述的翼型优化设计方法,其特征在于,所述的步骤六具体包括如下子步骤:
步骤6.1:根据已编译的程序对象,使用clCreateKernel函数为程序对象中包含的算法各阶段对应的内核分别创建内核函数;
步骤6.2:使用clSetKernelArg函数为算法各阶段对应的内核函数设置参数。
7.根据权利要求1所述的翼型优化设计方法,其特征在于,步骤七中所述的种群规模M取值在20~50之间。
8.根据权利要求1所述的翼型优化设计方法,其特征在于,步骤十中所述的缩放因子F的取值范围为0.3~0.6。
9.根据权利要求1所述的翼型优化设计方法,其特征在于,步骤十一中所述的交叉概率CR的取值范围为0.6~0.9。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210208326.4A CN102779207B (zh) | 2012-06-19 | 2012-06-19 | 基于OpenCL的并行差分进化算法的翼型优化设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210208326.4A CN102779207B (zh) | 2012-06-19 | 2012-06-19 | 基于OpenCL的并行差分进化算法的翼型优化设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102779207A CN102779207A (zh) | 2012-11-14 |
CN102779207B true CN102779207B (zh) | 2014-07-09 |
Family
ID=47124117
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210208326.4A Expired - Fee Related CN102779207B (zh) | 2012-06-19 | 2012-06-19 | 基于OpenCL的并行差分进化算法的翼型优化设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102779207B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103150419A (zh) * | 2013-01-04 | 2013-06-12 | 姜海波 | 用解析函数表示的翼型及其生成方法 |
CN103440377B (zh) * | 2013-08-27 | 2016-08-10 | 北京航空航天大学 | 基于改进并行de算法的飞行器气动外形优化设计方法 |
CN105718634B (zh) * | 2016-01-15 | 2017-06-16 | 北京航空航天大学 | 一种基于非概率区间分析模型的翼型鲁棒优化设计方法 |
CN106017305B (zh) * | 2016-05-06 | 2019-05-21 | 西安交通大学 | 一种基于差分进化算法的相位解包裹方法 |
CN108595775B (zh) * | 2018-03-29 | 2019-03-19 | 山东师范大学 | 人群疏散仿真过程中障碍物几何形状的优化方法及系统 |
CN110750839A (zh) * | 2019-08-26 | 2020-02-04 | 深圳市道通智能航空技术有限公司 | 一种螺旋桨翼型的设计方法及终端设备 |
CN111105341B (zh) * | 2019-12-16 | 2022-04-19 | 上海大学 | 一种低功耗高运算性能求解计算流体动力学的框架方法 |
CN111161126B (zh) * | 2019-12-17 | 2023-06-09 | 北京航空航天大学杭州创新研究院 | 一种基于gpu的并行进化算法的可靠性评估方法 |
CN113935104B (zh) * | 2020-07-13 | 2024-04-05 | 中国科学院沈阳自动化研究所 | 一种螺旋桨优化设计方法 |
CN114842071B (zh) * | 2022-04-25 | 2024-05-24 | 华南理工大学 | 一种图像视角自动转化方法 |
CN117130622B (zh) * | 2023-10-26 | 2024-01-12 | 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) | 一种分布式在线代码编译运行方法及系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005111797A2 (en) * | 2004-05-10 | 2005-11-24 | Board Of Trustees Of Michigan State University | Design optimization system and method |
CN102011770B (zh) * | 2010-11-09 | 2013-01-30 | 北京航空航天大学 | 一种提高大型客机超临界翼型升阻比的方法 |
CN102207987B (zh) * | 2011-05-31 | 2012-11-21 | 中国航天标准化研究所 | 基于OpenCL的GPU加速三维时域有限差分电磁场仿真的方法 |
CN102235325B (zh) * | 2011-07-01 | 2012-10-31 | 重庆大学 | 基于翼型集成和混合尾缘改型的风力机叶尖翼型设计方法 |
-
2012
- 2012-06-19 CN CN201210208326.4A patent/CN102779207B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN102779207A (zh) | 2012-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102779207B (zh) | 基于OpenCL的并行差分进化算法的翼型优化设计方法 | |
Li et al. | Review of design optimization methods for turbomachinery aerodynamics | |
CN105117286B (zh) | MapReduce中任务的调度方法和流水化执行方法 | |
Chen et al. | Improved particle swarm optimization-based form-finding method for suspension bridge installation analysis | |
CN103399841A (zh) | 基于gpu的稀疏矩阵lu分解方法 | |
Xiao et al. | A cooperative coevolution hyper-heuristic framework for workflow scheduling problem | |
CN102682173A (zh) | 基于自适应径向基函数代理模型的飞行器优化设计方法 | |
Johar et al. | A review of genetic algorithms and parallel genetic algorithms on graphics processing unit (GPU) | |
CN102081544B (zh) | 应用程序生成系统和方法 | |
Dong et al. | Characterizing the microarchitectural implications of a convolutional neural network (cnn) execution on gpus | |
CN115454612A (zh) | 一种基于维度学习策略和灰狼优化的云平台任务调度方法 | |
CN116628854A (zh) | 一种翼型气动特性预测方法、系统、电子设备及存储介质 | |
CN116225708A (zh) | 一种gpu资源调度方法及装置 | |
Lösch et al. | Performance-centric scheduling with task migration for a heterogeneous compute node in the data center | |
CN115016938A (zh) | 一种基于强化学习的计算图自动划分方法 | |
Gautier et al. | Multi-objective optimization algorithm assisted by metamodels with applications in aerodynamics problems | |
Tenne et al. | A versatile surrogate-assisted memetic algorithm for optimization of computationally expensive functions and its engineering applications | |
Allen et al. | Helicopter rotor blade multiple-section optimization with performance considerations | |
CN111177979A (zh) | 一种基于OpenMP对流体动力学软件GASFLOW的优化方法 | |
Glänzel et al. | Parallel computing in automation of decoupled fluid-thermostructural simulation approach | |
Stratikopoulos et al. | Transparent acceleration of Java-based deep learning engines | |
He et al. | Multi-objective efficient global optimization of expensive simulation-based problem in presence of simulation failures | |
CN115827225A (zh) | 异构运算的分配方法、模型训练方法、装置、芯片、设备及介质 | |
CN108710488B (zh) | 网格应用程序在众核体系结构上的性能优化框架及方法 | |
Sridharan et al. | Accelerating Aerodynamic Design of Rotors using a Multi-Fidelity Approach in TORC: Tool for Optimization of Rotorcraft Concepts |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140709 Termination date: 20150619 |
|
EXPY | Termination of patent right or utility model |