基于遗传规划的模拟电路故障测试最优序贯搜索方法转让专利

申请号 : CN201610136480.3

文献号 : CN105629156B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杨成林张贞

申请人 : 电子科技大学

摘要 :

本发明公开了一种基于遗传规划的模拟电路故障测试最优序贯搜索方法,首先根据模块电路的测试依赖矩阵随机生成若干个故障诊断树,采用遗传规划的方法对故障诊断树进行选择、交叉和变异,其中以故障诊断树所对应的测试代价的倒数作为该故障诊断树的个体适应度,根据故障诊断树的特点,在交叉过程中仅交换故障集结点及其子树,在变异过程中仅选择测点进行变异,重新生成该测点结点下的子树,经过多次迭代后从当前的若干个故障诊断树中选择测试代价最小的故障诊断树,作为最终故障诊断树。本发明可以准确搜索得到以最小测试代价隔离出最多的故障点的测点序列,为模块电路的故障测试提供指导。

权利要求 :

1.一种基于遗传规划的模拟电路故障测试最优序贯搜索方法,其特征在于,包括以下步骤:S1:根据模拟电路的测试依赖矩阵随机生成Q个故障诊断树;

S2:令迭代次数w=1;

S3:计算每个故障诊断树所对应的测试代价的倒数,作为该故障诊断树的个体适应度;

S4:根据各故障诊断树的个体适应度选择得到父个体集合;

S5:将父个体集合中的个体随机分为Q/2组,然后以组为单位,比较每组中的两个个体是否存在故障集相同的结点,如果某组中的两个个体不存在故障集相同的结点,则该组不进行交叉操作,如果某组中的两个个体存在故障集相同的结点,首先删除大小等于M-1或等于1的相同故障集,M表示故障集S中故障数量,在剩余的相同故障集中任意选择一个故障集,交换该故障集结点及其子树;

S5:对于交叉后的每个个体,任意选择一个测点结点,对应测点记为t,从该测点结点的可用测点集中选择另外一个测点t′,t′≠t,并且该测点t′能够分割当前测点所对应的故障集,将当前测点t更换为测点t′,重新生成该测点结点下的子树;

S6:如果w=W,W表示最大迭代次数,进入步骤S7,否则令w=w+1,返回步骤S3;

S7:从当前的Q个故障诊断树中选择测试代价最小的故障诊断树,作为最终故障诊断树。

2.根据权利要求1所述的基于遗传规划的模拟电路故障测试最优序贯搜索方法,其特征在于,所述步骤S1中故障诊断树的生成方法为:S1.1:令根结点p0=S,令层数初始值k=0;

S1.2:统计第k层故障集结点数量Dk;

S1.3:如果Dk=0,故障诊断树生成结束,否则进入步骤S1.4;

S1.4:令故障集结点序号d=1;

S1.5:首先确定当前测点结点的可用测点集φ=T-T′,T′表示当前测点结点上层结点的测点集合,从可用测点集φ中任意选择一个可以分割故障集Skd的测点t,Skd即表示第k层第d个故障集结点所对应的故障集,令测点结点tkd=t,根据测点t的分割结果确定故障集Skd的子故障集Skd-left和Skd-right,如果不存在可以分割故障集Skd的测点,则不做任何操作;

S1.6:如果d<Dk,令d=d+1,返回步骤S405,否则令k=k+1,返回步骤S1.2。

说明书 :

基于遗传规划的模拟电路故障测试最优序贯搜索方法

技术领域

[0001] 本发明属于模拟电路故障测试技术领域,更为具体地讲,涉及一种基于遗传规划的模拟电路故障测试最优序贯搜索方法。

背景技术

