康世龙
(山西云时代技术有限公司,山西 太原 030000)
计算机仿真技术主要用于解决各行业实验代价高、实现过程无法重复及理论算法验证等问题,仿真技术的发展从最初的硬电路仿真、实物仿真、半实物仿真到当前的虚拟化模拟仿真、基于代理的仿真,实现了从单实物的模拟到多实体间的协同模拟,解决了传统仿真技术无法实现的多业务体协同,因此计算机仿真技术已经成为各行业解决技术难题的基础工具[1]。
基于代理技术的计算机仿真是通过分布式思想构建的,通过代理执行特定的功能单元,并将多个代理通过进程调度机制形成相应的仿真体系,从而完成特定的仿真任务。而多代理仿真架构是通过任务调度机制完成代理间的不冲突管理工作,当前,基于多代理的仿真技术主要应用于军事仿真、智慧城市、工业自动化仿真等方面。
图1所示为多代理仿真研究的架构图。多代理仿真研究主要涉及模型体系研究、调度机制研究、数据融合策略研究、自适应机制研究等。模型体系的研究最初起源于军事应用,美军的联合作战仿真系统JSIMS(Joint Simulation System)构建的MMF(Military Modeling Framework)建模框架[2],为仿真系统提供了基础的开发框架,可实现模型组件的自有组配,但该模型体系并未提供具体的元描述,为此胡晓峰等提出了EBI(Entity,Behavior,Interaction)建模方法[3],将模型的设计按照其静态参数、行为模型以及动态属性等进行了细分,增强了模型设计过程中的灵活性,降低了各参数间的耦合度。
图1 多代理仿真研究架构图
关于调度机制的研究,主要完成对多代理间的任务规划工作,如代理A完成战场数据监听的任务,代理B完成敌对目标打击的任务,代理C完成打击效果的评估工作,那么在调度过程中,需要确保代理A能够将代理B执行的结果传递给代理C,图2所示为简单的基于时间片的任务调度机制示例图,图中显示在T3~T5时刻代理B执行了其任务,在T5时刻代理A将执行结果通知代理C,从而完成一次代理任务调度过程。
图2 基于时间片的任务调度机制
本文针对现有的模型体系架构以及任务调度机制,提出了一种应用于多代理仿真中的自适应模型融合机制,该机制利用模型自身的继承机制,应用马尔科夫概率模型自匹配模型结构,实现多代理仿真的智能化。
本文提出的模型自适应融合机制采用文献[4]中所提出的HMP仿真模型组件技术,该模型遵循HLA分布式仿真体系架构,模型结构定义如下:
HMP=
其中,Mport、Attri、BaseModel、UserModel、ObjectBaseClass和InteractionBaseClass分别表示HMP的管理端口、属性、模型基类、用户模型、对象基类以及交互基类,各基类的定义通过其他公共参数完成数据的交互,如BaseModel的定义如下:
BaseModel=
那么基类与HMP交互通过公共参数Attri进行数据匹配,可通过模型标识作为基类与模型间交互的通道。
在多代理分布式仿真体系的实际应用中,模型体系作为仿真的基础数据提供者,扮演着仿真架构中细胞的角色,如何确保各模型结构能够自适应匹配仿真引擎的管理与调度是确保多代理仿真高效性的基础。
自适应模型匹配机制按照状态转换条件,设计独立代理进行模型管理工作,图3所示为自适应匹配原理图,代理监听模型的公共数据参数,当仿真引擎的事件驱动满足预测模型的调用条件时,按照概率事件代理决定是否完成预测模型的调用。
图3 自适应匹配原理图
图3中,[u,N]表示一个时域,[u,N]|k表示在k时刻的下一个时域区间,而X∧[u,N]|k表示k时刻的下一个时刻发生的状态。基础模型即为实际功能模型的输入参数,通过公共数据结构Attri,代理执行时通过调度算法,按照仿真引擎实时发生的事件信息去判断是否满足基础模型的调用。代理工作流程描述如下:
(1)启动代理新进程,分配线程监听功能模型的输入;
(2)接收并管理各功能模型的Attri参数结构(公共参数),通过Attri中的关键字段对模型进行唯一识别;
(3)仿真引擎启动事件激活,启动新线程接收仿真引擎的模型事件信息;
(4)根据仿真引擎的事件信息,代理依据状态转换模型判别是否符合调用基础模型的机会条件。
本文采用一种分布式仿真框架作为自适应模型匹配的框架支撑,框架由各类功能独立的代理构成,模型结构采用XML的形式存储。基于此种模式,本文设计开发了多代理、自适应分布式仿真系统,系统利用代理的灵活特性,动态调用相关的基础模型结构。
代理监控模型设计采用经典的BDI模型结构,所谓BDI是由信念(Belief)、愿望(Desire)和策略(Implications)所构成的集合,该模型代理的关键在于求解领域行为规则库P(Plan Library)的描述。代理监控模型是分布式仿真系统的核心构件,采用BDI模型的扩展可定义为三元组ACO:
A={ai}—代理的基本行为表述集合;
C={ci,ai}—代理执行行为ai的条件集合;
O={ci,ai,oi}—代理响应行为ai的具体动作集合。
模型体系结构按照HMP的模型架构定义,将Attri作为公共交互参数,其结构化定义如图4所示。
图4 模型结构定义
采用这种监视公共参数模式的数据流管控机制,有利于在实际仿真环境中提升系统设计的灵活性。该机制所采用的思想在文献[5]中也有所介绍,文献[5]提出了一种自适应多代理系统的形式化描述语言,认为在实际的自适应系统设计中业务与逻辑要实现分离,这样可提升应用软件的模块化程度。
本文所设计的模型融合策略,是通过多代理仿真中模型管理及自适应调度的优化实现的。对于系统初始化状态,核心工作机制是完成监控代理服务的启动以及数据池的初始化,本文采用建立模型相关度关联,图5所示为模型相关度关联图。本文仅考虑模型间相对的属性关联度,如Model2相对Model1的关联度为33.3%,而Model1相对Model2的关联度为25%,相关度形象地表示了各个模型间的关联亲密度。根据文献[6]自适应模型研究,相关度越大的模型间关联关系程度越深,因此本文利用文献[6]中所提出的自适应模型作为初始理论依据,暂不考虑各模型间的输入输出关系(将在后期研究中进行分析),相关度描述如式(1)所示:
(1)
式(1)简单地描述了模型输出相关度的计算过程,即计算本模型相对其他模型的相关度。
图5 模型相关度关联图
相关度高的模型间存在较大的关联关系,监控代理在模型交互过程中优先选用关联度较高的模型进行切换,在实际的多代理仿真过程中,需要考虑各个模型的输入、输出参数,如图5中Model1的输出参数为Property A,而ModelN的输入参数为Property A,那么该模型间的关联度被认为有效;若Model1的输入参数为Property Z,同时Model2的输入参数为Property Z,那么该模型间的关联度则无效。
建立模型间关联度的网络模型是初始化后的核心工作,利用网络模型建立模型间的关系,图6所示为网络模型,通过加权矩阵wn×n表示模型间的相关联关系,目标选择概率如式(2)所示:
(2)
图6 网络模型
自适应模式融合的处理主要取决于监控代理对模型关联图的解读,通过对各个模型间关联度的提取,形成一个有向加权非对称矩阵[7]:
(3)
如上式所示,矩阵中的非0元素表示代理间存在联系,同时矩阵中的元素值表示代理间的关联度的大小。根据对矩阵的迭代解算形成最终的意向模型选择,由于在多代理仿真中需要保证仿真的运行效率,因此在算法的实现过程中需要确保矩阵解算过程中的迭代优化(矩阵的解算优化本文不做赘述)。
本文利用基于分布式仿真体系架构的某仿真引擎构建模型调度管理的原型系统,以某应用仿真作为背景,实现代理完成模型调度管理工作,按照自适应模型融合的实现流程创建整个实验过程。最后完成与某仿真引擎自有模型管理机制的效率对比。
某仿真引擎的工作机理如图7所示,在整个仿真过程中通过黑板结构进行全局数据的维护,通过代理的方式完成功能仿真,并且同地理信息数据、模型数据通过交互中间件完成数据的重构,本文通过增加监控代理对黑板结构中的模型构建关联图(增加了额外的工作量,由于在实际的仿真过程中模型结构是相对静止的,因此对每个模型的出入度默认为确定)[8]。
图7 某仿真引擎工作机理图
本实验以模型数量以及周期内模型调度次数作为实验仿真的变量。图8所示为模型调度次数的递增对响应时间的影响实验图,在模型数量一定情况下,随着模型调度次数的递进,引擎自有的模型调度机制在Windows系统自有的任务调度机制下无法满足用户的请求次数时(如图8当调度次数达到700次/周期的时候),自适应融合调度机制通过管理检索自有的关联图能够快速地调度关联度最大的模型结构。
图8 调度次数与响应时间对比图
模型数量的多少直接决定仿真粒度及仿真效率的高低,对于大型分布式仿真来说,构建一个中型的仿真场景至少需要上万个实体维护,底层须确保有近500个模型支撑。图9所示为随着模型数量的增加(用户请求一定的前提下),系统响应时间的对比图。图中显示当模型数量达到150批的时候,自适应融合机制在响应时间上明显优于某引擎自有的模型调度机制,整体效率提升了近20%。
图9 模型数量与响应时间对比图
分布式仿真技术已经为多行业验证性研究提供了高效、准确的计算服务,然而模型作为计算机仿真的基础,设计有效、合理的调度机制是仿真过程优劣的评价标准之一。本文利用自适应思想,采用相关度作为模型协同调用的依据,设计了一套自适应模型调度融合算法,通过与某仿真引擎的模型管理机制进行调度性能对比,结果表明在模型调度效率上提升了近20%。