李少鵬,李海,李珂
(重慶大學 土木工程學院,重慶 400045)
平均風產(chǎn)生的靜荷載簡稱靜力風荷載,通常由無量綱參數(shù)三分力系數(shù)來描述,而過大的阻力和升力矩會讓鈍體斷面產(chǎn)生橫向位移和扭轉(zhuǎn),嚴重時甚至會出現(xiàn)風致靜力失穩(wěn),進而影響結(jié)構(gòu)的安全性和穩(wěn)定性,由此可見,三分力系數(shù)對鈍體斷面抗風設(shè)計至關(guān)重要[1-3]。三分力系數(shù)影響因素有鈍體斷面氣動外形、風攻角、雷諾數(shù)等,其中鈍體斷面氣動外形尤為重要,不同鈍體斷面的截面形式、高寬比不同,則對應(yīng)的三分力系數(shù)及變化規(guī)律也不盡相同[4-6],這也導致目前學術(shù)界仍未建立起鈍體斷面氣動外形和三分力系數(shù)之間的數(shù)學聯(lián)系。
目前測定三分力系數(shù)的常用方法主要有兩種,1)將節(jié)段模型放入風洞進行試驗,得到三分力系數(shù)[7-8];2)采用計算流體力學(CFD)仿真計算,得到三分力系數(shù)[9-10]。雖然這兩種方法都廣泛應(yīng)用,但各有缺點,風洞試驗設(shè)備投資大、試驗所需人力物力較多,CFD 仿真計算則需要消耗大量計算資源,為了保證兩者試驗數(shù)據(jù)的準確性,可能都需要數(shù)周才能獲得三分力系數(shù)。因此,算出靜力風荷載后,精細地預測結(jié)構(gòu)各組成部分所受到的風荷載需更長時間,大大制約了結(jié)構(gòu)抗風設(shè)計效率。
近年來,隨著神經(jīng)網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,人工智能預測技術(shù)逐漸應(yīng)用在抗風領(lǐng)域[11]。針對鈍體斷面,李喬等[12]采用BP 神經(jīng)網(wǎng)絡(luò)預測主梁斷面靜力三分力系數(shù);楊興旺[13]采用BP 網(wǎng)絡(luò)識別橋梁主梁顫振臨界風速、靜力三分力系數(shù);黃繼鴻等[14]采用BP 神經(jīng)網(wǎng)絡(luò)預測翼型的升力系數(shù)和阻力系數(shù);針對扁平箱梁和倒梯形箱梁兩種斷面的氣動參數(shù),陳訥郁等[15]采用BP 神經(jīng)網(wǎng)絡(luò)進行預測;Liao 等[16]通過4 種機器學習方法的對比,精準預測不同流線型箱梁的顫振臨界風速;Hu 等[17-18]通過多種機器學習方法的對比,精準預測圓柱表面風壓和壓力系數(shù)。以上研究雖然提供了對鈍體斷面新的表達方法,但對于氣動外形,僅用參數(shù)化和坐標表達具有一定的局限性,復雜斷面難以快速進行,不具備普適性。Chen等[19]提出采用0-1 數(shù)據(jù)對表示氣動外形,0 表示氣動外形外,1 表示氣動外形內(nèi),但這種氣動外形設(shè)計無法提供足夠的信息;Miyanawala 等[20]提出用Euler 距離場表達氣動外形,快速高效、具有足夠信息。考慮直接預測三分力系數(shù)較為復雜,對模型性能要求較高,因此,采用深度學習方法搭建模型。在預測流線型斷面的三分力系數(shù)和壓力方面,深度學習方法也有一定應(yīng)用,陳海等[21]搭建深度學習模型——卷積神經(jīng)網(wǎng)絡(luò),預測了翼型的法向力系數(shù);廖鵬等[22]等利用深度學習模型,結(jié)合CFD 預測翼型前緣壓力分布。然而,目前采用深度學習方法預測未知鈍體斷面三分力系數(shù)的研究還較少。
深度學習是人工智能領(lǐng)域近年來取得的最重大的研究成果之一,由于出色的數(shù)據(jù)擬合能力、GPU 等硬件的出現(xiàn),其進入高速發(fā)展階段。卷積神經(jīng)網(wǎng)絡(luò)(CNN)可以對圖像特征進行自動識別,且卷積核平移不變性,可以極大地降低訓練難度,非常適合處理不同形狀鈍體斷面圖像[22]。筆者提出,鈍體斷面氣動外形以圖像數(shù)據(jù)作為輸入,可以實現(xiàn)不同鈍體斷面外形的一致表達,有效回避異構(gòu)數(shù)據(jù)問題。該方法通過CNN 深度學習模型預測鈍體斷面三分力系數(shù),將鈍體斷面氣動外形與三分力系數(shù)直接關(guān)聯(lián),解決傳統(tǒng)方法獲取三分力系數(shù)效率低的問題,為今后氣動外形優(yōu)化提供技術(shù)支持。
深度學習中的神經(jīng)網(wǎng)絡(luò)模型輸入需能夠表達鈍體斷面的氣動外形信息,且該信息應(yīng)該具有一致的表達結(jié)構(gòu)。對于鈍體斷面氣動外形的表達問題,使用坐標點的傳統(tǒng)方式會使輸入數(shù)據(jù)的結(jié)構(gòu)和大小與外形相關(guān)聯(lián),引發(fā)數(shù)據(jù)異構(gòu)問題。針對該問題,提出一種圖像形式的氣動外形描述方法,可以有效地與卷積神經(jīng)網(wǎng)絡(luò)結(jié)合,實現(xiàn)輸入數(shù)據(jù)一致性表達的同時,提高了信息傳遞效率?;诖朔椒?,以3 個場對氣動外形進行描述,分別是距離場、順風向坐標場和橫風向坐標場。
外形影響氣動力的最主要因素之一是流場的邊界層。采用距離場的形式描述外形,將外形以周圍空間各點與外形的距離進行表達,可以強化輸入信息與邊界層的邏輯聯(lián)系。具體表達如式(1)所示。
式中:指數(shù)函數(shù)內(nèi)部表示流場空間位置RΦ與氣動外形最近邊界RΓ之間的無量綱距離;B為氣動外形特征長度;U為平均風速,m/s。因為更加關(guān)注靠近氣動外形邊界周圍的流場,忽略了離氣動外形較遠的流場,需要輸入更多的邊界周圍信息,為此,通過負指數(shù)形式來增加邊界層附近的權(quán)重。采樣位置在邊界上或者邊界內(nèi)時,β為0,反之為1。
圖1 為距離場,其中,紅色越深,表示該坐標點數(shù)值越接近于1,即該坐標點越接近于氣動外形邊界,藍色越深,表示該坐標點數(shù)值越接近于0,即該坐標點離氣動外形邊界越遠。
圖1 距離場Fig.1 Distance field
單純采用距離場作為輸入存在信息缺失的問題,為了方便描述,考慮如圖2 所示的鋸齒狀形狀。對于卷積神經(jīng)網(wǎng)絡(luò),其感受野為圖像的某一區(qū)域,以圖中紅線框表示。當感受野平動時,如果僅使用距離場信息,氣動外形不同位置會提供相同的數(shù)據(jù)信息,導致卷積神經(jīng)網(wǎng)絡(luò)接受到相同的輸入特征信息。然而,實際情況是氣動外形不同位置對應(yīng)的壓力場不同,對阻力系數(shù)的貢獻也不盡相同。因此,需要構(gòu)造其他輸入信息,以確保信息的充分性。
圖2 氣動外形示意圖Fig.2 Schematic diagram of aerodynamic shape
為兼顧輸入信息獲取的便攜性和流場信息的必要性,設(shè)置一個流場流動方向的圖像數(shù)據(jù)和一個描述橫風向方向的圖像數(shù)據(jù)作為輸入數(shù)據(jù),即順風向坐標場和橫風向坐標場。
其中,順風向坐標場見式(2),靠近入口的位置為上游,對應(yīng)的數(shù)據(jù)較小,靠近出口的位置為下游,對應(yīng)的數(shù)據(jù)較大,以此實現(xiàn)對空間上下游的描述。為避免對所有數(shù)據(jù)再次歸一化,選擇設(shè)定最大值為1。
式中:X為空間點的X方向坐標,原點為形狀在順風向投影的中心;采樣位置在邊界上或者邊界內(nèi)時,β為0,反之為1。圖3 為順風向坐標場,其中,紅色越深,表示該坐標點數(shù)值越接近于1,即該坐標點越靠近下游,藍色越深,表示該坐標點數(shù)值越接近于0,即該坐標點越靠近上游。
圖3 順風向坐標場Fig.3 Coordinate field of streamwise wind
此外,橫風向坐標場見式(3)。構(gòu)造方法與順風向坐標場類似,取迎風頂點的橫風向投影中點作為原點。如此,對于圓形、六邊形斷面,原點位于迎風端點;對于零度風攻角的矩形斷面,原點位于迎風面中點。
式中:Y為空間點的Y方向坐標;采樣位置在邊界上或者邊界內(nèi)時,β為0,反之為1。圖4 為橫風向坐標場,其中,紅色越深,表示該坐標點數(shù)值越接近于1,即該坐標點越接近于迎風面中點,藍色越深,表示該坐標點數(shù)值越接近于0,即該坐標點離迎風面中點越遠。
圖4 橫風向坐標場Fig.4 Cross-wind direction coordinate field
輸入為3 個圖像,按照式(1)~式(3)編程,生成距離場、順風向坐標場和橫風向坐標場,輸出為阻力系數(shù)。根據(jù)輸入和輸出設(shè)計構(gòu)建的CNN 結(jié)構(gòu)如圖5 所示。
圖5 設(shè)計的CNN 結(jié)構(gòu)圖Fig.5 Design of CNN structure diagram
輸入層為包含距離信息和流場信息的圖像。輸入圖像分辨率越高,模型預測越準確,但模型復雜度和訓練時間也會增加,因此,選擇合適分辨率非常重要。一般輸入層大小需要能夠被2 整除多次,以保證卷積層深度。選擇64×64 像素為輸入分辨率,有3 個場作為輸入,即64×64×3 的三維矩陣,每個場取值均確保在0 到1 之間。輸出層輸出數(shù)據(jù)用作回歸分析,對鈍體斷面阻力系數(shù)進行預測,為保證輸出數(shù)據(jù)范圍在0 到1 之間,還加入了sigmoid 函數(shù),見式(4)。
隱藏層中:卷積層是卷積神經(jīng)網(wǎng)絡(luò)的核心模塊,主要確定卷積核尺寸、數(shù)量、步長、零填充的數(shù)量,卷積核尺寸有越來越小的趨勢,因為小尺寸卷積核可以通過堆疊替代大尺寸卷積層并且感受野大小不變[23]。選擇卷積核大小為3×3,卷積核數(shù)量逐步增加。池化層負責對數(shù)據(jù)空間進行下采樣,其感受野不宜過大,否則易造成池化過于激烈,信息丟失過多,導致欠擬合風險[24]。采用2×2 的感受野做最大池化,滑動步長為2。激活函數(shù)選擇ReLU函數(shù),其簡化了計算過程,避免了梯度爆炸和梯度消失問題[25]。全連接層神經(jīng)元與前一層所有的神經(jīng)元全部連接,因此,第1 層全連接層神經(jīng)元數(shù)量為S個,第2 層全連接層數(shù)量為250 個,第3 層全連接層數(shù)量為10 個。
CNN 框架搭建完成后,輸入和輸出數(shù)據(jù)的獲取也非常關(guān)鍵,輸入數(shù)據(jù)為3 個類圖片的數(shù)據(jù)場,輸出數(shù)據(jù)為阻力系數(shù),獲取不同鈍體斷面氣動外形下的輸入和輸出數(shù)據(jù),為深度學習模型提供數(shù)據(jù)支持非常重要。
按照基本形狀,分為正六邊形、圓形、矩形、正菱形4 種,為降低模型訓練難度,所有形狀做到上下和左右對稱。根據(jù)橫向長度與豎向長度比值的不同,每種基本形狀下又有不同形狀,為方便起見,采用無量綱形式來確定形狀,固定所有形狀的橫向長度為1??紤]到正六邊形非常接近鈍體斷面,因此,正六邊形輸入數(shù)據(jù)占到總數(shù)據(jù)的57%,增強了模型對鈍體斷面的學習能力。
根據(jù)正六邊形上下角點距離X=0 直線垂直距離的不同,分成4 組,圓形、矩形、正菱形各1 組,共7組,每組15 個不同形狀,共105 個,如表1 所示。
表1 氣動外形工況一覽表Table 1 List of pneumatic shape working conditions
輸入數(shù)據(jù)獲取需先生成64×64 的網(wǎng)格位置坐標,再根據(jù)式(1)~式(3),分別獲得相應(yīng)網(wǎng)格點到形狀邊界的最小距離信息、流動方向的流場信息和橫風向方向的流場信息。根據(jù)流場特征,氣動外形內(nèi)無流場信息,因此,輸入中氣動外形內(nèi)的數(shù)據(jù)信息也人為設(shè)置為0。輸入圖像設(shè)計的公式中已經(jīng)考慮歸一化的問題,輸入數(shù)據(jù)數(shù)值都在0 到1 之間。
輸出數(shù)據(jù)為阻力系數(shù),采用CFD 數(shù)值模擬計算得到穩(wěn)定后的壓力流場。計算域為矩形,長度和寬度分別為15B和10B,B為鈍體截面寬度。為了防止網(wǎng)格變化速度太快,設(shè)置3 個計算區(qū)域,定義剛性區(qū)域,以保持網(wǎng)格形狀不變,在剛性區(qū)外使用變形區(qū),實現(xiàn)網(wǎng)格平滑處理,最后,使用固定區(qū)域?qū)τ嬎阌蛑械钠渌糠诌M行網(wǎng)格劃分。
采用Fluent 軟件,湍流模型選擇RANs 模型,具體選擇k-ωSST 模型,在近壁面采用k-ω模型,邊界層外緣和自由剪切層采用k-ε模型,在k-ω模型和k-ε模型間采用一個混合函數(shù)過渡。入口邊界設(shè)置為速度入口,出口設(shè)置為壓力出口,形狀表面采用無滑移條件,這意味著物理表面的流動狀態(tài)等于形狀的運動。待流場穩(wěn)定后,讀取數(shù)據(jù),通過對穩(wěn)定壓力流場進行數(shù)據(jù)處理,得到阻力系數(shù)。
將全部105 個不同形狀按照上述操作進行處理,得到對應(yīng)形狀的輸入和輸出數(shù)據(jù)。綜上所述,輸入數(shù)據(jù)的圖像張量為(84,3,64,64),輸出數(shù)據(jù)張量為(21,3),快速得到輸入和輸出數(shù)據(jù),為之后的模型訓練做好準備。
深度學習模型的深度和寬度直接影響模型性能,模型加深能一定程度提升模型性能,但網(wǎng)絡(luò)深度也不是越深越好,深層網(wǎng)絡(luò)容易帶來梯度不穩(wěn)定、網(wǎng)絡(luò)退化等問題,且無法通過優(yōu)化消除,導致模型網(wǎng)絡(luò)深度不斷加深,性能并未出現(xiàn)明顯提升,甚至出現(xiàn)下降的情況,模型寬度同理,隨著模型寬度的加深,模型性能并不一定顯著提升。基于之前設(shè)計的卷積神經(jīng)網(wǎng)絡(luò),尋找最優(yōu)的模型深度與寬度,主要通過模型預測阻力系數(shù)的平均絕對誤差MAE,見式(5),結(jié)合模型參數(shù)量大小綜合判定。
式中:ti為阻力系數(shù)真實值;yi為阻力系數(shù)預測值。
與模型寬度相比,模型深度對于模型性能的影響更大,因此,先確定最優(yōu)的模型深度[26-27]。主要從模型預測誤差大小和模型參數(shù)量來進行評估。將卷積層、池化層、ReLU 層三者稱作一層,選擇卷積神經(jīng)網(wǎng)絡(luò)卷積層數(shù)為6、5、4、3、2 的5 類不同層數(shù)的CNN 模型來測試不同深度下模型的性能,采用完全相同數(shù)據(jù)處理后的輸入和輸出數(shù)據(jù),模型參數(shù)配置完全相同,結(jié)果見表2。
表2 模型深度性能對比Table 2 Comparison of model depth performance
由表2 可知,隨著CNN 層數(shù)的增加,MAE 呈先減小到最小值,后出現(xiàn)增大的情況,CNN 層數(shù)為5層時,MAE 再次減小,但未減小到CNN 層數(shù)為3 層時的MAE,同時,相比于其他CNN 模型,其參數(shù)量也相對較少,時間性能更加優(yōu)秀。CNN 層數(shù)為3 層時,MAE 最小,說明該網(wǎng)絡(luò)深度下模型性能更優(yōu),因此,選擇CNN 層數(shù)為3 層的網(wǎng)絡(luò)模型。
在確定深度學習模型層數(shù)為3 層的情況下,優(yōu)化深度學習模型寬度D,主要從模型預測誤差大小和模型參數(shù)量來進行評估?;贑NN 采樣,第1 層寬度為64,選擇對比的CNN 網(wǎng)絡(luò)第1 層寬度分別為128 和256,第2 層和第3 層模型寬度分別為前一層模型寬度的2 倍,采用完全相同數(shù)據(jù)處理后的輸入和輸出數(shù)據(jù),模型參數(shù)配置完全相同,結(jié)果見表3。
表3 模型寬度性能對比Table 3 Comparison of model width performance
由表3 可知,隨著CNN 寬度的增加,MAE 出現(xiàn)先減小后增大的情況,當CNN 網(wǎng)絡(luò)初始寬度D為128 時,MAE 最小,說明該網(wǎng)絡(luò)寬度下模型性能更優(yōu),同時,其參數(shù)量最小,說明本模型消耗時間最少。因此,選擇CNN 網(wǎng)絡(luò)初始寬度D為128。
綜上所述,通過MAE 大小和模型參數(shù)量大小對比,選擇CNN 層數(shù)為3 層的網(wǎng)絡(luò)深度,網(wǎng)絡(luò)寬度為128-256-512 的網(wǎng)絡(luò)模型,第1 層全連接層中神經(jīng)元數(shù)量S為32 768 個。
Pytorch 在科學研究方面表現(xiàn)非常優(yōu)秀,主要體現(xiàn)在Pytorch 風格非常Python 化,降低了入門的難度,且搭建深度學習模型時可以逐層搭建,方便實時修改。鑒于搭建模型時修改細節(jié)比較多,因此,使用Pytorch 來搭建深度學習模型[28]。
在所使用的105 個數(shù)據(jù)中選取80%作為訓練數(shù)據(jù)集,剩下的作為驗證數(shù)據(jù)集,訓練數(shù)據(jù)集共有84 個不同形狀的輸入和輸出,驗證數(shù)據(jù)集有21 個不同形狀的輸入和輸出,每次訓練前都對樣本數(shù)據(jù)進行隨機打亂和批量讀取。模型訓練方法選擇SGD,使用0.2 作為訓練模型的Dropout 率,以防止過擬合。
通過卷積神經(jīng)網(wǎng)絡(luò)預測阻力系數(shù)的結(jié)果如圖6所示,識別誤差見表4。
表4 阻力系數(shù)誤差Table 4 Drag coefficient error
圖6 阻力系數(shù)預測結(jié)果Fig 6 Drag coefficient prediction results
由圖6 和表4 給出的預測結(jié)果可知,當R=0.1、R=0.4 時,正六邊形、矩形和正菱形預測的阻力系數(shù)相對誤差較大。當R=0.2、R=0.3 時,正六邊形和圓形預測的阻力系數(shù)相對誤差較小,主要是因為當橫向長度與豎向長度的比值(AR)較小時,阻力系數(shù)較大,在模型中占的權(quán)重較大,導致模型更偏向于擬合權(quán)重較大的數(shù)據(jù)。對于擬合橫向長度與豎向長度的比值(AR)較大、阻力系數(shù)較小的情況,無法達到精度要求,使得相對誤差較大。當R=0.2、R=0.3 時,正六邊形和圓形相對誤差較小,明顯可以看到,橫向長度與豎向長度的比值(AR)較大時,擬合非常準確。
深度學習模型針對2 個截面預測的平均相對誤差在10%以下,針對3 個截面預測的平均相對誤差在30%以上,主要是模型輸入和輸出的邏輯關(guān)系過于薄弱,導致模型性能容易出現(xiàn)反復。
提出使用卷積神經(jīng)網(wǎng)絡(luò)來預測阻力系數(shù)是為了減少得到鈍體斷面氣動性能的時間,因此,有必要評估深度學習方法的時間性能。
通過編寫好的代碼,輸入設(shè)計約1 s 即可完成,輸出設(shè)計需要進行網(wǎng)格劃分、服務(wù)器計算等一系列操作,得到穩(wěn)定流場后,計算得到阻力系數(shù)約需10 s。本文卷積神經(jīng)網(wǎng)絡(luò)進行一次迭代訓練的平均時間為1.08 s,進行1 000 次訓練迭代所需的總時間約為1 080 s,使用已經(jīng)訓練好的模型進行一次回歸預測,即產(chǎn)生阻力系數(shù)所需的平均時間為1 s,一共需要1 092 s。
相比于傳統(tǒng)基于CFD 計算和風洞試驗需要幾周時間才能得到三分力系數(shù),基于深度學習的預測方法在時間性能上得到了數(shù)量級的提升。
提出將不同鈍體斷面的氣動外形信息轉(zhuǎn)化為圖像數(shù)據(jù)而不依賴于傳統(tǒng)設(shè)計參數(shù),使用修改和優(yōu)化后的卷積神經(jīng)網(wǎng)絡(luò)對氣動外形圖像進行回歸預測,建立鈍體斷面氣動外形和阻力系數(shù)之間的聯(lián)系,且預測精度相對較高。針對相對誤差較大的鈍體斷面,后續(xù)將嘗試采用新的輸出,強化輸入和輸出邏輯關(guān)系的同時,針對深度學習模型來進行改善,進一步提升阻力系數(shù)的預測精度。
與傳統(tǒng)的風洞試驗和CFD 仿真計算方法相比,在允許誤差范圍內(nèi),提出的卷積神經(jīng)網(wǎng)絡(luò)模型計算時間達到了數(shù)量級的提升,為鈍體斷面氣動外形優(yōu)化提供了計算基礎(chǔ)。