設(shè)計(jì)仿真 | 應(yīng)用Marc和機(jī)器學(xué)習(xí)軟件進(jìn)行非線性模型優(yōu)化
本文主要以金屬成形過(guò)程的非線性幾何優(yōu)化模擬為例,介紹人工智能(AI)/機(jī)器學(xué)習(xí)(ML)工具在非線性優(yōu)化中的應(yīng)用方法。
對(duì)于很多非線性問(wèn)題,當(dāng)采用有限元模型的直接優(yōu)化時(shí),在計(jì)算上會(huì)需要很多時(shí)間,導(dǎo)致成本增高,采用ML技術(shù)來(lái)替代一些傳統(tǒng)的優(yōu)化方法能顯著提高效率。ML的主要思想是用訓(xùn)練數(shù)據(jù)構(gòu)建預(yù)測(cè)模型,直接使用預(yù)測(cè)模型進(jìn)行在線優(yōu)化。由于預(yù)測(cè)模型的計(jì)算工作量通常比全有限元模型低得多,因此在線優(yōu)化問(wèn)題通??梢院芸斓玫浇鉀Q。
為了滿足Marc/Mentat用戶對(duì)人工智能(AI)和機(jī)器學(xué)習(xí)(ML)的需求,從Marc2021.4版本開始,在前處理器Mentat中引入了一個(gè)新的AI/ML工具彈出菜單,為Marc/Mentat用戶在ODYSSEE等軟件工具中部署AI/ML提供了一種有效的方式。
ML技術(shù)的使用大致可以分為兩個(gè)階段:離線數(shù)據(jù)訓(xùn)練和在線操作(包括參數(shù)研究、預(yù)測(cè)和設(shè)計(jì)優(yōu)化)。在線操作依賴于離線數(shù)據(jù)訓(xùn)練,這需要足夠的數(shù)據(jù)來(lái)生成可靠的預(yù)測(cè)模型。為了獲得這種離線數(shù)據(jù),用戶可以使用有限元模型準(zhǔn)備和模擬許多數(shù)值實(shí)驗(yàn),這個(gè)過(guò)程通常被稱為實(shí)驗(yàn)設(shè)計(jì)(DOE)。Marc/Mentat集成的AI/ML工具旨在通過(guò)提供ODYSSEE和Mentat之間的數(shù)據(jù)格式兼容性,以及以串行或并行模式啟動(dòng)和監(jiān)測(cè)仿真實(shí)驗(yàn)的工具,簡(jiǎn)化DOE的設(shè)置和執(zhí)行。
為了使用ML技術(shù)解決此優(yōu)化問(wèn)題,在Marc/Mentat2023.3以前的版本需要執(zhí)行以下步驟:
■ 離線數(shù)據(jù)準(zhǔn)備:
? 生成各參數(shù)的DOE變化 。
? 使用AI/ML工具準(zhǔn)備DOE作業(yè)。
? 以并行模式運(yùn)行DOE作業(yè)。
? 提取并導(dǎo)出DOE結(jié)果。
? 訓(xùn)練并獲得預(yù)測(cè)模型。
■ 在線操作:
? 新參數(shù)響應(yīng)快速預(yù)測(cè)。
? 解決優(yōu)化問(wèn)題。
從Marc/Mentat2023.3版本開始,離線數(shù)據(jù)準(zhǔn)備工作大為減少,方便了用戶使用。下面的算例以Marc/Mentat2023.3版本進(jìn)行介紹。
金屬板成形算例介紹
下面介紹一下AI/ML工具(人工智能/機(jī)器學(xué)習(xí))的實(shí)際應(yīng)用。為便于理解,使用具有回彈的簡(jiǎn)單金屬板成形算例來(lái)說(shuō)明如何將AI/ML工具應(yīng)用于非線性結(jié)構(gòu)分析優(yōu)化。
該算例的模型如圖1所示。采用平面應(yīng)變分析模型,其中工件被沖頭壓入模具,坯料壓邊圈用于保持工件外面部分在合適的位置;最后釋放沖頭,并研究工件的回彈。沖頭和沖模的幾何形狀,以及沖模下彎曲部分的角度將發(fā)生變化,以實(shí)現(xiàn)成形工件底部平坦的形狀,即工件左下側(cè)節(jié)點(diǎn)的垂直位移為-20。請(qǐng)注意,沖頭的圓角半徑和下模的圓角半徑之間存在一種關(guān)系:下模半徑為沖頭半徑再加3毫米,3毫米是工件的初始厚度。
圖1 回彈優(yōu)化的幾何與模型設(shè)置
為了實(shí)現(xiàn)這一目標(biāo),將使用AI/ML程序進(jìn)行非線性優(yōu)化。整個(gè)過(guò)程需要分多個(gè)步驟完成,首先要?jiǎng)?chuàng)建了一個(gè)參數(shù)化的Mentat模型,允許對(duì)成形工具進(jìn)行幾何進(jìn)行修改,并自動(dòng)生成多個(gè)不同的模型,即為實(shí)驗(yàn)設(shè)計(jì)(DOE)過(guò)程;然后,對(duì)所有Marc模型進(jìn)行后處理分析,并收集回彈結(jié)果;整個(gè)過(guò)程中的AI/ML部分由海克斯康工業(yè)軟件ODYSSEE執(zhí)行,該軟件不是標(biāo)準(zhǔn)Marc/Mentat安裝包中的一部分,需要單獨(dú)安裝;DOE分析的輸入和輸出被發(fā)送到ODYSSEE,它將在幾何參數(shù)和產(chǎn)生的回彈之間建立數(shù)學(xué)關(guān)系;最后,ODYSSEE將執(zhí)行優(yōu)化分析,以找到為回彈提供最佳結(jié)果的幾何數(shù)值。
數(shù)據(jù)準(zhǔn)備
01
模型建立
建模是使用基本模型完成的,該基本模型經(jīng)過(guò)修改以創(chuàng)建具有不同角度和半徑的不同模型變體。先打開基本模型,如圖2所示,沖頭、下模和坯料壓邊圈為采用片狀實(shí)體建模的剛體。請(qǐng)注意,圓角半徑?jīng)]有在基本模型中定義,如圖2中用綠色圈出的那樣;另外,模具的底部是水平的。
圖2 用于數(shù)據(jù)準(zhǔn)備的基本模型
02
DOE生成
此步驟包括生成具有不同幾何構(gòu)型的所有模型。這里也是我們創(chuàng)建過(guò)程文件的地方,該文件用于修改基本模型。在Mentat的頂部菜單欄上選擇:AI/ML工具 ? 實(shí)驗(yàn)設(shè)計(jì)。
圖3 實(shí)驗(yàn)設(shè)計(jì)菜單
生成按鈕提供了圖4中的下拉式菜單。在這里,我們定義了要用于修改基本模型的參數(shù),它們還充當(dāng)優(yōu)化問(wèn)題中的設(shè)計(jì)變量。這些參數(shù)類似于Mentat中的常規(guī)參數(shù),只是它們有一個(gè)取值范圍。用戶可以在過(guò)程(命令流)文件中使用它們來(lái)對(duì)模型進(jìn)行參數(shù)化,此時(shí)它們采用范圍中的最小值。如圖1所示,要使用的兩個(gè)變量是彎曲角度和沖頭半徑。添加兩個(gè)變量的名稱以及我們?cè)试S它們具有的范圍。在最大值字段中按回車鍵進(jìn)行保存,添加下一個(gè)變量時(shí),請(qǐng)覆蓋以前的數(shù)據(jù)。
圖4 生成/編輯數(shù)據(jù)點(diǎn)菜單
采用默認(rèn)算法(蒙特卡羅),并將要生成的實(shí)驗(yàn)數(shù)設(shè)置為60。點(diǎn)擊生成數(shù)據(jù)點(diǎn)按鈕,將顯示以下菜單。
圖5 生成/編輯數(shù)據(jù)點(diǎn)菜單與實(shí)驗(yàn)數(shù)據(jù)點(diǎn)
上圖顯示了60個(gè)設(shè)計(jì)實(shí)驗(yàn)的參數(shù)變化,稍后將為這些組合中的每一個(gè)生成一個(gè)Marc模型。單擊確定按鈕返回上一菜單,然后使用另存為按鈕將此數(shù)據(jù)保存到文件中。在此處輸入springback作為名稱,將創(chuàng)建一個(gè)名為springback.csv的文件,該文件存儲(chǔ)這組參數(shù)變化集。此時(shí)菜單窗口如圖6所示,輸入的參數(shù)現(xiàn)在顯示在右側(cè)。
圖6 帶有設(shè)計(jì)空間的實(shí)驗(yàn)設(shè)計(jì)菜單
下一步是創(chuàng)建用于修改基本模型的過(guò)程文件。使用記錄按鈕(選項(xiàng))可以開始創(chuàng)建過(guò)程文件。首先將其保存到文件springback_pre.proc中?,F(xiàn)在用彎曲角度旋轉(zhuǎn)圖2中的三角形實(shí)體,并使用實(shí)體布爾運(yùn)算從下模中減去該三角形實(shí)體。確保使用參數(shù)bend_angle,以便將其存儲(chǔ)在過(guò)程文件中。使用實(shí)體操作來(lái)生成沖頭圓角半徑,并確保使用參數(shù)radius_punch。還可以使用radius_punch+3生成模具的圓角半徑。點(diǎn)擊停止按鈕(在記錄按鈕相同位置)以停止過(guò)程文件的錄制。如有必要,可以對(duì)該文件進(jìn)行編輯,例如刪除錄制過(guò)程中出現(xiàn)的錯(cuò)誤。這個(gè)過(guò)程文件現(xiàn)在將用于生成所有實(shí)驗(yàn),這些實(shí)驗(yàn)具有springback_pre.proc文件中給定的參數(shù)的變化。注意過(guò)程文件的第一行:
*full_reset_doe_variation
這樣可以確保在創(chuàng)建每個(gè)設(shè)計(jì)實(shí)驗(yàn)時(shí)將模型重置為基本模型,并通過(guò)記錄選項(xiàng)自動(dòng)添加。如果在不使用記錄選項(xiàng)的情況下生成過(guò)程文件,則必須添加此行。現(xiàn)在單擊生成實(shí)驗(yàn)按鈕。它將使用過(guò)程文件生成60個(gè)請(qǐng)求的設(shè)計(jì)實(shí)驗(yàn),每個(gè)單獨(dú)的目錄中有一個(gè)Marc作業(yè)。
03
運(yùn)行實(shí)驗(yàn)
當(dāng)所有的作業(yè)/實(shí)驗(yàn)生成后,我們就可以通過(guò)運(yùn)行實(shí)驗(yàn)選項(xiàng)完成運(yùn)行。根據(jù)計(jì)算機(jī)性能和可用許可證數(shù)量,可以使用#并行作業(yè)選項(xiàng)同時(shí)運(yùn)行多個(gè)作業(yè)。運(yùn)行的進(jìn)度顯示在菜單中,如圖7所示。
圖 7 實(shí)驗(yàn)設(shè)計(jì)菜單
所有作業(yè)完成后,可以檢查狀態(tài)和退出編號(hào)。如果某些作業(yè)失敗,可以通過(guò)取消選擇導(dǎo)出標(biāo)記將其從結(jié)果中排除。結(jié)果排除選項(xiàng)應(yīng)謹(jǐn)慎使用,因?yàn)檫@可能會(huì)導(dǎo)致結(jié)果不太準(zhǔn)確。
04
結(jié)果提取
有了所有可用的結(jié)果,現(xiàn)在的任務(wù)是從描述回彈的運(yùn)行結(jié)果中提取數(shù)據(jù)。我們將回彈量用工件左下側(cè)的角節(jié)點(diǎn)(節(jié)點(diǎn)編號(hào)110)的垂直位移來(lái)衡量,目標(biāo)值是該節(jié)點(diǎn)的y位移應(yīng)等于-20。該值將作為優(yōu)化過(guò)程中的目標(biāo)值。
與前面創(chuàng)建模型修改過(guò)程文件的方式類似,我們生成了一個(gè)用于提取結(jié)果的過(guò)程文件。單擊記錄按鈕,將過(guò)程文件保存到文件springback_post.proc中。這一行在文件中自動(dòng)生成:
*full_reset_doe_results
這一行確保為每個(gè)實(shí)驗(yàn)重新運(yùn)行過(guò)程文件?,F(xiàn)在添加命令以提取節(jié)點(diǎn)110的y位移。目前只允許使用歷程圖、路徑圖或廣義XY圖。請(qǐng)注意,只提取將在優(yōu)化中使用的結(jié)果。這里,使用節(jié)點(diǎn)110的歷程圖來(lái)進(jìn)行從51到51的增量步(即只需要最后一個(gè)增量步的值)。然后將歷程圖的數(shù)據(jù)保存到文件disp_Y中。導(dǎo)出結(jié)果時(shí),Mentat將自動(dòng)拾取此文件。現(xiàn)在的最后一步是執(zhí)行提取結(jié)果命令。Mentat現(xiàn)在將瀏覽所有實(shí)驗(yàn)的結(jié)果文件并提取結(jié)果。
05
結(jié)果輸出
數(shù)據(jù)準(zhǔn)備的最后一步是運(yùn)行導(dǎo)出結(jié)果。它收集為設(shè)計(jì)變量變化準(zhǔn)備的springback.csv文件,并將其轉(zhuǎn)換為springback_input.csv。包含提取結(jié)果的disp_Y文件將轉(zhuǎn)換為sprinpback_results.csv。這兩個(gè)文件將傳遞到ODYSSEE,并在優(yōu)化過(guò)程中使用。
ODYSSEE CAE中的非線性優(yōu)化
01
輸入數(shù)據(jù)
下一步是使用ODYSSEE進(jìn)行非線性優(yōu)化。啟動(dòng)時(shí)使用:AI/ML工具?ODYSSEE,一旦軟件啟動(dòng),使用1-project下的按鈕創(chuàng)建一個(gè)新項(xiàng)目(在圖8中用紅色方塊高亮顯示)。
圖8 ODYSSEE CAE 項(xiàng)目生成
第一步是導(dǎo)入我們之前創(chuàng)建的csv文件。輸入如下所示的X-XN數(shù)據(jù)選項(xiàng),單擊X-base cases,然后使用Import Csv導(dǎo)入springback_input.csv??赡苄枰牡焦ぷ髂夸?。
圖9 springback_input.csv 文件輸入
單擊Y-YN Data,然后選擇create Datasets from Csv并選擇文件springback_results.csv。點(diǎn)擊validate Data configuration按鈕以完成數(shù)據(jù)導(dǎo)入。
圖10 springback_result.csv 文件輸入
02
插值
下一步是插值。這是ODYSSEE根據(jù)數(shù)據(jù)集創(chuàng)建預(yù)測(cè)模型的步驟。4-Interpolation下的配置按鈕(看起來(lái)像齒輪)允許用戶選擇插值的解算器和設(shè)置。這里我們使用默認(rèn)設(shè)置。有關(guān)如何選擇最佳設(shè)置的詳細(xì)信息,請(qǐng)參閱ODYSSEE文檔?,F(xiàn)在運(yùn)行插值以生成預(yù)測(cè)模型。
03
優(yōu)化
現(xiàn)在到了實(shí)際的優(yōu)化階段,使用預(yù)測(cè)模型來(lái)找到最優(yōu)解。圖11顯示了配置選項(xiàng),可通過(guò)紅色框高亮顯示的按鈕訪問(wèn)。
1)配置參數(shù)
顯示導(dǎo)入ODYSSEE的設(shè)計(jì)變量,這里沒(méi)有可改變的。
2)定義優(yōu)化問(wèn)題
在這里選擇 + 按鈕添加新目標(biāo),顯示下面的菜單,是定義優(yōu)化目標(biāo)的地方。如前所述,我們希望結(jié)果值(節(jié)點(diǎn)110的y位移)達(dá)到-20的值。
3)配置優(yōu)化器
選擇用于優(yōu)化的方法,此例使用默認(rèn)設(shè)置。
圖11 優(yōu)化問(wèn)題設(shè)置(第2部分)
圖12 優(yōu)化結(jié)果
通過(guò)在模型生成中輸入radius_punch和bend_radius的優(yōu)化值來(lái)驗(yàn)證結(jié)果,可以使用事先編(錄)好的過(guò)程文件來(lái)完成的。目標(biāo)y位移為-20,所得值為-20.0114,非常接近。
圖13 使用優(yōu)化得到的半徑和彎曲角度的工件Y向位移云圖
04
注意
1)如果已經(jīng)安裝了Marc文檔,也可以參考用戶指南中的最后一個(gè)例子說(shuō)明以及其所列出的相關(guān)文件。
2)從2023.2.1版本開始ODYSSEE軟件也開始提供中文菜單界面供用戶選用。
小結(jié)
本文主要以金屬成形過(guò)程的非線性幾何優(yōu)化模擬為例,介紹了機(jī)器學(xué)習(xí)工具在非線性優(yōu)化中的應(yīng)用方法。可以看到,在前處理器Mentat中引入了新的AI/ML工具菜單及后臺(tái)集成后,為Marc/Mentat用戶在ODYSSEE-CAE等軟件工具中部署AI/ML提供了一種有效的方式,便于用戶對(duì)非線性模型進(jìn)行優(yōu)化分析。