首页 / 专利库 / 软件 / 软件 / 一种概率选择的软件模块聚类方法

一种概率选择的软件聚类方法

阅读:679发布:2021-06-07

专利汇可以提供一种概率选择的软件聚类方法专利检索,专利查询,专利分析的服务。并且本 发明 针对 软件 系统重构中软件模 块 聚类问题,公开了一种概率选择的 软件模块 聚类方法。本方法首先从软件系统源程序中提取获得软件系统的模块依赖关系图,然后从图中稀疏点出发基于概率选择对结点进行局部合并操作得到软件系统的初步模块聚类,最后根据结点与各个模块之间的联系数基于概率动态调整每个结点的所属聚类,得到软件模块的聚类结果。本发明为软件模块聚类问题提供了一种简单的、收敛速度快且聚类效果好的工程化方法,用于重构软件系统结构,提高软件系统的可理解性。,下面是一种概率选择的软件聚类方法专利的具体信息内容。

1.一种概率选择的软件聚类方法,其特征主要包括以下步骤:
(1)在面向对象语言编写的软件系统中,以代码中的方法作为节点,方法之间的调用关系作为边,将软件系统表示为一个图,并以矩阵形式存储,若该系统中有n个方法,这些方法可以用集合F表示为F={f1,f2,...,fj,...,fn},j为1到n之间的任意一个整数值,fj(1≤j≤n)表示该软件系统中的第j个方法,则该软件系统中方法之间的调用关系用一个n×n的二维矩阵B进行编码表示,若方法fi(1≤i≤n)调用方法fj(1≤j≤n),则B的第i行第j列的元素值为1,即bij=1,若方法fi(1≤i≤n)没有调用方法fj(1≤j≤n),则B的第i行第j列的元素值为0,即bij=0,按照上述方法,软件系统的方法调用关系编码表示为:
(2)假设该软件系统需要被聚类形成m(m<<n)个模块,则经过模块聚类之后的软件系统可以用集合C表示为C={c1,c2,...ci,...cm},i为1到m之间的任意一个整数值,ci(1≤i≤m)表示软件系统经过模块聚类后的第i个模块,对该软件系统的模块聚类方案可以表示为一个n维向量Cluster,其中ai表示向量中的元素,0≤ai≤m且ai为整数,若方法fi(1≤i≤n)属于第j(1≤j≤m)个模块,则Cluster中的第i个元素的值为j,即ai=j,若ai=0,则fi还不属于任何一个聚类,因此软件系统的模块聚类结果可以用向量表示为:
Cluster={a1 a2 a3 … an}
初始化的聚类结果向量表示为Cluster0,合并操作迭代到第t步时的聚类结果向量表示为Clustert,t为合并操作阶段的迭代步数(t≥0);
(3)设定概率选择的软件模块聚类算法的参数,所述的参数包括合并操作中的迭代次数r1,动态调整操作中的迭代次数r2;
(4)对模块聚类的结果进行初始化,使聚类结果向量Cluster中每一维的值ai=0,1≤i≤n,即Cluster0={0,0,.......,0},初始化最优聚类结果向量Cluster*={0,0,.......,
0},使聚类形成的模块数为0,即int clus=0,初始化聚类结果的最优MQ值为gbestMQ=0,令局部合并操作的迭代次数t=1,开始进行局部合并操作;
(5)进行局部合并操作
将每个方法fi的直接调用方法保存在列表listi中(1≤i≤n),将列表listi按照长度进行升序排序,形成一个有序的列表序列list1,list2,.......listi,.......listn,对应于一个有序的方法序列f1,f2....fi....fn(1≤i≤n),
对每个方法:
根据上一步的聚类结果Clustert-1,计算 SCi是列表
listi中结点的聚类结果序列, 0≤j≤l,l≤m,计算每个聚类 在SCi中的方法数目 计算方法fi选择聚类 的概率值 以概率 决定方法fi是否属
于聚类 如果 否则,ai=++clus,更新聚类向量Clustert的值;
(6)计算当前聚类方案Cluster的MQ值:
假设第i个模块ci中的方法个数用Ni(1≤i≤m)表示,模块ci与模块cj之间方法的调用次数通过方法调用矩阵B计算,并用Ei,j表示:
模块ci内部方法之间的调用次数用Mi表示:
软件系统进行模块聚类后,第i个模块ci和第j个模块cj之间的耦合性用εi,j表示:
第i个模块ci的内聚性由μi表示:
高内聚、低耦合是评价软件模块聚类优劣的标准,使用软件模块质量(Modularization Quality,简称MQ)将模块内部的内聚性和模块之间的耦合性结合起来综合评价软件模块聚类的优劣,当前合并操作进行到第t步时的软件模块聚类方案的MQ值用MQt进行评估表示,其中,m表示将软件系统划分成m个模块,在优化过程中,软件系统耦合性尽可能减小,内聚性尽可能增大,即MQ的值不断增大;
(7)将当前该步计算出的MQ值与全局最优的gbestMQ进行比较,若MQ大于gbestMQ,使gbestMQ=MQ,使全局最优聚类结果为当前聚类结果Cluster*=Clustert,t=t+1;
(8)若t<r1,则重复上述(5)-(8)步,若t≥r1,则重复下列(9)-(13)步;
(9)令动态调整操作的迭代次数为p=1(p≥0),动态调整操作的聚类结果表示为p
Cluster ,根据上述局部合并操作得到的初步结果,使用动态调整操作进行聚类结果的动态优化;
(10)根据局部合并操作的结果Cluster得到聚类结果集合C={C1,C2,.......,Cm},1≤Ci≤m,对每一个方法计算选择各个聚类的概率值:
计算方法fi与聚类Cj之间的调用次数Ni,j,1≤i≤n,1≤j≤m,计算方法fi选择每个聚类Cj的概率值p′i,j, 生成一个0到1之间的随机数,确定方法fi是否需要改变当前聚类,更新聚类向量Clusterp的值;
(11)利用步骤(6)的方法计算当前聚类方案Cluster的MQ值;
(12)将当前该步计算出的MQ值与全局最优的gbestMQ值进行比较,若MQ大于gbestMQ,使gbestMQ=MQ,使全局最优聚类结果为当前聚类结果Cluster*=Clusterp,p=p+1;
(13)若p<r2,则重复上述(10)-(12)步,若p≥r2,则结束整个步骤,完成整个软件模块聚类。
2.根据权利要求1所述的一种概率选择的软件模块聚类方法,其特征在于:该方法应用于面向对象语言编写的软件系统模块聚类中,能够有效的减少计算量。

