一种基于强化学习框架的核安全控制软件异常测试方法

文档序号:35102170发布日期:2023-08-10 09:31阅读:32来源:国知局
一种基于强化学习框架的核安全控制软件异常测试方法

本发明涉及核安全控制软件可靠性测试,具体为一种基于强化学习框架的核安全控制软件异常测试方法。


背景技术:

1、核安全控制软件是核能工业的重要基础,其核心组件是数字计算和核物理机理数学模型。核安全控制软件研发必须确保小至功能函数、大至业务流程的每一个计算模块与事先设计目标相符。由于软件开发仍然是由人手工完成,而犯错误是人类不可避免之天性,因此对核安全控制软件可靠性的测试是该软件研发过程的重中之重。

2、软件可测试性是源自计算机硬件设计的一套方法论,包含了从需求分析到设计开发的全流程规范性。与一般的软硬件设计不同,核工业对软件的可靠性要求更高,对鲁棒性的要求更严。但是伴随着软件系统复杂程度的显著提高,对核安全控制软件测试的需求内涵也不断演变,已经从基础性的代码检查和错误分析,扩展到物理系统仿真的准确性,可靠性和高响应性的评价,旨在使仿真软件的系统输出与现实物理世界的设备状态渐变呈现出同态演化的效果,从而使软件仿真结果具有现实意义的借鉴性,确保仿真软件与实际情况的差异在可以容忍的设计误差范围之内。

3、但是,愈来愈高的软件系统复杂性也导致系统状态的组合性爆炸,即系统状态空间呈现为超高维度连续空间,其可能的演化过程极为复杂。在有限的计算资源和时间约束之下,显然不可能通过穷尽地遍历所有可能的系统状态,以搜索出系统状态异常。

4、究其原因,主要有两方面问题:

5、第一,从软件角度来说,软件系统所表达的状态空间是物理系统状态空间的超集。这意味着,在软件系统中可能出现的一些状态组合在实际中并不能出现。例如,以浮点数表示的温度压力等物理量在实际中都有所限制,其采样过程的变化范围也有所限。这就说明,在测试中对于状态空间的采样不应是均匀的,而应该对某些状态有所偏重。

6、第二,现实的核能计算过程是连续系统。在实际中通过传感器ad转换,获得离散状态采样序列。但软件的异常亦可能出现在这些细节之中,即可能在一个局部和瞬态出现异常。受制于系统误差和截断误差,如何在大规长时间的仿真过程中,捕获到转瞬即逝且有一定不确定性的异常过程,也是核计算系统测试软件的重要困难。


技术实现思路

1、针对上述问题,本发明的目的在于提供一种基于强化学习框架的核安全控制软件异常测试方法,采用了强化学习自动求证的方式,可以测试任意形式的数值计算模块,无需过多人工干预;条件过程通过系统参数实现,调节方式简单直观,有利于计算机算法自动化批量处理。技术方案如下:

2、一种基于强化学习框架的核安全控制软件异常测试方法,包括以下步骤:

3、步骤1:确定测试对象,定义模块

4、测试对象为核动力数值仿真计算的c语言代码模块,即luster-c代码;定义实现特定的系统仿真和反馈控制功能的基本单元为一个模块,且一个模块对应一个c文件,一个模块在定时循环中处理一次,即内部无循环地执行系统状态更新和系统观测输出两项任务;

5、步骤2:确定定时循环仿真的相关参数和条件

6、指定定时循环仿真的时间间隔t和循环次数s,在模块仿真时,每当系统时间推进到距离上一次计算t时间,则触发一次新的模块计算,使模块的状态和输出得到更新;

7、步骤3:定义各种异常,并设置各种异常的判断阈值;并多异常性整合判断,得到基于异常判断的回馈函数;

8、步骤4:进行核安全控制软件异常测试预先准备:定义描述某仿真状态下输入具有物理意义的函数、描述仿真状态具有物理意义的函数、描述仿真输出具有物理意义的函数、物理意义判断函数及循环总次数;

9、步骤5:根据步骤1-4定义和确定的内容确定定时循环仿真流程;

10、步骤6:将待测试模块及其包含模块对应的luster-c代码编译为动态链接库文件,并在配置文件中设定定时循环仿真的总循环次数;

