孙 杭,郑 宇,2,李少阳
(1. 上海交通大学机械与动力工程学院,上海200240;2. 上海市网络化制造与企业信息化重点实验室,上海 200240;3. 上海宇航系统工程研究所,上海 201108)
运载火箭总体设计中,需要进行多个专业、多次迭代耦合的参数计算和分析,晃动分析计算是其中的一个重要环节。文献[1-4]对液体晃动结构特性及等效力学模型方法进行了研究,文献[5-7]研究了低重环境下液体小幅晃动特性。传统的运载火箭晃动分析计算流程是在一个程序中判断贮箱结构有无管道,是否分割等来决定如何计算的。如图1所示,这种实现方式的流程结构固定,只能满足特定的应用场景。面对目前火箭高密度发射任务的需求,任务场景经常发生变化、并且研制周期大幅度缩短,从而也对产品技术性能参数计算带来了灵活可配置、快速实现的要求。传统计算模式中计算机不能理解它所处理的数据、消息和过程的含义[8-9],无法根据使用条件自发的组织计算过程。如果使用本体模型,将描述贮箱结构的知识和计算过程分开,用贮箱结构的知识来引导计算过程,就可以获得更加灵活高效的计算模式。程序根据使用场景只要对本体知识检索或者推理就可以自发的决定使用何种计算过程来完成计算。这种模式正是利用本体模型表示与具体计算过程无关的领域知识,减少甚至完全消除计算过程中的判断,使得整个计算程序基于本体实现灵活可配置。
图1 传统的运载火箭晃动分析计算流程
构建本体的目标是为了获取相关领域的知识,对该领域知识达成共同理解,明确该领域内共同认可的概念,明确定义概念之间的相互关系,通过明确概念之间的相互关系来描述概念语义[10]。构建好的本体为同一领域的成员(对象或智能代理[11])之间提供公认的概念集合关系集。目前构建本体的已有方法包括:一是利用已有的叙词表或分类表改造成本体;二是利用现有文献和领域专家知识从头做起,这种方法比较常用[12]。本文不仅仅对领域知识本体的构建,而是要将领域知识应用于实际问题的解决。当使用领域知识解决实际问题时,对于知识结构的划分要呈现出服从于目的(进行晃动分析)的特性。本文以此为出发点探讨领域知识在实际应用中如何抽象出本体模型,提出了面向实际问题、将领域知识解决问题过程抽象为决策知识、引导应用单元执行的过程模型的方法。并以晃动计算为例说明模型抽象和实现过程,包括如何将建好的模型用于系统实现,从而开发出具有公用性、可拓展性和高效可配置的软件结构。
本文需要研究的是一个具有高度灵活性的系统,用来分析不同状态下不同类型储箱中液体的晃动频率、晃动质量、晃动位置和晃动位移。进行知识建模前通过查阅现有文献[1-7]和咨询领域专家完成晃动分析相关知识梳理。为了方便后面分析和建模使用,对概念名词给出了编号。其中贮箱结构编号为S(Structure),等效方法编号为M(Method),分析内容编号为C(Content),贮箱实例编号为E(Example),计算参数编号为P(Parameter)。得到图2所示的知识结构。图中贮箱实例为晃动特性设计实际要研究的对象。不同对象依据其管道、底形状、分割和阻尼装置[13-14]等的不同,使用不同的计算公式进行晃动特性设计。计算参数为使用计算公式进行晃动计算所要用到的输入参数总和。
图2 领域知识梳理
将领域知识应用于分析计算时,不同情况下的分析计算结果形成了一个结果集。这里把领域知识中与得到的结果直接相关的内容叫做单元知识,把结果集中一个结果所对应的单元知识中的内容叫做应用单元。为了在指定情况下得到分析计算结果,需要使用领域知识形成分析计算方法。这里把领域知识实际使用中决定引向结果集中哪一个结果的部分叫做决策知识,决策知识是形成分析计算方法的依据,起到判断和引导的作用。决策知识还处在笼统的知识层面,需要在其中找到起决策作用的关键点并把这些关键点叫做决策节点。划分过程见图3中(1)。
最终,把领域知识解决实际问题的过程抽象为决策节点引导应用单元执行的过程。图3中(2)表示决策节点与应用单元的关系可以是一个决策节点引导出一个、两个或更多应用单元,也可以是一个、两个或更多决策节点引导出一个应用单元。为了讨论问题的方便,后面会使用一个决策节点引导出两个应用单元的方式做进一步探讨。
知识在实际应用中,根据研究问题的细致程度不同,所使用的知识的细化程度也不同。理论上,研究的问题可以无限细致,所以知识也是可以无限细化的。不做任何细化时,整个领域知识对应着结果,本身就是一个应用单元,称为第0层。图3中(3)最大的空心圆描述的就是第0层。细化到第1层可以看到最大的空心圆中一个决策节点引导出两个应用单元,而每个应用单元又可以进一步细化。图3中(3)一直细化到了第3层。不管在哪个层级来看,应用单元总是位于最下面,因为它们是和最终结果直接相关的。虽然应用单元可以不断的细化并不断剥离出决策节点,但是在研究问题的一个特定层面上总会对应一个特定的细化层级。具体细化到什么程度,由实际要解决的问题要求结果细致到什么程度来决定。本节就以细化到第3层来做后续讨论。
如果用程序来实现领域知识,传统实现方式对决策节点和应用单元的使用方法如图3中(4)。这里把程序中与领域知识外的内容直接相连的决策节点叫做切入点,把直接引导出应用单元的决策节点叫做切出点。图中按从上向下的顺序,切入点只有一个,从切入点到达每个应用单元的路径也只有一条。显然,编写实现程序时按照这种组织方式使用决策节点只能适应预先确定的使用场景。程序自身无法针对未预先确定的使用场景分析判断,给出确切的结果。考虑到决策节点在决策知识中是相互联系的。一些决策节点和另外一些决策节点之间存在着稳定的必然联系。挖掘出这些稳定的必然联系,可以在决策节点之间构建推理规则。使用决策节点构建推理规则的过程也就是使用决策节点重构决策知识的过程。程序通过使用这些推理规则,能够根据不同的使用场景在切入点和切出点之间自发的形成推理链,实现决策知识引导应用单元执行。如图3中(5)所示,在这样的领域知识抽象模型中,能够由相同的决策方式来引导的应用单元可以合并在一起。
图3 领域知识抽象模型
从知识结构的角度来看,使用决策节点重构决策知识,决策知识作为所有应用单元的共同引导具有公用性。随着应用单元逐渐细化,可以不断剥离出新的决策节点,新的决策节点可以融入到原来的决策知识中拓展决策知识。在知识中决策节点之间理论上是可以普遍联系的,因此,在使用时决策节点之间能够自由组合。把决策节点的这些特性用在领域知识的实现中,就可以得到具有公用性、可拓展性和能够自由组合的实现程序。
从知识应用的角度来看,如图3中(6)。根据已构建的结构模型,其中所有决策节点构成了一个概念的集合。基于对概念的使用方法得到与概念集相应的推理机制,也就是说不同概念集的推理机制是有差别的。在处理不确定事物时,推理机制可以提取事物的属性并做出预判,从而达到识别事物的目的。如果提取出的属性多于识别事物时做出界定所需要的概念,推理机制将从过饱和属性中提取规律,并生成新的概念(决策节点)到概念集中。不断丰富和完善的概念集可以提高推理机制处理不确定问题的能力。在知识结构基础上使用这种知识应用模式无疑是程序智能化的体现。
按照上一节所述的建模方法,首先要在领域知识中区分出决策知识和单元知识:决策知识侧重于方法的形成,单元知识侧重于方法的实施。对应到晃动分析中,决策知识需要用于解决的实际问题是如何根据不同的使用场景自发形成确切的分析计算组合公式。单元知识则用于解决晃动分析时如何使用这些计算公式得到分析计算结果。
图4中以Y11(一级氧箱一级飞行)为例说明针对贮箱实例进行晃动分析的方法。图中左侧虚线框内描述以Y11作为应用单元实现晃动分析的具体过程:从系统外部获取对Y11进行晃动分析需要用到的参数值,传递给通过推理得到的能够对Y11执行晃动频率、晃动质量、晃动位置和晃动位移计算的程序,完成晃动计算,得到晃动分析结果。图中右侧虚线框内描述Y11如何使用决策节点得到确切的分析计算公式:根据Y11所对应的使用场景检索出贮箱结构,等效方法,和需要进行晃动分析的内容;然后把检索到的信息应用于推理规则,得到计算公式和执行这些公式需要用到的输入参数。
按照以上对Y11进行晃动分析的解析方式,对整个晃动计算知识理解后,建立了如图5所示的模型。比对图2所梳理的概念结构,可以得到图中节点的具体所指。晃动分析整体模型是使用决策节点重构决策知识的依据。根据贮箱结构、贮箱实例、等效方法、分析内容和计算参数的普遍关联能够建立起广泛的推理规则。这种通过挖掘决策节点之间稳定的必然联系来使用节点的方式,在应对不同使用场景时,总能把从使用场景中提取到的信息用于逻辑关系与规则推导,得到具体的应用单元执行方式,引导应用单元执行。使用过程中,程序也可以对模型进行动态维护。包括增加新节点,删除废弃的节点,在节点间建立新的联系。
图4 贮箱实例实现晃动分析的方法
图5 晃动分析整体模型
图6 将模型转化为可被OWL文件描述的形式
为了让计算机能够使用决策节点重新构造出决策知识,可以借助OWL语言。Web本体语言OWL是一种定义和实例化“Web本体”的语言。一般认为一个本体其实就是关于某一领域概念的一套规则的清晰的描述。给出一个本体,OWL形式语义说明怎么获得它的逻辑结论,也就是说,不是逐字写在本体中的事实,而是语义蕴涵的事实[15-16]。这些蕴涵可以是基于单个的文档也可以是OWL机制合并在一起的多个分布的文档。因此,借助OWL语言能够把决策节点以及决策节点之间相互关联的方式描述出来。
为了方便程序实现,需要把建立好的晃动计算模型表示成OWL文件所能够描述的形式。如图6所示,把决策节点转化为类和子类,应用单元使用类所对应的实例进行描述,用属性描述类与类、类与实例之间的普遍联系。确定了OWL文件所要描述的内容后,可以使用Protégé来方便地创建OWL文件。Protégé以Java和Open Source作为操作平台,图形化的开发界面比较容易学习使用,用户可以自行定义系统使用的表示原语,还可自行设置输入数据格式和文件输出格式,支持OWL的文本表示格式。具体方法可参考文献[17]。
在系统中,具体实例晃动计算的代码段是用MATLAB开发的,而系统总体结构开发使用的语言是java,为了更好的实现对晃动计算部分的MATLAB底层调用,在系统的开发中,采用将MATLAB底层程序转换为java能调用的jar包,从而实现java与MATLAB的交互。编译好的MATLAB代码在系统中不会直接被加载。这个过程我们使用java反射让程序在需要使用特定的储箱实例时候加载相应的计算方法来得到期望的计算结果。
程序在运行状态中,可以动态加载一个只有名称的类,对于任意一个已经加载的类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能调用他的任意一个方法和属性[18]。在本系统的计算模式中,Java程序本身并不能知道每个储箱实例调用哪个类的哪个方法进行计算。通过使用Jena API可以根据使用条件读出、查询出或推理出OWL文件中所描述的储箱实例的结构细节[19-22],对比库中细节可以找到需要调用的计算过程的类和方法名。因此使用java反射可以让matlab程序编写作为一个与系统中使用的Java程序完全无关的工作,从而增加了系统的普遍适用性。
根据实际需要,系统分为文件管理和晃动计算两大部分:文件管理包括运用Common-File Upload组件将OWL和EXCEL数据上传到对应的库;运用JXL组件修改EXCEL中的原始计算数据;运用Jena API读取OWL文件中的类层次关系,类与类之间的关系,以及持久化OWL文件到数据库。晃动计算中,首先运用Jena API读取数据库中的本体模型,根据知识结构判断不同实例对应的计算类和方法;最终通过Java反射实例化晃动计算的类和方法,传递JXL读取到的EXCEL数据给Matlab代码段完成最终计算;并将计算结果反馈给用户。总体结构如图7所示。
图7 系统总体结构图
图8 计算结果界面
图8展示了系统实现一级燃箱一级飞行计算结果的界面。图中W、M、X、Y分别表示晃动频率,晃动质量,晃动位置,晃动位移;数字1、2表示阶次。和传统方法相比较,如表1所示。由于系统中具体实例晃动计算代码的执行仍是在MATLAB中完成的,所以计算结果的有效性与传统方法完全一致。不同的是,系统中使用了本文中建立的本体知识模型引导晃动计算,在引导过程中具备语义描述能力和智能性,知识共享能力和语义推理能力,能够自适应更加广泛的使用场景。
表1 和传统方法比较Tabble 1 Compared with traditional methods
为了得到快速、智能化的专业分析计算系统,本文在完成对晃动计算知识梳理的基础上,提出将领域知识中与计算能力单元及结果直接相关的部分转化为应用单元知识,与决定使用什么计算方法相关的部分转化为决策知识。这样,整个晃动分析过程就清晰的转变为使用决策知识引导应用单元执行的过程。文中从决策知识中提取出决策节点,为晃动分析建立了完整的决策知识模型。在决策知识模型中,决策节点之间不再是孤立的存在,而是存在着能够构建推理规则的稳定且必然的联系。构建推理规则,也就是决策节点重构出决策知识来使用。为了让计算机能应用这种知识模型,程序开发中使用OWL文件来描述模型,决策知识模型的内容以本体知识的形式保存在了OWL文件中。决策知识引导应用单元的过程在系统实现时体现为系统对OWL文件所定义的本体知识的解析、调用和推理。开发出的晃动分析计算系统保留了决策知识所具有的公用性、可拓展性和灵活配置的特点,从而能够满足更多使用场景的需要。另一方面,知识提取是个可以不断细化的过程。随着相关领域应用单元的不断细化,将会剥离出更多的决策节点,从而可以重构出更丰富的决策知识供程序使用,这样可以不断增加程序的智能性。