2. 中国科学院大学 计算机与控制学院, 北京 100049
2. School of Computer and Control Engineering, University of Chinese Academy of Sciences, Beijing 100049, China
在有效载荷地面集成测试实验中,测试数据和遥测参数是反映操作指令及设备状态正确性的重要依据,对数据的有效判读是测试实验中的关键环节。
目前专家学者们提出一系列实现自动判读的方法[1-3],均是通过采用某种建模形式如基于有限状态机(Finite State Machine,FSM)、Petri网或函数模型等对有效载荷设备的状态迁移过程建模,再依据建立的模型或领域专家知识获得模型中各状态对应的参数的连续变化规律,构建自动判读知识库和判读规则以实现自动判读。
上述基于状态迁移建模的各类自动判读方法均具有明显的优势,但将其应用到实际有效载荷地面集成测试中,需要实测环境满足十分苛刻的要求,如:
1) 测试序列必须使载荷设备的状态变化与模型中的状态变化规律一致;
2) 测试过程中出现的故障在参数表现上不具有传播性;
3) 每一状态下的参数预估值都必须正确。
上述要求往往难以达到,因为实际测试中,往往会出现非预期的测试情况,如:
1) 测试序列临时更改(增加、删除、替换或某一指令未正确执行等),引起设备的状态迁移顺序发生变化;
2) 载荷方提供的先验知识与实际工作值不符;
3) 判读过程先于设备状态更改进行;
4) 设备满足迁移规则,但相关数据并未直接达到预期值,即渐变型,且无统一规律。
当上述任一状况出现时,采用目前的方法,一方面会误判当前的参数(或指令),另一方面,由于误判导致状态迁移失败,从而影响后续参数的判读,以致判读系统失去作用,只能终止此次测试序列的执行,或后续测试过程通过人工判读实现。在有效载荷集成测试中,1)~4) 的情况会多次出现,提高判读方法对测试环境的适应能力,可以减少不必要的测试中断,降低人工判读成本。
多Agent技术作为软件自适应研究的重要分支之一,以其多个具有自治性、主动性和反应性的智能Agent的协作在众多领域被广泛引用[4-7],其思想为解决有效载荷地面集成测试中的数据判读问题提供了良好的方案。鉴于此,本文基于多Agent技术对现有数据判读方法进行改进,提出一种基于多Agent框架的实时自适应判读(Multi-Agent-based Real-time self-Adaptive Discrimination, MARAD)方法,以满足有效载荷集成测试中对数据判读的需求。
1 自适应判读系统框架设计MARAD方法从两大方面提高判读系统的自适应性:
一是系统结构上,根据一般自适应系统“感知-决策-执行”的设计理念,构建判读Agent实现实时判读,感知环境变化,决策Agent应对测试环境变化作出决策,知识库Agent根据决策作相应执行,此外,还设计日志Agent记录判读结果和决策结果,便于查看。
二是实现技术上,主要基于4种关键技术:1) 采用面向活动建模来构建知识库Agent,摒弃现有面向状态建模的方式,取消判读规则对测试序列的依赖;2) 在判读规则中引入容错机制,适应测试延迟变化,降低误判;3) 应用CLIPS工具作为推理机,编写规则,实现自动推理;4) 添加决策算法,应对测试环境的变化。
MARAD方法的系统结构如图 1所示,包含4个Agent:
1) 判读Agent(Discrimination Agent, DA)。
作为感知器,实现实时判读。数据接收与处理模块接收卫星仿真平台实时发送的参数和活动数据,处理后加入推理机,根据判读规则判断参数及活动执行的正确性,其判读结果发送给日志Agent(Log Agent, LA)和决策Agent(Decision Making Agent, DMA)。
判读规则包含实时参数判读规则和活动判读规则,前者用于判断实时参数数据是否在预期范围内,后者用于判断载荷设备的活动是否执行正确。判读规则中所需的知识从知识库Agent(Knowledge Base Agent, KBA)中获取。
2) 知识库Agent(KBA)。
存储判读相关的知识,并执行决策。其中知识库主要包括两部分:
a)实时判据。指导判读Agent(DA)对当前参数数据进行正确性判断的依据。
b)活动信息。有效载荷系统的活动模型数据,用于指导判读Agent(DA)判断活动执行的正确性与否。活动信息与活动模型一致,只有当更改活动模型时,活动信息才会发生更改。
决策接收与执行模块接收决策Agent(DMA)发送的决策信息,并予以执行。
3) 日志Agent(LA)。
存储判读系统的工作日志,包含两部分:
a)判读日志。记录判读Agent(DA)发送的参数和活动的判读结果,并将活动信息及执行结果单独保存,用于当测试系统重启或其他情况时,快速恢复实时判据。
b)决策日志。记录决策Agent(DMA)的策略内容,便于事后查看及对知识库中活动模型作出调整。
4) 决策Agent(DMA)。
感知测试环境并作出决策。数据接收与处理模块接收判读Agent发送的活动信息,与决策规则一起经推理得出相应的策略,发送给知识库Agent执行,同时发送给日志Agent备份。决策规则可根据需求自定义添加。
2 关键技术 2.1 面向活动建模方法有效载荷数据最重要的特点在于数据的动态变化性,目前的数据判读方法均依赖载荷状态变化得到参数变化规律,然而,测试过程中任何细微的调整都可能破坏数据原有的变化轨迹,导致数据判读系统不能发挥完整的作用。要解决这一问题:一种方法是将参数的所有可能的变化轨迹都添加到规则库中;另外一种是面向活动建模,描述载荷设备的活动对参数值的改变量,不考虑连续变化。前者适用于指令较少的情形,否则就会产生组合爆炸。实际中指令数目至少上百条,采用后者更合适。
面向活动的建模方法中,将有效载荷设备的指令操作用活动模型A描述,A={A1, A2, …, Ap}(p∈N)为所有活动的集合,Ai=(V, P)(i=1, 2, …, p),其中:
1)V为活动Ai的属性集合,V={T=ta|f:Xa→ta}。其中:Xa表示活动的属性变量,ta表示对应属性变量Xa的取值,f表示活动Ai的属性Xa与取值ta之间的一一映射,Xa的定义域可根据需要自定义,MARAD系统中定义为:{活动ID, 活动跟描述, 作用对象}。
2)P表示活动Ai正确执行后对有效载荷下行参数产生的影响,是一组有序对的集合P={(y1, y2, …, yl)|g:(AID; X1, X2, …, Xl)→(y1, y2, …, yl)}。其中:AID表示该活动的唯一标识即活动ID,X1, X2, …, Xl表示该活动影响的参数的属性项序列,(y1, y2, …, yl)为对应属性项的值,由于一个活动可以影响多个参数,故映射g表示(AID; X1, X2, …, Xl)到(y1, y2, …, yl)的一对多映射关系,X1, X2, …, Xl的选取依据判读需求自定义,MARAD系统中定义为:{序号, 帧ID, 参数ID, 描述, 类型, 预期值, 变化函数, 波动上限, 波动下限}。
以某卫星的有效载荷系统中的部分活动为例,展示其活动模型如表 1所示。
从表 1可以看出,活动模型将活动与参数数据关联,判读的实时判据只与当前所执行的活动有关,与测试序列执行的顺序无关,测试过程中对测试序列的调整不会影响判读。KBA中的活动信息部分来源于活动模型。
活动模型中数据的来源方法有两种:1) 分析载荷设计方提供的数据而得;2) 通过预测试获得,即在集成测试开始之前,先将各个载荷执行一遍所涉及的活动,通过程序自动获得与各活动执行相关的参数及改变量。两种方法各有利弊,方法1) 由人工完成,通常比较节省时间,能应对复杂的活动类型(渐变型、关联型等),但容易有遗漏;方法2) 一般不易遗漏,但比较耗时,难于处理复杂类型,且需要载荷设计人员确认每一活动执行后设备状态的正确性,正确的状态才能得到正确的数据。
2.2 容错机制一方面,由于判读过程中会存在不同步的情况,例如,模拟发送计算机发送指令并通知到判读系统,若数据解析稍有延迟,则判读系统就会因接收到未执行指令时的参数而判定指令执行错误,从而出现误判;另一方面,由于有些特殊参数的变化是渐变类型,其稳定值的出现比普通参数耗时久,容易出现误判。
为适应此类情况,降低误判率,在DA的判读规则中添加容错机制,即设定一个容错变量C,用于指导判读次数。C值的选定与数据采集频率有关,频率越高,值越大。目前一般的数据采集频率为0.5 s/次,可设置C=10。而针对渐变型变量,为保证判读的正确性,可根据其值变化速率,赋予特有的值,添加到活动模型中P成分的“变化函数”一项,如C′=2C,其中C′表示新的容错变量。当参数实际数据与预期数据不同的次数超过C或其倍数时,才判定指令“执行出错”,中间判读过程展示“执行中”。以渐变型参数的判读为例,说明容错机制的有效性。
设备2初始俯仰方位角均为0°,转动范围为[-90°,90°],转速为6°/s,设置C=10,参数02P2(帧ID+参数ID)的变化函数C′=7C得C02P2=70。表 2中列出在发送T203指令后,MARAD方法与状态建模方法(即目前已有的面向状态迁移建模的方法)对02P2参数依次判读的结果。从表 2可以看出,由于数据的渐变性,当指令发送后,参数值并非一次性达到预期值-7,此时,没有容错机制的常规方法就会判定指令执行错误,并且不更改02P2参数的当前判据,以至于当第4次接收到的参数02P2达到预期值-7时,依旧判错。
MARAD中的推理机采用“C语言集成产生式系统”(C Language Integrated Production System, CLIPS)内核实现,CLIPS是美国国家航空航天局(National Aeronautics and Space Administration, NASA)于1985年开发的一种用于编写基于规则的通用专家系统的开发工具[8-10],最初用于美国航天控制领域,具有很高的可靠性。CLIPS的推理算法采用先进的Rete算法[11-12],推理效率高。CLIPS具有其特定的语言格式,为提高判读的效率,设计判读规则时考虑以下3点。
1) 事实(fact)自定义格式简洁统一。
输入数据包括参数和活动,其判读过程需要以fact的形式加入CLIPS中,为提高判读效率,对接收的所有参数和活动采用统一的处理,设计如下。
a)参数fact自定义模板。
(deftemplate raw-data
(slot userfrm (type SYMBOL NUMBER))
(slot parameter (type SYMBOL NUMBER))
(slot value (type NUMBER)))
b)活动fact自定义模板。
(deftemplate raw-ctrl
(slot tcname (type SYMBOL NUMBER)))
2) 规则优先级设置。
判读规则分为两大类:参数判读和活动判读,而活动判读也是基于对参数的判读,因此,当一条参数fact输入后,能同时匹配两个规则,为避免判读混乱,对判读规则设置优先级,活动判读的优先级高于参数判读。
3) 活动判读规则分类。
活动判读要依据活动模型中参数的类型设计不同的规则。表 1中列出的〈活动-参数〉类型有如下几种。
增量型 活动执行后,参数有固定增量(区间),如表 1中〈T101-00P1〉;
定值型 活动执行后,参数为固定值(区间),如表 1中〈T102-01P1〉;
无值型 活动执行后,无参数值,无需进行该参数判读,如表 1中〈T201-02P1〉;
渐变定值型 活动执行后,参数在一段时间后达到固定值,如表 1中〈T203-02P2〉。
此外还有一些比较特殊的〈活动-参数〉类型,如关联型,主备份切换加电,设T1为切主份,T2为切备份,T3为加电,T1、T2执行后对参数无影响,而T3执行后,对电流的影响与其之前执行的是T1还是T2有关。此类型需要设置一个保存区,用于覆盖保存之前执行的T1或T2的活动信息。
以增量型为例给出规则如下。
(defrule DA::judgeIncreCtrl (declare (salience 400))
?t < -(tc-incre (tcname?tcname)(userfrm?frm)(parameter?para)(sum?sum))
?v < -(object (is-a incre-ctrl)(tcname?tcname)(userfrm?frm)(parameter?para)
(ivalue?iv)(ilrange?ilr)(ihrange?ihr)(compnum?cnum)(num?num))
?p < -(object (is-a reserv-data)(userfrm?frm)(parameter?para)(pvalue?pv)(lrange?lr)(hrange?hr))
?x < -(object (is-a predict) (userfrm?frm)(parameter?para)(isvalid?isv))
?r < -(raw-data (userfrm?frm)(parameter?para)(value?val))
=>
(bind?pval (+?pv?iv)) (bind?l (+?lr?ilr)) (bind?h (+?hr?ihr))
(bind?max (+?pval?h)) (bind?min (+?pval?l))
(if( < =?min?val?max)
then
(retract?t?r)
(send?x put-isvalid F)
(printout LA (str-cat?tcname " & "?num "/"?sum " & "?frm " & "?para " & ["?min ", "?max "] & "?val " & RULEjudgeIncre"))
(assert-string (str-cat "(" result " (TorF T)(tcname "?tcname ")(userfrm "?frm ")(parameter "?para ")(value "?pval ")(lrange "?l ")(hrange "?h "))"))
else (if (>?cnum?*comptime*)
then
(retract?t?r)
(send?x put-isvalid F)
(printout LA (str-cat?tcname " & "?num "/"?sum " & F & "?frm " & "?para " & ["?min ", "?max "] & "?val " & RULEjudgeIncre"))
(assert-string (str-cat "(" result " (TorF F)(tcname "?tcname ")(userfrm "?frm ")(parameter "?para ")(value "?val ")(lrange " 0 ")(hrange " 0 "))"))
else
(retract?r)
(send?v put-compnum (+?cnum 1))
)))
2.4 决策算法DMA根据DA判读的结果制定决策,决策算法流程如图 2所示。
以表 1中的03P4和00P1两个参数的判读过程为例,说明该决策机制应对测试环境变化的有效性。设有效载荷执行如表 2所示的测试序列,测试过程中出现:1) 第一次T304未执行;2) 设备1的总电流00P1的实际值约为4.0±0.5,与提供的数据有差别。表 3中给出MARAD方法与常规判读方法的判读过程。
由表 3可知,当第一次T304未执行时,两种方法都给出“执行错误”的判读结果,与此同时,MARAD方法对该参数的判据作出调整,更改为实际值0;在T304第二次执行正确时,MARAD方法能够给出正确的判断结果,而常规方法会继续判定执行错误,参数00P1同理。
3 系统实现与验证采用Visual Studio 2012工具开发了MARAD系统,并嵌入CLIPS6.30版本DLL,部署在判读计算机上。应用某卫星的有效载荷分系统集成测试的测试数据进行验证,搭建系统测试验证平台如图 3所示,卫星平台仿真计算机模拟执行测试序列,解析载荷数据包,并将活动(指令)及解析数据发送给判读计算机,数据管理服务器存储数据包源文件及解析后的参数、日志等,各设备间借助交换机通过网络连接。
知识库及判读规则在系统中以配置文件的形式存在,更改知识库及扩充判读规则无需更改系统的其他程序。系统判读完成后生成日志报告,便于载荷人员查看和修改知识库。
以某一涉及4台有效载荷设备,104条指令活动和201个数据参数的测试序列为例进行测试验证,测试用例中加入实测时的常见干扰因素,如活动未执行、测试暂停与再执行(包含修复过程)、载荷方提供数据不符、参数渐变、测试序列变更等,并将测试结果与目前提出的可实现自动判读的状态模型方法及工程应用中普遍采用的人工判读方法进行比较,以说明MARAD方法的优越性。其中状态模型方法以基于FSM模型的方法为例参与比较,由于状态模型方法不具有自适应性,实时判读效果较差,对比意义不大,故采用事后判读的方式,数据可回放多次。
测试条件及结果对比如表 4所示,其中参数漏判率(Parameter Missing Rate, PMR)及活动误判率(Activity False-positive Rate, AFR)的计算公式分别为:
$ \begin{array}{l} PMR = \frac{未判读的参数数目}{所有参数总数} \times 100\% \\ AFR = \frac{实际执行情况与判读结果不一致的活动数}{活动总数} \times 100\% \end{array} $ |
由表 4可以看出,MARAD方法与状态模型方法相比,都无需人员参与判读,且无参数漏判;而在处理方式上,MARAD能够应对实测环境的变化,处理实时的数据判读,状态模型方法则采用事后判读,需多次回放数据以更新知识库,提高判读准确率;在活动判读结果上,由于状态模型方法的误判率不固定且随着回放次数增加而逐次降低,故取前三次回放测得的误判率的均值,结果表明,MARAD方法实时判读的活动误判率比状态模型方法事后判读的三次回放的均值结果仍下降了10.54个百分点,而在参数漏判率方面,由于两种方法的知识库中都包含所有需判读的参数信息,故均不存在参数漏判的问题。
MARAD方法与人工判读方法相比,采用的都是实时判读方式,但:MARAD方法无需人员参与判读,而人工判读方法则需要4人(一般情况下,一台有效载荷设备需要至少一人判读);在参数漏判率方面,人工判读方法的漏判率5.97%,而MARAD方法则无漏判;在活动误判率方面,MARAD方法比人工判读方法下降了3.02个百分点。
测试结果分析表明,MARAD方法优于状态模型方法和人工判读方法,具有良好的环境适应能力,能够保证实时测试过程中判读的连贯性,且具有较高的判读准确率,可满足有效载荷地面集成测试的判读需求。
4 结语本文设计并实现了可应用于有效载荷地面集成测试中的实时自适应判读系统,该系统基于多Agent框架及自适应设计的理念,改进目前已有方法对实际测试环境的非预期变化的不适应性、判读不连续及错误率高等不足,具有如下优势:
1) 依据“感知-决策-执行”的系统设计,能够应对实测中测试序列调整、数据提供有误等干扰因素,确保判读在测试中的连续性。
2) 面向活动建模,使得判读过程独立于测试序列;判读规则加入容错机制,降低误判率。
3) 判读规则及决策规则可扩充,提高了系统的通用性和可扩展性,日志文件记录决策信息,为载荷人员查看及调整知识库提供了依据。
实例分析及测试验证表明该方法具有明显的优越性,能够满足有效载荷地面集成测试中对实时数据判读的需求,可以应用于工程实用。接下来将继续优化活动模型的自动获取方法,以提高系统使用的便捷性。
[1] | 贺宇峰, 赵光恒, 吕从民, 等. 基于CLIPS专家系统的自动数据判读方法[J]. 中国科学院研究生院学报, 2011, 28(4): 505-513. (HE Y F, ZHAO G H, LYU C M, et al. Technology of automatic data discrimination based on CLIPS expert system[J]. Journal of the Graduate School of the Chinese Academy of Sciences, 2011, 28(4): 505-513.) |
[2] | 张强, 郭丽丽, 马振林. 基于模型自动判读的研究与实现[J]. 计算机技术与发展, 2014, 24(7): 17-20. (ZHANG Q, GUO L L, MA Z L. Design and realization of automatic interpretation based on model[J]. Computer Technology and Development, 2014, 24(7): 17-20.) |
[3] | 吴婧, 苏振华, 孙诚. 一种基于Kalman滤波的卫星遥测数据判读系统[J]. 航天器工程, 2014, 23(3): 86-91. (WU J, SU Z H, SUN C. Satellite telemetry data interpretation system based on Kalman filter[J]. Spacecraft Engineering, 2014, 23(3): 86-91.) |
[4] | ZOLFPOUR-AROKHLO M, MASHINCHI M R. A multi-Agent system approach to control road transportation network[C]//Proceedings of the 20161st Conference on Swarm Intelligence and Evolutionary Computation. Piscataway, NJ:IEEE, 2016:42-46. |
[5] | 丁博, 王怀民, 史殿习. 构造具备自适应能力的软件[J]. 软件学报, 2013, 24(9): 1981-2000. (DING B, WANG H M, SHI D X. Constructing software with self-adaptability[J]. Journal of Software, 2013, 24(9): 1981-2000.) |
[6] | 唐苏妍, 朱一凡, 李群, 等. 多Agent系统任务分配方法综述[J]. 系统工程与电子技术, 2010, 32(10): 2155-2161. (TANG S Y, ZHU Y F, LI Q, et al. Survey of task allocation in multi Agent system[J]. Systems Engineering and Electronics, 2010, 32(10): 2155-2161. DOI:10.3969/j.issn.1001-506X.2010.10.30) |
[7] | 庞毅, 孙青林, 焦刚领, 等. 基于多Agent的舰艇编队对海攻击仿真系统[J]. 系统工程与电子技术, 2015, 37(10): 2396-2403. (PANG Y, SUN Q L, JIAO G L, et al. Warship formation anti-sea attack simulation system based on multi-Agent[J]. Systems Engineering and Electronics, 2015, 37(10): 2396-2403. DOI:10.3969/j.issn.1001506X.2015.10.32) |
[8] | Slashdot Media. STB of NASA, CLIPS basic programming guide Version 6.30[EB/OL]. (2015-03-17)[2016-04-23]. http://clipsrules.sourceforge.net/documentation/v630/bpg.pdf. |
[9] | Slashdot Media. STB of NASA, CLIPS advanced programming guide Version 6.30[EB/OL]. (2015-03-17)[2016-04-23]. http://clipsrules.sourceforge.net/documentation/v630/apg.pdf. |
[10] | 温国谊, 查光东, 张翔. 基于CLIPS的某型飞机故障诊断专家系统的设计与实现[J]. 中南大学学报(自然科学版), 2013, 44(S1): 157-161. (WEN G Y, ZHA G D, ZHANG X. Design and realize of a plane's expert system development for fault diagnosis based on CLIPS[J]. Journal of Central South University (Science and Technology), 2013, 44(S1): 157-161.) |
[11] | 顾晓东, 高阳. Rete算法:研究现状与挑战[J]. 计算机科学, 2012, 39(11): 8-12. (GU X D, GAO Y. Rete algorithm:current issues and future challenge[J]. Computer Science, 2012, 39(11): 8-12. DOI:10.3969/j.issn.1002-137X.2012.11.002) |
[12] | FOREGY C L. Rete:a fast algorithm for the many pattern/many object pattern match problem[J]. Artificial Intelligence, 1982, 19(1): 17-37. DOI:10.1016/0004-3702(82)90020-0 |