杨健 董立勇 马金梁 王志涛 王龙兴
当前,组件技术成为基于组件仿真与建模(Component Based Simulation and Modeling,CBSM)的一个重要的技术要素[1].组件技术适应市场的快速变化,能够有效缩减开发费用,减少开发时间[2−3],也为复杂大型仿真软件和系统的快速标准化开发提供了可能[4].
基于组件建模与仿真面临的一个问题是选用组件的可组合性.它决定了用户通过组合建模得到的模型是否符合用户的目的.基于组件开发仿真系统与基于组件进行一般的软件开发存在很大不同,因为仿真系统的功能是基于时序的,仿真系统的开发需要考虑内部功能组件之间的时间逻辑的问题.因此,对仿真模型的可组合性检验更加困难[5].
组合建模需考虑两个层次的可组合性问题:语法可组合(Syntactic composability)和语义可组合(Semantic composability)[6].语法可组合性主要关注模型组合规则、数据格式、语法方面的问题,语义则主要关注模型功能实现层次的问题.本文研究仿真组合建模中的语义可组合性问题.语义可组合性检验可在组合建模完成前的组件选择阶段和组合建模完成后的验证阶段进行[7−8].本文在已有研究的基础上研究组件选择阶段的语义可组合性检验问题.
用户从模型组件库中获取的组件其行为和属性应当是描述清晰和易于理解的.所以语义可组合性检验首先需解决的是对仿真组件的语义描述问题.本文研究基于本体的组件语义描述方法,首先建立本体的分类树,然后基于领域知识细致描述组件的完善语义信息[5,9].进一步,本文研究了基于语义本体的分层语义可组合性检验方法,以支持高效的组件选择和建模.
仿真组件的语义包含很多与实体行为相关的属性和约束等信息[11].比如应用领域、参数范围、接口限制、语义条件下的输入输出.此处关注的语义信息如下:
意图.意图描述了组件被用来干什么,例如引擎的作用是提供动力,用语句描述为Purpose(Supplying_power);卡车的作用是运输货物,Purpose(Carring cargo)等.
单位.单位表示了参数的领域意义.例如引擎的单位是“马力”,雷达的扫描范围以“千米”为度量单位.
范围.组件的范围描述了组件之间的逻辑关系,通常是以函数的方式描述的.例如机载雷达可以与飞机平台相连接,同时可以与空中控制部件相连接.
接口规则.组件需要通过接口与外部进行交互.接口规则定义接口间的链接关系,说明了接口应当服从的规则和习惯[12].
接口限制.组件接口之间的连接揭示了领域内的惯例,逻辑规则.可以通过{数据输入,数据输出,事件输入,事件输出}来描述.
语义信息需清晰完整地描述组件的行为、用途与能力,如图1所示.组件库中有很多的组件,如孤立地对每个组件的语义分别描述而不是通过描述各个组件与其他组件间的关系来表达其语义,大量异构组件的管理和使用将变得混乱,无法让用户清晰了解组件的作用和属性[13].
不同组件的功能作用不同,但各个组件之间由于功能的相似性或功效发挥的相互依托产生的在逻辑上的关联关系使得组件之间存在联系.例如汽车平台组件与卡车平台组件的功能相似性、不同类型雷达组件的功能相似性,雷达组件与控制器组件的功能关联关系等.因此,可通过描述某一组件与其他组件间的关系来描述该组件的语义.组件语义的描述须满足以下两个条件:1)相关组件的语义信息描述清晰;2)组件之间的关系被描述清楚.
本文基于元数据本体深入研究组件语义.本体中每一个组件被描述为一个元组件.组件的语义描述和约束基本确定了组件间的相互关系.这种相互关系可被分解为横向语义关系与纵向语义关系.如图2所示,遗传性规则是纵向语义的产生原因;领域逻辑是横向语义的产生原因.例如汽车组件和卡车组件共享基本车辆的属性,因此,存在纵向语义关系.引擎组件是车辆模型的一个部分,它向车辆平台组件输送动力,可以定义语句HasEngine(Car),SupplyPower(engine,car).另一方面,每个组件的能力存在一定的限制,例如引擎有最大马力MaxPower(engine).应用本体描述清晰的组件间关系能为用户和计算机提供清晰的组件库视图.
本体分类树是本体的骨架.首先研究基于本体分类树的组件间纵向关系描述方法[10].例如F22猛禽的语义可描述为:
分类树可清晰描述组件间的纵向关系:分类树中每个节点描述一个子类,每个子类中的组件共享一部分相同的语义信息.组件的语义可以被描述为一般语义和特殊语义,一般语义是由多个组件共享的语义信息,而特殊语义是某个组件特有的语义.例如所有的运载器(Vehicles)具有运载器的基本语义信息,而飞机有区别于陆上运载器、海上运载器、潜水运载器以及航天运载器的特有属性.
任意组件的完整语义信息是一般语义和特殊语义之和,一个元本体可以描述为:Sc=
图1 仿真组件的语义组成分析
图2 组件之间的语义关系
图3 组件语义的层次化结构示意图
定义语义路径:对于分类树中的各个组件,从树的顶部到底部,每个组件分别属于逐渐细致的一系列子集.这一系列子集构成了一条从顶到底的结点通路,将这条通路定义为语义路径(Semantics Route(C)).例如,图3中C1的语义路径可表述为:Semantics Route(C1)={S11...Sm1}.语义路径可直观说明一个组件的语义被分别表示在其语义路径的各子集中.
每个组件与同一集合的组件共享一部分一般语义.这样层次化的记录和表达模式可表示一些有益信息.如图3所示,组件C1和C2共享集合Sm1中的语义,这意味着它们有某些相似的行为和能力.有良好结构的组件库使查找组件时能够方便获得所有符合要求的组件.
语义路径中每个组件子集记录将这个子集中的组件和同一层次其他子集中的组件是区分开的,且集合内每个组件都拥有的语义.一般语义和特殊语义在定义上完全不相交,但组件的大多语义都界于一般和特殊之间.如飞机平台类组件继承运输器组件的属性,继承的语义信息是飞机平台子集中所有组件的一般语义,而它们的特殊语义描述了其航空运载能力,配备设施如动力系统,传感器系统等语义信息;下一层,飞机平台的特殊语义又成为战斗机类的一般语义,而战斗机类的特殊语义描述战斗机类功用、气动外形、载荷等信息.
图4展示了组件的一般语义和特殊语义的演化趋势.在语义层顶端,所有组件由基本组件处继承得到的语义信息是最一般性、最通用的语义信息,反应了特定领域的基本知识和规则.第二层,组件库中组件被分为若干子类,分类树由每一个子类中抽取出该子类所有组件共有的语义.此时每一个组件获得了自己的另一部分一般语义的描述.这部分语义具备的一般性稍弱,同时具有一定的特殊性.随着分类越精细,语义越具有特殊性.分类树叶节点记录的语义是各个组件完全特殊的语义.
分层语义记录方法沿着语义路径的节点描述将组件和同一层次别的节点区分开的语义.组件的一般性语义是该组件的语义路径上所有子集存储的语义的并集.假设组件A从顶点到叶节点所述的子集集合为为语义本体的层数.子集存储的语义为Si,A,在第i层有另一个子集应满足:
组件A的一般语义可表达为:SAg=S1,A∪S2,A∪···∪Snh-1,A,完整语义为:SA=SAg∪SAs.
图4 组件中不同层级语义的性质过渡趋势图
纵向关系仅描述组件间继承性语义关系,如车载雷达是雷达的子集,雷达是感知器的子集.但分类树缺少描述横向语义的能力,无法描述基于功用的相关关系.例如某组件如何与其他组件交互,组件间在功能上的关联.横向关系是领域相关的.它描述了特定领域内组件之间的相互关系.获取领域知识对于模型发现,语义检验具有重要意义[10].
横向关系相关的语义包含两部分,分别是一般的规则和属性.一般规则指客观逻辑和特殊的领域内基本限制.客观逻辑规范了在组合模型中的组件如何基于一定的时序逻辑传递数据,进行交互以保证模型正常工作.例如:假设组成飞机模型的基本组件包括机载雷达、控制中心、飞机组件、武器系统.需要设定特殊的信息交互流程以实现特定的功能.当机载雷达探测到敌方的信号,其处理的基本流程如图5所示.
当雷达探测到紧急情况时,它首先向指挥中心报告,指挥中心经过评估与决策后发出机动命令给平台,发出开火命令给机载武器.对遇敌事件的处理顺序体现了作战指挥控制的客观逻辑.
组件开发阶段客观逻辑以程序的形式实现.如雷达组件功能包括导引、扫描和追踪,以及向指挥节点上报.开发者将这些功能逻辑以OWL(Web Ontology Language)的形式描述在语义本体中.雷达可以被约束为:receiveOrder(Radar,ControlCenter),report(Radar,ControlCenter),getOwnPosition(Radar,Platform)等.
图5 雷达组件与指控中心的交互流程示意图
共同规则包括组件类型限制.这些限制特殊但却根据实际需要.战斗机装备了机载火控雷达(has-Radar(Jetfighters fire-contro radar)).共同规则作为基本的知识记录于本体中.它构建了组件开发的基本标准.通常认为这些知识应由领域专家确定,由组件开发者根据规则描述组件语义.为了保证一致性,需要根据一套完整严谨的流程确定规则,此处不做进一步讨论.
基本属性描述包括基本参数单位、参数范围,如雷达的搜索半径和工作周期,飞机的载荷.这些参数是开发者选择组件时的一个重要考量.这些属性也限制了组件之间的横向语义.
在本体中,所有的横向语义由OWL描述.OWL缺乏定义规则的能力,因此,本文应用语义网络规则语言SWRL(Semantic Web Rule Language)定义组件的规则,以汽车平台为例,汽车的引擎是汽油机,因此,可以定义为:
由此可见,当组件开发者由若干组件组合建模时,可以应用这些规则检验语义可组合性.
本节阐述了应用本体描述组件语义的基本方法,应用纵向语义实现基于分类树的组件库语义关系基本结构构建,通过横向语义建立基于基本结构的领域组件本体知识库.
在基于组件仿真建模技术流行的今天,建模人员可能是面向具体应用的用户,其知识储备达不到领域专家的水平.由他们根据自己的已有知识与经验确定两组件是否满足语义可组合性存在困难.由于元数据本体描述了组件的领域知识,促进了机器和用户对组件能力的理解.因此,本文提出基于本体的语义检验方法.
当前大多数的仿真系统是定制型的,用户的系统开发需求基于各自的职能任务.另一方面由于武器装备更新迭代快,同时服役使用的装备型号多种多样.因此,大多时间根据用户的具体应用场景与需求难以找到完全匹配需求的组件.在组件库中有若干与已有组件部分匹配的组件,那些不匹配的部分一方面可以进行修改以匹配需求[8],另一方面也有可能在组合模型的实际使用中不会被用到.因此,可以根据具体需求选择满足一定可组合程度的组件.
在选择满足语义可组合组件时可采用分层检验的方法分析组件可组合度.在组件的本体语义中,每层语义对具体组件的影响不一样.顶层的语义决定了组件的结构,低层的语义描述了组件的功能细节.本文提出权重系数wi∈[0,1],i∈nh以量化这种知识,nh是组件本体语义的层数[14].wi是第i层语义的重要性权值,其取值说明这层语义的重要性,需要满足的条件为:
由于建模人员可能对组件间的匹配程度有不同需求.为了描述这种需求,定义λ描述了建模人员可接受的可组合程度下限.假设选用n个仿真组件构建一个仿真系统,这些组件满足语义可组合的要求是:
设计逐层检验算法以确定组件间的可组合性程度.假设建模人员选择了两个组件,并设定组件接口之间的映射关系.需要确定此两个组件的可组合性程度.检验基于已经建立起来的元数据本体.由于各个层次的语义对组件功能的影响程度不同[15].以航空仿真为例,建模人员希望构建一个飞机,他选择了一个旋翼直升机和一个机载雷达,虽然机载雷达的各个接口和旋翼直升机的借口可能会匹配的很好,但是由于选择错误,这样的匹配是无意义的.因此,设置了一个从上至下的检验机制.算法中如果验证器检测到有语义冲突,则会立即中断检验并且输出已有的可组合性检验结果.如果在检验过程中没有发现冲突,则说明是完全可组合的.算法如图6所示.
算法自顶到底逐层确定组件所属的语义子集.然后整理确定此子集描述的语义信息,接着将组件已有语义信息放入检验算法中进行检验.
图6 语义可组合性检验算法
应用一个用例验证本文提出的基于本体的语义描述方法与基于本体的仿真组件语义可组合性验证算法.以军事装备仿真模型开发为例.在组件库中有很多的标准化仿真组件,当建模人员想通过组合建模构建一个战斗机,首先基于OWL语言构建军事领域仿真组件本体.
根据本文提出的基于本体的领域语义知识的描述方法,首先基于仿真组件的功能构建元数据本体.所有的仿真组件被分类为控制组件,数据收集组件,平台组件,装备组件和通讯组件.
控制组件模拟真实装备与系统中控制模块的各种控制行为和功能,发挥认知、判断、决策与控制的作用.控制组件接收其他类型组件的事件交互,根据信息进行判断、决策和控制.同时作为中枢组件管理组合模型内部的所有事件,负责与组合模型外的环境交互通信,包括组合模型间的信息交流和与上级的交互.
装备组件仿真各型武器、装备的功能,例如搭载于战斗机的各种武器装备、电磁对抗装备等.
平台模块仿真基本模型的搭载平台,能够模拟平台的动力系统功能、组合模型外形等物理属性信息,平台组件管理组合模型的位置,速度等相关属性.
信息采集模块对具有信息收集功能模块进行模拟.包括雷达,传感器等.
将所有的组件分为5个大类,再根据功能、使用场景以及属性对每个大类中的组件进行细分,从而建立了领域本体的分类树.进一步应用OWL描述横向关系相关的语义信息,建立完整的语义本体,如图7所示.
以分类树为基本架构的语义本体中,由于每个组件的复杂度不同,具体的组件可能不在本体分类树的同一层中,如图7中的通信系统和控制组件.在实际检验中需要考虑到这个情况.算法在具体的检验中应当执行到两个组件中处于更低层次的组件.
本文以建模人员使用6个功能组件构建一个战斗机的基本模型为例.这6个组件分别是仿真平台模型组件、飞行控制模块组件、通信组件、传感器组件、雷达组件、挂载武器组件.组件间的交互关系如图8所示.
图7 军事仿真本体实例
图8 组件间基于功能实现的数据交互示意
组件间的交互关系确定了具体的检验时应当检验哪些组件对之间的语义可组合程度.依据具体的应用需求,仿真建模人员规定各组件间可组合程度下限为0.8.定义每一层权值如表1所示:
表1 各层的语义重要权重
首次选择组件:BattlePlaneControllerOne、Airborne Communicate System,General Sensor System1、FireControlOne、GeneralplanePlatform1与 Air to Ground missile.
应用检验算法检验由图8描述的交互关系确定的相关组件间的语义可组合性,得到了相关组件对之间的可组合程度,如表2所示.
组件组{BattlePlaneControllerOne,General Sensor System},{BattlePlaneControllerOne,General Plane Module},{FireControlOne,General Plane Module}的语义可组合性程度低于建模人员设定的阈值.因为General Sensor System1是为地面车辆设计的传感器组件,缺乏获得平台姿态信息的能力;Generalplane-Platform1是固定翼飞机标准化的平台组件,缺少战斗机特有的功能.
用组件General Sensor System2与Battleplane-Platform替换不满足语义可组合性的组件并再次执行检验.检验结果如表3所示.
根据结果进行分析,可知第2批组件中相关组件对之间的语义可组合程度的最低值为0.9,大于用户确定的最小可行阈值0.8.因此,第2批组件符合用户的要求.
本文提出的基于本体的语义可组合性检验算法能够逐层检验组件间的可组合性水平,能够明确发现组件相互组合在语义上导致的错误,同时能够提示组件选择的需求方向.该算法能够运用于基于组合建模构建复杂仿真系统的实际场景中.
表2 初次选择组件间语义可组合性程度检查结果
表3 第2批选择的组件间语义可组合性程度检验结果
研究了组合建模的语义可组合性问题.提出应用本体描述组件语义,研究应用组件间语义关系描述组件语义信息.组件间语义关系被区分为横向语义和纵向语义关系.将语义信息分为一般语义和特殊语义,并深入地研究了语义的内部结构.最后提出了基于本体的逐层语义检验算法.利用一个仿真实例验证了该算法的实用性.