[0002] 最优序贯测试问题是模拟电路可测性设计和分析方法中的一个关键问题。最简形式的最优序贯测试问题可以定义为一个四元组(S,p,T,c)。S={s0,s1,s2,…,sm}表示所有可能的故障集,其中s0表示无故障状态,sj表示任何一种可能发生的故障,m表示故障情况的数量。P=[p(s0),p(s1),…,p(sm)]T是以上故障集元素所可能发生的先验概率集合,p(s0)表示无故障所发生的概率。理论上先验概率和应该为1,即 部分情况下直接策略所得概率和可能并不满足,需要通过归一化来实现。T=[t0,t1,t2,…,tn]表示的是所有可用测点的集合,n表示测点数量。其中每个测点都可能检测到一个或几个故障,故障集S和测点集T的所有元素整合到一起构成一个依赖矩阵。矩阵中的每个元素dij表示当某个故障sj发生时,对应测点ti的测试是否能通过,其中0表示测试不通过,1表示测试能通过。向量c=[c0,c1,c2,…,cn]中的每个元素ci对应的是每个测点ti在检测过程当中所需花费的代价。
[0003] 单个故障被检测出所需要的代价为其先验概率与检测出它所花的所有测点的成本和的乘积,因此整个序贯测试的总体代价所有故障被检测出的所需代价总和的计算公式可以表示为 表1是测试依赖矩阵示例。
[0004]故障源 t0 t1 t2 t3 t4 先验概率p(sj)
s0 0 0 0 0 0 0.7
s1 0 1 0 0 1 0.01
s2 0 0 1 1 0 0.02
s3 1 0 0 1 1 0.10
s4 1 1 0 0 0 0.05
s5 1 1 1 1 0 0.12
测试成本cj 1 1 1 1 1 -
[0005] 表1
[0006] 表1表示的是由这四元组构成的一个依赖矩阵例子,根据这个依赖矩阵可以看出该系统无故障的概率为0.7,测试成本都为1。根据该矩阵可以很快将故障集S中的各个故障隔离开来。图1是表1所示模拟电路的一个故障诊断树。如图1所示,故障诊断树中每个故障集可以通过对应测点的测试分割为两个子故障集,Go表示该测点能够成功检测出对应故障点的故障状态,No Go表示该测点无法检测出对应故障点的故障状态。从图1可以看出该依赖矩阵的故障隔离率为100%,按照上述代价计算公式可以计算出图1所示的测点选取方式的所需代价为3.16。而一般来说,同一个依赖矩阵能完成故障隔离的序贯测试方法可以有很多种,或者说表1所对应的故障诊断树可能有很多棵,图1显示的只是其中一棵。再考虑到测点成本和故障发生概率,不难理解这些树所对应的代价也会不同,总有某一种测点选择方法所带来的测试代价是最小的,即最优序贯测试。但是在实际应用中,由于测点的数量较多,如何快速准确地搜索得到最优序贯测试是一大难题。

发明内容

[0007] 本发明的目的在于克服现有技术的不足,提供一种基于遗传规划的模拟电路故障测试最优序贯搜索方法,搜索得到能以最小测试代价隔离出尽可能多的故障的测点序列,为模块电路的故障测试提供指导。
[0008] 为实现上述发明目的,本发明基于遗传规划的模拟电路故障测试最优序贯搜索方法包括以下步骤:
[0009] S1:根据模拟电路的测试依赖矩阵随机生成Q个故障诊断树;
[0010] S2:令迭代次数w=1;
[0011] S3:计算每个故障诊断树所对应的测试代价的倒数,作为该故障诊断树的个体适应度;
[0012] S4:根据各故障诊断树的个体适应度选择得到父个体集合;
[0013] S5:将父个体集合中的个体随机分为Q/2组,然后以组为单位,比较每组中的两个个体是否存在故障集相同的结点,如果某组中的两个个体不存在故障集相同的结点,则该组不进行交叉操作,如果某组中的两个个体存在故障集相同的结点,首先删除大小等于M-1或等于1的相同故障集,M表示故障集S中故障数量,在剩余的相同故障集中任意选择一个故障集,交换该故障集结点及其子树;
[0014] S5:对于交叉后的每个个体,任意选择一个测点结点,对应测点记为t,从该测点结点的可用测点集中选择另外一个测点t′,t′≠t,并且该测点t′能够分割当前测点所对应的故障集,将当前测点t更换为测点t′,重新生成该测点结点下的子树;
[0015] S6:如果w=W,W表示最大迭代次数,进入步骤S7,否则令w=w+1,返回步骤S3;
[0016] S7:从当前的Q个故障诊断树中选择测试代价最小的故障诊断树,作为最终故障诊断树。
[0017] 本发明基于遗传规划的模拟电路故障测试最优序贯搜索方法,首先根据模块电路的测试依赖矩阵随机生成若干个故障诊断树,采用遗传规划的方法对故障诊断树进行选择、交叉和变异,其中以故障诊断树所对应的测试代价的倒数作为该故障诊断树的个体适应度,根据故障诊断树的特点,在交叉过程中仅交换故障集结点及其子树,在变异过程中仅选择测点进行变异,重新生成该测点结点下的子树,经过多次迭代后从当前的若干个故障诊断树中选择测试代价最小的故障诊断树,作为最终故障诊断树。本发明从故障诊断树的特点,对传统的遗传规划方法进行了改进,从而可以准确搜索得到以最小测试代价隔离出最多的故障点的测点序列,为模块电路的故障测试提供指导。