说明书全文

一种概率选择的软件聚类方法

技术领域

[0001] 本发明属于软件系统重构技术领域,具体涉及到软件系统重构中模块聚类问题,提供了一种基于概率选择的软件模块聚类方法,主要解决在软件系统代码重构中如何优化系统代码结构,达到消除系统冗余,增加软件系统的可理解性,降低软件系统维护费用的目的。

背景技术

[0002] 软件维护是软件生命周期中一个非常重要的阶段,其维护成本往往很高。随着业务需求的增加和变化,软件系统的模块化结构往往随着软件系统的变化而偏离最初的设计结构,软件系统需要不断的重构,理解和维护规模庞大的软件系统变得越来越困难,因此迫切需要高效的软件模块聚类方法,特别是对于那些缺少文档的遗留系统,如何重构软件结构,使软件系统变得易于理解、维护和管理是软件维护中一个急需解决的关键问题。
[0003] 软件模块聚类是一种常用的软件模型恢复技术,在逆向工程中应用十分广泛,通过组织或重新组织软件系统,使模块达到“高内聚”和“低耦合”的标准,达到消除冗余,增加软件系统的可理解性,降低软件系统维护费用的目的。软件模块聚类是软件模块划分的一种重要手段,软件聚类是通过模块依赖图利用聚类算法对软件系统进行模块结构划分,将软件系统分解为一些子系统,使复杂的软件系统变得易于理解和管理。目前常用的软件模块聚类方法可以分为5 类:图理论技术、基于信息检索的技术、基于数据挖掘的技术、基于模式匹配的技术和元启发式方法。对于大规模的复杂软件系统,获得合理的软件模块聚类结果通常比较困难,应用图方法进行软件模块聚类的常用传统方法有单链接和完全链接等。然而,软件模块聚类问题是一个NP问题,基于图的方法在解决软件模块聚类问题时随着软件系统规模的增加搜索空间呈指数增长。为了在合理的计算资源下找到有效的聚类方案,Mancoridis等使用基于搜索的方法进行软件模块聚类并将软件模块质量(Modularization Quality,MQ)作为软件模块聚类的评估准则,并实现了模块划分工具Bunch。随后,相继将爬山算法、模拟退火算法、粒子群算法、遗传算法等元启发式方法应用于软件模块聚类问题上, 使问题得到一定程度的解决,但是由于没有考虑软件模块聚类问题的自身特点,而是在解空间中盲目搜索,使得优化过程收敛速度慢,聚类效果不理想, 而且计算量大,不利于进行大规模复杂软件系统的软件模块聚类。
[0004] 软件模块聚类问题是一种典型的不确定性问题,前苏联数学家柯尔莫哥洛夫首次提出并建立的概率论方法为解决具有随机性的不确定性问题提供了一种简单有效的思路。
[0005] 为此,本发明提出一种概率选择的软件模块聚类方法。通过对软件系统建立复杂网络模型,得到软件系统的网络拓扑,将软件模块聚类问题转化为图聚类问题,并利用概率选择的软件模块聚类方法对图进行聚类。从软件模块设计的原则出发指导软件模块聚类的全过程,使方法快速收敛,稳定性好,并加入概率选择的策略保证算法不易陷入局部最优,并得到更为有效的软件模块聚类方案,为大规模软件系统模块聚类提供了一个简单有效的方法。

