孫 杭,鄭 宇,2,李少陽
(1. 上海交通大學(xué)機(jī)械與動力工程學(xué)院,上海200240;2. 上海市網(wǎng)絡(luò)化制造與企業(yè)信息化重點(diǎn)實(shí)驗(yàn)室,上海 200240;3. 上海宇航系統(tǒng)工程研究所,上海 201108)
運(yùn)載火箭總體設(shè)計(jì)中,需要進(jìn)行多個(gè)專業(yè)、多次迭代耦合的參數(shù)計(jì)算和分析,晃動分析計(jì)算是其中的一個(gè)重要環(huán)節(jié)。文獻(xiàn)[1-4]對液體晃動結(jié)構(gòu)特性及等效力學(xué)模型方法進(jìn)行了研究,文獻(xiàn)[5-7]研究了低重環(huán)境下液體小幅晃動特性。傳統(tǒng)的運(yùn)載火箭晃動分析計(jì)算流程是在一個(gè)程序中判斷貯箱結(jié)構(gòu)有無管道,是否分割等來決定如何計(jì)算的。如圖1所示,這種實(shí)現(xiàn)方式的流程結(jié)構(gòu)固定,只能滿足特定的應(yīng)用場景。面對目前火箭高密度發(fā)射任務(wù)的需求,任務(wù)場景經(jīng)常發(fā)生變化、并且研制周期大幅度縮短,從而也對產(chǎn)品技術(shù)性能參數(shù)計(jì)算帶來了靈活可配置、快速實(shí)現(xiàn)的要求。傳統(tǒng)計(jì)算模式中計(jì)算機(jī)不能理解它所處理的數(shù)據(jù)、消息和過程的含義[8-9],無法根據(jù)使用條件自發(fā)的組織計(jì)算過程。如果使用本體模型,將描述貯箱結(jié)構(gòu)的知識和計(jì)算過程分開,用貯箱結(jié)構(gòu)的知識來引導(dǎo)計(jì)算過程,就可以獲得更加靈活高效的計(jì)算模式。程序根據(jù)使用場景只要對本體知識檢索或者推理就可以自發(fā)的決定使用何種計(jì)算過程來完成計(jì)算。這種模式正是利用本體模型表示與具體計(jì)算過程無關(guān)的領(lǐng)域知識,減少甚至完全消除計(jì)算過程中的判斷,使得整個(gè)計(jì)算程序基于本體實(shí)現(xiàn)靈活可配置。
圖1 傳統(tǒng)的運(yùn)載火箭晃動分析計(jì)算流程
構(gòu)建本體的目標(biāo)是為了獲取相關(guān)領(lǐng)域的知識,對該領(lǐng)域知識達(dá)成共同理解,明確該領(lǐng)域內(nèi)共同認(rèn)可的概念,明確定義概念之間的相互關(guān)系,通過明確概念之間的相互關(guān)系來描述概念語義[10]。構(gòu)建好的本體為同一領(lǐng)域的成員(對象或智能代理[11])之間提供公認(rèn)的概念集合關(guān)系集。目前構(gòu)建本體的已有方法包括:一是利用已有的敘詞表或分類表改造成本體;二是利用現(xiàn)有文獻(xiàn)和領(lǐng)域?qū)<抑R從頭做起,這種方法比較常用[12]。本文不僅僅對領(lǐng)域知識本體的構(gòu)建,而是要將領(lǐng)域知識應(yīng)用于實(shí)際問題的解決。當(dāng)使用領(lǐng)域知識解決實(shí)際問題時(shí),對于知識結(jié)構(gòu)的劃分要呈現(xiàn)出服從于目的(進(jìn)行晃動分析)的特性。本文以此為出發(fā)點(diǎn)探討領(lǐng)域知識在實(shí)際應(yīng)用中如何抽象出本體模型,提出了面向?qū)嶋H問題、將領(lǐng)域知識解決問題過程抽象為決策知識、引導(dǎo)應(yīng)用單元執(zhí)行的過程模型的方法。并以晃動計(jì)算為例說明模型抽象和實(shí)現(xiàn)過程,包括如何將建好的模型用于系統(tǒng)實(shí)現(xiàn),從而開發(fā)出具有公用性、可拓展性和高效可配置的軟件結(jié)構(gòu)。
本文需要研究的是一個(gè)具有高度靈活性的系統(tǒng),用來分析不同狀態(tài)下不同類型儲箱中液體的晃動頻率、晃動質(zhì)量、晃動位置和晃動位移。進(jìn)行知識建模前通過查閱現(xiàn)有文獻(xiàn)[1-7]和咨詢領(lǐng)域?qū)<彝瓿苫蝿臃治鱿嚓P(guān)知識梳理。為了方便后面分析和建模使用,對概念名詞給出了編號。其中貯箱結(jié)構(gòu)編號為S(Structure),等效方法編號為M(Method),分析內(nèi)容編號為C(Content),貯箱實(shí)例編號為E(Example),計(jì)算參數(shù)編號為P(Parameter)。得到圖2所示的知識結(jié)構(gòu)。圖中貯箱實(shí)例為晃動特性設(shè)計(jì)實(shí)際要研究的對象。不同對象依據(jù)其管道、底形狀、分割和阻尼裝置[13-14]等的不同,使用不同的計(jì)算公式進(jìn)行晃動特性設(shè)計(jì)。計(jì)算參數(shù)為使用計(jì)算公式進(jìn)行晃動計(jì)算所要用到的輸入?yún)?shù)總和。
圖2 領(lǐng)域知識梳理
將領(lǐng)域知識應(yīng)用于分析計(jì)算時(shí),不同情況下的分析計(jì)算結(jié)果形成了一個(gè)結(jié)果集。這里把領(lǐng)域知識中與得到的結(jié)果直接相關(guān)的內(nèi)容叫做單元知識,把結(jié)果集中一個(gè)結(jié)果所對應(yīng)的單元知識中的內(nèi)容叫做應(yīng)用單元。為了在指定情況下得到分析計(jì)算結(jié)果,需要使用領(lǐng)域知識形成分析計(jì)算方法。這里把領(lǐng)域知識實(shí)際使用中決定引向結(jié)果集中哪一個(gè)結(jié)果的部分叫做決策知識,決策知識是形成分析計(jì)算方法的依據(jù),起到判斷和引導(dǎo)的作用。決策知識還處在籠統(tǒng)的知識層面,需要在其中找到起決策作用的關(guān)鍵點(diǎn)并把這些關(guān)鍵點(diǎn)叫做決策節(jié)點(diǎn)。劃分過程見圖3中(1)。
最終,把領(lǐng)域知識解決實(shí)際問題的過程抽象為決策節(jié)點(diǎn)引導(dǎo)應(yīng)用單元執(zhí)行的過程。圖3中(2)表示決策節(jié)點(diǎn)與應(yīng)用單元的關(guān)系可以是一個(gè)決策節(jié)點(diǎn)引導(dǎo)出一個(gè)、兩個(gè)或更多應(yīng)用單元,也可以是一個(gè)、兩個(gè)或更多決策節(jié)點(diǎn)引導(dǎo)出一個(gè)應(yīng)用單元。為了討論問題的方便,后面會使用一個(gè)決策節(jié)點(diǎn)引導(dǎo)出兩個(gè)應(yīng)用單元的方式做進(jìn)一步探討。
知識在實(shí)際應(yīng)用中,根據(jù)研究問題的細(xì)致程度不同,所使用的知識的細(xì)化程度也不同。理論上,研究的問題可以無限細(xì)致,所以知識也是可以無限細(xì)化的。不做任何細(xì)化時(shí),整個(gè)領(lǐng)域知識對應(yīng)著結(jié)果,本身就是一個(gè)應(yīng)用單元,稱為第0層。圖3中(3)最大的空心圓描述的就是第0層。細(xì)化到第1層可以看到最大的空心圓中一個(gè)決策節(jié)點(diǎn)引導(dǎo)出兩個(gè)應(yīng)用單元,而每個(gè)應(yīng)用單元又可以進(jìn)一步細(xì)化。圖3中(3)一直細(xì)化到了第3層。不管在哪個(gè)層級來看,應(yīng)用單元總是位于最下面,因?yàn)樗鼈兪呛妥罱K結(jié)果直接相關(guān)的。雖然應(yīng)用單元可以不斷的細(xì)化并不斷剝離出決策節(jié)點(diǎn),但是在研究問題的一個(gè)特定層面上總會對應(yīng)一個(gè)特定的細(xì)化層級。具體細(xì)化到什么程度,由實(shí)際要解決的問題要求結(jié)果細(xì)致到什么程度來決定。本節(jié)就以細(xì)化到第3層來做后續(xù)討論。
如果用程序來實(shí)現(xiàn)領(lǐng)域知識,傳統(tǒng)實(shí)現(xiàn)方式對決策節(jié)點(diǎn)和應(yīng)用單元的使用方法如圖3中(4)。這里把程序中與領(lǐng)域知識外的內(nèi)容直接相連的決策節(jié)點(diǎn)叫做切入點(diǎn),把直接引導(dǎo)出應(yīng)用單元的決策節(jié)點(diǎn)叫做切出點(diǎn)。圖中按從上向下的順序,切入點(diǎn)只有一個(gè),從切入點(diǎn)到達(dá)每個(gè)應(yīng)用單元的路徑也只有一條。顯然,編寫實(shí)現(xiàn)程序時(shí)按照這種組織方式使用決策節(jié)點(diǎn)只能適應(yīng)預(yù)先確定的使用場景。程序自身無法針對未預(yù)先確定的使用場景分析判斷,給出確切的結(jié)果??紤]到?jīng)Q策節(jié)點(diǎn)在決策知識中是相互聯(lián)系的。一些決策節(jié)點(diǎn)和另外一些決策節(jié)點(diǎn)之間存在著穩(wěn)定的必然聯(lián)系。挖掘出這些穩(wěn)定的必然聯(lián)系,可以在決策節(jié)點(diǎn)之間構(gòu)建推理規(guī)則。使用決策節(jié)點(diǎn)構(gòu)建推理規(guī)則的過程也就是使用決策節(jié)點(diǎn)重構(gòu)決策知識的過程。程序通過使用這些推理規(guī)則,能夠根據(jù)不同的使用場景在切入點(diǎn)和切出點(diǎn)之間自發(fā)的形成推理鏈,實(shí)現(xiàn)決策知識引導(dǎo)應(yīng)用單元執(zhí)行。如圖3中(5)所示,在這樣的領(lǐng)域知識抽象模型中,能夠由相同的決策方式來引導(dǎo)的應(yīng)用單元可以合并在一起。
圖3 領(lǐng)域知識抽象模型
從知識結(jié)構(gòu)的角度來看,使用決策節(jié)點(diǎn)重構(gòu)決策知識,決策知識作為所有應(yīng)用單元的共同引導(dǎo)具有公用性。隨著應(yīng)用單元逐漸細(xì)化,可以不斷剝離出新的決策節(jié)點(diǎn),新的決策節(jié)點(diǎn)可以融入到原來的決策知識中拓展決策知識。在知識中決策節(jié)點(diǎn)之間理論上是可以普遍聯(lián)系的,因此,在使用時(shí)決策節(jié)點(diǎn)之間能夠自由組合。把決策節(jié)點(diǎn)的這些特性用在領(lǐng)域知識的實(shí)現(xiàn)中,就可以得到具有公用性、可拓展性和能夠自由組合的實(shí)現(xiàn)程序。
從知識應(yīng)用的角度來看,如圖3中(6)。根據(jù)已構(gòu)建的結(jié)構(gòu)模型,其中所有決策節(jié)點(diǎn)構(gòu)成了一個(gè)概念的集合。基于對概念的使用方法得到與概念集相應(yīng)的推理機(jī)制,也就是說不同概念集的推理機(jī)制是有差別的。在處理不確定事物時(shí),推理機(jī)制可以提取事物的屬性并做出預(yù)判,從而達(dá)到識別事物的目的。如果提取出的屬性多于識別事物時(shí)做出界定所需要的概念,推理機(jī)制將從過飽和屬性中提取規(guī)律,并生成新的概念(決策節(jié)點(diǎn))到概念集中。不斷豐富和完善的概念集可以提高推理機(jī)制處理不確定問題的能力。在知識結(jié)構(gòu)基礎(chǔ)上使用這種知識應(yīng)用模式無疑是程序智能化的體現(xiàn)。
按照上一節(jié)所述的建模方法,首先要在領(lǐng)域知識中區(qū)分出決策知識和單元知識:決策知識側(cè)重于方法的形成,單元知識側(cè)重于方法的實(shí)施。對應(yīng)到晃動分析中,決策知識需要用于解決的實(shí)際問題是如何根據(jù)不同的使用場景自發(fā)形成確切的分析計(jì)算組合公式。單元知識則用于解決晃動分析時(shí)如何使用這些計(jì)算公式得到分析計(jì)算結(jié)果。
圖4中以Y11(一級氧箱一級飛行)為例說明針對貯箱實(shí)例進(jìn)行晃動分析的方法。圖中左側(cè)虛線框內(nèi)描述以Y11作為應(yīng)用單元實(shí)現(xiàn)晃動分析的具體過程:從系統(tǒng)外部獲取對Y11進(jìn)行晃動分析需要用到的參數(shù)值,傳遞給通過推理得到的能夠?qū)11執(zhí)行晃動頻率、晃動質(zhì)量、晃動位置和晃動位移計(jì)算的程序,完成晃動計(jì)算,得到晃動分析結(jié)果。圖中右側(cè)虛線框內(nèi)描述Y11如何使用決策節(jié)點(diǎn)得到確切的分析計(jì)算公式:根據(jù)Y11所對應(yīng)的使用場景檢索出貯箱結(jié)構(gòu),等效方法,和需要進(jìn)行晃動分析的內(nèi)容;然后把檢索到的信息應(yīng)用于推理規(guī)則,得到計(jì)算公式和執(zhí)行這些公式需要用到的輸入?yún)?shù)。
按照以上對Y11進(jìn)行晃動分析的解析方式,對整個(gè)晃動計(jì)算知識理解后,建立了如圖5所示的模型。比對圖2所梳理的概念結(jié)構(gòu),可以得到圖中節(jié)點(diǎn)的具體所指?;蝿臃治稣w模型是使用決策節(jié)點(diǎn)重構(gòu)決策知識的依據(jù)。根據(jù)貯箱結(jié)構(gòu)、貯箱實(shí)例、等效方法、分析內(nèi)容和計(jì)算參數(shù)的普遍關(guān)聯(lián)能夠建立起廣泛的推理規(guī)則。這種通過挖掘決策節(jié)點(diǎn)之間穩(wěn)定的必然聯(lián)系來使用節(jié)點(diǎn)的方式,在應(yīng)對不同使用場景時(shí),總能把從使用場景中提取到的信息用于邏輯關(guān)系與規(guī)則推導(dǎo),得到具體的應(yīng)用單元執(zhí)行方式,引導(dǎo)應(yīng)用單元執(zhí)行。使用過程中,程序也可以對模型進(jìn)行動態(tài)維護(hù)。包括增加新節(jié)點(diǎn),刪除廢棄的節(jié)點(diǎn),在節(jié)點(diǎn)間建立新的聯(lián)系。
圖4 貯箱實(shí)例實(shí)現(xiàn)晃動分析的方法
圖5 晃動分析整體模型
圖6 將模型轉(zhuǎn)化為可被OWL文件描述的形式
為了讓計(jì)算機(jī)能夠使用決策節(jié)點(diǎn)重新構(gòu)造出決策知識,可以借助OWL語言。Web本體語言O(shè)WL是一種定義和實(shí)例化“Web本體”的語言。一般認(rèn)為一個(gè)本體其實(shí)就是關(guān)于某一領(lǐng)域概念的一套規(guī)則的清晰的描述。給出一個(gè)本體,OWL形式語義說明怎么獲得它的邏輯結(jié)論,也就是說,不是逐字寫在本體中的事實(shí),而是語義蘊(yùn)涵的事實(shí)[15-16]。這些蘊(yùn)涵可以是基于單個(gè)的文檔也可以是OWL機(jī)制合并在一起的多個(gè)分布的文檔。因此,借助OWL語言能夠把決策節(jié)點(diǎn)以及決策節(jié)點(diǎn)之間相互關(guān)聯(lián)的方式描述出來。
為了方便程序?qū)崿F(xiàn),需要把建立好的晃動計(jì)算模型表示成OWL文件所能夠描述的形式。如圖6所示,把決策節(jié)點(diǎn)轉(zhuǎn)化為類和子類,應(yīng)用單元使用類所對應(yīng)的實(shí)例進(jìn)行描述,用屬性描述類與類、類與實(shí)例之間的普遍聯(lián)系。確定了OWL文件所要描述的內(nèi)容后,可以使用Protégé來方便地創(chuàng)建OWL文件。Protégé以Java和Open Source作為操作平臺,圖形化的開發(fā)界面比較容易學(xué)習(xí)使用,用戶可以自行定義系統(tǒng)使用的表示原語,還可自行設(shè)置輸入數(shù)據(jù)格式和文件輸出格式,支持OWL的文本表示格式。具體方法可參考文獻(xiàn)[17]。
在系統(tǒng)中,具體實(shí)例晃動計(jì)算的代碼段是用MATLAB開發(fā)的,而系統(tǒng)總體結(jié)構(gòu)開發(fā)使用的語言是java,為了更好的實(shí)現(xiàn)對晃動計(jì)算部分的MATLAB底層調(diào)用,在系統(tǒng)的開發(fā)中,采用將MATLAB底層程序轉(zhuǎn)換為java能調(diào)用的jar包,從而實(shí)現(xiàn)java與MATLAB的交互。編譯好的MATLAB代碼在系統(tǒng)中不會直接被加載。這個(gè)過程我們使用java反射讓程序在需要使用特定的儲箱實(shí)例時(shí)候加載相應(yīng)的計(jì)算方法來得到期望的計(jì)算結(jié)果。
程序在運(yùn)行狀態(tài)中,可以動態(tài)加載一個(gè)只有名稱的類,對于任意一個(gè)已經(jīng)加載的類,都能夠知道這個(gè)類的所有屬性和方法;對于任意一個(gè)對象,都能調(diào)用他的任意一個(gè)方法和屬性[18]。在本系統(tǒng)的計(jì)算模式中,Java程序本身并不能知道每個(gè)儲箱實(shí)例調(diào)用哪個(gè)類的哪個(gè)方法進(jìn)行計(jì)算。通過使用Jena API可以根據(jù)使用條件讀出、查詢出或推理出OWL文件中所描述的儲箱實(shí)例的結(jié)構(gòu)細(xì)節(jié)[19-22],對比庫中細(xì)節(jié)可以找到需要調(diào)用的計(jì)算過程的類和方法名。因此使用java反射可以讓matlab程序編寫作為一個(gè)與系統(tǒng)中使用的Java程序完全無關(guān)的工作,從而增加了系統(tǒng)的普遍適用性。
根據(jù)實(shí)際需要,系統(tǒng)分為文件管理和晃動計(jì)算兩大部分:文件管理包括運(yùn)用Common-File Upload組件將OWL和EXCEL數(shù)據(jù)上傳到對應(yīng)的庫;運(yùn)用JXL組件修改EXCEL中的原始計(jì)算數(shù)據(jù);運(yùn)用Jena API讀取OWL文件中的類層次關(guān)系,類與類之間的關(guān)系,以及持久化OWL文件到數(shù)據(jù)庫?;蝿佑?jì)算中,首先運(yùn)用Jena API讀取數(shù)據(jù)庫中的本體模型,根據(jù)知識結(jié)構(gòu)判斷不同實(shí)例對應(yīng)的計(jì)算類和方法;最終通過Java反射實(shí)例化晃動計(jì)算的類和方法,傳遞JXL讀取到的EXCEL數(shù)據(jù)給Matlab代碼段完成最終計(jì)算;并將計(jì)算結(jié)果反饋給用戶。總體結(jié)構(gòu)如圖7所示。
圖7 系統(tǒng)總體結(jié)構(gòu)圖
圖8 計(jì)算結(jié)果界面
圖8展示了系統(tǒng)實(shí)現(xiàn)一級燃箱一級飛行計(jì)算結(jié)果的界面。圖中W、M、X、Y分別表示晃動頻率,晃動質(zhì)量,晃動位置,晃動位移;數(shù)字1、2表示階次。和傳統(tǒng)方法相比較,如表1所示。由于系統(tǒng)中具體實(shí)例晃動計(jì)算代碼的執(zhí)行仍是在MATLAB中完成的,所以計(jì)算結(jié)果的有效性與傳統(tǒng)方法完全一致。不同的是,系統(tǒng)中使用了本文中建立的本體知識模型引導(dǎo)晃動計(jì)算,在引導(dǎo)過程中具備語義描述能力和智能性,知識共享能力和語義推理能力,能夠自適應(yīng)更加廣泛的使用場景。
表1 和傳統(tǒng)方法比較Tabble 1 Compared with traditional methods
為了得到快速、智能化的專業(yè)分析計(jì)算系統(tǒng),本文在完成對晃動計(jì)算知識梳理的基礎(chǔ)上,提出將領(lǐng)域知識中與計(jì)算能力單元及結(jié)果直接相關(guān)的部分轉(zhuǎn)化為應(yīng)用單元知識,與決定使用什么計(jì)算方法相關(guān)的部分轉(zhuǎn)化為決策知識。這樣,整個(gè)晃動分析過程就清晰的轉(zhuǎn)變?yōu)槭褂脹Q策知識引導(dǎo)應(yīng)用單元執(zhí)行的過程。文中從決策知識中提取出決策節(jié)點(diǎn),為晃動分析建立了完整的決策知識模型。在決策知識模型中,決策節(jié)點(diǎn)之間不再是孤立的存在,而是存在著能夠構(gòu)建推理規(guī)則的穩(wěn)定且必然的聯(lián)系。構(gòu)建推理規(guī)則,也就是決策節(jié)點(diǎn)重構(gòu)出決策知識來使用。為了讓計(jì)算機(jī)能應(yīng)用這種知識模型,程序開發(fā)中使用OWL文件來描述模型,決策知識模型的內(nèi)容以本體知識的形式保存在了OWL文件中。決策知識引導(dǎo)應(yīng)用單元的過程在系統(tǒng)實(shí)現(xiàn)時(shí)體現(xiàn)為系統(tǒng)對OWL文件所定義的本體知識的解析、調(diào)用和推理。開發(fā)出的晃動分析計(jì)算系統(tǒng)保留了決策知識所具有的公用性、可拓展性和靈活配置的特點(diǎn),從而能夠滿足更多使用場景的需要。另一方面,知識提取是個(gè)可以不斷細(xì)化的過程。隨著相關(guān)領(lǐng)域應(yīng)用單元的不斷細(xì)化,將會剝離出更多的決策節(jié)點(diǎn),從而可以重構(gòu)出更豐富的決策知識供程序使用,這樣可以不斷增加程序的智能性。