李 超, 張 盛, 李 云 鵬, 陳 飆 松
( 大連理工大學(xué) 工業(yè)裝備結(jié)構(gòu)分析國家重點實驗室, 遼寧 大連 116024 )
基于SiPESC平臺的通用腳本語言表示代理模型構(gòu)架
李 超, 張 盛, 李 云 鵬, 陳 飆 松*
( 大連理工大學(xué) 工業(yè)裝備結(jié)構(gòu)分析國家重點實驗室, 遼寧 大連 116024 )
基于面向服務(wù)的開放式軟件平臺SiPESC,引進流行的用于描述數(shù)學(xué)符號結(jié)構(gòu)和內(nèi)容的MathML語言,實現(xiàn)了一種通用腳本語言表示代理模型構(gòu)架.該構(gòu)架的核心思想是使用MathML描述各種代理模型(如徑向基函數(shù)、響應(yīng)面、Kriging等)函數(shù)表達式結(jié)果,方便以文本形式表示和保存,并使用工廠設(shè)計模式管理各種腳本(如JavaScript、Python、Matlab等)的轉(zhuǎn)換工具,實現(xiàn)MathML數(shù)據(jù)到腳本的靈活轉(zhuǎn)換.采用MathML可以提高代理模型結(jié)果表達的通用性,而工廠設(shè)計模式可以提高轉(zhuǎn)換工具的靈活性,使其能適用于不同工程和研究.實踐表明,該構(gòu)架可提高代理模型結(jié)果表示、查看和使用的效率,為工程中的優(yōu)化、近似模擬、快速顯示提供便利.
代理模型;MathML;表達式;SiPESC;腳本語言
代理模型也被稱為近似模型,是近似建模中非常重要的工具.它作為系統(tǒng)資源占用過多或過程復(fù)雜計算的近似替換,能有效地推動各領(lǐng)域工程計算、設(shè)計優(yōu)化、即時快速顯示等的實施.代理模型一直是多學(xué)科優(yōu)化的重要工具,能為大規(guī)模問題、不同學(xué)科計算條件下無法融合交流以及問題描述本身非線性強等的優(yōu)化提供幫助[1].Kodiyalam等[2]將代理模型用于多學(xué)科優(yōu)化中的快速可視化.Sasena等[3]使用“適應(yīng)性代理模型結(jié)合性全局優(yōu)化算法”的方式代替?zhèn)鹘y(tǒng)的“全局加梯度算法”的策略提高全局尋優(yōu)能力.李守巨等[4]使用RBF代理模型進行水輪機振源參數(shù)識別.Ong等[5]將代理模型和并行進化算法結(jié)合求解計算代價大的設(shè)計優(yōu)化問題.Samad等[6]將多種代理模型用于汽輪機通道設(shè)計以提高系統(tǒng)熱傳導(dǎo)性能.王紅等[7]使用混合Kriging代理模型解決高計算代價且變量多的優(yōu)化問題.Allaire等[8]用代理模型估計航空工業(yè)中各種模型的不確定性傳播.隨著代理模型的廣泛應(yīng)用,它已經(jīng)成為處理各學(xué)科復(fù)雜計算及優(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é)果保存在生成軟件的當次項目或者內(nèi)存中,如果將代理模型應(yīng)用到其他軟件或者領(lǐng)域,需要通過接口調(diào)用生成該代理模型的軟件.工程中通常需要直接使用代理模型生成的函數(shù)關(guān)系,將模型中函數(shù)關(guān)系施加在特殊的場合,或者對生成的模型做相關(guān)的分析.如何使用通用且易于使用的方式讓工程師看到顯示的代理模型關(guān)系具有重要意義.
計算機技術(shù)的發(fā)展極大地推動了數(shù)學(xué)理論應(yīng)用工程實踐的方式,其中W3C的數(shù)學(xué)工作團隊在XML基礎(chǔ)上制定的MathML[15]能夠描述數(shù)學(xué)符號的結(jié)構(gòu)和內(nèi)容,是計算機之間交換數(shù)學(xué)信息的標準,為不同平臺和應(yīng)用程序之間數(shù)學(xué)模型的共享和交換提供標準[16].MathML可以將數(shù)學(xué)符號表示成類似HTML的文本[15].已有的使用MathML作為數(shù)學(xué)模型共享和交換標準的相關(guān)工作很多.Polynomial toolbox for Matlab[17]實現(xiàn)了面向?qū)ο蟮亩囗検胶蚆athML數(shù)據(jù)的轉(zhuǎn)換,為高質(zhì)量的顯示和與其他軟件數(shù)據(jù)傳遞提供了很好的工具.Hill等[18]引入MathML作為標準格式描述航空動力學(xué)模型,使其能快速被仿真和性能驗證使用,避免了軟件集成和流程搭建需要的大量時間.Estévez等[19]將MathML應(yīng)用在工業(yè)控制系統(tǒng)中,提高了設(shè)計開發(fā)流程中多個軟件的協(xié)作.如果將MathML用于代理模型結(jié)果表示能有效解決代理模型使用中通用性問題.另外,提供將其轉(zhuǎn)換成常見的使用形式(Python、Matlab等)的工具和擴展條件能為工程提供更多的便利.
本文基于開放式軟件平臺SiPESC[20]的面向服務(wù)構(gòu)架及其代理模型功能,使用MathML描述代理模型函數(shù)表達式結(jié)果,提出代理模型結(jié)果向通用腳本轉(zhuǎn)換的構(gòu)架.該構(gòu)架的實現(xiàn)過程中,重點闡述代理模型結(jié)果的特點,以及使用MathML表示并進而轉(zhuǎn)換成各種腳本語言的方式.并利用設(shè)計的構(gòu)架實現(xiàn)代理模型結(jié)果向JavaScript、Python、Matlab腳本的轉(zhuǎn)換,給出擴展其他轉(zhuǎn)換工具的方式.最后給出實踐示例.
代理模型是用計算量小的函數(shù)代替復(fù)雜計算過程,結(jié)果是輸出變量關(guān)于輸入變量的函數(shù)關(guān)系.不同的代理模型構(gòu)造過程不同,但是都是由形式相對固定的包含輸入變量的基函數(shù)及相關(guān)系數(shù)組成.對于f(x)以下列舉幾種常見代理模型結(jié)果形式.
(1)響應(yīng)面RSM
響應(yīng)面RSM代理模型結(jié)果是多項式:
(1)
其中xk是輸入變量x的分量,β0、βk為多項式系數(shù)β的向量分量,β通過模型與樣本數(shù)學(xué)期望最小求得.
(2)徑向基函數(shù)RBF
RBF的結(jié)果是基函數(shù)的插值形式:
(2)
表1 徑向基函數(shù)中常見的基函數(shù)類型
RBF中的插值系數(shù)λ通過解相應(yīng)關(guān)于樣本點距離的線性方程組求得.
(3)Kriging
Kriging的預(yù)測模型如下:
表2 Kriging中常見的相關(guān)函數(shù)
從以上代理模型結(jié)果中可以看到,只有多項式、基函數(shù)和核函數(shù)帶有變量x,其他結(jié)果都是數(shù)值,在其代理模型構(gòu)造過程中計算所得.
根據(jù)代理模型結(jié)果的特點,本文首先使用MathML描述代理模型結(jié)果.為了簡化最后描述的結(jié)果,一般先進行代理模型構(gòu)造的計算,計算出所有不依賴變量x的數(shù)值,最后使用MathML將結(jié)果表示成只有x作為變量的表達式.
數(shù)學(xué)表達式都是由數(shù)字、變量(一個或多個字母)和運算符號表示.MathML提供了統(tǒng)一的方式描述數(shù)字、變量以及運算符號.
使用MathML描述數(shù)學(xué)表達式時,按照相應(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é)點,XML元素中,〈mn〉表示數(shù)字,〈mo〉表示操作符,〈msup〉表示上標,〈mi〉表示變量.
前面提到代理模型結(jié)果的表達式結(jié)構(gòu)相對固定,以兩個設(shè)計變量二階無交叉項RSM代理模型為例,其結(jié)果結(jié)構(gòu)為
(5)
當β數(shù)值確定、兩個設(shè)計變量用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代碼中,當β數(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實現(xiàn)過程中,需要結(jié)合其結(jié)果中表達式的結(jié)構(gòu),將對應(yīng)系數(shù)的數(shù)值和變量的名稱對號入座即可.
代理模型結(jié)果使用MathML表示后,將其轉(zhuǎn)換成通用腳本語言的工作,首先需明確要解析的數(shù)學(xué)內(nèi)容以及對應(yīng)的MathML元素,然后根據(jù)轉(zhuǎn)換后的形式設(shè)計通用且可擴展的構(gòu)架.
數(shù)學(xué)中有眾多符號和操作,但是從第1章對代理模型結(jié)果的分析中可以看到,結(jié)果中需要表示的是常用的數(shù)學(xué)運算及操作,包括四則運算、括號、常數(shù)e和π、三角函數(shù)、絕對值、冪指函數(shù)、上下舍入等.只需解析這些MathML元素即可用腳本表示代理模型結(jié)果.
科學(xué)研究及工程計算中常用到的腳本語言有JavaScript、Python和Matlab等,在解析MathML元素后,需要將元素轉(zhuǎn)換成相應(yīng)腳本中表示該運算的字符串即可.但是,相同操作或者運算對應(yīng)的腳本表示有所不同,表3中列出了部分操作對應(yīng)的腳本語言格式,更多符號及操作對應(yīng)的表示格式詳見各腳本的相關(guān)文檔.
表3 MathML元素對應(yīng)腳本代碼
轉(zhuǎn)換過程的實現(xiàn)需要解析MathML,解析過程的設(shè)計使用Qt支持的DOM(document object model)技術(shù).所有解析MathML的解析器都是MathExpBuilder對象,下面詳細介紹解析器實現(xiàn)及解析過程.
首先,對數(shù)學(xué)中需要轉(zhuǎn)換的運算及操作進行分類和標示,存放在MathExpBuilder實例化的子類屬性中.分類依據(jù)是數(shù)學(xué)性質(zhì)(操作)或者運算內(nèi)容數(shù)量,分別存放在Category和ContentsCount 屬性中.具體的運算或操作的標示對應(yīng)MathML中元素,存放在Type屬性中.表4列舉了幾種解析器的分類和標示.
表4 MathML元素對應(yīng)解析器屬性
然后,使用MathExpBuilderManager管理所有解析器MathExpBuilder,并根據(jù)不同Category屬性設(shè)計擁有不同接口的MathExpBuilder,通過visit函數(shù)解析對應(yīng)的MathML元素.所有類型的解析器可以通過MathExpBuilderManager管理器動態(tài)地由Type屬性查詢進而創(chuàng)建.不同Category 屬性對應(yīng)的接口形式有差異,故設(shè)計中間接口定義層的抽象基類,如WithTextContent、WithBinaryContent、WithBuildableContent、WithBuildableContents等,分別表示文本、二元素結(jié)構(gòu)、單元素結(jié)構(gòu)、多元素結(jié)構(gòu).所有實例化的解析器對象繼承于它們實現(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)容.當所有分支解析到WithTextContent時已經(jīng)沒有數(shù)學(xué)函數(shù)、操作等內(nèi)容,此時所有元素都解析完畢,整個MathML解析成功.部分代碼如下:
1//讀入所有MathML數(shù)據(jù)2QDomDocumentxml_data(mathmldata);3//初始化MathML數(shù)據(jù)的根節(jié)點4QDomElementroot=xml_data.documentElement();5//創(chuàng)建JavaScript解析器6MathToJavaScriptParserparser;7//解析MathML,在此函數(shù)中通過DOM支持和遞歸調(diào)用解析所有MathML元素8MMath?math=parser.parserxml(root);9//創(chuàng)建解析出的腳本語言的字符串建造器及其選項(選項配置略)10MStringBuildermstringbuilder;11MStringBuilder&sb=mstringbuilder;12BuildContextOptionsoptions;13//使用解析選項初始化數(shù)學(xué)元素建造器14BuildContextbuildcontext(options);15//從根節(jié)點開始解析MathML16math-〉visit(sb,&buildcontext);17//將解析出的MathML轉(zhuǎn)換成字符串18QStringexpression=sb.toQString();
上面代碼中,第8行是解析MathML的關(guān)鍵,實現(xiàn)遞歸調(diào)用,將MathML元素解析成對應(yīng)的MathExpBuilder;第16行調(diào)用所有MathExpBuilder實例化對象的visit函數(shù)生成最后的表達式.其中遞歸調(diào)用解析MathML的部分代碼如下:
1MathExpBuilder?genericParse(QDomElementelement)2{3 //獲取當前MathML節(jié)點的子節(jié)點列表4 QDomNodeListelems=element.childNodes();5 //獲取當前MathML節(jié)點的元素名稱6 QStringelementtype=camel(element.tagName());7 //創(chuàng)建所有元素解析器的管理器8 MathExpBuilderManagermanager;9 //獲取所有解析器列表,用于匹配和查詢10 QStringListtypelist=manager.getMathExpBuilderTypeList();11 //獲取當前MathML節(jié)點子節(jié)點個數(shù)12 intcount=elems.count();13 //通過分類查詢匹配當前MathML節(jié)點并解析,這里只列出了節(jié)點數(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)解析器進行解析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)解析器進行解析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}
為了實現(xiàn)MathML向腳本轉(zhuǎn)換的可擴展性,方便添加向其他腳本轉(zhuǎn)換的支持,本文基于SiPESC面向服務(wù)插件式編程,實現(xiàn)了表達式服務(wù)的構(gòu)架.利用SiPESC平臺插件可以動態(tài)安裝、加卸載、擴展接口訪問,可以方便地使用已有表達式功能和定義自己表達式功能模塊.構(gòu)架設(shè)計中,將MathML向腳本轉(zhuǎn)換的構(gòu)架抽象成4個基本服務(wù),分別為ExpressionFactoryManager、Expression、ExpressionFactory、ExpressionConverter,其間關(guān)系如圖2所示.
圖中Expression和ExpressionFactory是腳本表達式服務(wù)抽象定義接口類,定義不同表達式類型提供服務(wù)的接口.Expression類提供存放表達式MathML數(shù)據(jù)和相應(yīng)類型腳本表達式代碼的
圖2 表達式服務(wù)使用示意圖
服務(wù),ExpressionFactory通過MathML數(shù)據(jù)創(chuàng)建具體表達式擴展.ExpressionFactoryManager提供表達式服務(wù)對應(yīng)工廠的注冊、查詢和創(chuàng)建.ExpressionConverter負責將一種腳本表達式Expression轉(zhuǎn)換成另一種.
腳本轉(zhuǎn)換工具的實現(xiàn)中,利用DOM技術(shù)將MathML轉(zhuǎn)化成腳本表達式的工作在繼承ExpressionFactory擴展的實例化服務(wù)中實現(xiàn).以Python為例,定義擴展PythonExpressionFactory繼承ExpressionFactory,在createExpression接口中解析MathML代碼,用Python腳本表示,存放在PythonExpression中.createExpression具體接口定義如下(參數(shù)包括MathML數(shù)據(jù)和表達式名稱,參數(shù)類型都是字符串):
1//創(chuàng)建表達式的腳本表示2ExpressioncreateExpression(QStringdata,QStringname);
為了更好地保存MathML數(shù)據(jù)并管理生成的表達式,設(shè)計Expression服務(wù)保存數(shù)據(jù)和表達式,并支持表達式求值.Expression的接口定義如下:
1//獲取表達式類型2QStringgetType()const;3//獲取表達式MathML數(shù)據(jù)4QByteArraygetData()const;5//檢查表達式是否可以執(zhí)行并把結(jié)果數(shù)值賦給名稱6boolisEvalSupport()const;7//獲取表達式中變量列表8QStringListgetVariableNameList()const;9//獲取表達式名稱10QStringgetName()const;11//設(shè)置表達式名稱12voidsetName(constQString&value);13//求解表達式14doubleevalToNumber();15//給腳本表達式中變量賦值16boolsetVariableValue(QStringvariableName,doublevalues);17//獲取表達式腳本語言表示,可以指定是否含有表達式名稱18QStringgetExpression(boolhasName=false);
可以看到,表達式腳本語言表示的同時提供了表達式求值,這為代理模型的表示和使用提供了更加便利的支持.
如果需要擴展對另一種腳本的支持,需要通過抽象工廠設(shè)計模式,繼承于Expression和ExpressionFactory 實現(xiàn)具體擴展.并且在工廠創(chuàng)建Expression的實現(xiàn)中將MathML用腳本語言表示,然后通過ExpressionFactoryManager的接口注冊該類型的ExpressionFactory.JavaScript和Matlab支持的實現(xiàn)如圖3所示.
圖3 擴展表達式服務(wù)抽象工廠設(shè)計模式的UML圖
4.1 結(jié)構(gòu)耐撞性優(yōu)化問題
剛性板壓縮薄壁直梁如圖4所示,設(shè)計變量是邊角方形邊長C(mm)和薄壁厚度T(mm),響應(yīng)是結(jié)構(gòu)比吸能SEA(J).碰撞模擬由ANSYS/LS_DYNA完成.由于計算耗時較長,需要使用RSM代理模型對其進行近似,以完成優(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);
可以看到,使用本文實現(xiàn)的軟件工具能方便有效地將代理模型結(jié)果使用MathML表示,并轉(zhuǎn)化成各種需要的腳本語言.
4.2 Halo軌道航天器交會軌跡問題[23]
Halo軌道航天器交會軌跡最優(yōu)設(shè)計中,日地系L2平動點附近的Halo軌道族如圖5所示.交會軌跡確定是求解最優(yōu)控制過程.模型中,變量為初始變軌時刻t0和交會過程耗時Δt,分別使用t和dt表示.輸出變量為燃料消耗正相關(guān)的ΔV.ΔV的表達式文獻[23]已給出,MathML表示數(shù)據(jù)量大,本文不再列出,只列出其轉(zhuǎn)化成的腳本語言.
使用RBF生成代理模型與文獻[23]中結(jié)果相同,其中Matlab腳本語言如下:
(a) 北
(b) 南
圖5 日地系L2平動點附近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é)果腳本表示相對較長,但是腳本運行由計算機程序?qū)崿F(xiàn),工作量相對很?。砟P湍_本結(jié)果表示中,RSM結(jié)果為多項式,代碼長度最小;其他代理模型,如Kriging,因其結(jié)構(gòu)中包含形式復(fù)雜的核函數(shù),結(jié)果較長.但是結(jié)果表示不影響計算機執(zhí)行該代理模型代碼.
在計算過程中,本文方法比傳統(tǒng)方法(非符號表示)多出了MathML字符數(shù)據(jù)組裝解析過程,但是這些工作是一次性的,且解析后實際數(shù)學(xué)計算效率相同.上文兩個具體示例MathML組裝解析過程中,耐撞性優(yōu)化問題MathML代碼424行,耗時0.011 s;航天器交會軌跡問題34行,耗時0.003 s.而本文方法中無磁盤文件讀取的MathML組裝和解析速度在每秒萬行以上,增加的計算時間相對很少.
本文通過引入MathML技術(shù)表示代理模型結(jié)果,基于面向插件服務(wù)開放式軟件平臺SiPESC,研發(fā)了一種通用腳本表示代理模型結(jié)果的軟件構(gòu)架.在此基礎(chǔ)上,實現(xiàn)了響應(yīng)面RSM、徑向基函數(shù)RBF、Kriging代理模型的函數(shù)表達式結(jié)果向MathML的轉(zhuǎn)換,以及代理模型生成MathML用Python、JavaScript、Matlab腳本語言的表示.數(shù)值示例驗證了在本文構(gòu)架基礎(chǔ)上所研發(fā)軟件的實用性.將本文的工作與SiPESC中代理模型功能相結(jié)合,極大地發(fā)揮了SiPESC中代理模型的功能特點,增強了代理模型使用的獨立性和靈活性,為模型分析、優(yōu)化、快速可視化提供了非常實用的工具.
此外,代理模型結(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ò)的水輪機振源參數(shù)識別方法[J]. 大連理工大學(xué)學(xué)報, 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ù)估計優(yōu)化算法[J]. 大連理工大學(xué)學(xué)報, 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é)報, 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]. 計算機輔助工程, 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模型機翼平面外形氣動優(yōu)化設(shè)計[J]. 海軍航空工程學(xué)院學(xué)報, 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é)基金資助項目(11372064,91515103);國家重點研發(fā)計劃資助項目(2016YFB0200702);高等學(xué)校學(xué)科創(chuàng)新引智計劃資助項目(B14013);中央高?;究蒲袠I(yè)務(wù)費專項資金資助項目(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