附图说明

[0018] 图1是表1所示模拟电路的一个故障诊断树;
[0019] 图2是遗传规划的树状结构示例图;
[0020] 图3是本发明基于遗传规划的模拟电路故障测试最优序贯搜索方法的具体实施方式流程图;
[0021] 图4是本实施例中所采用的故障诊断树生成方法;
[0022] 图5是本发明中个体交叉的示例图;
[0023] 图6是本发明中个体变异的示例图;
[0024] 图7是采用本发明根据表1所示依赖矩阵所搜索得到的最优故障诊断树;
[0025] 图8是采用本发明根据表2所示依赖矩阵所搜索得到的最优故障诊断树。

具体实施方式

[0026] 下面结合附图对本发明的具体实施方式进行描述,以便本领域的技术人员更好地理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。
[0027] 为了更好地说明本发明的技术内容,首先对本发明所基于的技术思想进行说明:
[0028] 本发明是基于遗传规划来对模拟电路测试的最优序贯进行搜索。遗传规划是遗传算法的扩展,是一种搜索寻优技术,主要通过效仿生物的进化和遗传,根据优胜劣汰的原则,使所要解决的问题从初始解一步步地逼近最优解,主要进化过程为种群初始化、挑选、交叉和变异。
[0029] 遗传规划中的个体一般表现为树状结构,有着灵活处理结构和大小不预先确定问题的优点,一般常用于解决符号回归问题。例如,个体y=A+Bx所对应的树状结构如图2。图2是遗传规划的树状结构示例图。比较图1和图2,可以看出序贯测试问题中的故障诊断树和遗传规划个体表达都是采用二叉树形结构来表示的。基于这个启发,本发明提出了采用遗传规划来解决序贯测试问题的方法。将模拟电路的故障诊断树也看成一个个体,然后采用遗传规划的算法来进化求出最优个体解。
[0030] 图3是本发明基于遗传规划的模拟电路故障测试最优序贯搜索方法的具体实施方式流程图。如图3所示,本发明基于遗传规划的模拟电路故障测试最优序贯搜索方法包括以下步骤:
[0031] S301:种群初始化:
[0032] 在本发明中,种群初始化是根据模拟电路的测试依赖矩阵随机生成Q个故障诊断树,Q的大小根据需要确定。故障诊断树的生成方法可以根据需要来选择。根据图1可知,在故障诊断树中,每个故障集都能被对应的测点分割为子故障集。为了防止做无用功,减少测试代价,在生成故障诊断树应当注意两点:
[0033] ●在分割某故障集的时所选测点必须不能与前面已被选过测点的重复;
[0034] ●如果某个测点被选取后没有成功将故障集分割成两部分,那么舍弃这个测点,重新选取,即便是没有与前面测点重复的新测点。
[0035] 基于以上两个原则,本实施例中提出了一种故障诊断树生成方法。图4是本实施例中所采用的故障诊断树生成方法。如图4所示,本实施例中所采用的故障诊断树生成方法包括以下步骤:
[0036] S401:初始化参数:
[0037] 令根结点p0为故障集,即p0=S,令层数初始值k=0。
[0038] S402:统计第k层故障集结点数量Dk。
[0039] S403:判断是否Dk=0,如果不是,进入步骤S404,否则故障诊断树生成结束。
[0040] S404:令故障集结点序号d=1。
[0041] S405:选择测点:
[0042] 首先确定当前测点结点的可用测点集φ=T-T′,T′表示当前测点结点上层结点的测点集合,也就是说,当前测点不能与其上层结点中任何一个测点重复。从可用测点集φ中任意选择一个可以分割故障集Skd的测点t,Skd即表示第k层第d个故障集结点所对应的故障集,令测点结点tkd=t,根据测点t的分割结果确定故障集Skd的子故障集Skd-left和Skdright,如果不存在可以分割故障集Skd的测点,则不做任何操作。
[0043] S406:判断是否d<Dk,如果是,进入步骤S407,否则进入步骤S408。
[0044] S407:令d=d+1,返回步骤S405。
[0045] S408:令k=k+1,返回步骤S402。
[0046] 根据本实施例中提出的故障诊断树生成方法可能存在两个或几个故障构成的模糊组最终无法被分割的情况,这种情况可能通过后续操作来进行修正,也有可能由于测点集T中测点不够完备,最终仍然可能存在模糊组,因此应当尽可能多地将可使用的测点都加入测点集T。
[0047] S302:令迭代次数w=1。
[0048] S303:计算个体的适应度:
[0049] 计算本次迭代中Q个故障诊断树的适应度。在遗传规划过程中,一般认定个体适应度越大的适应能力越强,在新种群生成过程中越可能被保留。由于本发明的目标是得到测试代价最小的故障诊断树,因此采用故障诊断树所对应的测试代价的倒数。很显然,个体测试代价越小,即适应度越大,迭代过程中越可能被保留。
[0050] S304:选择父个体:
[0051] 根据步骤S303计算的各个故障诊断树的适应度,选择得到父个体集合。父个体集合中的个体数量仍然为Q,这就表明,如果某些故障诊断树不被选择,那么就有另外的故障诊断树被选择次数超过一次。父个体集合的选择方法通常采用轮盘赌方法,也可以采用遗传算法中的其他父个体选择方法。
[0052] S305:个体交叉:
[0053] 对步骤S304选择的父个体集合中的两两个体进行交叉操作。传统的遗传规划中的交叉操作,一般是交换两个个体中任意两个结点以及结点下各自所带的子树。但本发明所针对的故障诊断树较之于一般的二叉树有更多的条件限制,主要原因在于这种树的每一个子树都是由上级树中的故障集内容和所选测点所决定的,整棵树从上到下联系十分紧密,需要对交叉操作进行一些特殊的限制。
[0054] 对于故障诊断树,交叉操作中可能的交叉对象有两个:测点和故障集,其具体情况为:
[0055] ●测点交叉:交叉需要交换结点和结点下的子树,而故障诊断树上下层内容联系又相当密切,所以如果选择交换测点,测点下所带过来的子树必然与被交换的树的上层故障集节点内容不相匹配,前后测点也可能会重复,导致原有结构完全被打乱,因此不能将测点选为交叉对象。
[0056] ●故障集交叉:由于故障诊断树的特殊性,将故障集作为交叉对象也需要遵守一些约束:必须交换两个个体中故障集内容相同的结点和其以下子树。只有这样,才能保证所生成的新个体满足原有的条件限制,既能隔离出故障又可以保证前后测点不会重复。
[0057] 图5是本发明中个体交叉的示例图。如图5所示,两个故障诊断树都是基于表1所提供的依赖矩阵得到的,两个故障诊断树都能成功隔离出所有故障。可以看到,这两个故障诊断树中都有一个内容为s2,s5的故障集,交叉操作时应该将这两个故障集所在的结点以及它们各自的子树一并交换过来。
[0058] 根据以上分析可知,在这种交叉方式下,存在的交叉点可能并不会很多,因此选择交叉点的方式也需要改进。首先将父个体集合中的个体随机分为Q/2组,然后以组为单位,比较每组中的两个个体是否存在故障集相同的结点,如果某组中的两个个体不存在故障集相同的结点,则该组不进行交叉操作,如果某组中的两个个体存在故障集相同的结点,为了防止交叉操作没有意义,先排除大小等于M-1或等于1的相同故障集,M表示故障集S中故障数量(本实施例中M=m+1),再在在剩余的相同故障集中任意选择一个故障集,交换该故障集结点及其子树。为了提高交叉的意义与保证种群的多样性,每组个体最多只交换一次。
[0059] S306:个体变异:
[0060] 对交叉后得到的个体进行变异操作。故障诊断树的变异过程也和传统遗传规划有着明显的差别。同样这里可能的变异对象也有两个:测点和故障集内容,变异对象很明显不能选择为故障集内容。因为除了第一层外,任何子树的故障集内容是由该树的上级所唯一确定,一旦变更,必然与上级不相匹配,从而打乱整个个体,导致整个算法失败。因此,本发明中选择变异测点结点。
[0061] 测点变异,是将某个结点中的测点变异为与当前以及前面已使用过的测点都不相重复的测点。但在故障诊断树中,测点的变异必然导致其子集内容发生变化,而子集又影响着更下层的子树。也就是说某个测点一旦发生变异,该测点下的子树需要重新做调整。调整方式和前面个体随机生成时相同,用当前可选测点将当前故障集重新划分开来,直到所有故障被隔离出或者测点被使用完。
[0062] 图6是本发明中个体变异的示例图。如图6所示,虚线圆所圈方框的原本测点为t2,现将其变异为了t1,所对应的左右子结点故障集内容也发生变化,再对两个子集分别重新选择测点将它们的故障集全部隔离开(左结点选择t3,右结点选择了t2)。
[0063] 因此可以得到本发明中故障诊断树变异的方法为:任意选择一个测点结点,对应测点记为t,从该测点结点的可用测点集中选择另外一个测点t′,t′≠t,并且该测点t′能够分割当前测点所对应的故障集,将当前测点t更换为测点t′,重新生成该测点结点下的子树。
[0064] S307:判断是否w=W,W表示最大迭代次数,如果不是,进入步骤S308,否则进入步骤S309。
[0065] S308:令w=w+1,返回步骤S303。
[0066] S309:挑选最优个体:
[0067] 从当前的Q个故障诊断树中选择测试代价最小的故障诊断树,作为最终故障诊断树。
[0068] 实施例
[0069] 为了更好地说明本发明的技术效果,采用一个具体实施例进行仿真验证。本次验证在windows7系统下采用VC++6.0编译器进行,所选择的第一个例子为表1所示的依赖矩阵。图7是采用本发明根据表1所示依赖矩阵所搜索得到的最优故障诊断树。如图7所示,根据该最优故障诊断树得到所需的测点按照顺序为t1,t3,t0,t3,t4,最小测试代价为2.18。根据公式(1),验算其测试代价为:
[0070]
[0071] 本次验证所选择的第二个例子为表2所示的依赖矩阵,
[0072]故障源 t0 t1 t2 t3 t4 t5 t6 t7 故障概率
s0 0 0 0 0 0 0 0 0 0.1
s1 1 0 1 1 1 1 1 1 0.01
s2 0 1 0 1 1 1 1 1 0.001
s3 0 0 0 0 0 0 0 1 0.01
s4 0 0 0 1 1 1 1 1 0.03
s5 0 0 1 1 1 1 1 1 0.0105
s6 0 0 0 0 0 1 0 1 0.0105
s7 0 0 0 0 1 0 1 1 0.001
s8 0 0 0 0 0 0 1 1 0.021
测试成本 1.0 1.0 2.2 1.3 1.0 1.5 0.9 2.0 -
[0073] 表2
[0074] 如表2所示,故障源发生的概率和等于0.184,不为1,首先需要先进行归一化操作。图8是采用本发明根据表2所示依赖矩阵所搜索得到的最优故障诊断树。如图8所示,根据该最优故障诊断树得到所需的测点按照顺序为t7,t5,t2,t0,t3,t1,t6,t4,故障隔离所需的较小代价约为4.43。根据公式(1),验算其测试代价为:
[0075]
[0076] 根据以上两个具体实例可以看出,本发明基于遗传规划,对模拟电路故障测试进行最优序贯搜索,可以较为准确地得到测试代价较小,并且能够隔离故障的测点及测点的测试顺序,为模块电路的故障测试提供指导。
[0077] 尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。