发明内容

[0006] 本发明解决的问题:为克服现有方法计算量大的缺点,提出一种概率选择的软件模块聚类方法,为大规模软件系统模块聚类问题提供了一种较为简单,聚类效果好的方法,使规模庞大的复杂软件系统聚类形成规模更小,更易于管理的子系统。
[0007] 本发明解决方案:为实现上述目的,本发明的技术方案包括以下步骤,如图 1所示:
[0008] (1)在面向对象语言编写的软件系统中,以代码中的方法作为节点,方法之间的调用关系作为边,将软件系统表示为一个图,并以矩阵形式存储。若该系统中有n个方法,这些方法可以用集合F表示为F={f1,f2,...,fj,...,fn},j为1到n之间的任意一个整数值,fj(1≤j≤n)表示该软件系统中的第j个方法,则该软件系统中方法之间的调用关系用一个n×n的二维矩阵B进行编码表示。若方法 fi(1≤i≤n)调用方法fj(1≤j≤n),则B的第i行第j列的元素值为1,即bij=1,若方法fi(1≤i≤n)没有调用方法fj(1≤j≤n),则B的第i行第j列的元素值为0,即bij=0,按照上述方法,软件系统的方法调用关系编码表示为:
[0009]
[0010] (2)假设该软件系统需要被聚类形成m(m<<n)个模块,则经过模块聚类之后的软件系统可以用集合C表示为C={c1,c2,...ci,...cm},i为1到m之间的任意一个整数值,ci(1≤i≤m)表示软件系统经过模块聚类后的第i个模块。对该软件系统的模块聚类方案可以表示为一个n维向量Cluster,其中ai表示向量中的元素, 0≤ai≤m且ai为整数。若方法fi(1≤i≤n)属于第j(1≤j≤m)个类,则Cluster中的第i个元素的值为j,即ai=j。若ai=0,则fi还不属于任何一个聚类。因此软件系统的模块聚类结果可以用向量表示为:
[0011] Cluster={a1 a2 a3 ··· an}
[0012] 初始化的聚类结果向量表示为Cluster0,合并操作迭代到第t步时的聚类结果向量表示为Clustert,t为合并操作阶段的迭代步数(t≥0)。
[0013] (3)设定基于概率选择的软件模块聚类算法的参数,所述的参数包括合并操作中的迭代次数r1,动态调整操作中的迭代次数r2。
[0014] (4)对模块聚类的结果进行初始化,使聚类结果向量Cluster中每一维的值 ai=0,1≤i≤n,即Cluster0={0,0,.......,0}。初始化最优聚类结果向量 Cluster*={0,
0,.......,0},使聚类形成的模块数为0,即int clus=0。初始化聚类结果的最优MQ值为gbestMQ=0,令局部合并操作的迭代次数t=1,开始进行局部合并操作。
[0015] (5)进行局部合并操作
[0016] 将每个方法fi的直接调用方法保存在列表listi中(1≤i≤n)。将列表listi按照长度进行升序排序,形成一个有序的列表序列list1,list2,…….listi,…….listn,对应于一个有序的方法序列f1,f2....fi....fn(1≤i≤n)。
[0017] 对每个方法:
[0018] 根据上一步的聚类结果Clustert-1,计算 SCi是列表 listi中结点的聚类结果序列, 0≤j≤l,l≤m。计算每个聚类 在SCi中的方
法数目 计算方法fi选择聚类 的概率值 以概率 决定方法fi是
否属于聚类 如果 否则,ai=++clus,更新聚类向量Clustert的值。
[0019] (6)计算当前聚类方案Cluster的MQ值:
[0020] 假设第i个模块ci中的方法个数用Ni(1≤i≤m)表示,模块ci与模块cj之间方法的调用次数通过方法调用矩阵B计算,并用Ei,j表示:
[0021]
[0022] 模块ci内部方法之间的调用次数用Mi表示:
[0023]
[0024] 软件系统进行模块聚类后,第i个模块ci和第j个模块cj之间的耦合性用εi,j表示:
[0025]
[0026] 第i个模块ci的内聚性由μi表示:
[0027]
[0028] 高内聚、低耦合是评价软件模块聚类优劣的标准,使用软件模块质量 (Modularization Quality,简称MQ)将模块内部的内聚性和模块之间的耦合性结合起来综合评价软件模块聚类的优劣,当前合并操作进行到第t步时的软件模块聚类方案的MQ值用MQt进行评估表示,
[0029]
[0030]
[0031] 其中,m表示将软件系统划分成m个模块。在优化过程中,软件系统耦合性尽可能减小,内聚性尽可能增大,即MQ的值不断增大。
[0032] (7)将当前该步计算出的MQ值与全局最优的gbestMQ值进行比较,若MQ大于 gbestMQ,使gbestMQ=MQ,使全局最优聚类结果为当前聚类结果 Cluster*=Clustert,t=t+1。
[0033] (8)若t<r1,则重复上述(5)-(8)步,若t≥r1,则重复下列(9)-(13)步。
[0034] (9)令动态调整操作的迭代次数为p=1(p≥0),动态调整操作的聚类结果表示为 Clusterp。根据上述局部合并操作得到的初步结果,使用动态调整操作进行聚类结果的动态优化。
[0035] (10)根据局部合并操作的结果Cluster得到聚类结果集合 C={C1,C2,.......,Cm},1≤Ci≤m。对每一个方法计算选择各个聚类的概率值:计算方法fi与聚类Cj之间的调用次数Ni,j,1≤i≤n,1≤j≤m。计算方法fi选择每个聚类Cj的概率值p'i,j, 生成一个0到1之间的随机数,确定方法 fi是否需要改变当前聚类,更新聚类向量Clusterp的值。
[0036] (11)利用步骤(6)的方法计算当前聚类方案Cluster的MQ值:
[0037] (12)将当前该步计算出的MQ值与全局最优的gbestMQ进行比较,若MQ大于 gbestMQ,使gbestMQ=MQ,使全局最优聚类结果为当前聚类结果 Cluster*=Clusterp,p=p+1。
[0038] (13)若p<r2,则重复上述(10)-(12)步,若p≥r2,则结束整个步骤,完成整个软件模块聚类。
[0039] 有益效果:
[0040] 目前,解决软件模块聚类问题的方法很多,常用的软件模块聚类方法有基于数据挖掘的聚类方法和基于搜索的群体智能方法,可以得出聚类结果,但由于软件模块聚类问题是一个NP问题,随着软件系统的规模增加,搜索空间呈指数级增长,使计算量增大,收敛速度慢。
[0041] 软件模块聚类问题是一个不确定性问题,这类问题的基本特征是表现出的随机性。在进行软件模块聚类的过程中,不同的操作顺序将导致完全不同的聚类结果,并且这种结果呈现出一定的随机性。传统的方法在进行软件模块聚类过程中没有考虑到软件模块聚类问题的这种特性,使得从一开始就陷入了聚类误区,经过大量的计算与迭代也无法得到较好的结果。为此,本发明提出一种概率选择的软件模块聚类方法,分为局部合并与动态调整两步。局部合并操作充分考虑软件模块聚类问题的特性与不确定性问题的随机性特征,试图利用概率论的方法较为简单的解决这一类复杂问题,局部合并操作将每个结点即每个方法看作一个独立的聚类,从稀疏点开始进行结点合并。由于稀疏结点的直接相邻结点相对较少,可以以更大的概率选择合适的结点进行合并,使结点归入合适的聚类中。由于每一步的合并与操作都会影响之前已确定结点的聚类方案,因此,在局部合并操作得到一个初步聚类方案后,本发明将进一步使用动态调整策略继续进行调整与优化。动态调整操作根据“高内聚”、“低耦合”的软件设计原则进行基于概率选择的动态调整,通过计算每个方法与各个聚类之间的联系数,根据与各个聚类之间的联系数基于概率动态调整每个方法的所属聚类。
[0042] 因此,本发明的方法从根本上保证了软件模块聚类从一个好的开始进行,使得后面只需进行少量的迭代就可以达到更优的聚类效果,动态调整防止后续的操作影响整个聚类结果。本方法从软件模块设计的原则出发指导软件模块聚类的全过程,使算法快速收敛,稳定性好,加入概率选择的策略保证算法不易陷入局部最优,并得到更为有效的软件模块聚类方案,为大规模软件系统模块聚类提供了一个简单有效的工程化方法。
[0043] 典型实例实验结果证实该方法的有效性:对如图3所示的软件系统调用关系图,分别用GGA、GNE、MCA、ECA、MAEA-SMCPs及本发明提出的概率选择的软件模块聚类方法(SPS)进行软件模块聚类,独立运行10次取平均值的结果如图4所示。图5是对图3的软件系统进行软件模块聚类得到的结果图。图6是分别利用粒子群算法(PSO)及本发明提出的方法(SPS)进行软件模块聚类的所用时间。从实验结果可以看出,本发明提出的概率选择的软件模块聚类方法可以得到更好的聚类结果且收敛速度更快,是一种简单有效的软件模块聚类方法。附图说明
[0044] 附图1本发明的流程图
[0045] 附图2某软件系统方法调用关系图。
[0046] 附图3“mtunis”软件系统的模块依赖图。
[0047] 附图4使用不同方法进行软件模块聚类的结果对比图。
[0048] 附图5“mtunis”软件系统的模块聚类结果图。
[0049] 附图6使用PSO与SPS方法进行软件模块聚类所用时间对比图(单位:s)。