11、步骤7:根据定时循环仿真流程编制的定时循环仿真程序,完成软件异常测试。

12、进一步的,所述内部无循环地执行系统状态更新和系统观测输出两项任务的表达如下:

13、

14、其中,t代表采样时间,矢量xt∈rn表示模块n维内部连续状态,矢量lt∈bl表示模块内部l维的逻辑状态,矢量ut∈rm代表该模块的m维输入,矢量yt∈rp表示模块在t时刻的p维输出;函数f(<xt,lt>,ut+1)和g(<xt,lt>,ut+1)分别代表模块内部状态转移和观测输出;∈表达从系统状态观测时的截断误差。

15、更进一步的,所述步骤3具体为:

16、步骤3.1:定义异常

17、设置模块内部状态的初始值为x0,在仿真过程的s次循环中,模块的序列输入用{u1,u2,…,un}表示;在此情况下,该模块的序列输出以{y1,y2,…,yn}表示,其内部状态演化过程以{<x1,l1>,<x2,l2>,…,<xn,ln>}表示;定义的异常包括:

18、1)预期异常

19、定义预期异常为系统输出量与预先指定的时序数量之间的相对差异大于指定阈值;输出预期以关键时刻期望输出值来定义,即根据系统设计目标,在特定输入序列给出模块在t={t1,…,tn}时刻共n个预期输出值

20、预期异常的判断用公式表示为:

21、

22、其中,ψexp(yt)为预期异常判断值,δ(·)为heavenside阶跃函数,即当时间t<0时,δ(t)=0,而时间t≥0时,δ(t)=1;符号‖·‖2表示l2范数,∩表示求与逻辑运算;而texp为预期异常的判断阈值,由测试工程师指定;yt和分别为实际输出和预期输出;

23、2)版本回归异常

24、定义版本回归异常为在相同初始化状态和输入序列的情况下,旧版本的输出yoldt和改进后输出yt相近度超出指定阈值;

25、版本回归异常的判断用公式表示为:

26、ψreg(yt)=δ(‖yt-ytold‖2>treg)

27、其中,ψreg(yt)为版本回归异常判断值;treg为版本回归异常的判断阈值,由测试工程师指定;

28、3)状态发散和突变异常

29、定义状态发散和突变异常为系统输出状态持续偏离既定目标或者出现偶发性的数值大幅偏离;

30、状态发散和突变异常的判断用公式表示为:

31、

32、其中,ψosc(yt)为状态发散和突变异常判断值,tosc为状态发散和突变异常的判断阈值,由测试工程师指定;参数nc代表考虑的过去若干记录的个数;

33、4)分布外异常

34、根据已知模块测试过程的历史记录信息,通过核密度估计器建立非参数形式的概率密度估计函数,根据新输出结构在概率密度估计函数中的概率预测来判断分布外异常;令表示该模块测试历史中获取的数值记录,则分布外异常的判断用公式表示为:

35、

36、其中,ψood(yi)为分布外异常判断值,tood为分布外异常的判断阈值,由测试工程师指定;核函数k采用高斯核函数,d是高斯核函数的参数,用以在概率密度估计时设置参考的邻域范围;yi为第i个实际输出,yjhist为测试历史记录;

37、步骤3.2:多异常性整合判断

38、令集合ω表示多种异常判断方法,即ω={exp,reg,osc,ood},exp、reg、osc和ood分别表示预期异常、版本回归异常、状态发散和突变异常、分布外异常;则整合判断多异常性时,计算其平滑最大值,用公式表示为:

39、

40、其中,α是用户指定的参数,用于指定平滑程度;e表示自然对数;ψτ(yi)表示异常判断值;

41、步骤3.3:得到基于异常判断的回馈函数

42、在多异常性整合判断的基础上,考虑在t时刻的<xt,lt>状态下输入ut,定义针对此时输出的基于异常判断的回馈函数为:

43、rt(<xt,lt>,ut+1)=φ(g(<xt,lt>,ut+1))

44、更进一步的,所述步骤4具体包括:

45、1)描述某仿真状态下输入具有物理意义的函数vinput(<xt,lt>,ut+1),即当下输入ut具有物理意义时,函数输出为1,否则输出为0;

