一种复杂系统的序贯测试序列生成方法

    专利查询2023-07-21  71



    1.本发明属于故障诊断技术领域,更为具体地讲,涉及一种复杂系统的序贯 测试序列生成方法。


    背景技术:

    2.为了及时准确的确定装备运行状态,快速的进行故障隔离,装备在设计与 研发阶段就需考虑其测试性及测试策略问题。外部序贯测试作为测试性设计与 优化技术的重要组成部分,其首要内容是构建最优的测试序列。多信号流图具 有建模方便、便于描述电路元件之间关系等优点,因而吸引了大量科研人员的 关注,成为序贯测试研究中最常用的相关性模型。然而随着系统和设备性能的 提高和复杂性的增加,模型复杂度也相应的提升,快速的生成代价低、隔离度 高的最优测试序列变的愈发困难。
    3.目前,基于多信号流图的测试序列生成算法主要有三种:贪婪类算法每次 根据启发函数的大小,选择节点的拓展方式,该方法生成时间极短,但测试代 价较高;排列组合类算法包括ao*算法、由下而上算法等,依据故障和测点的 排列组合分析决策树的结构,该方法测试代价极低,但生成时间较长;遗传类 算法在随机产生初始解集后迭代生成最优解,该方法生成时间和测试代价适中, 但迭代的个体数和次数需要反复调试。在针对大规模测试问题时,这些算法都 无法兼顾低代价与高速度,在实际应用过程中具有局限性。


    技术实现要素:

    4.本发明的目的在于克服现有技术的不足,提供一种复杂系统的序贯测试序 列生成方法,通过对可用测点分类以及故障集聚类,减少原算法在决策树生成 过程的复杂度,避免陷入局部最优解,从而能够快速生成低代价的最优测试序 列,进而能够快速实现故障隔离。
    5.为实现上述发明目的,本发明一种复杂系统的序贯测试序列生成方法,其 特征在于,包括以下步骤:
    6.(1)、构建故障测试模型
    [0007][0008]
    其中,s表示待测系统出现的各种故障集,s={s1,s2,

    ,si,

    ,sm},si表示第i种 故障;t表示待测系统的所有可用测点集,t={t1,t2,

    ,tj,

    ,tn},tj表示第j个可 用测点;p表示待测系统发生某个故障的先验概率集,p={p1,p2,

    ,pi,

    ,pm},pi表示出现故障si的先验概率;c表示与t对应的测试代价集,c={c1,c2,

    ,cj,

    ,cn},cj表示测试tj的代价;d为故障依赖矩阵,具体表示为:
    [0009][0010]
    其中,d
    ij
    表示故障si在可用测点tj下的测试信息,d
    ij
    =0或d
    ij
    =1,当d
    ij
    =0时, 表示待测系统中发生故障si时不能通过可用测点tj检测出来;当d
    ij
    =1时,表示待 测系统中发生故障si时能够通过可用测点tj检测出来;
    [0011]
    (2)、生成样本序列;
    [0012][0013]
    其中,样本序列h的长度为n,n=ρ
    ·
    100
    ·
    100,ρ为生成系数;表示规模 大小为a
    ×
    b的第k个样本,1≤a≤100,1≤b≤100,1≤b≤100,表示第k个样本中出现的各种故障集,表示第k个样本中所有可用测点集, 表示第k个样本的故障依赖矩阵,表示生成第k个样本时发生某个故障的 先验概率集,表示生成第k个样本对应的测试代价集;
    [0014]
    (3)、根据样本生成预测函数pre;
    [0015]
    (3.1)、设置节点分类集合簇{lev1,lev2,

    ,levr,

    ,lev
    rmax
    },levr表示第r类的 节点集合,rmax为最大分类数;
    [0016]
    设置测点分类集合簇{leve1,leve2,

    ,lever,

    ,leve
    rmax
    },lever表示第r类的测点 集合,初始化都为空集;
    [0017]
    设置训练数组train,并初始化为空集。
    [0018]
    (3.2)、取用规模大小为a1×
    b1的第k个样本对应的故障依赖矩阵记为初始化a1=10,b1=10,k=1;
    [0019]
    (3.3)、使用基于霍夫曼编码的启发式搜索算法生成的决策树获得使用的测点集t
    use
    ={t1,t1,

    ,tf,

    ,t
    fmax
    },tf表示可用的第f个测点, fmax表示可使用的测点个数;获得的非叶子节点集合 node={node1,node2,

    ,nodef,

    ,node
    fmax
    },nodef表示连接测点tf的节点;
    [0020]
    (3.4)、根据计算阈值d
    ratio
    ,其中,r
    l
    表示的l列中 max{0的个数,1的个数}/a1;
    [0021]
    (3.5)、计算节点的分类界限数组l={l1,l2,

    ,lr,

    ,l
    rmax
    },lr是常数,初始 化都为0,r=1,2,

    ,rmax,rmax为节点的分类组数;
    [0022]
    (3.5.1)、求解方程a1·
    (d
    ratio
    )
    x
    ·
    (1-d
    ratio
    )y≥2,获得x和y的非负整数解对;按 照的大小将这些解对从小到大排序,记为:
    [0023]
    {x1,y1},{x2,y2},

    ,{xq,yq},

    {x
    qmax
    ,y
    qmax
    };
    [0024]
    其中,{xq,yq}表示的大小排在第q位,{x
    qmax
    ,y
    qmax
    }表示 的大小是最大的;
    [0025]
    (3.5.2)、生成累加数组su,数组的大小为qmax+2;
    [0026][0027][0028][0029]
    su(q
    max
    +1)=su(q
    max
    );
    [0030]
    其中,c表示组合运算符;
    [0031]
    (3.5.3)、初始化r=1;
    [0032]
    (3.5.4)、找到满足的q的值,然后代入如下 公式
    [0033]
    (3.5.5)、r=r+1,重复(3.5.4)直至r=rmax;
    [0034]
    (3.6)、nodef分类;
    [0035]
    分类方式为:nodef∈levr的充要条件是|nodef|∈(lr,l
    r+1
    ],|nodef|表示nodef包 含的故障的个数;
    [0036]
    (3.7)、对的每个测点分类并获得分类值;
    [0037]
    每个测点进行分类的方式为:若某测点连接的节点属于levr,那么该测点属 于lever,对应的分类值为r;特别的,若某测点不属于t
    use
    ,则该测点属于leve
    rmax+1
    , 对应的分类值为rmax+1;若属于两个不同类别和的节点,都连接了某 测点,则该测点属于对应的分类值为min(r1,r2),r1,r2∈[1,rmax]且r1≠r2;
    [0038]
    (3.8)、将中每个测点的特征值和分类值计入训练数组train,其中, 每个测点的的特征值包括:{a1、b1、d
    ratio
    、测点代价、全部测点的代价的平均 值和方差、测点在中的对应列、分类值小于r的所有测点的代价平均 值和方差};
    [0039]
    (3.9)、令k=k+1,重复步骤(3.3)-(3.8)直至k=ρ,再令b1=b1+1,进入 步骤(3.10);
    [0040]
    (3.10)、重复步骤(3.3)-(3.9)直至b1=40,再令a1=a1+1,b1=10,然后 进入步骤(3.11);
    [0041]
    (3.11)、重复步骤(3.3)-(3.10)直至a1=40,b1=40;
    [0042]
    (3.12)、根据训练数组train,使用支持向量机svm获得预测函数pre 和分类精度表其中,其中,表示测点应该属于lever但被误分至的概率,r<r3≤rmax;
    [0043]
    (4)、根据样本h使用蒙特卡洛模拟生成形态分布函数fig;
    [0044]
    (4.1)、初始化a=1,b=1,k=1,建立数据集f,初始化空集;
    [0045]
    (4.2)、使用贪婪算法生成的决策树获得的非叶子节点集 合node={node1,node2,

    ,nodef,

    ,node
    fmax
    },f表示非叶子节点的编号,fmax表示 非叶子节点的数量;
    [0046]
    (4.3)、遍历node中的每个节点,初始化f=1;计算样本的d
    ratio

    [0047]
    (4.4)、对nodef统计形态参数fi:fi=包含nodef和在决策树中位于nodef以 下的节点的所有非叶子节点的模的和;
    [0048]
    (4.5)、将|nodef|、d
    ratio
    及fi计入数据集f;
    [0049]
    (4.6)、令f=f+1,重复步骤(4.4)-(4.5),直至f=fmax;
    [0050]
    (4.7)、重复步骤(4.2)-(4.6)遍历所有的直至a=100、b=100、k=ρ;
    [0051]
    (4.8)、根据f获得形态分布函数fig;
    [0052][0053]
    其中,fio表示fi所有取值中第o个值,表示fi=fio的概率;fi1表示fi 所有取值的最小值;fi
    omax
    表示fi所有取值的最大值;
    [0054]
    (5)、序贯测试序列的生成;
    [0055]
    (5.1)、设定最大允许误差ψ,初始迭代次数g0;
    [0056]
    (5.2)、根据预测函数pre对可用测点集t中的每一个可用测点进行分类;
    [0057]
    (5.3)、根据遗传聚类算法eca*对待测系统出现的各种故障集s进行g0次 迭代聚类,获得故障类群集合s
    *
    ={s
    1*
    ,s
    2*
    ,

    ,s
    i*
    ,

    },其中,s
    i*
    表示被聚合的第i个 故障类群;
    [0058]
    (5.4)、设置初始节点node1={s
    *
    ,t};
    [0059]
    (5.5)、利用启发式搜索算法使用第1个故障类群s
    1*
    对初始节点node1进行拓 展,生成后续节点node2,接着使用第2个故障类群s
    2*
    对节点node2进行拓展,生 成后续节点node3,然后以此类推,直至生成节点node
    m-1
    ,从而生成决策树tree;
    [0060]
    (5.7)、复查出错的节点,并根据分类精度表和fig计算估计误差;
    [0061]
    (5.7.1)、获得tree使用的非叶子节点集合 node={node1,node2,

    ,nodef,

    ,node
    fmax
    };
    [0062]
    (5.7.2)、计算下层平均代价数组{a1,a2,

    ,ar,

    ,a
    rmax
    },其中,ar表示属于 {leve
    r+1
    ,leve
    r+2
    ,

    ,leve
    rmax+1
    }层的所有测点的平均代价;
    [0063][0064]
    其中,t
    l
    表示属于levek的第l个测点,表示测点t
    l
    的代价;
    [0065]
    (5.7.3)、遍历node中的每个节点,初始化f=1;设nodef位于levr,连接的 测点是tj,形态参数为fif,替换连接测点为那么替换后nodef的分类误差cef为:
    [0066][0067]
    其中,表示测点的测试代价,δp表示若将tj换成引起nodef拓展子节 点发生的概率,
    [0068]
    (5.7.4)、令f=f+1,重复(5.7.3)直至f=fmax,然后计算所有节点的误 差之和,记为ce;
    [0069][0070]
    其中,p
    sumf
    表示nodef包含的所有故障的概率总和;
    [0071]
    (5.7.5)、根据故障集s,利用生成决策树tree的测点来生成一个新的决策 树tree1,然后以tree1为基准,对比tree和tree1的全部节点,若tree的某个节 点包含的故障与tree1不一样,则认为该节点错误,并将出错的节点计入聚类出 错的节点集合nodex={nodex1,nodex2,

    ,nodexf,

    ,nodex
    fmax
    },其中,nodexf表示第f 个出错的节点,f
    max
    表示出错节点的总个数;
    [0072]
    (5.7.6)、遍历nodex中的每个节点,初始化f=1;设nodexf位于levr,连接 的测点是tj,形态参数为fif,计算nodexf的聚类误差mef;
    [0073]
    mef=me1f+me2f[0074][0075][0076]
    其中,me1f表示将错误的聚类正确引导的误差,me2f表示引导后的替换误 差;pr=1/|lever|,pr表示替换为同类测点的概率;
    [0077]
    (5.7.7)、令f=f+1,重复(5.7.6)直至f=f
    max
    ,计算所有出错节点的误 差之和为me;
    [0078][0079]
    其中,p
    sumf
    表示nodexf包含所有故障的概率总和;
    [0080]
    (5.7.8)、计算估计误差ge:ge=me+ce;
    [0081]
    (5.8)、若估计误差ge小于最大允许误差ψ,则进入步骤(5.9),否则,令 g0=2g0,再返回步骤(5.3);
    [0082]
    (5.9)、遍历tree1中的每一个叶子节点,将被错误聚类的故障转移到正确 位置,若某叶子节点包含的故障个数大于等于2,则使用启发式搜索算法对叶子 节点进行拓展,直至包含的故障全部隔离;
    [0083]
    (5.10)、将决策树tree1作为生成的序贯测试序列。
    [0084]
    本发明的发明目的是这样实现的:
    [0085]
    本发明一种复杂系统的序贯测试序列生成方法,先构建待测系统的故障测 试模型,然后基于故障测试模型,通过样本模拟获得分类函数及形态函数,从 而对可用测点类别进行划分,对测试关系相近的模块进行聚类;在使用任意一 种算法生成决策树的过程中,依据节点的规模选择对应类别的测点,在决策树 生成后,对其进行误差分析,根据误差的相对大小评判聚类的可靠性,进而对 决策树修正,适用于绝大多数决策树生成算法。
    附图说明
    [0086]
    图1是本发明一种复杂系统的序贯测试序列生成方法流程图;
    [0087]
    图2是对应表1的决策树实例;
    [0088]
    图3是原算法与提升后算法对照图;
    [0089]
    图4是对应表1的提升后生成的决策树。
    [0090][0091]
    具体实施方式
    [0092]
    下面结合附图对本发明的具体实施方式进行描述,以便本领域的技术人员更 好地理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设 计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。
    [0093]
    实施例
    [0094]
    图1是本发明一种复杂系统的序贯测试序列生成方法流程图。
    [0095]
    在本实施例中,如图1所示,本发明一种复杂系统的序贯测试序列生成方 法,包括以下步骤:
    [0096]
    (1)、构建故障测试模型
    [0097][0098]
    其中,s表示待测系统出现的各种故障集,s={s1,s2,

    ,si,

    ,sm},si表示第i种 故障;t表示待测系统的所有可用测点集,t={t1,t2,

    ,tj,

    ,tn},tj表示第j个可 用测点;p表示待测系统发生某个故障的先验概率集,p={p1,p2,

    ,pi,

    ,pm},pi表示出现故障si的先验概率;c表示与t对应的测试代价集,c={c1,c2,

    ,cj,

    ,cn}, cj表示测试tj的代价;d为故障依赖矩阵,具体表示为:
    [0099][0100]
    其中,d
    ij
    表示故障si在可用测点tj下的测试信息,d
    ij
    =0或d
    ij
    =1,当d
    ij
    =0时, 表示待测系统中发生故障si时不能通过可用测点tj检测出来;当d
    ij
    =1时,表示待 测系统中发生故障si时能够通过可用测点tj检测出来;
    [0101]
    (2)、生成样本序列;
    [0102][0103]
    其中,样本序列h的长度为n,n=ρ
    ·
    100
    ·
    100,ρ为生成系数;表示规模 大小为a
    ×
    b的第k个样本,1≤a≤100,1≤b≤100,1≤b≤100,表示第k个样本中出现的各种故障集,表示第k个样本中所有可用测点集, 表示第k个样本的故障依赖矩阵,表示生成第k个样本时发生某个故障的 先验概率集,表示生成第k个样本对应的测试代价集;
    [0104]
    (3)、根据样本生成预测函数pre;
    [0105]
    (3.1)、设置节点分类集合簇{lev1,lev2,

    ,levr,

    ,lev
    rmax
    },levr表示第r类的 节点集合,rmax为最大分类数;
    [0106]
    设置测点分类集合簇{leve1,leve2,

    ,lever,

    ,leve
    rmax
    },lever表示第r类的测点 集合,初始化都为空集;
    [0107]
    设置训练数组train,并初始化为空集。
    [0108]
    (3.2)、取用规模大小为a1×
    b1的第k个样本对应的故障依赖矩阵记为初始化a1=10,b1=10,k=1;
    [0109]
    (3.3)、使用基于霍夫曼编码的启发式搜索算法生成的决策树获得使用的测点集t
    use
    ={t1,t1,

    ,tf,

    ,t
    fmax
    },tf表示可用的第f个测点, fmax表示可使用的测点个数;获得的非叶子节点集合 node={node1,node2,

    ,nodef,

    ,node
    fmax
    },nodef表示连接测点tf的节点;
    [0110]
    (3.4)、根据计算阈值d
    ratio
    ,其中,r
    l
    表示的l列中 max{0的个数,1的个数}/a1;
    [0111]
    (3.5)、计算节点的分类界限数组l={l1,l2,

    ,lr,

    ,l
    rmax
    },lr是常数,初始 化都为0,r=1,2,

    ,rmax,rmax为节点的分类组数;
    [0112]
    (3.5.1)、求解方程a1·
    (d
    ratio
    )
    x
    ·
    (1-d
    ratio
    )y≥2,获得x和y的非负整数解对;按 照的大小将这些解对从小到大排序,记为:
    [0113]
    {x1,y1},{x2,y2},

    ,{xq,yq},

    {x
    qmax
    ,y
    qmax
    };
    [0114]
    其中,{xq,yq}表示的大小排在第q位,{x
    qmax
    ,y
    qmax
    }表示 的大小是最大的;
    [0115]
    (3.5.2)、生成累加数组su,数组的大小为qmax+2;
    [0116][0117][0118]
    [0119]
    su(q
    max
    +1)=su(q
    max
    );
    [0120]
    其中,c表示组合运算符;
    [0121]
    (3.5.3)、初始化r=1;
    [0122]
    (3.5.4)、找到满足的q的值,然后代入如下 公式
    [0123]
    (3.5.5)、r=r+1,重复(3.5.4)直至r=rmax;
    [0124]
    (3.6)、nodef分类;
    [0125]
    分类方式为:nodef∈levr的充要条件是|nodef|∈(lr,l
    r+1
    ],|nodef|表示nodef包 含的故障的个数;
    [0126]
    (3.7)、对的每个测点分类并获得分类值;
    [0127]
    每个测点进行分类的方式为:若某测点连接的节点属于levr,那么该测点属 于lever,对应的分类值为r;特别的,若某测点不属于t
    use
    ,则该测点属于leve
    rmax+1
    , 对应的分类值为rmax+1;若属于两个不同类别和的节点,都连接了某 测点,则该测点属于对应的分类值为min(r1,r2),r1,r2∈[1,rmax]且r1≠r2;
    [0128]
    (3.8)、将中每个测点的特征值和分类值计入训练数组train,其中, 每个测点的的特征值包括:{a1、b1、d
    ratio
    、测点代价、全部测点的代价的平均 值和方差、测点在中的对应列、分类值小于r的所有测点的代价平均 值和方差};
    [0129]
    (3.9)、令k=k+1,重复步骤(3.3)-(3.8)直至k=ρ,再令b1=b1+1,进入 步骤(3.10);
    [0130]
    (3.10)、重复步骤(3.3)-(3.9)直至b1=40,再令a1=a1+1,b1=10,然后 进入步骤(3.11);
    [0131]
    (3.11)、重复步骤(3.3)-(3.10)直至a1=40,b1=40;
    [0132]
    (3.12)、根据训练数组train,使用支持向量机svm获得预测函数pre 和分类精度表其中,其中,表示测点应该属于lever但被误分至的概率,r<r3≤rmax;
    [0133]
    (4)、根据样本h使用蒙特卡洛模拟生成形态分布函数fig;
    [0134]
    (4.1)、初始化a=1,b=1,k=1,建立数据集f,初始化空集;
    [0135]
    (4.2)、使用贪婪算法生成的决策树获得的非叶子节点集 合node={node1,node2,

    ,nodef,

    ,node
    fmax
    },f表示非叶子节点的编号,fmax表示 非叶子节点的数量;
    [0136]
    (4.3)、遍历node中的每个节点,初始化f=1;计算样本的d
    ratio

    [0137]
    (4.4)、对nodef统计形态参数fi:fi=包含nodef和在决策树中位于nodef以 下的节点的所有非叶子节点的模的和;
    [0138]
    在本实施例中,以表1的故障依赖矩阵为例,产生的一颗决策树如图2所 示,决策
    树共有三个非叶子节点,即node={node1,node2,node3}。对于node3,它包 含两个模块且下面没有非叶子节点,所以node3的形态参数fi=|node3|=2。对于非 叶子节点node2,它的下面有一个非叶子节点node3,所以node2的形态参数 fi=|node2|+|node3|=3+2=5。同理node1的fi=9。
    [0139]
    表1故障依赖矩阵示例;
    [0140] t1t2t3t4t5s110111s200000s311001s401011
    [0141]
    表1
    [0142]
    (4.5)、将|nodef|、d
    ratio
    及fi计入数据集f;
    [0143]
    (4.6)、令f=f+1,重复步骤(4.4)-(4.5),直至f=fmax;
    [0144]
    (4.7)、重复步骤(4.2)-(4.6)遍历所有的直至a=100、b=100、k=ρ;
    [0145]
    (4.8)、根据f获得形态分布函数fig;
    [0146][0147]
    其中,fio表示fi所有取值中第o个值,表示fi=fio的概率;fi1表示fi 所有取值的最小值;fi
    omax
    表示fi所有取值的最大值;
    [0148]
    (5)、序贯测试序列的生成;
    [0149]
    (5.1)、设定最大允许误差ψ,初始迭代次数g0;
    [0150]
    (5.2)、根据预测函数pre对可用测点集t中的每一个可用测点进行分类;
    [0151]
    (5.3)、根据遗传聚类算法eca*对待测系统出现的各种故障集s进行g0次 迭代聚类,获得故障类群集合s
    *
    ={s
    1*
    ,s
    2*
    ,

    ,s
    i*
    ,

    },其中,s
    i*
    表示被聚合的第i个 故障类群;
    [0152]
    在本实施例中,根据svm对和1对测点分类,得到2表,根据遗传聚类算 法eca*,由于s3和s4在测点t2,t3和t5处的重合度高(即d
    32
    =d
    42
    ,d
    33
    =d
    43
    , d
    35
    =d
    45
    ),且t2,t3,t5所属类别较高,所以对s3和s4聚类为s
    1*
    ,聚类后s
    1*
    的概 率等于s3和s4的概率之和。
    [0153]
    表2是测点分类表;
    [0154]
    tt1t2t3t4t5类别leve3leve2leve1leve4leve2[0155]
    表2
    [0156]
    在本实施例中,对测点分类和模块聚类的方法不局限于svm与eca*,也 可以使用其余的算法。
    [0157]
    (5.4)、设置初始节点node1={s
    *
    ,t};
    [0158]
    (5.5)、利用启发式搜索算法使用第1个故障类群s
    1*
    对初始节点node1进行拓 展,生成后续节点node2,接着使用第2个故障类群s
    2*
    对节点node2进行拓展,生 成后续节点node3,然后以此类推,直至生成节点node
    m-1
    ,从而生成决策树tree;
    [0159]
    在本实施例中,对节点的生成算法不局限于启发式搜索算法,也可以使用 其余的算法。
    [0160]
    在本实施例中,选择某种算法进行决策树生成,根据表1和表2,对于节点 node1可以使用全部5个测点进行拓展,但本发明的方法下,由于只有t3∈leve1, 所以仅可以使用t3进行拓展。同理对node2的拓展仅可以选用leve1和leve2的测点, t3已经使用过,所以仅可以使用t2和t5,如图3所示
    [0161]
    (5.7)、复查出错的节点,并根据分类精度表和fig计算估计误差;
    [0162]
    (5.7.1)、获得tree使用的非叶子节点集合node={node1,node2,

    ,nodef,

    ,node
    fmax
    };
    [0163]
    (5.7.2)、计算下层平均代价数组{a1,a2,

    ,ar,

    ,a
    rmax
    },其中,ar表示属于 {leve
    r+1
    ,leve
    r+2
    ,

    ,leve
    rmax+1
    }层的所有测点的平均代价;
    [0164][0165]
    其中,t
    l
    表示属于levek的第l个测点,表示测点t
    l
    的代价;
    [0166]
    (5.7.3)、遍历node中的每个节点,初始化f=1;设nodef位于levr,连接的 测点是tj,形态参数为fif,替换连接测点为那么替换后nodef的分类误差cef为:
    [0167][0168]
    其中,表示测点的测试代价,δp表示若将tj换成引起nodef拓展子节 点发生的概率,
    [0169]
    (5.7.4)、令f=f+1,重复(5.7.3)直至f=fmax,然后计算所有节点的误 差之和,记为ce;
    [0170][0171]
    其中,p
    sumf
    表示nodef包含的所有故障的概率总和;
    [0172]
    (5.7.5)、根据故障集s,利用生成决策树tree的测点来生成一个新的决策 树tree1,然后以tree1为基准,对比tree和tree1的全部节点,若tree的某个节 点包含的故障与tree1不一样,则认为该节点错误,并将出错的节点计入聚类出 错的节点集合nodex={nodex1,nodex2,

    ,nodexf,

    ,nodex
    fmax
    },其中,nodexf表示第f 个出错的节点,f
    max
    表示出错节点的总个数;
    [0173]
    (5.7.6)、遍历nodex中的每个节点,初始化f=1;设nodexf位于levr,连接 的测点是tj,形态参数为fif,计算nodexf的聚类误差mef;
    [0174]
    mef=me1f+me2f[0175][0176][0177]
    其中,me1f表示将错误的聚类正确引导的误差,me2f表示引导后的替换误 差;pr=1/|lever|,pr表示替换为同类测点的概率;
    [0178]
    (5.7.7)、令f=f+1,重复(5.7.6)直至f=f
    max
    ,计算所有出错节点的误 差之和为me;
    [0179][0180]
    其中,p
    sumf
    表示nodexf包含所有故障的概率总和;
    [0181]
    (5.7.8)、计算估计误差ge:ge=me+ce;
    [0182]
    (5.8)、若估计误差ge小于最大允许误差ψ,则进入步骤(5.9),否则,令 g0=2g0,再返回步骤(5.3);
    [0183]
    (5.9)、遍历tree1中的每一个叶子节点,将被错误聚类的故障转移到正确 位置,若某叶子节点包含的故障个数大于等于2,则使用启发式搜索算法对叶子 节点进行拓展,直至包含的故障全部隔离;
    [0184]
    在本实施例中,如图4,若将s2和s3聚类为s
    2*
    生成tree1,将s
    2*
    解聚类开为s2和s3,同时将被错误聚类的s3转移到右子树,并为node4继续生成决策树,直至包 含的故障全部隔离。
    [0185]
    (5.10)、将决策树tree1作为生成的序贯测试序列。
    [0186]
    为说明本发明的技术效果,采用某超外差接收机为例对本发明进行验证, 其对应的故障依赖矩阵如表3所示,含有22个测点与36种状态,所有测点的 测试费用都为1。本实例选取多种算法进行类比,各个算法引用文献如表4所示。 其中算法a1、a2、a3分别指算法a的参数设置为迭代次数和粒子个数为50与 30、100与60、200与120。算法b1、b2、b3分别指算法b的参数设置为宽度 和深度为2与2、3与3、4与4。算法d1、d2、d3分别指算法d的参数设置为 迭代次数和种群个数为100与8、200与16、300与24。算法e1、e2、e3分别 指算法e的参数设置为迭代次数和粒子个数为50与30、100与60、200与120。 对照结果如表5所示。
    [0187]
    表3是超外差接收机故障依赖矩阵;
    [0188][0189]
    表3
    [0190]
    表4是引用文献对着表;
    [0191][0192]
    表4
    [0193]
    表5是各算法时间对照表;
    [0194][0195]
    表5
    [0196]
    可以对比得出,在使用本发明的提升方法后,各算法的总体性能均有提升。 对于贪婪类算法(算法c),生成决策树的时间小幅缩短,测试代价有所降低; 对于遗传类算法(算法a、d、e),生成决策树时间有所缩短,测试代价大幅降 低;对于排列组合类算法(算法
    b、f、g),生成决策树时间大幅缩短,测试代 价有极小的提高。
    [0197]
    尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的 技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本 技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的 本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明 创造均在保护之列。

    技术特征:
    1.一种复杂系统的序贯测试序列生成方法,其特征在于,包括以下步骤:(1)、构建故障测试模型构建故障测试模型其中,s表示待测系统出现的各种故障集,s={s1,s2,

    ,s
    i
    ,

    ,s
    m
    },s
    i
    表示第i种故障;t表示待测系统的所有可用测点集,t={t1,t2,

    ,t
    j
    ,

    ,t
    n
    },t
    j
    表示第j个可用测点;p表示待测系统发生某个故障的先验概率集,p={p1,p2,

    ,p
    i
    ,

    ,p
    m
    },p
    i
    表示出现故障s
    i
    的先验概率;c表示与t对应的测试代价集,c={c1,c2,

    ,c
    j
    ,

    ,c
    n
    },c
    j
    表示测试t
    j
    的代价;d为故障依赖矩阵,具体表示为:其中,d
    ij
    表示故障s
    i
    在可用测点t
    j
    下的测试信息,d
    ij
    =0或d
    ij
    =1,当d
    ij
    =0时,表示待测系统中发生故障s
    i
    时不能通过可用测点t
    j
    检测出来;当d
    ij
    =1时,表示待测系统中发生故障s
    i
    时能够通过可用测点t
    j
    检测出来;(2)、生成样本序列;其中,样本序列h的长度为n,n=ρ
    ·
    100
    ·
    100,ρ为生成系数;表示规模大小为a
    ×
    b的第k个样本,1≤a≤100,1≤b≤100,1≤b≤100,表示第k个样本中出现的各种故障集,表示第k个样本中所有可用测点集,表示第k个样本的故障依赖矩阵,表示生成第k个样本时发生某个故障的先验概率集,表示生成第k个样本对应的测试代价集;(3)、根据样本生成预测函数pre;(3.1)、设置节点分类集合簇{lev1,lev2,

    ,lev
    r
    ,

    ,lev
    rmax
    },lev
    r
    表示第r类的节点集合,rmax为最大分类数;设置测点分类集合簇{leve1,leve2,

    ,leve
    r
    ,

    ,leve
    rmax
    },leve
    r
    表示第r类的测点集合,初始化都为空集;设置训练数组train,并初始化为空集。(3.2)、取用规模大小为a1×
    b1的第k个样本对应的故障依赖矩阵记为初始化a1=10,b1=10,k=1;(3.3)、使用基于霍夫曼编码的启发式搜索算法生成的决策树获得使用的测点集t
    use
    ={t1,t1,

    ,t
    f
    ,

    ,t
    fmax
    },t
    f
    表示可用的第f个测点,fmax表示可使用的测点个数;获得的非叶子节点集合node={node1,node2,

    ,node
    f
    ,

    ,node
    fmax
    },node
    f
    表示连接测点t
    f
    的节点;
    (3.4)、根据计算阈值d
    ratio
    ,其中,r
    l
    表示的l列中max{0的个数,1的个数}/a1;(3.5)、计算节点的分类界限数组l={l1,l2,

    ,l
    r
    ,

    ,l
    rmax
    },l
    r
    是常数,初始化都为0,r=1,2,

    ,rmax,rmax为节点的分类组数;(3.5.1)、求解方程a1·
    (d
    ratio
    )
    x
    ·
    (1-d
    ratio
    )
    y
    ≥2,获得x和y的非负整数解对;按照的大小将这些解对从小到大排序,记为:{x1,y1},{x2,y2},

    ,{x
    q
    ,y
    q
    },

    {x
    qmax
    ,y
    qmax
    };其中,{x
    q
    ,y
    q
    }表示的大小排在第q位,{x
    qmax
    ,y
    qmax
    }表示的大小是最大的;(3.5.2)、生成累加数组su,数组的大小为qmax+2;su(0)=0;su(0)=0;su(0)=0;su(q
    max
    +1)=su(q
    max
    );其中,c表示组合运算符;(3.5.3)、初始化r=1;(3.5.4)、找到满足的q的值,然后代入如下公式(3.5.5)、r=r+1,重复(3.5.4)直至r=rmax;(3.6)、node
    f
    分类;分类方式为:node
    f
    ∈lev
    r
    的充要条件是|node
    f
    |∈(l
    r
    ,l
    r+1
    ],|node
    f
    |表示node
    f
    包含的故障的个数;(3.7)、对的每个测点分类并获得分类值;每个测点进行分类的方式为:若某测点连接的节点属于lev
    r
    ,那么该测点属于leve
    r
    ,对应的分类值为r;特别的,若某测点不属于t
    use
    ,则该测点属于leve
    rmax+1
    ,对应的分类值为rmax+1;若属于两个不同类别和的节点,都连接了某测点,则该测点属于对应的分类值为min(r1,r2),r1,r2∈[1,rmax]且r1≠r2;(3.8)、将中每个测点的特征值和分类值计入训练数组train,其中,每个测点的的特征值包括:{a1、b1、d
    ratio
    、测点代价、全部测点的代价的平均值和方差、测点在中的对应列、分类值小于r的所有测点的代价平均值和方差};(3.9)、令k=k+1,重复步骤(3.3)-(3.8)直至k=ρ,再令b1=b1+1,进入步骤(3.10);(3.10)、重复步骤(3.3)-(3.9)直至b1=40,再令a1=a1+1,b1=10,然后进入步骤
    (3.11);(3.11)、重复步骤(3.3)-(3.10)直至a1=40,b1=40;(3.12)、根据训练数组train,使用支持向量机svm获得预测函数pre和分类精度表其中,中,表示测点应该属于leve
    r
    但被误分至的概率,r<r3≤rmax;(4)、根据样本h使用蒙特卡洛模拟生成形态分布函数fig;(4.1)、初始化a=1,b=1,k=1,建立数据集f,初始化空集;(4.2)、使用贪婪算法生成的决策树获得的非叶子节点集合node={node1,node2,

    ,node
    f
    ,

    ,node
    fmax
    },f表示非叶子节点的编号,fmax表示非叶子节点的数量;(4.3)、遍历node中的每个节点,初始化f=1;计算样本的d
    ratio
    ;(4.4)、对node
    f
    统计形态参数fi:fi=包含node
    f
    和在决策树中位于node
    f
    以下的节点的所有非叶子节点的模的和;(4.5)、将|node
    f
    |、d
    ratio
    及fi计入数据集f;(4.6)、令f=f+1,重复步骤(4.4)-(4.5),直至f=fmax;(4.7)、重复步骤(4.2)-(4.6)遍历所有的直至a=100、b=100、k=ρ;(4.8)、根据f获得形态分布函数fig;其中,fi
    o
    表示fi所有取值中第o个值,表示fi=fi
    o
    的概率;fi1表示fi所有取值的最小值;fi
    omax
    表示fi所有取值的最大值;(5)、序贯测试序列的生成;(5.1)、设定最大允许误差ψ,初始迭代次数g0;(5.2)、根据预测函数pre对可用测点集t中的每一个可用测点进行分类;(5.3)、根据遗传聚类算法eca*对待测系统出现的各种故障集s进行g0次迭代聚类,获得故障类群集合s
    *
    ={s
    1*
    ,s
    2*
    ,

    ,s
    i*
    ,

    },其中,s
    i*
    表示被聚合的第i个故障类群;(5.4)、设置初始节点node1={s
    *
    ,t};(5.5)、利用启发式搜索算法使用第1个故障类群s
    1*
    对初始节点node1进行拓展,生成后续节点node2,接着使用第2个故障类群s
    2*
    对节点node2进行拓展,生成后续节点node3,然后以此类推,直至生成节点node
    m-1
    ,从而生成决策树tree;(5.7)、复查出错的节点,并根据分类精度表和fig计算估计误差;(5.7.1)、获得tree使用的非叶子节点集合node={node1,node2,

    ,node
    f
    ,

    ,
    node
    fmax
    };(5.7.2)、计算下层平均代价数组{a1,a2,

    ,a
    r
    ,

    ,a
    rmax
    },其中,a
    r
    表示属于{leve
    r+1
    ,leve
    r+2
    ,

    ,leve
    rmax+1
    }层的所有测点的平均代价;其中,t
    l
    表示属于leve
    k
    的第l个测点,表示测点t
    l
    的代价;(5.7.3)、遍历node中的每个节点,初始化f=1;设node
    f
    位于lev
    r
    ,连接的测点是t
    j
    ,形态参数为fi
    f
    ,替换连接测点为那么替换后node
    f
    的分类误差ce
    f
    为:其中,表示测点的测试代价,δp表示若将t
    j
    换成引起node
    f
    拓展子节点发生的概率,(5.7.4)、令f=f+1,重复(5.7.3)直至f=fmax,然后计算所有节点的误差之和,记为ce;其中,p
    sumf
    表示node
    f
    包含的所有故障的概率总和;(5.7.5)、根据故障集s,利用生成决策树tree的测点来生成一个新的决策树tree1,然后以tree1为基准,对比tree和tree1的全部节点,若tree的某个节点包含的故障与tree1不一样,则认为该节点错误,并将出错的节点计入聚类出错的节点集合nodex={nodex1,nodex2,

    ,nodex
    f
    ,

    ,nodex
    fmax
    },其中,nodex
    f
    表示第f个出错的节点,f
    max
    表示出错节点的总个数;(5.7.6)、遍历nodex中的每个节点,初始化f=1;设nodex
    f
    位于lev
    r
    ,连接的测点是t
    j
    ,形态参数为fi
    f
    ,计算nodex
    f
    的聚类误差me
    f
    ;me
    f
    =me1
    f
    +me2
    ff
    其中,me1
    f
    表示将错误的聚类正确引导的误差,me2
    f
    表示引导后的替换误差;p
    r
    =1/|leve
    r
    |,p
    r
    表示替换为同类测点的概率;(5.7.7)、令f=f+1,重复(5.7.6)直至f=f
    max
    ,计算所有出错节点的误差之和为me;其中,p
    sumf
    表示nodex
    f
    包含所有故障的概率总和;(5.7.8)、计算估计误差ge:ge=me+ce;
    (5.8)、若估计误差ge小于最大允许误差ψ,则进入步骤(5.9),否则,令g0=2g0,再返回步骤(5.3);(5.9)、遍历tree1中的每一个叶子节点,将被错误聚类的故障转移到正确位置,若某叶子节点包含的故障个数大于等于2,则使用启发式搜索算法对叶子节点进行拓展,直至包含的故障全部隔离;(5.10)、将决策树tree1作为生成的序贯测试序列。

    技术总结
    本发明公开了一种复杂系统的序贯测试序列生成方法,先构建待测系统的故障测试模型,然后基于故障测试模型,通过样本模拟获得分类函数及形态函数,从而对可用测点类别进行划分,对测试关系相近的模块进行聚类;在使用任意一种算法生成决策树的过程中,依据节点的规模选择对应类别的测点,在决策树生成后,对其进行误差分析,根据误差的相对大小评判聚类的可靠性,进而对决策树修正,适用于绝大多数决策树生成算法。策树生成算法。策树生成算法。


    技术研发人员:刘震 汪静元 黄建国 龙兵 周秀云
    受保护的技术使用者:电子科技大学
    技术研发日:2022.03.10
    技术公布日:2022/5/25
    转载请注明原文地址:https://tc.8miu.com/read-17662.html

    最新回复(0)