李 超, 張 盛, 李 云 鵬, 陳 飆 松
( 大連理工大學(xué) 工業(yè)裝備結(jié)構(gòu)分析國家重點(diǎn)實(shí)驗(yàn)室, 遼寧 大連 116024 )
基于SiPESC平臺的通用腳本語言表示代理模型構(gòu)架
李 超, 張 盛, 李 云 鵬, 陳 飆 松*
( 大連理工大學(xué) 工業(yè)裝備結(jié)構(gòu)分析國家重點(diǎn)實(shí)驗(yàn)室, 遼寧 大連 116024 )
基于面向服務(wù)的開放式軟件平臺SiPESC,引進(jìn)流行的用于描述數(shù)學(xué)符號結(jié)構(gòu)和內(nèi)容的MathML語言,實(shí)現(xiàn)了一種通用腳本語言表示代理模型構(gòu)架.該構(gòu)架的核心思想是使用MathML描述各種代理模型(如徑向基函數(shù)、響應(yīng)面、Kriging等)函數(shù)表達(dá)式結(jié)果,方便以文本形式表示和保存,并使用工廠設(shè)計(jì)模式管理各種腳本(如JavaScript、Python、Matlab等)的轉(zhuǎn)換工具,實(shí)現(xiàn)MathML數(shù)據(jù)到腳本的靈活轉(zhuǎn)換.采用MathML可以提高代理模型結(jié)果表達(dá)的通用性,而工廠設(shè)計(jì)模式可以提高轉(zhuǎn)換工具的靈活性,使其能適用于不同工程和研究.實(shí)踐表明,該構(gòu)架可提高代理模型結(jié)果表示、查看和使用的效率,為工程中的優(yōu)化、近似模擬、快速顯示提供便利.
代理模型;MathML;表達(dá)式;SiPESC;腳本語言
代理模型也被稱為近似模型,是近似建模中非常重要的工具.它作為系統(tǒng)資源占用過多或過程復(fù)雜計(jì)算的近似替換,能有效地推動各領(lǐng)域工程計(jì)算、設(shè)計(jì)優(yōu)化、即時快速顯示等的實(shí)施.代理模型一直是多學(xué)科優(yōu)化的重要工具,能為大規(guī)模問題、不同學(xué)科計(jì)算條件下無法融合交流以及問題描述本身非線性強(qiáng)等的優(yōu)化提供幫助[1].Kodiyalam等[2]將代理模型用于多學(xué)科優(yōu)化中的快速可視化.Sasena等[3]使用“適應(yīng)性代理模型結(jié)合性全局優(yōu)化算法”的方式代替?zhèn)鹘y(tǒng)的“全局加梯度算法”的策略提高全局尋優(yōu)能力.李守巨等[4]使用RBF代理模型進(jìn)行水輪機(jī)振源參數(shù)識別.Ong等[5]將代理模型和并行進(jìn)化算法結(jié)合求解計(jì)算代價(jià)大的設(shè)計(jì)優(yōu)化問題.Samad等[6]將多種代理模型用于汽輪機(jī)通道設(shè)計(jì)以提高系統(tǒng)熱傳導(dǎo)性能.王紅等[7]使用混合Kriging代理模型解決高計(jì)算代價(jià)且變量多的優(yōu)化問題.Allaire等[8]用代理模型估計(jì)航空工業(yè)中各種模型的不確定性傳播.隨著代理模型的廣泛應(yīng)用,它已經(jīng)成為處理各學(xué)科復(fù)雜計(jì)算及優(yōu)化問題的有效工具.
代理模型作為成熟的技術(shù),因其應(yīng)用廣泛,很多軟件提供相應(yīng)的功能支持.大多數(shù)MDO軟件中都有相應(yīng)的模塊,如ModelCenter[9]、Isight[10]、Visual DOC[11]、DAKOTA[12]等.另外,也有以代理模型為主要功能的軟件或工具箱,如SUMO[13]、Surrogates[14]等.代理模型的結(jié)果是輸出關(guān)于輸入的函數(shù)關(guān)系,但以上軟件在結(jié)果保存、交流、重復(fù)使用過程中也存在不便,代理模型結(jié)果不能通過顯示方式給出.造成不便的主要原因是沒有一種統(tǒng)一的方式能表示代理模型生成的函數(shù).這使得代理模型的結(jié)果保存在生成軟件的當(dāng)次項(xiàng)目或者內(nèi)存中,如果將代理模型應(yīng)用到其他軟件或者領(lǐng)域,需要通過接口調(diào)用生成該代理模型的軟件.工程中通常需要直接使用代理模型生成的函數(shù)關(guān)系,將模型中函數(shù)關(guān)系施加在特殊的場合,或者對生成的模型做相關(guān)的分析.如何使用通用且易于使用的方式讓工程師看到顯示的代理模型關(guān)系具有重要意義.
計(jì)算機(jī)技術(shù)的發(fā)展極大地推動了數(shù)學(xué)理論應(yīng)用工程實(shí)踐的方式,其中W3C的數(shù)學(xué)工作團(tuán)隊(duì)在XML基礎(chǔ)上制定的MathML[15]能夠描述數(shù)學(xué)符號的結(jié)構(gòu)和內(nèi)容,是計(jì)算機(jī)之間交換數(shù)學(xué)信息的標(biāo)準(zhǔn),為不同平臺和應(yīng)用程序之間數(shù)學(xué)模型的共享和交換提供標(biāo)準(zhǔn)[16].MathML可以將數(shù)學(xué)符號表示成類似HTML的文本[15].已有的使用MathML作為數(shù)學(xué)模型共享和交換標(biāo)準(zhǔn)的相關(guān)工作很多.Polynomial toolbox for Matlab[17]實(shí)現(xiàn)了面向?qū)ο蟮亩囗?xiàng)式和MathML數(shù)據(jù)的轉(zhuǎn)換,為高質(zhì)量的顯示和與其他軟件數(shù)據(jù)傳遞提供了很好的工具.Hill等[18]引入MathML作為標(biāo)準(zhǔn)格式描述航空動力學(xué)模型,使其能快速被仿真和性能驗(yàn)證使用,避免了軟件集成和流程搭建需要的大量時間.Estévez等[19]將MathML應(yīng)用在工業(yè)控制系統(tǒng)中,提高了設(shè)計(jì)開發(fā)流程中多個軟件的協(xié)作.如果將MathML用于代理模型結(jié)果表示能有效解決代理模型使用中通用性問題.另外,提供將其轉(zhuǎn)換成常見的使用形式(Python、Matlab等)的工具和擴(kuò)展條件能為工程提供更多的便利.
本文基于開放式軟件平臺SiPESC[20]的面向服務(wù)構(gòu)架及其代理模型功能,使用MathML描述代理模型函數(shù)表達(dá)式結(jié)果,提出代理模型結(jié)果向通用腳本轉(zhuǎn)換的構(gòu)架.該構(gòu)架的實(shí)現(xiàn)過程中,重點(diǎn)闡述代理模型結(jié)果的特點(diǎn),以及使用MathML表示并進(jìn)而轉(zhuǎn)換成各種腳本語言的方式.并利用設(shè)計(jì)的構(gòu)架實(shí)現(xiàn)代理模型結(jié)果向JavaScript、Python、Matlab腳本的轉(zhuǎn)換,給出擴(kuò)展其他轉(zhuǎn)換工具的方式.最后給出實(shí)踐示例.
代理模型是用計(jì)算量小的函數(shù)代替復(fù)雜計(jì)算過程,結(jié)果是輸出變量關(guān)于輸入變量的函數(shù)關(guān)系.不同的代理模型構(gòu)造過程不同,但是都是由形式相對固定的包含輸入變量的基函數(shù)及相關(guān)系數(shù)組成.對于f(x)以下列舉幾種常見代理模型結(jié)果形式.
(1)響應(yīng)面RSM
響應(yīng)面RSM代理模型結(jié)果是多項(xiàng)式:
(1)
其中xk是輸入變量x的分量,β0、βk為多項(xiàng)式系數(shù)β的向量分量,β通過模型與樣本數(shù)學(xué)期望最小求得.
(2)徑向基函數(shù)RBF
RBF的結(jié)果是基函數(shù)的插值形式:
(2)
表1 徑向基函數(shù)中常見的基函數(shù)類型
RBF中的插值系數(shù)λ通過解相應(yīng)關(guān)于樣本點(diǎn)距離的線性方程組求得.
(3)Kriging
Kriging的預(yù)測模型如下:
表2 Kriging中常見的相關(guān)函數(shù)
從以上代理模型結(jié)果中可以看到,只有多項(xiàng)式、基函數(shù)和核函數(shù)帶有變量x,其他結(jié)果都是數(shù)值,在其代理模型構(gòu)造過程中計(jì)算所得.
根據(jù)代理模型結(jié)果的特點(diǎn),本文首先使用MathML描述代理模型結(jié)果.為了簡化最后描述的結(jié)果,一般先進(jìn)行代理模型構(gòu)造的計(jì)算,計(jì)算出所有不依賴變量x的數(shù)值,最后使用MathML將結(jié)果表示成只有x作為變量的表達(dá)式.
數(shù)學(xué)表達(dá)式都是由數(shù)字、變量(一個或多個字母)和運(yùn)算符號表示.MathML提供了統(tǒng)一的方式描述數(shù)字、變量以及運(yùn)算符號.
使用MathML描述數(shù)學(xué)表達(dá)式時,按照相應(yīng)的規(guī)則生成對應(yīng)的代碼即可.例如2+1.5x2使用MathML描述的代碼如下:
1 〈mml:mathxmlns:mml="http://www.w3.org/1998/Math/MathML"〉2 〈mml:mn〉2〈/mml:mn〉3 〈mml:mo〉+〈/mml:mo〉4 〈mml:mn〉1.5〈/mml:mn〉5 〈mml:msup〉6 〈mml:mrow〉7 〈mml:mi〉x〈/mml:mi〉8 〈/mml:mrow〉9 〈mml:mrow〉10 〈mml:mn〉2〈/mml:mn〉11 〈/mml:mrow〉12 〈/mml:msup〉13 〈/mml:math〉
其中,〈math〉表示整段MathML的根節(jié)點(diǎn),XML元素中,〈mn〉表示數(shù)字,〈mo〉表示操作符,〈msup〉表示上標(biāo),〈mi〉表示變量.
前面提到代理模型結(jié)果的表達(dá)式結(jié)構(gòu)相對固定,以兩個設(shè)計(jì)變量二階無交叉項(xiàng)RSM代理模型為例,其結(jié)果結(jié)構(gòu)為
(5)
當(dāng)β數(shù)值確定、兩個設(shè)計(jì)變量用H和W表示、輸出變量用V表示時,表示的結(jié)果如下:
V=1.2H+3.1W+0.4H2+1.3W2
(6)
使用MathML表示如下:
1 〈mml:mathxmlns:mml="http://www.w3.org/1998/Math/MathML"〉2 〈mml:mi〉V〈/mml:mi〉3 〈mml:mo〉=〈/mml:mo〉4 〈mml:mn〉1.2〈/mml:mn〉5 〈mml:mi〉H〈/mml:mi〉6 〈mml:mo〉+〈/mml:mo〉7 〈mml:mn〉3.1〈/mml:mn〉8 〈mml:mi〉W〈/mml:mi〉9 〈mml:mo〉+〈/mml:mo〉10 〈mml:mn〉0.4〈/mml:mn〉11 〈mml:msup〉12 〈mml:mrow〉13 〈mml:mi〉H〈/mml:mi〉14 〈/mml:mrow〉15 〈mml:mrow〉16 〈mml:mn〉2〈/mml:mn〉17 〈/mml:mrow〉18 〈/mml:msup〉19 〈mml:mo〉+〈/mml:mo〉20 〈mml:mn〉1.3〈/mml:mn〉21 〈mml:msup〉22 〈mml:mrow〉23 〈mml:mi〉W〈/mml:mi〉24 〈/mml:mrow〉25 〈mml:mrow〉26 〈mml:mn〉2〈/mml:mn〉27 〈/mml:mrow〉28 〈/mml:msup〉29 〈/mml:math〉
在MathML代碼中,當(dāng)β數(shù)值變化時,需要使用新的值代替第4、7、10、20行的數(shù)值;如果變量名稱發(fā)生改變,需要替換第5、8、13、23行的名稱;如果添加了變量,只需要使用新的系數(shù)和變量重復(fù)第6~8、19~28行.這樣結(jié)構(gòu)有固定規(guī)律的描述性語言代碼可以使用程序方便地生成.
以上示例可見使用MathML表示代理模型結(jié)果的可行性.代理模型結(jié)果使用MathML實(shí)現(xiàn)過程中,需要結(jié)合其結(jié)果中表達(dá)式的結(jié)構(gòu),將對應(yīng)系數(shù)的數(shù)值和變量的名稱對號入座即可.
代理模型結(jié)果使用MathML表示后,將其轉(zhuǎn)換成通用腳本語言的工作,首先需明確要解析的數(shù)學(xué)內(nèi)容以及對應(yīng)的MathML元素,然后根據(jù)轉(zhuǎn)換后的形式設(shè)計(jì)通用且可擴(kuò)展的構(gòu)架.
數(shù)學(xué)中有眾多符號和操作,但是從第1章對代理模型結(jié)果的分析中可以看到,結(jié)果中需要表示的是常用的數(shù)學(xué)運(yùn)算及操作,包括四則運(yùn)算、括號、常數(shù)e和π、三角函數(shù)、絕對值、冪指函數(shù)、上下舍入等.只需解析這些MathML元素即可用腳本表示代理模型結(jié)果.
科學(xué)研究及工程計(jì)算中常用到的腳本語言有JavaScript、Python和Matlab等,在解析MathML元素后,需要將元素轉(zhuǎn)換成相應(yīng)腳本中表示該運(yùn)算的字符串即可.但是,相同操作或者運(yùn)算對應(yīng)的腳本表示有所不同,表3中列出了部分操作對應(yīng)的腳本語言格式,更多符號及操作對應(yīng)的表示格式詳見各腳本的相關(guān)文檔.
表3 MathML元素對應(yīng)腳本代碼
轉(zhuǎn)換過程的實(shí)現(xiàn)需要解析MathML,解析過程的設(shè)計(jì)使用Qt支持的DOM(document object model)技術(shù).所有解析MathML的解析器都是MathExpBuilder對象,下面詳細(xì)介紹解析器實(shí)現(xiàn)及解析過程.
首先,對數(shù)學(xué)中需要轉(zhuǎn)換的運(yùn)算及操作進(jìn)行分類和標(biāo)示,存放在MathExpBuilder實(shí)例化的子類屬性中.分類依據(jù)是數(shù)學(xué)性質(zhì)(操作)或者運(yùn)算內(nèi)容數(shù)量,分別存放在Category和ContentsCount 屬性中.具體的運(yùn)算或操作的標(biāo)示對應(yīng)MathML中元素,存放在Type屬性中.表4列舉了幾種解析器的分類和標(biāo)示.
表4 MathML元素對應(yīng)解析器屬性
然后,使用MathExpBuilderManager管理所有解析器MathExpBuilder,并根據(jù)不同Category屬性設(shè)計(jì)擁有不同接口的MathExpBuilder,通過visit函數(shù)解析對應(yīng)的MathML元素.所有類型的解析器可以通過MathExpBuilderManager管理器動態(tài)地由Type屬性查詢進(jìn)而創(chuàng)建.不同Category 屬性對應(yīng)的接口形式有差異,故設(shè)計(jì)中間接口定義層的抽象基類,如WithTextContent、WithBinaryContent、WithBuildableContent、WithBuildableContents等,分別表示文本、二元素結(jié)構(gòu)、單元素結(jié)構(gòu)、多元素結(jié)構(gòu).所有實(shí)例化的解析器對象繼承于它們實(shí)現(xiàn)具體解析MathML元素的功能.解析器繼承關(guān)系UML類如圖1所示.
圖1 不同MathML元素解析器UML圖
最后,使用DOM技術(shù)解析整個MathML數(shù)據(jù).DOM技術(shù)中,一次性地先將所有MathML讀入內(nèi)存,然后遞歸嵌套解析MathML元素.解析元素時在MathExpBuilderManager管理器查找到相應(yīng)的解析器,然后創(chuàng)建并解析該元素的內(nèi)容.當(dāng)所有分支解析到WithTextContent時已經(jīng)沒有數(shù)學(xué)函數(shù)、操作等內(nèi)容,此時所有元素都解析完畢,整個MathML解析成功.部分代碼如下:
1//讀入所有MathML數(shù)據(jù)2QDomDocumentxml_data(mathmldata);3//初始化MathML數(shù)據(jù)的根節(jié)點(diǎn)4QDomElementroot=xml_data.documentElement();5//創(chuàng)建JavaScript解析器6MathToJavaScriptParserparser;7//解析MathML,在此函數(shù)中通過DOM支持和遞歸調(diào)用解析所有MathML元素8MMath?math=parser.parserxml(root);9//創(chuàng)建解析出的腳本語言的字符串建造器及其選項(xiàng)(選項(xiàng)配置略)10MStringBuildermstringbuilder;11MStringBuilder&sb=mstringbuilder;12BuildContextOptionsoptions;13//使用解析選項(xiàng)初始化數(shù)學(xué)元素建造器14BuildContextbuildcontext(options);15//從根節(jié)點(diǎn)開始解析MathML16math-〉visit(sb,&buildcontext);17//將解析出的MathML轉(zhuǎn)換成字符串18QStringexpression=sb.toQString();
上面代碼中,第8行是解析MathML的關(guān)鍵,實(shí)現(xiàn)遞歸調(diào)用,將MathML元素解析成對應(yīng)的MathExpBuilder;第16行調(diào)用所有MathExpBuilder實(shí)例化對象的visit函數(shù)生成最后的表達(dá)式.其中遞歸調(diào)用解析MathML的部分代碼如下:
1MathExpBuilder?genericParse(QDomElementelement)2{3 //獲取當(dāng)前MathML節(jié)點(diǎn)的子節(jié)點(diǎn)列表4 QDomNodeListelems=element.childNodes();5 //獲取當(dāng)前MathML節(jié)點(diǎn)的元素名稱6 QStringelementtype=camel(element.tagName());7 //創(chuàng)建所有元素解析器的管理器8 MathExpBuilderManagermanager;9 //獲取所有解析器列表,用于匹配和查詢10 QStringListtypelist=manager.getMathExpBuilderTypeList();11 //獲取當(dāng)前MathML節(jié)點(diǎn)子節(jié)點(diǎn)個數(shù)12 intcount=elems.count();13 //通過分類查詢匹配當(dāng)前MathML節(jié)點(diǎn)并解析,這里只列出了節(jié)點(diǎn)數(shù)為2的14 count=elems.count();15 switch(count)16 {17 case0:18 //內(nèi)容省略19 case1:20 //內(nèi)容省略21 case2:22 //通過MathML元素名稱從管理器中創(chuàng)建對應(yīng)的解析器23 mathexpbuilder=manager.getMathExpBuilder(elementtype);24 //查看解析器的類型是否是二元結(jié)構(gòu),如果是按照其方式解析25 if(mathexpbuilder-〉getCategory()=="WithBinaryContent"){26 //將解析器類型動態(tài)轉(zhuǎn)換成二元結(jié)構(gòu)解析器進(jìn)行解析27 WithBinaryContent?withbinarycontent=dynamic_cast〈WithBinaryContent?〉(mathexpbuilder);28 MathExpBuilder?f=genericParse(elems.a(chǎn)t(0).toElement());29 MathExpBuilder?s=genericParse(elems.a(chǎn)t(1).toElement());30 withbinarycontent-〉setMathExpBuilderPair(f,s);31 }else{32 //如果不是二元結(jié)構(gòu),使用多元結(jié)構(gòu)解析器進(jìn)行解析33 WithBuildableContents?withbuildablecontents=34 dynamic_cast〈WithBuildableContents?〉(mathexpbuilder);35 QList〈MathExpBuilder?〉list;36 list〈〈genericParse(elems.a(chǎn)t(0).toElement());37 list〈〈genericParse(elems.a(chǎn)t(1).toElement());
38 withbuildablecontents-〉setMathExpBuilderList(list);39 }40 returnmathexpbuilder;41 default:42 //內(nèi)容省略43}
為了實(shí)現(xiàn)MathML向腳本轉(zhuǎn)換的可擴(kuò)展性,方便添加向其他腳本轉(zhuǎn)換的支持,本文基于SiPESC面向服務(wù)插件式編程,實(shí)現(xiàn)了表達(dá)式服務(wù)的構(gòu)架.利用SiPESC平臺插件可以動態(tài)安裝、加卸載、擴(kuò)展接口訪問,可以方便地使用已有表達(dá)式功能和定義自己表達(dá)式功能模塊.構(gòu)架設(shè)計(jì)中,將MathML向腳本轉(zhuǎn)換的構(gòu)架抽象成4個基本服務(wù),分別為ExpressionFactoryManager、Expression、ExpressionFactory、ExpressionConverter,其間關(guān)系如圖2所示.
圖中Expression和ExpressionFactory是腳本表達(dá)式服務(wù)抽象定義接口類,定義不同表達(dá)式類型提供服務(wù)的接口.Expression類提供存放表達(dá)式MathML數(shù)據(jù)和相應(yīng)類型腳本表達(dá)式代碼的
圖2 表達(dá)式服務(wù)使用示意圖
服務(wù),ExpressionFactory通過MathML數(shù)據(jù)創(chuàng)建具體表達(dá)式擴(kuò)展.ExpressionFactoryManager提供表達(dá)式服務(wù)對應(yīng)工廠的注冊、查詢和創(chuàng)建.ExpressionConverter負(fù)責(zé)將一種腳本表達(dá)式Expression轉(zhuǎn)換成另一種.
腳本轉(zhuǎn)換工具的實(shí)現(xiàn)中,利用DOM技術(shù)將MathML轉(zhuǎn)化成腳本表達(dá)式的工作在繼承ExpressionFactory擴(kuò)展的實(shí)例化服務(wù)中實(shí)現(xiàn).以Python為例,定義擴(kuò)展PythonExpressionFactory繼承ExpressionFactory,在createExpression接口中解析MathML代碼,用Python腳本表示,存放在PythonExpression中.createExpression具體接口定義如下(參數(shù)包括MathML數(shù)據(jù)和表達(dá)式名稱,參數(shù)類型都是字符串):
1//創(chuàng)建表達(dá)式的腳本表示2ExpressioncreateExpression(QStringdata,QStringname);
為了更好地保存MathML數(shù)據(jù)并管理生成的表達(dá)式,設(shè)計(jì)Expression服務(wù)保存數(shù)據(jù)和表達(dá)式,并支持表達(dá)式求值.Expression的接口定義如下:
1//獲取表達(dá)式類型2QStringgetType()const;3//獲取表達(dá)式MathML數(shù)據(jù)4QByteArraygetData()const;5//檢查表達(dá)式是否可以執(zhí)行并把結(jié)果數(shù)值賦給名稱6boolisEvalSupport()const;7//獲取表達(dá)式中變量列表8QStringListgetVariableNameList()const;9//獲取表達(dá)式名稱10QStringgetName()const;11//設(shè)置表達(dá)式名稱12voidsetName(constQString&value);13//求解表達(dá)式14doubleevalToNumber();15//給腳本表達(dá)式中變量賦值16boolsetVariableValue(QStringvariableName,doublevalues);17//獲取表達(dá)式腳本語言表示,可以指定是否含有表達(dá)式名稱18QStringgetExpression(boolhasName=false);
可以看到,表達(dá)式腳本語言表示的同時提供了表達(dá)式求值,這為代理模型的表示和使用提供了更加便利的支持.
如果需要擴(kuò)展對另一種腳本的支持,需要通過抽象工廠設(shè)計(jì)模式,繼承于Expression和ExpressionFactory 實(shí)現(xiàn)具體擴(kuò)展.并且在工廠創(chuàng)建Expression的實(shí)現(xiàn)中將MathML用腳本語言表示,然后通過ExpressionFactoryManager的接口注冊該類型的ExpressionFactory.JavaScript和Matlab支持的實(shí)現(xiàn)如圖3所示.
圖3 擴(kuò)展表達(dá)式服務(wù)抽象工廠設(shè)計(jì)模式的UML圖
4.1 結(jié)構(gòu)耐撞性優(yōu)化問題
剛性板壓縮薄壁直梁如圖4所示,設(shè)計(jì)變量是邊角方形邊長C(mm)和薄壁厚度T(mm),響應(yīng)是結(jié)構(gòu)比吸能SEA(J).碰撞模擬由ANSYS/LS_DYNA完成.由于計(jì)算耗時較長,需要使用RSM代理模型對其進(jìn)行近似,以完成優(yōu)化等任務(wù).
圖4 剛性板壓縮薄壁直梁
使用RBF代理模型(散布參數(shù)c選取8.516),各種腳本語言的表示代理模型的結(jié)果如下:
(1)Matlab腳本語言
SEA=-2.37685e+06*exp(1)^-1*((T-1.2)^2+(C-20.625)^2)/72.5223+544886*exp(1)^-1*((T-1.35)^2+(C-28.125)^2)/72.5223+4.38301e+06*exp(1)^-1*((T-1.5)^2+(C-18.75)^2)/72.5223-2.04958e+06*exp(1)^-1*((T-1.65)^2+(C-26.25)^2)/72.5223-3.10324e+06*exp(1)^-1*((T-1.8)^2+(C-16.875)^2)/72.5223+3.05294e+06*exp(1)^-1*((T-1.95)^2+(C-24.375)^2)/72.5223+906733*exp(1)^-1*((T-2.1)^2+(C-15)^2)/72.5223-1.32298e+06*exp(1)^-1*((T-2.25)^2+(C-22.5)^2)/72.5223+13417.1*exp(1)^-1*((T-2.4)^2+(C-30)^2)/72.5223;
(2)Python腳本語言
SEA=-2.37685e+06*math.pow(math.e, -1*(math.pow((T-1.2), 2)+math.pow((C-20.625), 2))/72.5223)+544886*math.pow(math.e, -1*(math.pow((T-1.35), 2)+math.pow((C-28.125), 2))/72.5223)+4.38301e+06*math.pow(math.e, -1*(math.pow((T-1.5), 2)+math.pow((C-18.75), 2))/72.5223)-2.04958e+06*math.pow(math.e, -1*(math.pow((T-1.65), 2)+math.pow((C-26.25), 2))/72.5223)-3.10324e+06*math.pow(math.e, -1*(math.pow((T-1.8), 2)+math.pow((C-16.875), 2))/72.5223)+3.05294e+06*math.pow(math.e, -1*(math.pow((T-1.95),2)+math.pow((C-24.375), 2))/72.5223)+906733*math.pow(math.e, -1*(math.pow((T-2.1), 2)+math.pow((C-15), 2))/72.5223)-1.32298e+06*math.pow(math.e, -1*(math.pow((T-2.25), 2)+math.pow((C-22.5), 2))/72.5223)+13417.1*math.pow(math.e, -1*(math.pow((T-2.4), 2)+math.pow((C-30), 2))/72.5223);
(3)JavaScript腳本語言
SEA=-2.37685e+06*Math.pow(Math.E, -1*(Math.pow((T-1.2), 2)+Math.pow((C-20.625), 2))/72.5223)+544886*Math.pow(Math.E, -1*(Math.pow((T-1.35), 2)+Math.pow((C-28.125), 2))/72.5223)+4.38301e+06*Math.pow(Math.E, -1*(Math.pow((T-1.5), 2)+Math.pow((C-18.75), 2))/72.5223)-2.04958e+06*Math.pow(Math.E, -1*(Math.pow((T-1.65), 2)+Math.pow((C-26.25), 2))/72.5223)-3.10324e+06*Math.pow(Math.E, -1*(Math.pow((T-1.8), 2)+Math.pow((C-16.875), 2))/72.5223)+3.05294e+06*Math.pow(Math.E, -1*(Math.pow((T-1.95), 2)+Math.pow((C-24.375), 2))/72.5223)+906733*Math.pow(Math.E, -1*(Math.pow((T-2.1), 2)+Math.pow((C-15), 2))/72.5223)-1.32298e+06*Math.pow(Math.E, -1*(Math.pow((T-2.25), 2)+Math.pow((C-22.5), 2))/72.5223)+13417.1*Math.pow(Math.E, -1*(Math.pow((T-2.4), 2)+Math.pow((C-30), 2))/72.5223);
可以看到,使用本文實(shí)現(xiàn)的軟件工具能方便有效地將代理模型結(jié)果使用MathML表示,并轉(zhuǎn)化成各種需要的腳本語言.
4.2 Halo軌道航天器交會軌跡問題[23]
Halo軌道航天器交會軌跡最優(yōu)設(shè)計(jì)中,日地系L2平動點(diǎn)附近的Halo軌道族如圖5所示.交會軌跡確定是求解最優(yōu)控制過程.模型中,變量為初始變軌時刻t0和交會過程耗時Δt,分別使用t和dt表示.輸出變量為燃料消耗正相關(guān)的ΔV.ΔV的表達(dá)式文獻(xiàn)[23]已給出,MathML表示數(shù)據(jù)量大,本文不再列出,只列出其轉(zhuǎn)化成的腳本語言.
使用RBF生成代理模型與文獻(xiàn)[23]中結(jié)果相同,其中Matlab腳本語言如下:
(a) 北
(b) 南
圖5 日地系L2平動點(diǎn)附近Halo軌道族
Fig.5 Families of Halo orbits around the L2point in the sun-earth system
OBJECTIVE=155.862*exp(1)^-1*((-159.31)^2+(t-111.034)^2+(dt-146.479)^2)/1+61.7241*exp(1)^-1*((-38.9655)^2+(t-225.057)^2+(dt-80)^2)/1+138.131*exp(1)^-1*((-169.524)^2+(t-107.586)^2+(dt-84.4828)^2)/1+114.483*exp(1)^-1*((-93.7931)^2+(t-76.8966)^2+(dt-137.9)^2)/1+31.3793*exp(1)^-1*((-42.7586)^2+(t-152.584)^2+(dt-142.069)^2)/1+166.607*exp(1)^-1*((-209.734)^2+(t-97.2414)^2+(dt-50.3448)^2)/1+86.8966*exp(1)^-1*((-148.966)^2+(t-57.931)^2+(dt-167.848)^2)/1+69.3103*exp(1)^-1*((-27.5862)^2+(t-368.975)^2+(dt-117.931)^2)/1+132.603*exp(1)^-1*((-136.331)^2+(t-128.276)^2+(dt-92.069)^2)/1+138.621*exp(1)^-1*((-145.517)^2+(t-130)^2+(dt-147.131)^2)/1+107.241*exp(1)^-1*((-73.1034)^2+(t-145.033)^2+(dt-135.172)^2)/1+353.59*exp(1)^-1*((-133.098)^2+(t-166.207)^2+(dt-23.7931)^2)/1+90.3448*exp(1)^-1*((-100.69)^2+(t-126.207)^2+(dt-132.824)^2)/1+65.5172*exp(1)^-1*((-95.8621)^2+(t-142.132)^2+(dt-173.103)^2)/1+150.59*exp(1)^-1*((-140.92)^2+(t-169.655)^2+(dt-122.414)^2)/1+121.379*exp(1)^-1*((-162.759)^2+(t-80.6897)^2+(dt-141.204)^2)/1+20*exp(1)^-1*((-118.621)^2+(t-127.552)^2+(dt-124.828)^2)/1+165.581*exp(1)^-1*((-273.074)^2+(t-176.552)^2+(dt-46.5517)^2)/1+104.138*exp(1)^-1*((-152.414)^2+(t-88.2759)^2+(dt-140.175)^2)/1+114.828*exp(1)^-1*((-35.1724)^2+(t-220.968)^2+(dt-83.4483)^2)/1+147.942*exp(1)^-1*((-143.857)^2+(t-131.724)^2+(dt-54.1379)^2)/1+111.034*exp(1)^-1*((-180)^2+(t-99.6552)^2+(dt-147.595)^2)/10*exp(1)^-1*((-103.448)^2+(t-135.576)^2+(dt+0)^2)/1;
另外,使用RSM代理模型結(jié)果,Matlab腳本語言如下:
OBJECTIVE=659.301-3.82764*t-6.32842*dt+0.0145322*t*t+0.0336776*dt*dt;
該代理模型結(jié)果的生成也完全自動由程序?qū)崿F(xiàn),可以將結(jié)果方便地復(fù)制、保存以便與Matlab結(jié)合用于完成與其相關(guān)的其他任務(wù).
示例中可以看到,代理模型的結(jié)果腳本表示相對較長,但是腳本運(yùn)行由計(jì)算機(jī)程序?qū)崿F(xiàn),工作量相對很?。砟P湍_本結(jié)果表示中,RSM結(jié)果為多項(xiàng)式,代碼長度最??;其他代理模型,如Kriging,因其結(jié)構(gòu)中包含形式復(fù)雜的核函數(shù),結(jié)果較長.但是結(jié)果表示不影響計(jì)算機(jī)執(zhí)行該代理模型代碼.
在計(jì)算過程中,本文方法比傳統(tǒng)方法(非符號表示)多出了MathML字符數(shù)據(jù)組裝解析過程,但是這些工作是一次性的,且解析后實(shí)際數(shù)學(xué)計(jì)算效率相同.上文兩個具體示例MathML組裝解析過程中,耐撞性優(yōu)化問題MathML代碼424行,耗時0.011 s;航天器交會軌跡問題34行,耗時0.003 s.而本文方法中無磁盤文件讀取的MathML組裝和解析速度在每秒萬行以上,增加的計(jì)算時間相對很少.
本文通過引入MathML技術(shù)表示代理模型結(jié)果,基于面向插件服務(wù)開放式軟件平臺SiPESC,研發(fā)了一種通用腳本表示代理模型結(jié)果的軟件構(gòu)架.在此基礎(chǔ)上,實(shí)現(xiàn)了響應(yīng)面RSM、徑向基函數(shù)RBF、Kriging代理模型的函數(shù)表達(dá)式結(jié)果向MathML的轉(zhuǎn)換,以及代理模型生成MathML用Python、JavaScript、Matlab腳本語言的表示.?dāng)?shù)值示例驗(yàn)證了在本文構(gòu)架基礎(chǔ)上所研發(fā)軟件的實(shí)用性.將本文的工作與SiPESC中代理模型功能相結(jié)合,極大地發(fā)揮了SiPESC中代理模型的功能特點(diǎn),增強(qiáng)了代理模型使用的獨(dú)立性和靈活性,為模型分析、優(yōu)化、快速可視化提供了非常實(shí)用的工具.
此外,代理模型結(jié)果的MathML表示可以直接導(dǎo)出到Word、Latex等支持MathML表示公式的文檔中,以文檔的形式顯示和傳播.
[1] SOBIESZCZANSKI-SOBIESKI J, HAFTKA R T. Multidisciplinary aerospace design optimization:Survey of recent developments [J]. Structural Optimization, 1997, 14(1):1-23.
[2] KODIYALAM S, YANG R J, GU L. High-performance computing and surrogate modeling for rapid visualization with multidisciplinary optimization [J]. AIAA Journal, 2004, 42(11):2347-2354.
[3] SASENA M, PAPALAMBROS P, GOOVAERTS P. Global optimization of problems with disconnected feasible regions via surrogate modeling [C] // 9th AIAA/ISSMO Symposium on Multidisciplinary Analysis and Optimization. Atlanta: AIAA, 2002.
[4] 李守巨,劉迎曦,宋樹川,等. 基于RBF神經(jīng)網(wǎng)絡(luò)的水輪機(jī)振源參數(shù)識別方法[J]. 大連理工大學(xué)學(xué)報(bào), 2007, 47(1):6-10.
LI Shouju, LIU Yingxi, SONG Shuchuan,etal. Identification procedure of vibrating load parameters of hydraulic generator with RBF neural network [J]. Journal of Dalian University of Technology, 2007, 47(1):6-10. (in Chinese)
[5] ONG Y S, NAIR P B, KEANE A J. Evolutionary optimization of computationally expensive problems via surrogate modeling [J]. AIAA Journal, 2003, 41(4):687-696.
[6] SAMAD A, SHIN D Y, KIM K Y,etal. Surrogate modeling for optimization of dimpled channel to enhance heat transfer performance [J]. Journal of Thermophysics and Heat Transfer, 2007, 21(3):667-671.
[7] 王 紅,王希誠,李克秋. 混合Kriging代理模型的高維參數(shù)估計(jì)優(yōu)化算法[J]. 大連理工大學(xué)學(xué)報(bào), 2015, 55(2):215-222.
WANG Hong, WANG Xicheng, LI Keqiu. Hybrid Kriging surrogate model optimization algorithm for high-dimension parameter estimation [J]. Journal of Dalian University of Technology, 2015, 55(2):215-222. (in Chinese)
[8] ALLAIRE D, WILLCOX K. Surrogate modeling for uncertainty assessment with application to aviation environmental system models [J]. AIAA Journal, 2010, 48(8):1791-1803.
[9] Phoenix Inc. Phoenix integration′s benchmark report offers next-level decision support [EB/OL]. (2011-05-23) [2016-04-18]. http://www.phoenix-int.com/company/news/2011-05-23.php.
[10] Dassault Systèmes. Isight & the simulia execution engine:process automation and design exploration. [EB/OL]. (2016-04-17) [2016-10-18]. http://www.3ds.com/products-services/simulia/products/ isight-simulia-execution-engine/portfolio/?xtmc=iSight&xtcr=2.
[11] Vanderplaats R&D Inc. Software for process integration and multidisciplinary design optimization [EB/OL]. (2016-04-16) [2016-10-18]. http://www.vrand.com/visualDOC.html.
[12] ADAMS B M, EBEIDA M S, ELDRED M S,etal. Dakota, a multilevel parallel object-oriented framework for design optimization, parameter estimation, uncertainty quantification, and sensitivity analysis:version 6.3 user′s manual [Z]. Albuquerque: Sandia National Laboratories, 2015.
[13] Sumo Lab. OoDACE:ooDACE toolbox [EB/OL]. (2012-04-26) [2016-04-17]. http://sumowiki.intec.ugent.be/OoDACE:ooDACE_toolbox.
[14] VIANA F A C. Surrogates toolbox [EB/OL]. (2016-03-29) [2016-10-17]. https://sites.google.com/site/srgtstoolbox/.
[15] W3C Recommendation. Mathematical markup language (MathML) version 3.0 2nd edition [EB/OL]. (2014-04-10) [2016-04-17]. https://www.w3.org/TR/MathML/.
[16] 趙 巍,劉永文,蘇 明. MathML在數(shù)學(xué)建模與仿真中的應(yīng)用研究[J]. 系統(tǒng)仿真學(xué)報(bào), 2007, 19(5):952-955.
ZHAO Wei, LIU Yongwen, SU Ming. Study of applying MathML to mathematical modeling and simulation [J]. Journal of System Simulation, 2007, 19(5):952-955. (in Chinese)
[17] HORNYCH R, HURK Z,EBEK M. MathML in polynomial toolbox for Matlab [C] // 2002 IEEE International Symposium on Computer Aided Control System Design, CACSD 2002 — Proceedings. Piscataway: IEEE, 2002:1036968.
[18] HILL M A, BRUCE JACKSON E. The DaveML translator:An interface for DAVE-ML aerodynamic models [C] // Collection of Technical Papers — 2007 AIAA Modeling and Simulation Technologies Conference. Reston:AIAA, 2007:1232-1244.
[19] ESTéVEZ E, MARCOS M. Model-based validation of industrial control systems [J]. IEEE Transactions on Industrial Informatics, 2012, 8(2):302-310.
[20] 張洪武,陳飆松,李云鵬,等. 面向集成化CAE軟件開發(fā)的SiPESC研發(fā)工作進(jìn)展[J]. 計(jì)算機(jī)輔助工程, 2011, 20(2):39-49.
ZHANG Hongwu, CHEN Biaosong, LI Yunpeng,etal. Advancement of design and implementation of SiPESC for development of integrated CAE software systems [J]. Computer Aided Engineering, 2011, 20(2):39-49. (in Chinese)
[21] FORRESTER A I J, SBESTER A, KEANE A. Engineering Design via Surrogate Modelling: A Practical Guide [M]. Southampton:Wiley, 2008.
[22] 于方圓,高 永,王允良,等. 基于Kriging模型機(jī)翼平面外形氣動優(yōu)化設(shè)計(jì)[J]. 海軍航空工程學(xué)院學(xué)報(bào), 2013, 28(5):514-520.
YU Fangyuan, GAO Yong, WANG Yunliang,etal. Optimization design of wings planform configuration based on Kriging model [J]. Journal of Naval Aeronautical and Astronautical University, 2013, 28(5):514-520. (in Chinese)
[23] PENG Haijun, YANG Chunfeng, LI Yunpeng,etal. Surrogate-based parameter optimization and optimal control for optimal trajectory of Halo orbit rendezvous [J]. Aerospace Science and Technology, 2013, 26(1):176-184.
Framework for expression of surrogate model using popular scripting languages based on platform SiPESC
LI Chao, ZHANG Sheng, LI Yunpeng, CHEN Biaosong*
( State Key Laboratory of Structural Analysis for Industrial Equipment, Dalian University of Technology,Dalian 116024, China )
Based on the service-oriented open software platform SiPESC and popular mathematical notations, structure and content descripting markup language MathML, a general framework for expressing result of surrogate model in popular scripting languages is generated. The core idea of the framework is that MathML elements are used to express the result of surrogate model, such as RBF, RSM, Kriging, so that the result can be saved as text. Besides, the abstract factory design patterns are adopted to manage the extensions for the expression tool of scripting languages, such as JavaScript, Python, Matlab, which can flexibly convert the MathML data into scripting languages. The technology of MathML makes the expression of surrogate model in a more general way, while the abstract factory design patterns make the extension tools flexible, so that the developed tools can be used in engineering and scientific research. The practices indicate that the efficiency in expression, inspection and usage for surrogate model can be largely improved by using the proposed framework, and a great convenience is provided for the engineering optimization, approximate analysis and rapid visualization etc..
surrogate model; MathML; expression; SiPESC; scripting languages
1000-8608(2017)01-0001-10
2016-05-04;
2016-11-03.
國家自然科學(xué)基金資助項(xiàng)目(11372064,91515103);國家重點(diǎn)研發(fā)計(jì)劃資助項(xiàng)目(2016YFB0200702);高等學(xué)校學(xué)科創(chuàng)新引智計(jì)劃資助項(xiàng)目(B14013);中央高校基本科研業(yè)務(wù)費(fèi)專項(xiàng)資金資助項(xiàng)目(DUT15JJ(G)03).
李 超(1986-),男,博士生,E-mail:li_chao@mail.dlut.edu.cn;陳飆松*(1973-),男,博士,教授,博士生導(dǎo)師,E-mail:chenbs@dlut.edu.cn.
TP319;O242.2
A
10.7511/dllgxb201701001