具体实施方式

[0050] 以某软件系统为例,如图2所示是该软件系统的方法调用关系图,具体说明本发明公开的软件模块聚类方法的具体实施方式。
[0051] (1)对如图2所示的方法调用关系图编码,该软件系统中有10个方法,这些方法可以用集合F表示为F={f1,f2,...,fj,...,f10},j为1到10之间的任意一个整数值,fj(1≤j≤10)表示该软件系统中的第j个方法,并用一个10×10的二维矩阵B编码表示,
[0052] (2)假设该软件系统需要被聚类形成m(m<<n)个模块,则经过模块聚类之后的软件系统可以用集合C表示为C={c1,c2,...ci,...cm},i为1到m之间的任意一个整数值,ci(1≤i≤m)表示软件系统经过模块聚类后的第i个模块。对该软件系统的模块聚类方案可以表t示为一个10维向量Cluster,合并操作迭代到第t步时的聚类结果向量表示为Cluster ,t为合并操作阶段的迭代步数 (t≥0)。
[0053] (3)设定基于概率选择的软件模块聚类算法的参数,所述的参数包括合并操作中的迭代次数r1=1,动态调整操作中的迭代次数r2=2。
[0054] (4)对模块聚类的结果进行初始化,使聚类结果向量Cluster中每一维的值 ai=0,1≤i≤n,即Cluster0={0,0,0,0,0,0,0,0,0,0}。初始化最优聚类结果向量 Cluster*={0,0,0,0,0,0,0,0,0,0},使聚类形成的模块数为0,即int clus=0。初始化聚类结果的最优MQ值为gbestMQ=0,令局部合并操作的迭代次数t=1,开始进行局部合并操作。
[0055] (5)进行局部合并操作
[0056] 将每个方法fi的直接调用方法保存在列表listi中(1≤i≤n),并对列表listi按照长度进行升序排序形成下列的序列:
[0057] list7={},list8={},list9={},list1={f5},list2={f1},list4={f7},list5={f8},list6={f7,f8,f9} list10={f7,f8,f9},list3={f1,f2,f4,f5,f6},对应于一个排序的方法序列f7,f8,f9, f1,f2,f4,f5,f6,f10,f3。
[0058] 根据初始化的结果Cluster0={0,0,0,0,0,0,0,0,0,0},进行结点的合并,可以初步确定f1与f5合并,f2与f1合并,f4与f7合并,f5与f8合并,更新聚类向量 Cluster1={1,1,0,2,1,0,2,1,0,0}。
[0059] 计算SC6={2,1,0},方法f6与f7合并的概率为 方法f6与f8合并的概率为 方法f6与f9合并的概率为 生成随机数确定方法
f6与f9合并,则更新聚类向量Cluster1={1,1,0,2,1,3,2,1,3,0}。计算SC10={2,1,3},方法f10与f7合并的概率为 方法f10与f8合并的概率为 方法
f10与f9合并的概率为 生成随机数确定方法f10与f7合并,则更新聚类向量
Cluster1={1,1,0,2,1,3,2,1,3,2}。计算SC3={1,1,2,1,3},方法f3与f1,f2,f5合并的概率为 方 法 f 3 与 f 4 合 并 的 概 率 为
方法f3与f6合并的概率为 生成随机数确定方法f3与f4
合并,则更新聚类向量Cluster1={1,1,2,2,1,3,2,1,3,2}。
[0060] (6)计算当前聚类方案Cluster的MQ值:
[0061] 目前形成三个聚类,由方法调用矩阵B,首先计算三个模块中的方法个数, N1=4;N2=4;N3=2;模块c1中包含方法f1、f2、f5、f8,模块c2中包含方法f3、f4、 f7、f10,模块c3中包含方法f6、f9。
[0062] 计算模块ci中的方法调用模块cj中方法的次数为:
[0063]
[0064]
[0065]
[0066]
[0067]
[0068]
[0069] 计算模块ci内部方法之间的调用次数为:
[0070]
[0071]
[0072]
[0073] 软件系统进行模块聚类后,计算第i个模块ci和第j个模块cj之间的耦合性εi,j:
[0074]
[0075]
[0076]
[0077] 计算第i个模块ci的内聚性μi:
[0078]
[0079] 计算粒子当前位置的适应度值:
[0080]
[0081]
[0082]
[0083]
[0084] (7)将当前该步计算出的MQ值与全局最优的gbestMQ进行比较, MQ=0.6263>gbestMQ=0。使gbestMQ=MQ=0.6263,使全局最优聚类结果为当前聚类结果Cluster*=Cluster1={1,1,2,2,1,3,2,1,3,2},t=t+1=2。
[0085] (8)t=2>r1=1,则重复下列(9)-(13)步。
[0086] (9)令动态调整操作的迭代次数为p=1(p≥0),动态调整操作的聚类结果表示为Clusterp。根据上述局部合并操作得到的初步结果,使用动态调整操作进行聚类结果的动态优化。
[0087] (10)根据局部合并操作的结果Cluster1={1,1,2,2,1,3,2,1,3,2}得到聚类结果集合 C={1,2,3}。对每一个方法计算选择各个聚类的概率值:
[0088] 计算方法fi与聚类Cj之间的调用次数Ni,j,1≤i≤n,1≤j≤m。
[0089] N1,1=1,N1,2=0,N1,3=0;
[0090] N2,1=1,N2,2=0,N2,3=0;
[0091] N3,1=3,N3,2=1,N3,3=1;
[0092] N4,1=0,N4,2=1,N4,3=0;
[0093] N5,1=1,N5,2=0,N5,3=0;
[0094] N6,1=1,N6,2=1,N6,3=1;
[0095] N7,1=0,N7,2=0,N7,3=0;
[0096] N8,1=0,N8,2=0,N8,3=0;
[0097] N9,1=0,N9,2=0,N9,3=0;
[0098] N10,1=1,N10,2=1,N10,3=1;
[0099] 计算方法fi选择每个聚类Cj的概率值p'i,j,
[0100]因此确定方法f1属于聚类C1,聚类向量Cluster不用调整。
[0101]因此确定方法f2属于聚类C1,聚类向量Cluster不用调整。
[0102]生成0到 1之间的随机数为0.72,则方法f3属于C2模块,聚类向量Cluster不用调整。
[0103]因此确定方法f4属于聚类C2,聚类向量Cluster不用调整。
[0104]因此确定方法f5属于聚类C1,聚类向量Cluster不用调整。
[0105]生成0到1 之间的随机数为0.47,则方法f6属于C2模块,聚类向量Cluster调整为 Cluster={1,1,2,2,1,2,2,1,3,2}。
[0106] 因此确定方法f7属于聚类C2,聚类向量Cluster不用调整。
[0107] 因此确定方法f8属于聚类C1,聚类向量Cluster不用调整。
[0108] 因此确定方法f9属于聚类C3,聚类向量Cluster不用调整。
[0109]生成0 到1之间的随机数为0.97,则方法f10属于C3模块,聚类向量Cluster调整为 Cluster={1,1,2,2,1,2,2,1,3,3}。
[0110] (11)利用步骤(6)的方法计算当前聚类方案Cluster的MQ值为MQ=0.6869。
[0111] (12)将当前该步计算出的MQ值与全局最优的gbestMQ进行比较, MQ=0.6869>gbestMQ=0.6263,使gbestMQ=MQ=0.6869,使全局最优聚类结果为当前聚类结果Cluster*=Cluster={1,1,2,2,1,2,2,1,3,3},p=p+1=2。
[0112] (13)若p<r2,则重复上述(10)-(12)步,若p≥r2,则结束整个步骤,完成整个软件模块聚类。
[0113] 其余步骤与以上类似,不再详细说明。
[0114] 本软件系统的模块聚类达到高内聚,低耦合,有利于软件系统后期的维护和管理。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