程贤福, 王承辉, 郭治祜, 李 骏, 董海华, 董 航
(1.华东交通大学 载运工具与装备教育部重点实验室,南昌 330013, E-mail: chxf_xn@sina.com;2.扬州市宝丰机械有限公司,江苏 扬州 225600)
在模块化产品设计中,模块之间往往存在关联关系,完全独立的模块是很少的。当因需求变化对产品进行适应性更改时,会引起相关模块的变更,从而导致产品开发周期和成本增加[1]。因此,有必要对产品模块间的关联及变更影响进行分析。产品设计变更已受到许多研究者的广泛关注,如郭于明[2]基于产品开发网络模型,提出了设计变更传播影响的预测方法;陈亮、李玉鹏等综合考虑变更传播的可能性、变更传播指数和零部件重要度等因素,分析了变更传播路径、范围和节点影响程度[3-4]。Clarkson等[5]引入可能性和风险的概念来预测变更传播的影响大小;Hein等[6]将需求变更节点划分为扩散者、吸收者、携带者和稳健者四种方式。王琪旸等[7]基于构件间关联关系分析,从变更概率角度探讨了变更传播影响。这些研究主要从产品零件设计变更角度分析和预测传播影响,并未分析产品模块间的关联及变更影响关系。
乔虎等[8]利用DSM分析参数的关联关系, 预测模块的可能变更路径,其主要研究模块不同变更来源的应对策略;程贤福、万丽云分析了产品模块间关联关系,从产品设计变更角度分析模块间的综合关联影响度,但没有分析模块更改传播效应,也未探讨模块间更改传播的集成影响[9-10]。Lee等[11]利用网络分析法衡量模块化产品的设计变更影响,确定了零件在产品中的优先次序;Li等[12]基于LeaderRank算法识别有影响力的模块,利用SIR 模型评估模块的影响度。以上研究均未深入分析模块内零部件的变更传播如何影响模块间的关联。Cheng等[13-14]针对产品族模块间的耦合问题,探讨了模块间的关联特性,以零件间的依赖程度为传播概率,提出了产品设计更改影响分析方法,然而该方法仅考虑了设计参数间的直接传播关系。
本文针对产品模块关联问题,基于可达矩阵和有向图,识别所有可能的变更传播路径,考虑路径上每个零部件吸收变更影响的能力并判断其继续传播给其它零部件的可能性,集成直接和间接关联传播影响,计算模块间的变更影响度。
从工程变更角度,模块化产品的设计更改主要集中于模块的增、删或替换等及其组成零部件特征参数或装配约束变化,称之为模块变更。模块的增、删或替换属于模块整体变更,通过模块级参数变化引起零部件参数变化,得到新的产品模块实例。因此模块变更问题可以转化为零部件参数变化传播问题,通过分析参数变化传播路径和变更影响度,可为模块化产品设计提供方法指导。
模块变更主要考虑的是某个零件的变化对其它零件的扰动影响程度,这种扰动影响程度可通过一个零部件的变更直接导致另一个关联零部件重新设计的可能性来表示[15]。因此,通过分析各零部件间的依赖关系,确定一个零件的变更引起另一个零件变化的直接影响程度(可能性),建立模块的变更影响设计结构矩阵。
以两个模块M1和M2之间的关联影响关系为例,如图1所示的变更影响设计结构矩阵,其中非对角线元素表示零部件间的依赖关系。M1和M2之间有两个关联元素,其中M1通过零件C3影响M2的零件C5,而M2通过零件C6影响M1的零件C2。即M1的变更会引起M2的变化,同样,M2的变更也会影响模块M1。
图1 两模块间的变更影响设计结构矩阵
从图1可以看出,模块间的变更影响除了与模块间的接口直接相关,还与依赖模块内部零件的关联关系以及被影响零件在依赖模块中的地位有关。假设两个模块Mp和Mq之间存在相互作用,具体为Mp中的Ci影响Mq中的Cj,则称Ci为模块Mp影响Mq(Mp→Mq)的主控零件,Cj为依赖零件。Ci不只对Mq中的Cj有直接影响,同时会间接影响到Mq中的其它零件,因为Mq是一个“耦合子系统”,Cj在Mq中相当于变更发起零件,会直接或间接传播给Mq中的其它零件。因此,模块变更影响度可定义为一个模块的变更,通过接口传播给其它模块的变更影响度。
假设Mq中包含n个零件,mq和nq分别是Mq中第一个零件及最后一个零件的序号,记P(Cj,Ck)(k=mq,mq+1, …,nq,k≠j)为Cj对Mq中第k个零件Ck的变更影响度,则Ci对模块Mq的变更影响度P(Ci,Mq) 可表示为
(1)
当Ci直接影响Mq的多个零件时,如Ci直接影响Mq中的Cu和Cv,则Ci对模块Mq的变更影响度为
(2)
如果模块Mp内有t个对Mq直接影响的主控零件,则模块Mp对模块Mq的变更影响度为
(3)
模块间变更影响与依赖零件所在的模块内部关联关系及零件在模块中的影响地位有关。模块规模越大及零件在模块中的影响地位越高,则变更影响的范围越广,传播路径越复杂。零件变更传播有两种方式,一种是一个零件直接传播到另一个零件,另一种是一个零件通过至少一个中间零件再传播到另一个零件,间接传播路径也是变更传播影响发散的所有可能路径。
零件间不同的关联关系会使变更传播朝着不同的方向扩散,形成多条变更传播路线。根据模块内零件之间的关联关系和传播的行为特性将不同的传播路线连接起来,将形成变更影响传播树。变更影响传播树描述了模块内所有零件间传播过程的行为特性,反映了零件之间的变更传播关系。每条路径代表了一条直接或间接变更传播途径,路径上的元素不会重复,因此最长的变更传播路径包含的元素数量不超过该模块内的零件数量。如果变更发起零件也受到路径上其它零件的反馈影响,如双向耦合传播或循环传播,这种反馈暂时可以被切断。
一般来说,模块内各零部件间依赖关系越紧密,变更传播的发散程度越大,变更影响传播树的树枝越多。对于某条传播路径,各零件间间接影响可能性大小与传播路径长度(即相关零件数)有关,长度越长,影响可能性越小。假设模块Mq中Cj到Ck有s条不重复的传播路径,其中Cj→Ck为直接传播路径(也有可能无直接传播路径,如图1中的C7→C5,r5,7=0),其余s-1条均为间接传播路径,Ci→Cu→Cv→Ck为其中的一条(第r条)传播路径,则该条传播路径的变更影响度为
P(Cj,Ckr) =ru,j×rv,u×rk,v
(4)
不同的路径表示不同方向的变更传播,各种可能的间接变更影响通过相应的传播路径来体现。一个零件到另一个零件间所有可能的传播路径的变更影响度之和就是前者对后者的综合变更影响度。因此,Cj到Ck上s条传播路径的变更影响度之和为Cj对Ck的综合变更影响度P(Cj,Ck),即
(5)
对于简单的模块化产品,如果模块的规模较小,可直观地分析模块及零件间的变更传播路径。然而随着耦合问题复杂程度的提高,其变更影响设计结构矩阵的规模会随之增大,间接关联信息的求取会变得越来越困难。此时,需要利用识别变更影响传播路径的算法,以使模块间的变更影响度计算更加有效。
在分析依赖零件变更传播路径之前,首先要确定其直接或间接影响到所在模块的哪些零件,基于可达矩阵的思想可以实现该任务。由模块变更影响设计结构矩阵可判断两两模块间是否存在依赖关系,提取各依赖零件所在的模块作为子变更影响矩阵。将子矩阵内部零件间的非0值改为1,然后计算它的可达矩阵,从而可判断出依赖零件(也即该模块的变更发起零件)会影响到哪些零件,它们即为依赖零件变更传播的可达零件。如果可达矩阵中变更发起零件所在列有“0”元素,意味着该元素对应零件不依赖于变更发起零件,则可删掉该零件所在可达矩阵中行列信息,由此经过降维处理后形成的矩阵称为可达矩阵的缩减矩阵。
如图2(a)所示的变更影响设计结构矩阵,假设C5为变更发起零件。将变更影响设计结构矩阵转换成布尔型矩阵,然后计算其可达矩阵,如图2(b)所示。可以看出,C5直接影响C1,同时C5也会间接影响到C4、C5和C7。因此C1、C4、C5和C7均为C5变更传播路径上的可达零件。C5的变更不会传播给C2和C8,此时可达矩阵可缩减,如图2(c)所示。因此在分析C5所有可能的变更传播路径时,可以不考虑C2和C8。
图2 确定变更传播的可达零件
假设某个模块有m个零件,经过降维处理后还有n个零件,其中Cj是变更发起零件,分析Cj对其它零件的变更影响度。本节给出一种基于变更影响设计结构矩阵和有向图的间接变更传播路径识别方法。其基本思想:以模块变更发起零件为有向图起始顶点V0,访问与V0直接关联的顶点(零件),再依次以这些关联零件为新的顶点,继续访问与之关联的未被访问过的顶点,重复上述过程直到访问遍历所有的顶点。该方法的算法流程如下:
设变更发起零件Cj为起始顶点V0,变更可达零件Ck为目标顶点Vtarget,变更影响传播树层级(传播层次)数为n-1,初始传播层级t=0,初始路径条数S=0,每条传播路径变更影响度P=0,每个层级的变更影响度L=0。
步骤1:输入变更影响矩阵,置队列Q=0。
步骤2:搜索与V0直接关联的邻接点,记录相应邻接点依赖于V0的关联影响值ri,j,L←ri,j;如果邻接点中存在Vtarget(即i=k),S←S+1,P(S) ←rk,j;t←t+1,并将这些邻接点置入到队列Q(t)中。
步骤3:依次从队列Q(t)中取一个不是Vtarget的顶点作为当前顶点,搜索与之直接关联的邻接点(传播路径上未被访问过的顶点),记录关联影响值rp,i,L←L×rp,i;如果邻接点有Vtarget,S←S+1,P(S) ←L;
步骤4:t←t+1,并将这些邻接点置入到队列Q(t)中;如果Q(t)为空,搜索结束。
步骤5:如果t>=n-1,算法终止;否则,转步骤3。
图3表示了一种由变更发起零件到可达零件间的变更传播路径搜索流程。
图3 变更传播路径搜索图
第1节中模块间的变更影响度体现了直接变更影响,尚不能说明模块在整个产品中的变更影响程度。因此,还需从产品设计全局角度分析模块的变更影响,考虑模块间的间接变更影响。此时,将某个模块作为变更源,分析其主控零件通过接口对其它模块的影响,计算该模块的综合变更影响度。然后,根据模块在产品中的综合变更影响度以及其它模块对其的直接变更影响度,判断模块在产品中的再设计优先次序。
前文提及,通过可达矩阵,可以确定某个变更源传播影响的可达零件。因此,在分析模块综合变更影响度时,也可以利用可达矩阵来识别变更传播到其他模块的可达零件。根据零部件间的依赖关系,建立模块变更传播网络图。以任意一个模块为变更源,确定该模块影响其他模块的主控零件,然后以每个主控零件为变更发起零件,识别其变更传播途径,分析每条传播路径的变更影响度,计算其对除自身模块以外的其它零件变更影响度。此时,可以将其它模块视为一个综合模块,则该模块的综合变更影响度将相当于其对综合模块的直接变更影响度。
假设某一产品A包含M个模块,模块Mi有r个主控零件,其在产品中的综合变更影响度P(Mi,A)可表示为
(6)
模块的综合变更影响度越大,表示其在产品中的影响力越大,但还不能完全说明其再设计优先次序,还需分析其对其它模块的依赖程度。令
(7)
式中:P(Mj,Mi)为模块Mj对Mi的变更影响度。
PMi值越大,表示模块在产品中的再设计优先次序越高。如果某个模块不依赖于其它模块,即使它的综合变更影响度不是最大,其在产品再设计中也是居主导地位。
以文献[16]的某型号高速列车转向架为例,说明模块间的变更影响传播分析过程。文献将转向架分为7大模块,即构架组成模块M1、轮对组成模块M2、一系悬挂M3、二系悬挂M4、驱动组成M5、基础制动M6和辅助装置M7。由于辅助装置是为了配合其他模块工作的几个分散且独立零部件,在本文的变更影响分析中可以忽略,故转向架可视为6大模块组成。各零件的序号如表1所示。
表1 转向架主要零部件清单
分析转向架零部件间的关联依赖关系,结合企业产品的历史数据和相关设计人员的经验,确定一个零部件的变更导致另一个关联零部件重新设计的可能性,构建转向架模块变更传播网络,如图4所示。
图4 转向架模块变更传播网络
根据前述方法计算模块间的变更影响度。以模块M1对模块M2的影响为例,计算M1对M2的变更影响度P(M1,M2)。M1通过C1影响M2的C5,C5又进一步影响M4中的C6,C5则可视为M2中的变更发起零件。为了分析C5在M2中的变更传播影响,首先计算M2的可达矩阵,如图5所示。
图5 转向架模块M2的可达矩阵
从M2的可达矩阵可以看出,C5的变更传播可达零件除了C6外(直接传播),还包括C7和C8(间接传播)。
然后分析C5在M2中的变更传播路径,分别计算C5对每个可达零件的变更影响度。
C5→C6:P(C5→C6) =r6, 5= 0.6。
C5→C7:P(C5→C7) =r6, 5×r7, 6= 0.6×0.8 = 0.48。
C5→C8:P(C5→C8) =r6, 5×r8, 6+r6, 5×r7, 6×r8, 7= 0.6×0.6 +0.6×0.8× 0.4= 0.552。
将C5→C6、C5→C7和C5→C8的变更影响度相加,可得C5对M2中其它零件的变更影响度为
P(C5,M2) =P(C5→C6) +P(C5→C7) +P(C5→C8) =1.632。
M1中只有一个零件C1影响M2且仅影响其中一个零件C5,则M1对M2的变更影响度为
P(M1,M2) =r5,1×[1+P(C5,M2)] = 0.4×[1+1.632] = 1.0528。
同理可以计算其它模块间的变更影响度。然后计算每个模块的综合变更影响度及对其它模块的依赖度,结果如表2所示。
表2 转向架模块变更影响度计算结果
从表2可以看出,该转向架中M1的综合变更影响度最大且不受其它模块的影响,其PMi最大,故它在产品再设计中居主导地位。M2对其它模块的影响比较大,但其对M1有一定的依赖,故其居次要地位。M4和M6不影响其它模块,仅依赖于其它模块,即他们为完全吸收模块,它们的PMi为均0。从设计变更角度看,由于M4相比M6对其它模块的依赖度更大,故其在产品再设计中的地位最低。
(1) 基于设计结构矩阵描述零部件间的关联依赖关系,利用可达矩阵和有向图,可快速、准确识别出模块间所有可能的变更传播路径。
(2) 分析了模块之间变更传播关系,考虑路径上每个零部件吸收变更影响的能力并判断其继续传播给其它零部件的可能性,集成直接和间接关联传播影响,提出了模块变更影响度计算方法,为确定各模块在产品中的主导顺序提供了依据。
(3) 以转向架为例,分析了模块间的变更传播关系,探讨了模块间的变更影响关系,可为减少模块化产品设计迭代及再设计优先次序识别提供方法指导。