專利名稱:基于OpenCL的并行差分進化算法的翼型優(yōu)化設計方法
技術(shù)領(lǐng)域:
本發(fā)明涉及機翼翼型設計技術(shù)領(lǐng)域,以及計算機仿真與優(yōu)化技術(shù)領(lǐng)域,具體涉及一種基于OpenCL (Open Computing Language,開放計算語言)的并行差分進化算法的翼型優(yōu)化設計方法。
背景技術(shù):
翼型選擇與設計是飛機設計前必須進行的一項重要工作,D. P. Raymer指出“就許多方面來說,翼型就是飛機的心臟?!边@是因為機翼是飛機產(chǎn)生升力和阻力的主要部件,而構(gòu)成機翼的翼型對飛機性能有很大影響。翼型影響著巡航速度,起飛和著陸性能,失速速度,操縱性能(特別是接近失速的時候)和所有飛行階段的空氣動力效率。設計具有諸如高升力、低阻力等優(yōu)秀氣動性能的翼型對于飛機、導彈等具有重要的意義。翼型優(yōu)化設計的目的是在給定約束條件下,確定盡可能好的翼型形狀,最大限度地提高飛機性能和飛行品質(zhì)。傳統(tǒng)翼型優(yōu)化設計迭代過程中需要頻繁的計算目標函數(shù)的梯度,計算梯度的方法如最速下 降法,共扼梯度法,牛頓法等,而在工程計算中,梯度的計算往往很困難。現(xiàn)代基于遺傳算法(GA)及計算流體動力學(CFD)的數(shù)值優(yōu)化方法雖然可找出全局最優(yōu)解,但是要對種群進行大量的選擇、交差、變異操作,計算量很大,且受種群的規(guī)模及進化代數(shù)的影響,遺傳算法容易收斂于局部解。差分進化(Differential Evolution, DE)算法是一種基于群體進化的算法,是Storn R和Price K在1995年提出的,是進化類算法的一個分支。它能夠通過種群內(nèi)個體間的合作與競爭來實現(xiàn)對優(yōu)化問題的求解,即具有記憶個體最優(yōu)解和種群內(nèi)信息共享的特點,其本質(zhì)是一種基于實數(shù)編碼的具有保優(yōu)思想的貪婪遺傳算法。對于簡單的變異操作和一對一的競爭生存策略,差分進化算法用實數(shù)編碼來實現(xiàn),這使得遺傳操作的復雜性大大降低。和其他進化類算法相比,差分進化算法雖然保留了基于種群的全局搜索策略,但是其特有的記憶能力,使其不需要借助問題的特征信息就可以動態(tài)跟蹤當前的搜索情況,及時地對搜索策略做出調(diào)整。這也是差分進化算法具有較強的全局收斂能力和較高的魯棒性的主要原因之一。差分進化算法在被提出的第二年就證明其是最快的進化算法。同時它還具有內(nèi)含并行性,算法采用種群的方式組織搜索,因而可以同時搜索解空間的多個區(qū)域,并相互交流信息,這種搜索方式使得它雖然每次只執(zhí)行與種群規(guī)模N成比例的計算,而實質(zhì)上己經(jīng)進行了大約0(N2)次有效搜索,能以較少的計算獲得較大的利益。由于其簡單易用、穩(wěn)健性好以及強大的全局搜索能力,使得差分進化算法已在多個領(lǐng)域取得成功。由于設計當中計算量越來越大,往往使需求遠遠超過目前計算機的計算能力,為了解決這個矛盾,人們提出了并行計算的思想。目前并行計算的發(fā)展方向隨著計算機技術(shù)的發(fā)展也經(jīng)歷著變化,從集中式機群到分布式PC再到當前出現(xiàn)的多處理器以及多CPU+GPU的架構(gòu)發(fā)展。當今主流計算機的處理能力主要來自CPU和GPU (Graphic Processing Unit,圖形處理器)。2008年,蘋果公司向Khronos工作組提交了一份關(guān)于跨平臺計算框架的計劃書,該計劃由蘋果公司發(fā)起,由AMD、IBM、Intel、NVIDIA等業(yè)界主要研發(fā)者和制造商作為技術(shù)合作方參與,旨在建立一個真正支持異構(gòu)計算網(wǎng)絡的API (Application ProgrammingInterface,應用程序編程接口)。這樣的異構(gòu)計算網(wǎng)絡可以包含各種形態(tài)的計算資源,如CPU、GPU、Cell、FPGA等。由各種處理器和軟件制造商代表組成的Khronos計算工作組于2008年6月成立,它在蘋果公司提交的計劃書的基礎上進一步細化該跨平臺計算框架的功能,于2008年12月發(fā)布了 OpenCL I. O規(guī)范。目前OpenCL規(guī)范已發(fā)展到I. 2版本。OpenCL全稱Open Computing Language,即開放計算語言,是一個用于異構(gòu)平臺上編程的開放性行業(yè)標準。OpenCL為異構(gòu)平臺提供了一個編寫程序,尤其是并行程序的開放的框架標準。OpenCL所支持的異構(gòu)平臺可由多核CPU、GPU或其他類型的處理器組成,例如x86CPU、GPU、Cell處理器乃至于ARM構(gòu)架的DSP處理芯片等等。OpenCL會將各類計算設備組織成一個統(tǒng)一的平臺。OpenCL能夠調(diào)用系統(tǒng)內(nèi)全部計算資源,也就是說無論是CPU、GPU,還是今后額外加入的協(xié)處理器,全部都能夠在公共計算平臺上得到調(diào)用。OpenCL不僅僅是一種編程語言,更是一個完整的并行編程框架,它包括編程語言,API,函數(shù)庫以及運行時系統(tǒng)來支持軟件在整個平臺上的開發(fā)。OpenCL提供了基于任務和基于數(shù)據(jù)兩種并行計算機制,它極大地擴展了 GPU的應用范圍,使之不再局限于圖形領(lǐng)域。由于OpenCL的平臺無關(guān)性和真正意義上的異構(gòu)計算資源解決方案,它的使用者持續(xù)迅速增長,在并行計算領(lǐng)域具有廣泛的應用前景。
發(fā)明內(nèi)容
本發(fā)明的目的是將OpenCL的異構(gòu)并行框架與差分進化算法相結(jié)合,實現(xiàn)基于并行差分進化算法的翼型優(yōu)化設計方法。本發(fā)明翼型優(yōu)化設計方法充分利用計算資源,在有效空間內(nèi)進行充分搜索,縮短設計周期,實現(xiàn)跨平臺的翼型優(yōu)化設計,提高設計效率。本發(fā)明提供的基于OpenCL的并行差分進化算法的翼型優(yōu)化設計方法,包括如下步驟步驟一選定基準翼型和型函數(shù),將型函數(shù)的系數(shù)作為設計變量,確定所設計翼型的翼型解析函數(shù) 所設計翼型的上表面yu(X)表示為
權(quán)利要求
1.一種基于OpenCL的并行差分進化算法的翼型優(yōu)化設計方法,其特征在于,該方法包括如下步驟 步驟一選定基準翼型和型函數(shù),將型函數(shù)的系數(shù)作為設計變量,確定所設計翼型的翼型解析函數(shù) 所設計翼型的上表面yu(x)表示為
2.根據(jù)權(quán)利要求I所述的翼型優(yōu)化設計方法,其特征在于,所述的步驟ニ中的目標函數(shù),在設計指標超過I個的情況下,采用統(tǒng)一目標函數(shù)法得到,具體是設有q個設計指標,對應q個分目標函數(shù)も(X),f2 (X),…,f, (X),將所有的分目標函數(shù)統(tǒng)一到一個總的目標函數(shù)中:f (X) =f {fj (X),f2 (x), ..., f q (x)} , f (X)稱為統(tǒng)一目標函數(shù); 使用線性插值方法將各分目標函數(shù)規(guī)格化
3.根據(jù)權(quán)利要求I所述的翼型優(yōu)化設計方法,其特征在于,所述的步驟三具體包括如下子步驟 步驟3. I :兩次調(diào)用clGetPlatformIDs函數(shù),clGetPlatformIDs函數(shù)用來獲取指定系統(tǒng)上可用的計算平臺,第一次調(diào)用得到系統(tǒng)中可使用的平臺數(shù)目,然后為平臺對象分配空間,第二次調(diào)用,查詢所有的平臺,選擇需要的OpenCL平臺; 步驟3. 2 :兩次調(diào)用clGetDevicelDs函數(shù),clGetDevicelDs函數(shù)用來獲取指定的設備,第一次調(diào)用查詢設備數(shù)量,第二次調(diào)用檢索得到要使用的設備;步驟3. 3 :使用clCreateContext函數(shù)構(gòu)造上下文,上下文是指管理OpenCL對象和資源的上下文環(huán)境。
4.根據(jù)權(quán)利要求I所述的翼型優(yōu)化設計方法,其特征在于,所述的步驟四具體包括如下子步驟 步驟4. I :使用clCreateCommandQueue函數(shù)創(chuàng)建命令隊列,來管理將要執(zhí)行的各種命令; 步驟4. 2 :使用clCreateProgramWithSource函數(shù)創(chuàng)建OpenCL程序?qū)ο螅凰鶆?chuàng)建的程序?qū)ο蟀?I) 一個有效的上下文;(2 )包含步驟七到步驟十四種群迭代的源程序或者是含有源程序的二進制代碼;(3)可執(zhí)行代碼的編譯過程、編譯選項和編譯文檔;(4)與該程序?qū)ο箨P(guān)聯(lián)的內(nèi)核對象; 步驟4. 3 :調(diào)用clBuildProgram函數(shù),針對下文中的每個設備,編譯、連接源代碼對象,產(chǎn)生設備執(zhí)行的文件。
5.根據(jù)權(quán)利要求I所述的翼型優(yōu)化設計方法,其特征在于,所述的步驟五具體包括如下子步驟 步驟5. I :使用clCreateBuffer函數(shù)在設備上分配數(shù)據(jù)空間,存儲輸入數(shù)據(jù)和輸出數(shù)據(jù); 步驟5. 2 :使用ClEnqueueWriteBuffer函數(shù)初始化OpenCL內(nèi)存對象,并把相應的數(shù)據(jù)寫到OpenCL內(nèi)存關(guān)聯(lián)的設備內(nèi)存中。
6.根據(jù)權(quán)利要求I所述的翼型優(yōu)化設計方法,其特征在于,所述的步驟六具體包括如下子步驟 步驟6. I :根據(jù)已編譯的程序?qū)ο?,使用ClCreateKernel函數(shù)為程序?qū)ο笾邪乃惴ǜ麟A段對應的內(nèi)核分別創(chuàng)建內(nèi)核函數(shù); 步驟6. 2 :使用ClSetKernelArg函數(shù)為算法各階段對應的內(nèi)核函數(shù)設置參數(shù)。
7.根據(jù)權(quán)利要求I所述的翼型優(yōu)化設計方法,其特征在于,步驟七中所述的種群規(guī)模M取值在20 50之間。
8.根據(jù)權(quán)利要求I所述的翼型優(yōu)化設計方法,其特征在于,步驟十中所述的變異因子F的取值范圍為0. 3、. 6。
9.根據(jù)權(quán)利要求I所述的翼型優(yōu)化設計方法,其特征在于,步驟十一中所述的交叉因子CR的取值范圍為0. 6、. 9。
全文摘要
本發(fā)明提出一種基于OpenCL的并行差分進化算法的翼型優(yōu)化設計方法,用于機翼翼型設計。選定基準翼型、型函數(shù),將型函數(shù)系數(shù)作為設計變量,并確定優(yōu)化目標函數(shù),將差分進化算法的步驟根據(jù)所處理的數(shù)據(jù)分成不同的階段,將各階段封裝在不同的內(nèi)核中,基于OpenCL運行。種群更新中,應用變異算子產(chǎn)生測試向量,應用交叉算子產(chǎn)生子代;對種群中個體還原翼型形狀,檢驗是否滿足幾何約束;使用CFD分析,求得個體的適應度,尋找最優(yōu)個體,檢驗是否滿足性能約束;最后迭代結(jié)束,將最優(yōu)的結(jié)果拷貝回主機內(nèi)存。本發(fā)明實現(xiàn)了翼型設計過程的并行處理,在有效空間內(nèi)進行充分搜索,縮短了設計周期,實現(xiàn)跨平臺的翼型優(yōu)化設計,提高了設計效率。
文檔編號G06F17/50GK102779207SQ20121020832
公開日2012年11月14日 申請日期2012年6月19日 優(yōu)先權(quán)日2012年6月19日
發(fā)明者李妮, 田超, 蘇澤亞, 龔光紅 申請人:北京航空航天大學