46、2)描述仿真状态具有物理意义的函数vstate(<xt,lt>),即系统状态具有物理意义时,函数输出为1,否则输出为0;

47、3)描述仿真输出具有物理意义的函数voutput(yt),即输出yt具有物理意义时,函数输出为1,否则函数输出为0;

48、4)物理意义判断函数v(<xt,lt>,ut+1,yt+1)=vinput(<xt,lt>,ut+1)×vstate(<xt,lt>)×voutput(yt+1);

49、5)循环总次数niter。

50、更进一步的,所述步骤5具体包括:

51、步骤5.1:用神经网络创建描述强化学习dqn算法的状态-操作评估函数qθ的网络模型,并初始化qθ函数的参数θ;

52、步骤5.2:创建探索过程回放记录存储空间d,其尺寸为nd;

53、步骤5.3:创建空的有效状态历史列表h=[,];

54、步骤5.4:创建空的异常状态临域及控制输入列表u=[,],用于存放进入异常状态之前的系统状态,并且记录在该状态下使用何种输入将进入异常;

55、步骤5.5:将系统的初始状态<x0,l0>加入有效状态历史列表h;

56、步骤5.6:开始循环:

57、步骤5.6.1:从有效状态历史列表h中均匀随机采样,将其作为系统初始状态<xt,lt>←

58、sample(h)

59、步骤5.6.2:设置循环标记ζ←1

60、步骤5.6.3:开始循环

61、步骤a:按照∈greedy采样规则获取一个输入ut←∈greedy(<xt,lt>,θ);

62、步骤b:执行动作ut,观察系统反馈的奖励rt和下一个状态<xt+1,lt+1>;

63、步骤c:保存状态转移{<xt,lt>,yt,rt,ut+1,<xt+1,lt+1>,yt+1},到探索过程记录存储空间d;

64、步骤d:更新循环标记ζ←v(<xt+1,lt+1>,ut,yt);

65、步骤e:如果ζ=true,将状态加入有效状态历史列表h←[h,<xt,lt>];否则更改奖励为rt←(-1);

66、步骤f:如果rt=1,根据异常状态临域及输入的列表设置kt←q(u,<xt,lt>,ut,rt);否则设置其中,kt表示对当前态势优劣的评估;γ为0.95为预期折扣,max为取最大值运算,u′t为当前状态下所有可能都操作;

67、步骤g:计算损失函数

68、步骤h:根据梯度以梯度下降算法更新参数β为学习速率;

69、步骤i:更新状态<xt,lt>←<xt+1,lt+1>

70、步骤5.6.4:直到ζ=0或者rt=1

71、步骤5.7:直到循环次数达到niter。

72、更进一步的,所述步骤a中∈greedy(<xt,lt>,θ)采样处理过程为:

73、步骤a1:以均匀的0-1分布生成随机数ψ;

74、步骤a2:若ψ<∈,则随机选择一个输入ut;否则按照ut←maxu_tqθ(<xt,lt>,ut)采样一个输入ut;

75、步骤a3:将ut作为∈greedy(<xt,lt>,θ)的输出。

76、更进一步的,所述步骤f中根据异常状态临域及输入的列表来计算函数q(u,<xt,lt>,ut,rt),处理步骤为:

77、步骤f1:判断<xt,lt>与u中每个元素的距离,取其最小距离minw∈ud(<xt,lt>,w)作为到u的距离

78、步骤f2:若则更新异常状态临域及控制输入列表u=[u,(<xt,lt>,ut,1)];其中,dt是用户指定的阈值;

79、步骤f3:否则计算c=(u[argminw∈ud(<xt,lt>,w)][2]+=1);如果c>10,则返回0;否则返回rt;其中,c为失效计数器,w为某一个异常状态临域及控制输入,[2]+=1运算表示将左运算符的第二个元素自增1。

80、本发明的有益效果是:

81、1)本发明采用了强化学习自动求证的方式,可以测试任意形式的数值计算模块,无需过多人工干预;

82、2)本发明的条件过程通过系统参数实现,调节方式简单直观,有利于计算机算法自动化批量处理。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1