-1-
引言
当今 ,仿真技术已广泛应用在电力、军事 、航空航天等众多领域 ,取得了很大的经济效益和社会效益 ,成为现代科学技术和国民经济的重要推动力量。
验证是保证仿真系统可信度的关键途径。
验证存在不同的类型,例如概念模型验证 、数据验证和结果验证,其中 ,结果验证是最关键的 ,也是本文要研究的内容 。为了方便起见 ,本文所讨论的验证都指结果验证 。
相对于简单仿真系统的验证 ,复杂仿真系统的验证要更困难 ,主要表现在以下几个方面 :
1)复杂仿真系统规模巨大,包含的模型繁多,因此,验证工作量相当大,单靠人工很难完成任务 ;
2)复杂仿真系统有数目十分庞大的输入变量和输出变量 ,并且存在大量的随机因素 ,因此 ,复杂仿真系统验证需要自动化工具来辅助 ,从而提高验证工作的效率 ;
3)统计方法的局限性导致了复杂仿真系统验证的困难性 ,虽然目前存在大量的统计方法 ,但是其使用都需要一定的专业知识和前提条件 。如何正确的选择和使用统计方法已成为复杂仿真系统验证人员面临的主要问题。
复杂仿真系统的验证单靠人工已不能满足其需要,其对自动化验证工具的需求已迫在眉睫。为了解决上述面临的问题,本文针对仿真系统验证的特点,对基于知识的仿真验证工具进行了研究 。在给出仿真验证工具的总体结构设计基础上 ,对该验证工具的关键组件展开研究,设计和实现了该验证工具 。
-2-
验证工具总体结构设计
验证工具应有效辅助复杂仿真系统的验证过程,并且有效地解决复杂仿真系统验证面临的各种问题 ,为此 ,使用面向对象技术来表示复杂仿真系统的验证知识 ,并采用类似专家系统的推理方式来实现仿真系统的验证 。复杂仿真系统验证工具的总体结构设计如图 1所示 。
1)知识获取系统 获取参考系统的测量数据和专家的经验知识 ,并将其转化为知识库中需要的形式。参考系统指被仿真的真实系统或其他已经建成的类似仿真系统 。
2)数据记录系统 负责仿真系统的数据记录工作,这些数据将提供给验证系统完成验证工作 。目前,这一工具已经实现。
3)验证系统 利用预先定义的验证规则 ,调用适合的验证方法 ,对参考系统输出数据和仿真系统输出数据进行比较 ,从而完成验证 ,此外还要负责验证结论的合成等 。
4)解释系统 解释系统通过读取规则活动序列向用户解释如何得出结论和为什么得到这个结论。此外 ,用户也可以根据需要直接从知识库中获取需要了解的信息 。
5)用户界面 与用户进行对话,接受用户提出的验证任务,此外还负责验证结论的数据显示和图形显示 。用户界面可以针对不同的用户进行个性化处理,从而能够适应于特定用户的特定行为 。
6)验证数据知识库 存放所有的仿真系统验证数据 。验证数据知识库有两个作用 ,即根据其设计实验和提供验证需要的数据 。验证数据知识库和下面的验证方法知识库 ,以及验证规则库在复杂仿真系统验证工具中起着极其关键的作用 ,是自动化的仿真系统验证得以实现的基础 。
7)验证方法知识库 存放关于各类验证方法的知识 ,提供各类验证方法的选择建议 ,辅助验证人员选择各类方法 。
8)验证规则库 存放各种验证规则 ,供验证系统完成仿真系统的验证任务 。
9)数据库 用于存放验证系统处理问题的初始输入、中间事实和结论,主要有两类,一类是事实空间 ,存放用户给出的事实、推理过程的中间结果及最后结论 ;另一类是规则活动序列,将激活的规则记录下来,形成一个拓扑序列 。解释系统根据这个序列产生解释。
-3-
验证工具关键组件设计
3.1 验证数据知识库的设计
复杂仿真系统的验证内容就是待验证的性能参数可以分为三类 ,事件 、静态性能参数和动态性能参数 。对于不同的仿真模型 ,都可以提炼出这三类性能参数 。
1)事件 事件是复杂仿真系统验证的一个关键内容 。例如 ,在一个防空仿真系统中要验证的事件可能包括敌机进入防御范围 、雷达探测到敌机 、指挥中心命令飞机出发拦截 、飞机拦截到目标等 。事件验证主要涉及以下几个问题 :检查事件是否发生 ;检查事件的发生条件和产生的结果是否正确 。
2)静态性能参数 静态性能是仿真系统的静态输出量,如导弹的落点位置、脱靶量 、杀伤概率等,可以作为随机变量。实践中通常采用统计方法来描述其均值和方差。在相同实验条件下 ,可以获得参考系统的样本和仿真系统的样本,静态一致性检验的实质就是检验它们是否来自同一随机总体 。
3)动态性能参数 如导弹模型的过载 、姿态 、速率等过程参数或电站仿真模型的动态变化参数 ,其变化是复杂的 ,验证也比较困难 。在参考系统输出和仿真系统输出中获得的是一系列采样时间序列 ,要了解仿真系统对参考系统的模拟程度 ,就是检验两个时间序列的总体一致性 。如果两个时间序列样本服从同一总体 ,则可说明在该置信水平下 ,参考系统输出和仿真系统输出的结果是一致的 。验证数据知识库的设计就是研究如何将上述不同类型的数据以合理有效的方式存入数据库中 。下面以动态性能参数数据为例给出其在验证数据知识库中的表示和存储方式 。
对于某个模型 M的第 k个输入数据组合 Xk(0),其动态性能参数可以表示为 Dk(T)={Dlk(T):l∈L},其中,L是动态性能参数的个数 , Dlk(T)=(Dlk(t0),Dlk(t1),…,Dlk(tSL)),SL是样本长度 。利用上述表示 ,将其存入数据库中 ,建立起验证数据知识库 。
3.2 验证方法知识库的设计
复杂仿真系统存在大量的验证方法 ,大致可以分为以下几类 :
1)主观验证方法 如图灵测试 、表面验证 、事件验证等 。当不存在真实系统数据时 ,需要利用该类方法完成模型的验证 。
2)图形比较方法 如条形图、盒形图、行为图、扇形图、螺旋图、日历图、旋律图等 。这类方法不仅辅助主观验证方法 ,而且还可以为客观方法提供比对 。
3)统计方法 分为 ①参数类方法 :如置信区间(点估计 、区间估计等 )、假设检验 (U检验 、T检验 、χ2检验 、F检验等 )等 ;②非参数方法 :游程检验等 。
4)时间序列方法 如误差分析 、灰关联分析、TIC、谱分析等 。
5)数据预处理方法 如剔除野点 、零均值处理等 。
6)数据检验方法 如正态检验 、平稳性检验 、独立性检验等 。
上述这些验证方法的使用通常需要大量的专业知识 ,而这些知识只能由专家才能提供 。如果由不熟悉这些专业知识的人员使用这些验证方法 ,则很可能做出错误的判断。在实际验证中 ,验证方法的不正确使用已成为一个主要的问题。
基于知识的专家系统则可以提供验证方法选择、方法使用指南、验证结果解释等功能 ,从而能够有效地解决上述问题 。在复杂仿真系统验证工具中 ,本文采用了类似专家系统的方式来实现验证方法的选择和使用 ,将验证中可能用到的验证方法以C++类的形式保存在验证方法知识库中 ,并通过验证系统进行调用 ,从而完成验证方法的选择。
为了有效的表示和存储各类验证方法,针对同类验证方法开发了通用的类结构,并且将验证方法的事实部分存储在验证方法类的属性部分,将验证方法的选择规则存储在验证方法类的方法中。下面以非参数假设检验法类方法为例给出其类结构设计 。
ClassCNPHTest
{
//属性
Private:
StringPurpose;//方法的用途
IntSampleLowerbound;//样本下限
IntSampleUpperbound;//样本上限
BooleanSampleNumberEqu;//是否要求两个数据集的样本数目相等
FloatSignificancelevel;//显著性水平
StringExplanationInformation;//解释信息
//方法
Public:
GetData(Dataset1, Dataset2);//从数据库中获取需要的数据
Match(Boolean,Certainty);//该方法是否适合给定的数据集
Test(Dataset1, Dataset2);//检验两个数据集是
否服从同一概率分布
}
3.3 验证规则库的设计
验证规则供验证系统完成仿真系统的验证任务。复杂仿真系统验证工具中的验证规则分为两类 ,即验证方法选择规则和全局性规则。
3.3.1 验证方法选择规则
验证方法选择规则不存储在验证规则库中,而是直接存储在验证方法类的方法 Match(Boolean,Certainty)中 ,主要用来判断该验证方法是否适合给定的样本数据集 。如 ,以配对t检验法为例,为了判断该方法是否可用来检验给定的两个样本数据集(DSr和 DSs),可能需要使用下面的规则 :
①IfDSr和 DSs的样本数目不等检验法不适用 ;
②IfDSr和 DSs的不符合正态分布检验法不适用;
③IfDSr和 DSs的样本不独立验法不适用 ;
④IfDSr和 DSs的样本数目小于t检验法不适用 ;
⑤IfDSr和 DSs的样本数目大于Then使用配对 t检验法的信度为 0
⑥IfDSr和 DSs的样本数目大于Then使用配对 t检验法的信度为 0
⑦IfDSr和 DSs的样本数目大于配对t检验法的信度为 0.9。
对于每种验证方法 ,都需要开发类似上面的选择规则 ,这些规则将作为类的一部分在类的方法Match(Boolean,Certainty)中实现 。
3.3.2 全局性规则
复杂仿真系统验证工具中的全局性规则包括以下几类 :①数据搜索规则 ,当用户指定需要验证的性能参数后 ,需要使用数据搜索规则来找出其对应的参考数据 ;②验证方法的比较规则 ,当验证系统发现有多个验证方法适合给定的样本数据集时 ,需要使用比较规则来确定最适合给定样本数据集的验证方法 ;③验证结论的获取规则 ,当使用某种验证方法给出样本数据集的一致性判断结论后 ,需要根据其给出某性能参数的验证结论 。全局性规则需要单独存放在验证规则库中 ,供验证系统需要时调用 。
3.4 推理系统的设计
从复杂仿真系统验证工具的总体结构可以看出 ,推理系统是这一工具的最重要组成部分 ,其设计的好坏直接关系到验证的自动化程度 。为了尽可能的支持仿真系统的验证自动化 ,从而满足复杂仿真系统的验证需求 ,本文针对静态性能参数和动态性能参数设计了不同的验证过程 ,其中图 2给出了静态性能参数的验证过程 。从图 2可以看出 ,本文设计的验证工具不仅支持定量的统计验证 ,而且能够支持定性的图灵测试和表面验证,这是以往工具所不能支持的 。
-4-
验证工具的实现
根据上面给出的验证工具设计思想 ,本文实现了基于知识的验证工具 (SVT)。该验证工具使用VisualC++6.0语言和MicrosoftAcess2000数据库来实现 。其中 ,验证数据知识库使用MicrosoftAcess2000实现 ,验证规则库和验证方法知识库使用 Vis-ualC++6.0来实现 ,分别作为一个类库存在 ,其他部分均使用 VisualC++6.0实现 。
该工具以向导的方式实现了静态性能参数和动态性能参数的验证过程。在对实际仿真系统进行验证时,只需要遵循验证工具的向导就能快速、有效地完成验证。该工具已应用于仿真系统中 ,对其中的多类模型如飞机模型 、导弹模型 、卫星模型 、环境模型等完成了验证工作 ,取得了良好的效果 。通过应用表明 :
1)该工具从确定验证内容 到得到验证结果的整个流程都提供了全面、自动的支持 ,提高了工作效率,从而在规定的时间内 ,能够完成尽可能多的验证任务 ;
2)利用该工具可以对同一 仿真模型同时采用多种验证方法进行验证 ,克服了单一验证方法的不足 ,在很大程度上提高了模型验证的客观性 ;
3)该工具克服了以往对专家过多依赖的问题 ,在该工具的辅助下 ,只需要对验证人员进行简单的培训就能够胜任验证工作 。
-5-
结语
针对复杂仿真系统验证的困难性和当前正在开发的仿真系统的验证需求,本文对复杂仿真系统验证工具进行了研究,设计并开发了一个基于知识的仿真验证工具 。目前,该工具已成功地应用于包括电站仿真、导弹系统仿真等多个仿真系统中 ,提高了仿真系统验证的效率,降低了验证困难性,节省了费用 。下一步的主要工作是将现在单机运行的验证工具扩展为一个分布式验证工具 ,以满足分布式仿真系统的验证需求 。
#The End #
作者:刘飞 ,杨明 ,王子才
哈尔滨工业大学 控制与仿真中心
--------------------------------------------------
本内容来源于互联网,版权归原作者所有,供学习交流使用,严禁商用,如有侵权请联系我们删除。
--------------------------------------------------
相关文章,在仿真秀官网搜索:
【理论】模态理论的进展 /【剖析】当前国内外工业发展的新趋势