CN105117224A - 一种基于多智能体进化的软件模块聚类分析方法 - Google Patents
一种基于多智能体进化的软件模块聚类分析方法 Download PDFInfo
- Publication number
- CN105117224A CN105117224A CN201510518314.5A CN201510518314A CN105117224A CN 105117224 A CN105117224 A CN 105117224A CN 201510518314 A CN201510518314 A CN 201510518314A CN 105117224 A CN105117224 A CN 105117224A
- Authority
- CN
- China
- Prior art keywords
- intelligent body
- agent
- intelligent
- optimum
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于多智能体进化的软件模块聚类分析方法,属于软件工程领域。所述发明包括得到初始化智能体网格,在初始化智能体网格中随机生成预设数量的智能体,在初始化智能体网格进行智能体数值的选择性替换以及智能体数据的局部替换,选取具有极大适应度函数值智能体,根据该极大适应度函数值智能体的数据进行软件模块聚类处理。本发明通过在智能体网格中,参考该网格中具有最大适应度函数值的智能体对目标智能体进行数据更新,从而令整个智能体网格中的数据得到更新,以便于根据更新后的智能体数据进行有效的软件模块聚类处理,避免了现有技术中仅仅得到局部聚类效果明显、整体聚类效果差这一情况的发生,提高了软件模块聚类的稳定性。
Description
技术领域
本发明属于软件工程领域,特别涉及一种基于多智能体进化的软件模块聚类分析方法。
背景技术
软件模块聚类(softwaremoduleclustering)是指基于软件模块间的连接关系对软件模块系统进行自动划分并得到模块化较好的聚类结果。软件模块聚类对软件系统设计,维护和发展的过程起着至关重要的作用,其结果对软件系统的设计和维护起着重要的指导作用。随着商业和生活的需求,软件系统的功能越来越强大,同时软件系统的大小也随之上升,这使得软件模块聚类的作用尤为重要。针对软件模块聚类问题,已有许多国内外学者提出多种不同的优化算法,包括爬山法,遗传算法,模拟退火算法等。爬山法的基本操作是从一个随机的划分开始,不断地重复搜索其邻域中更好的划分,直至其邻域中没有找到更优的目标适应度函数值对应的划分为止。由于它的灵活简单,并能够快速地找到问题的最优解的特点,因而受到广泛的应用。
然而,爬山法的缺点是在优化过程中容易陷入局部最优,使得最终得到的最优划分并不是最好的结果,为了避免这个问题,很多学者开始使用进化算法来解决软件模块聚类问题,其中以遗传算法的使用较为常见,遗传算法的实现主要通过设计选择、交叉、变异这三个主要的操作算子,来对解空间进行搜索,从而得到最优的适应度函数值,最后将最优的适应度函数值所对应的解决方法作为最终的解决方法。虽然遗传算法能够有效地克服容易陷入局部最优的缺点,但是传统的遗传算法在产生后代的选择操作中是依据个体的适应度进行全局选取,这显然不符合自然选择的规律。在实际自然选择的过程中,个体间的互动仅发生在一定的局部环境中,即每个个体仅能与周围的个体进行交互。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
对于软件模块聚类问题已研究的算法大都采用启发式算法和传统的遗传算法。现有的启发式算法在求解软件模块聚类问题中仅是容易得到局部最优、整体效果并不出众,而遗传算法的稳定性低。
发明内容
为了解决现有技术的问题,本发明提供了一种基于多智能体进化的软件模块聚类分析方法,所述基于多智能体进化的软件模块聚类分析方法,包括:
步骤一,对待分析的智能体网格进行初始化,得到初始化智能体网格L0,确定与所述初始化智能体网格L0对应的最优智能体数组Best0,在所述初始化智能体网格L0中随机生成带有编码的预设数量的智能体;
步骤二,根据预设的适应度函数,确定所述初始化智能体网格L0中每个所述智能体的适应度数值,选取所述初始化智能体网格L0中的最大适应度函数值,将与所述最大适应度函数值的智能体存入所述最优智能体数组Best0中;
步骤三,选取所述初始化智能体网格L0中任一所述智能体作为第一目标智能体,在所述初始化智能体网格L0中确定具有最大适应度函数值的智能体,并对对所述第一智能体中的数据进行选择性替换,对所述初始化智能体网格L0中的全部所述智能体都进行选择性替换后,得到中间代智能体网格Lt+1/2;
步骤四,选取所述中间代智能体网格Lt+1/2中任一所述智能体作为第二目标智能体和符合预定标准的智能体,将所述符合预定标准的智能体中的数据替换到所述第二智能体中,将所述中间代智能体网格Lt+1/2中的全部智能体都进行完数据替换后,得到后续智能体网格Lt+1;
步骤五,在所述后续智能体网格Lt+1中选取具有最大适应度函数值的智能体作为第三智能体,对所述第三智能体执行如所述步骤三和所述步骤四中的处理过程,从处理后的智能体中选取具有最大适应度函数值的极大适应度函数值智能体,更新所述最优智能体数组Best0,获取此时的最优智能体数组Bestt,并将所述极大适应度函数值智能体存入极大智能体数组CBestt+1中;
步骤六,根据所述极大智能体数组CBestt+1与所述最优智能体数组Bestt中的智能体适应度函数值的数值关系,结合处理代数t与预设代数阈值的关系,选取合适的智能体的数据进行软件模块聚类处理。
可选的,所述选取所述初始化智能体网格L0中任一所述智能体作为第一目标智能体,在所述初始化智能体网格L0中确定具有最大适应度函数值的智能体,并对对所述第一智能体中的数据进行选择性替换,对所述初始化智能体网格L0中的全部所述智能体都进行选择性替换后,得到中间代智能体网格Lt+1/2,包括:
步骤101,从所述初始化智能体网格L0中通过随机选取的方式选取任一所述智能体作为第一目标智能体;
步骤102,获取随机概率数值,如果所述随机概率数值小于预设概率数值,则获取随机位置数值;
步骤103,在所述初始化智能体网格L0中确定具有最大适应度函数值的智能体Lmax i,j,在所述智能体Lmax i,j选取与所述随机位置数值对应的数据,将所述数值替换到所述第一目标智能体中的相同位置;
步骤104,对所述初始化智能体网格L0中的全部所述智能体都进行如步骤103所示的选择性替换后,得到中间代智能体网格Lt+1/2。
可选的,所述选取所述中间代智能体网格Lt+1/2中任一所述智能体作为第二目标智能体和符合预定标准的智能体,将所述符合预定标准的智能体中的数据替换到所述第二智能体中,将所述中间代智能体网格Lt+1/2中的全部智能体都进行完数据替换后,得到后续智能体网格Lt+1,包括:
步骤201,从所述中间代智能体网格Lt+1/2中通过随机选取的方式选取任一所述智能体作为第二目标智能体;
步骤202,获取随机概率数值,如果所述随机概率数值小于预设变异数值,则产生随机智能体编号;
步骤203,从所述中间代智能体网格Lt+1/2中选取与所述随机智能体编号对应的智能体的邻接智能体;
步骤204,将所述邻接智能体中的数据替换到所述与所述随机智能体编号对应的智能体中;
步骤205,对所述中间代智能体网格Lt+1/2中的全部所述智能体都进行如步骤202至204所示的处理后,得到后续智能体网格Lt+1。
可选的,所述根据所述极大智能体数组CBestt+1与所述最优智能体数组Bestt中的智能体适应度函数值的数值关系,结合处理代数t与预设代数阈值的关系,选取合适的智能体的数据进行软件模块聚类处理,包括:
如果所述极大智能体数组CBestt+1中智能体的适应度函数值大于所述最优智能体数组Bestt中的智能体的适应度函数值,并且此时t的数值大于预设阈值,则将所述极大智能体数组CBestt+1中存储的智能体的数据赋予最优智能体数组Bestt+1中,根据所述最优智能体数组Bestt+1中的数据进行软件模块聚类处理;
如果所述极大智能体数组CBestt+1中智能体的适应度函数值大于所述最优智能体数组Bestt中的智能体的适应度函数值,但此时所述t的数值不大于所述预设阈值,则令所述t+1,重复步骤三至步骤五的处理过程,直至所述t的数值大于预设阈值,以便将所述极大智能体数组CBestt+1中存储的智能体的数据赋予最优智能体数组Bestt+1中,根据所述最优智能体数组Bestt+1中的数据进行软件模块聚类处理;
如果所述极大智能体数组CBestt+1中智能体的适应度函数值不大于所述最优智能体数组Bestt中的智能体的适应度函数值,则将所述最优智能体数组Bestt中的智能体适应度函数值替换到所述最优智能体数组Bestt+1中,同时将所述最优智能体数组Bestt中的智能体适应度函数值替换到所述极大智能体数组CBestt+1中,此时如果t的数值大于预设阈值,则将所述极大智能体数组CBestt+1中存储的智能体的数据赋予最优智能体数组Bestt+1中,根据所述最优智能体数组Bestt+1中的数据进行软件模块聚类处理;
如果所述极大智能体数组CBestt+1中智能体的适应度函数值不大于所述最优智能体数组Bestt中的智能体的适应度函数值,则将所述最优智能体数组Bestt中的智能体适应度函数值替换到所述最优智能体数组Bestt+1中,同时将所述最优智能体数组Bestt中的智能体适应度函数值替换到所述极大智能体数组CBestt+1中,如果此时所述t的数值不大于所述预设阈值,则令所述t+1,重复所述步骤三至步骤五的处理过程,直至所述t的数值大于预设阈值,将所述极大智能体数组CBestt+1中存储的智能体的数据赋予最优智能体数组Bestt+1中,根据所述最优智能体数组Bestt+1中的数据进行软件模块聚类处理。
本发明提供的技术方案带来的有益效果是:
通过在智能体网格中,参考该网格中具有最大适应度函数值的智能体,对目标智能体进行数据更新,从而令整个智能体网格中的数据得到更新,以便于根据更新后的智能体数据进行有效的软件模块聚类处理,避免了现有技术中仅仅得到局部聚类效果明显,整体聚类效果差这一情况的发生,并且提高了软件模块聚类的稳定性。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的一种基于多智能体进化的软件模块聚类分析方法的流程示意图;
图2是本发明提供的一种基于多智能体进化的软件模块聚类分析方法的智能网格的结构示意图;
图3是本发明提供的一种基于多智能体进化的软件模块聚类分析方法的简要流程示意图;
图4(a)是本发明提供的一种基于多智能体进化的软件模块聚类分析方法对数据集mtunis进行仿真的结果示意图;
图4(b)是本发明提供的一种基于多智能体进化的软件模块聚类分析方法对数据集ispell进行仿真的结果示意图;
图4(c)是本发明提供的一种基于多智能体进化的软件模块聚类分析方法对数据集rcs进行仿真的结果示意图;
图4(d)是本发明提供的一种基于多智能体进化的软件模块聚类分析方法对数据集bison进行仿真的结果示意图;
图4(e)是本发明提供的一种基于多智能体进化的软件模块聚类分析方法对数据集icecast进行仿真的结果示意图;
图4(f)是本发明提供的一种基于多智能体进化的软件模块聚类分析方法对数据集gnupg进行仿真的结果示意图。
具体实施方式
为使本发明的结构和优点更加清楚,下面将结合附图对本发明的结构作进一步地描述。
实施例一
本发明提供了一种基于多智能体进化的软件模块聚类分析方法,如图1所示,所述基于多智能体进化的软件模块聚类分析方法,包括:
步骤一,对待分析的智能体网格进行初始化,得到初始化智能体网格L0,确定与所述初始化智能体网格L0对应的最优智能体数组Best0,在所述初始化智能体网格L0中随机生成带有编码的预设数量的智能体;
步骤二,根据预设的适应度函数,确定所述初始化智能体网格L0中每个所述智能体的适应度数值,选取所述初始化智能体网格L0中的最大适应度函数值,将与所述最大适应度函数值的智能体存入所述最优智能体数组Best0中;
步骤三,选取所述初始化智能体网格L0中任一所述智能体作为第一目标智能体,在所述初始化智能体网格L0中确定具有最大适应度函数值的智能体,并对对所述第一智能体中的数据进行选择性替换,对所述初始化智能体网格L0中的全部所述智能体都进行选择性替换后,得到中间代智能体网格Lt+1/2;
步骤四,选取所述中间代智能体网格Lt+1/2中任一所述智能体作为第二目标智能体和符合预定标准的智能体,将所述符合预定标准的智能体中的数据替换到所述第二智能体中,将所述中间代智能体网格Lt+1/2中的全部智能体都进行完数据替换后,得到后续智能体网格Lt+1;
步骤五,在所述后续智能体网格Lt+1中选取具有最大适应度函数值的智能体作为第三智能体,对所述第三智能体执行如所述步骤三和所述步骤四中的处理过程,从处理后的智能体中选取具有最大适应度函数值的极大适应度函数值智能体,更新所述最优智能体数组Best0,获取此时的最优智能体数组Bestt,并将所述极大适应度函数值智能体存入极大智能体数组CBestt+1中;
步骤六,根据所述极大智能体数组CBestt+1与所述最优智能体数组Bestt中的智能体适应度函数值的数值关系,结合处理代数t与预设代数阈值的关系,选取合适的智能体的数据进行软件模块聚类处理。
在实施中,在进行步骤一的处理步骤前,需要对本发明设计到的参数和名词进行定义,X是一个一维数组,用于记录每个模块所属的聚类;t为大于或等于0的整数,表示第t代;Lt表示第t代智能体网格,Lt+1/2是Lt和Lt+1间的中间代智能体网格,Bestt是L0,L1,…,Lt中最优的智能体,CBestt是Lt中最优的智能体,Li,j表示处在智能体网格第i行、第j列的智能体,Pc为邻域竞争时的选择概率,Pm为邻域变异时的选择概率。这里,L0是第0代初始智能体网格,经过竞争、变异、自学习等算子之后产生L1,即第1代网格,依次类推,CBestt是每一代网格中的最优智能体,Bestt是所有代中保存下来的最优智能体,可以理解为最优的CBestt。
本发明研究的软件模块聚类问题,是指基于软件模块间的连接关系对软件模块系统进行自动划分,使得到的软件系统模块化质量最大,即使得划分后的软件系统具有高内聚、低耦合的特性。这里的智能体网格的结构如图2所示,每个圆形代表一个智能体,每个智能体中的数据代表一类软件模块聚类方法,多个智能体构成一个智能体网格。为了解决现有技术中存在的启发式算法在求解软件模块聚类问题中仅是容易得到局部最优、整体效果并不出众,而遗传算法的稳定性低的技术问题,本发明提供了一种基于多智能体进化的软件模块聚类分析方法,能够使模块化质量最大,具体方案如下:
步骤一,对待分析的智能体网格进行初始化,得到初始化智能体网格L0,确定与所述初始化智能体网格L0对应的最优智能体数组Best0,在所述初始化智能体网格L0中随机生成带有编码的预设数量的智能体;
步骤二,根据预设的适应度函数,确定所述初始化智能体网格L0中每个所述智能体的适应度数值,选取所述初始化智能体网格L0中的最大适应度函数值,将与所述最大适应度函数值的智能体存入所述最优智能体数组Best0中;
步骤三,选取所述初始化智能体网格L0中任一所述智能体作为第一目标智能体,在所述初始化智能体网格L0中确定具有最大适应度函数值的智能体,并对对所述第一智能体中的数据进行选择性替换,对所述初始化智能体网格L0中的全部所述智能体都进行选择性替换后,得到中间代智能体网格Lt+1/2;
步骤四,选取所述中间代智能体网格Lt+1/2中任一所述智能体作为第二目标智能体和符合预定标准的智能体,将所述符合预定标准的智能体中的数据替换到所述第二智能体中,将所述中间代智能体网格Lt+1/2中的全部智能体都进行完数据替换后,得到后续智能体网格Lt+1;
步骤五,在所述后续智能体网格Lt+1中选取具有最大适应度函数值的智能体作为第三智能体,对所述第三智能体执行如所述步骤三和所述步骤四中的处理过程,从处理后的智能体中选取具有最大适应度函数值的极大适应度函数值智能体,更新所述最优智能体数组Best0,获取此时的最优智能体数组Bestt,并将所述极大适应度函数值智能体存入极大智能体数组CBestt+1中;
步骤六,根据所述极大智能体数组CBestt+1与所述最优智能体数组Bestt中的智能体适应度函数值的数值关系,结合处理代数t与预设代数阈值的关系,选取合适的智能体的数据进行软件模块聚类处理。
为了便于理解,下面提供一种本方法的简要处理流程,对应的可以参考图2,以便于对本发明中步骤一至步骤六所述方案的理解。
1、制定相关参数。
2、初始化智能体网格L0,确定最优智能体数组Best0。
3、对初始化智能体网格L0中的智能体进行编码。
4、计算智能体的适应度函数值,得到最大适应度函数值。
5、对智能体网格Lt中的智能体进行邻域竞争算子,得到中间代智能体网格Lt+1/2。
6、对中间代智能体网格Lt+1/2中的智能体邻域变异算子,得到后续智能体网格Lt+1。
7、根据后续智能体网格Lt+1确定CBestt+1。
8、根据CBestt+1数值与Bestt的大小关系进行判定。
9、根据t的数值与预设阈值的大小关系进行判定。
本发明提供一种基于多智能体进化的软件模块聚类分析方法,包括得到初始化智能体网格在所述初始化智能体网格中随机生成预设数量的智能体;在所述初始化智能体网格进行智能体数值的选择性替换以及智能体数据的局部替换,选取具有最大适应度函数值的极大适应度函数值智能体,根据该极大适应度函数值智能体的数据进行软件模块聚类处理。通过在智能体网格中,参考该网格中具有最大适应度函数值的智能体,对目标智能体进行数据更新,从而令整个智能体网格中的数据得到更新,以便于根据更新后的智能体数据进行有效的软件模块聚类处理,避免了现有技术中仅仅得到局部聚类效果明显,整体聚类效果差这一情况的发生,并且提高了软件模块聚类的稳定性。
可选的,所述选取所述初始化智能体网格L0中任一所述智能体作为第一目标智能体,在所述初始化智能体网格L0中确定具有最大适应度函数值的智能体,并对对所述第一智能体中的数据进行选择性替换,对所述初始化智能体网格L0中的全部所述智能体都进行选择性替换后,得到中间代智能体网格Lt+1/2,包括:
步骤101,从所述初始化智能体网格L0中通过随机选取的方式选取任一所述智能体作为第一目标智能体;
步骤102,获取随机概率数值,如果所述随机概率数值小于预设概率数值,则获取随机位置数值;
步骤103,在所述初始化智能体网格L0中确定具有最大适应度函数值的智能体Lmax i,j,在所述智能体Lmax i,j选取与所述随机位置数值对应的数据,将所述数值替换到所述第一目标智能体中的相同位置;
步骤104,对所述初始化智能体网格L0中的全部所述智能体都进行如步骤103所示的选择性替换后,得到中间代智能体网格Lt+1/2。
在实施中,选取初始化智能体网格L0中任一智能体作为待处理对象,接着随机生成与该待处理对象对应的随机概率数值,如果该随机概率数值小于预设概率数值,则进入后续处理步骤,如果该随机概率数值部小于预设概率数值,则需要在初始化智能体网格L0中重新选取其他智能体作为待处理对象。
接着,生成随机位置数值,在具有最大适应度函数值的智能体Lmax i,j中确定与随机位置数值对应的数据,将该数据替换到第一目标智能体中的相同位置,从而得到新的第一目标智能体。
将初始化智能体网格L0中的全部智能体均按上述处理步骤处理后,初始化智能体网格L0也就变为中间代智能体网格Lt+1/2。
该步骤的处理内容从本质上说是对智能体中的数据替换为适应度最大的智能体中的数据,并结合概率选取的方式对初始化智能体网格L0中的智能体的数据进行替换,能够在保证足够大覆盖度的基础上完成对初始化智能体网格L0的更新,得到包含有更新数据的中间代智能体网格Lt+1/2,从而便于后续步骤处理。
可选的,所述选取所述中间代智能体网格Lt+1/2中任一所述智能体作为第二目标智能体和符合预定标准的智能体,将所述符合预定标准的智能体中的数据替换到所述第二智能体中,将所述中间代智能体网格Lt+1/2中的全部智能体都进行完数据替换后,得到后续智能体网格Lt+1,包括:
步骤201,从所述中间代智能体网格Lt+1/2中通过随机选取的方式选取任一所述智能体作为第二目标智能体;
步骤202,获取随机概率数值,如果所述随机概率数值小于预设变异数值,则产生随机智能体编号;
步骤203,从所述中间代智能体网格Lt+1/2中选取与所述随机智能体编号对应的智能体的邻接智能体;
步骤204,将所述邻接智能体中的数据替换到所述与所述随机智能体编号对应的智能体中;
步骤205,对所述中间代智能体网格Lt+1/2中的全部所述智能体都进行如步骤202至204所示的处理后,得到后续智能体网格Lt+1。
在实施中,在前一步骤中通过将智能体的数据进行替换得到中间代智能体网格Lt+1/2以后,接着同样是随机选取中间代智能体网格Lt+1/2中的任一智能体作为第二目标智能体。
接着,获取随机概率数值,如果该随机概率数值小于预设变异数值,则产生随机智能体编号,以便于根据该编号在中间代智能体网格Lt+1/2中确定对应的智能体的邻接智能体,如果该随机概率数值不小于预设变异数值,则重新生成随机概率数值。
在根据该智能体编号确定了智能体后,将该智能体中的数据复制到与所述随机智能体编号对应的智能体中。
按上述步骤将中间代智能体网格Lt+1/2中的全部智能体的数据进行替换,得到由替换数据后智能体构成的后续智能体网格Lt+1,从而便于后续步骤处理。
可选的,所述根据所述极大智能体数组CBestt+1与所述最优智能体数组Bestt中的智能体适应度函数值的数值关系,结合处理代数t与预设代数阈值的关系,选取合适的智能体的数据进行软件模块聚类处理,包括:
如果所述极大智能体数组CBestt+1中智能体的适应度函数值大于所述最优智能体数组Bestt中的智能体的适应度函数值,并且此时t的数值大于预设阈值,则将所述极大智能体数组CBestt+1中存储的智能体的数据赋予最优智能体数组Bestt+1中,根据所述最优智能体数组Bestt+1中的数据进行软件模块聚类处理;
如果所述极大智能体数组CBestt+1中智能体的适应度函数值大于所述最优智能体数组Bestt中的智能体的适应度函数值,但此时所述t的数值不大于所述预设阈值,则令所述t+1,重复步骤三至步骤五的处理过程,直至所述t的数值大于预设阈值,以便将所述极大智能体数组CBestt+1中存储的智能体的数据赋予最优智能体数组Bestt+1中,根据所述最优智能体数组Bestt+1中的数据进行软件模块聚类处理;
如果所述极大智能体数组CBestt+1中智能体的适应度函数值不大于所述最优智能体数组Bestt中的智能体的适应度函数值,则将所述最优智能体数组Bestt中的智能体适应度函数值替换到所述最优智能体数组Bestt+1中,同时将所述最优智能体数组Bestt中的智能体适应度函数值替换到所述极大智能体数组CBestt+1中,此时如果t的数值大于预设阈值,则将所述极大智能体数组CBestt+1中存储的智能体的数据赋予最优智能体数组Bestt+1中,根据所述最优智能体数组Bestt+1中的数据进行软件模块聚类处理;
如果所述极大智能体数组CBestt+1中智能体的适应度函数值不大于所述最优智能体数组Bestt中的智能体的适应度函数值,则将所述最优智能体数组Bestt中的智能体适应度函数值替换到所述最优智能体数组Bestt+1中,同时将所述最优智能体数组Bestt中的智能体适应度函数值替换到所述极大智能体数组CBestt+1中,如果此时所述t的数值不大于所述预设阈值,则令所述t+1,重复所述步骤三至步骤五的处理过程,直至所述t的数值大于预设阈值,将所述极大智能体数组CBestt+1中存储的智能体的数据赋予最优智能体数组Bestt+1中,根据所述最优智能体数组Bestt+1中的数据进行软件模块聚类处理。
在实施中,在得到所述极大智能体数组CBestt后,需要结合所述最优智能体数组Best0中存储的智能体数据,来确定最终进行软件模块聚类分析的依据即待参考的智能体数据。
为了得到该智能体数据,需要确定符合要求的智能体,而为了确定该智能体,需要考虑的有所述极大智能体数组CBestt中智能体的适应度函数值与所述最优智能体数组Best0中的智能体适应度函数值的大小关系,以及此时t的数值大于预设阈值。
根据上述两个标准取值的不同,共分为四种不同的结果:
如果所述极大智能体数组CBestt+1中智能体的适应度函数值大于所述最优智能体数组Bestt中的智能体的适应度函数值,并且此时t的数值大于预设阈值,则将所述极大智能体数组CBestt+1中存储的智能体的数据赋予最优智能体数组Bestt+1中,根据所述最优智能体数组Bestt+1中的数据进行软件模块聚类处理;
如果所述极大智能体数组CBestt+1中智能体的适应度函数值大于所述最优智能体数组Bestt中的智能体的适应度函数值,但此时所述t的数值不大于所述预设阈值,则令所述t+1,重复步骤三至步骤五的处理过程,直至所述t的数值大于预设阈值,以便将所述极大智能体数组CBestt+1中存储的智能体的数据赋予最优智能体数组Bestt+1中,根据所述最优智能体数组Bestt+1中的数据进行软件模块聚类处理;
如果所述极大智能体数组CBestt+1中智能体的适应度函数值不大于所述最优智能体数组Bestt中的智能体的适应度函数值,则将所述最优智能体数组Bestt中的智能体适应度函数值替换到所述最优智能体数组Bestt+1中,同时将所述最优智能体数组Bestt中的智能体适应度函数值替换到所述极大智能体数组CBestt+1中,此时如果t的数值大于预设阈值,则将所述极大智能体数组CBestt+1中存储的智能体的数据赋予最优智能体数组Bestt+1中,根据所述最优智能体数组Bestt+1中的数据进行软件模块聚类处理;
如果所述极大智能体数组CBestt+1中智能体的适应度函数值不大于所述最优智能体数组Bestt中的智能体的适应度函数值,则将所述最优智能体数组Bestt中的智能体适应度函数值替换到所述最优智能体数组Bestt+1中,同时将所述最优智能体数组Bestt中的智能体适应度函数值替换到所述极大智能体数组CBestt+1中,如果此时所述t的数值不大于所述预设阈值,则令所述t+1,重复所述步骤三至步骤五的处理过程,直至所述t的数值大于预设阈值,将所述极大智能体数组CBestt+1中存储的智能体的数据赋予最优智能体数组Bestt+1中,根据所述最优智能体数组Bestt+1中的数据进行软件模块聚类处理。
根据上述对四种结果的描述,可以看出,除了需要满足极大智能体数组CBestt中智能体的适应度函数值大于所述最优智能体数组Best0中的智能体适应度函数值,以及此时t的数值大于预设阈值这一情况,其他条件下或许需要重复进行前述步骤直至满足对应标准,或许需要将CBestt中智能体的适应度函数值与最优智能体数组Best0中的智能体适应度函数值进行交换,以便于最终根据Bestt+1中保存的智能体的数据进行软件模块的聚类处理。
本发明提供一种基于多智能体进化的软件模块聚类分析方法,包括得到初始化智能体网格在所述初始化智能体网格中随机生成预设数量的智能体;在所述初始化智能体网格进行智能体数值的选择性替换以及智能体数据的局部替换,选取具有最大适应度函数值的极大适应度函数值智能体,根据该极大适应度函数值智能体的数据进行软件模块聚类处理。通过在智能体网格中,参考该网格中具有最大适应度函数值的智能体,对目标智能体进行数据更新,从而令整个智能体网格中的数据得到更新,以便于根据更新后的智能体数据进行有效的软件模块聚类处理,避免了现有技术中仅仅得到局部聚类效果明显,整体聚类效果差这一情况的发生,并且提高了软件模块聚类的稳定性。
本发明的效果可以通过以下仿真实验进行验证:
1.实验运行环境和条件设置
实验运行的环境:处理器为Intel(R)Core(TM)i3CPU5503.2GHz3.19GHz,内存为3.05GB,硬盘为1T,操作系统为Microsoftwindows7,编程环境为VisualC++6.0。
实验条件设置:实验中测试了17个常用的实际生活中的软件系统数据集。如下表1所示,这17个问题包括无权值数据集和带权值数据集,规模从20个模块到198个模块,能够测试算法对大规模问题的性能。
表117个常用的实际生活中的软件系统数据集包含的具体内容
这里摘选出mtunis、ispell、rcs、bison、icecast、gnupg六个数据集的仿真结果,详细的仿真结果分别如图4(a)、图4(b)、图4(c)、图4(d)、图4(e)、图4(f)所示。其中的节点表示软件系统的一个函数或者一个资源文件等,节点之间的有向边表示它们之间的单向调用关系。
本发明中测试了单目标软件模块聚类问题的实例集。实验中智能体网格的大小Lsize×Lsize设计为8×8,最大进化代数为1000,学习时的智能体网格大小sLssize×sLssize设计为4×4,自学习的时候智能体的最大进化代数为20,邻域竞争算子的概率Pc为0.5,邻域变异算子的概率Pm为0.1。
2.实验内容和结果分析
本实验采用基于多智能体进化算法的软件模块聚类分析方法对17个实际生活中的软件系统进行了测试,考虑到算法的随机性,求解问题集中的每个问题时,重复运行30次,其测试结果如表1所示,每个问题运行一次时的模块化质量(modularizationquality,即MQ)评估的计算方式如下:
对于第l个聚类,
其中,对于无权网络,i表示类内边的数量,j表示类间边的数量;对于有权网络,i表示类内边的的权值之和,j表示类间边的权值之和。则MQ可以通过MF计算如下:
其中k为聚类数。
为了说明本发明的算法的性能,下面将本发明的算法求解17个实际生活中的软件系统数据集与已有的GGA、GNE、MCA、ECA算法进行比较,其中,GGA与GNE为单目标算法,MCA与ECA为多目标算法,比较的结果如表2所示。
表2四种方法的对比结果
在表2中,针对每一个数据集最好的结果数据用加粗的形式标出。可以看出,对于无权网络的7个问题中,本发明研究的算法有6个问题的效果优于单目标算法GGA和GNE,对于有权网络的10个问题,除了inn,mod_ssl,ncurses这三个问题之外,本发明得到的效果明显优于GGA和GNE。而且,本发明研究的算法得到的实验结果的标准差明显低于GGA和GNE,,这意味本发明的稳定性较好。与多目标算法MCA相比,本发明研究的算法在MQ的平均值和标准差方面均取得更好的结果,而对比另一个多目标算法ECA,除了rcs,grappa,inn这三个问题之外,本发明得到的实验结果从MQ的平均值和标准差方面也明显略胜一筹。
在GGA、GNE、ECA、MCA这四种算法中,ECA和MCA的效果显然更接近于本发明提出的算法,为了进一步说明本发明的算法的有效性,下面将本发明的算法的评价次数与ECA和MCA算法对比,比较的结果如表3所示。
数据集 | MAEA | ECA/MCA | 数据集 | MAEA | ECA/MCA |
mtunis | 300000 | 800000 | inn | 13550000 | 16200000 |
ispell | 420000 | 1152000 | bitchx | 17560000 | 18818000 |
rcs | 550000 | 1682000 | xntp | 22440000 | 24642000 |
bison | 1180000 | 2738000 | exim | 25450000 | 27848000 |
grappa | 7850000 | 14792000 | mod_ssl | 28540000 | 36450000 |
bunch | 18320000 | 26912000 | ncurses | 32560000 | 38088000 |
incl | 45580000 | 60552000 | lynx | 39890000 | 43808000 |
icecast | 6830000 | 7200000 | nmh | 65430000 | 78408000 |
gnupg | 14780000 | 15488000 |
由表3中数据可以看出,本发明提出的算法的评价次数明显少于当前领域最好的算法ECA/MCA,这说明了本发明在得到最优模块化质量MQ的值的情况下,又能保证所使用的评价次数最少。综上所述,本发明是一种有效的软件模块聚类方法,是目前存在的效果最好的求解软件模块聚类问题的方法。本发明不是更好的,但用基于多智能体进化算法求解软件模块聚类问题,这是一个创新点,对于发展其他算法求解软件模块聚类问题有很好的指导作用。
需要说明的是:上述实施例提供的一种基于多智能体进化的软件模块聚类分析方法进行软件模块聚类的实施例,仅作为该软件模块聚类方法中在实际应用中的说明,还可以根据实际需要而将上述软件模块聚类方法在其他应用场景中使用,其具体实现过程类似于上述实施例,这里不再赘述。
上述实施例中的各个序号仅仅为了描述,不代表各部件的组装或使用过程中的先后顺序。
以上所述仅为本发明的实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种基于多智能体进化的软件模块聚类分析方法,其特征在于,所述基于多智能体进化的软件模块聚类分析方法,包括:
步骤一,对待分析的智能体网格进行初始化,得到初始化智能体网格L0,确定与所述初始化智能体网格L0对应的最优智能体数组Best0,在所述初始化智能体网格L0中随机生成带有编码的预设数量的智能体;
步骤二,根据预设的适应度函数,确定所述初始化智能体网格L0中每个所述智能体的适应度数值,选取所述初始化智能体网格L0中的最大适应度函数值,将与所述最大适应度函数值的智能体存入所述最优智能体数组Best0中;
步骤三,选取所述初始化智能体网格L0中任一所述智能体作为第一目标智能体,在所述初始化智能体网格L0中确定具有最大适应度函数值的智能体,并对对所述第一智能体中的数据进行选择性替换,对所述初始化智能体网格L0中的全部所述智能体都进行选择性替换后,得到中间代智能体网格Lt+1/2;
步骤四,选取所述中间代智能体网格Lt+1/2中任一所述智能体作为第二目标智能体和符合预定标准的智能体,将所述符合预定标准的智能体中的数据替换到所述第二智能体中,将所述中间代智能体网格Lt+1/2中的全部智能体都进行完数据替换后,得到后续智能体网格Lt+1;
步骤五,在所述后续智能体网格Lt+1中选取具有最大适应度函数值的智能体作为第三智能体,对所述第三智能体执行如所述步骤三和所述步骤四中的处理过程,从处理后的智能体中选取具有最大适应度函数值的极大适应度函数值智能体,更新所述最优智能体数组Best0,获取此时的最优智能体数组Bestt,并将所述极大适应度函数值智能体存入极大智能体数组CBestt+1中;
步骤六,根据所述极大智能体数组CBestt+1与所述最优智能体数组Bestt中的智能体适应度函数值的数值关系,结合处理代数t与预设代数阈值的关系,选取合适的智能体的数据进行软件模块聚类处理。
2.根据基于多智能体进化的软件模块聚类分析方法,其特征在于,所述选取所述初始化智能体网格L0中任一所述智能体作为第一目标智能体,在所述初始化智能体网格L0中确定具有最大适应度函数值的智能体,并对对所述第一智能体中的数据进行选择性替换,对所述初始化智能体网格L0中的全部所述智能体都进行选择性替换后,得到中间代智能体网格Lt+1/2,包括:
步骤101,从所述初始化智能体网格L0中通过随机选取的方式选取任一所述智能体作为第一目标智能体;
步骤102,获取随机概率数值,如果所述随机概率数值小于预设概率数值,则获取随机位置数值;
步骤103,在所述初始化智能体网格L0中确定具有最大适应度函数值的智能体Lmax i,j,在所述智能体Lmax i,j选取与所述随机位置数值对应的数据,将所述数值替换到所述第一目标智能体中的相同位置;
步骤104,对所述初始化智能体网格L0中的全部所述智能体都进行如步骤103所示的选择性替换后,得到中间代智能体网格Lt+1/2。
3.根据基于多智能体进化的软件模块聚类分析方法,其特征在于,所述选取所述中间代智能体网格Lt+1/2中任一所述智能体作为第二目标智能体和符合预定标准的智能体,将所述符合预定标准的智能体中的数据替换到所述第二智能体中,将所述中间代智能体网格Lt+1/2中的全部智能体都进行完数据替换后,得到后续智能体网格Lt+1,包括:
步骤201,从所述中间代智能体网格Lt+1/2中通过随机选取的方式选取任一所述智能体作为第二目标智能体;
步骤202,获取随机概率数值,如果所述随机概率数值小于预设变异数值,则产生随机智能体编号;
步骤203,从所述中间代智能体网格Lt+1/2中选取与所述随机智能体编号对应的智能体的邻接智能体;
步骤204,将所述邻接智能体中的数据替换到所述与所述随机智能体编号对应的智能体中;
步骤205,对所述中间代智能体网格Lt+1/2中的全部所述智能体都进行如步骤202至204所示的处理后,得到后续智能体网格Lt+1。
4.根据基于多智能体进化的软件模块聚类分析方法,其特征在于,所述根据所述极大智能体数组CBestt+1与所述最优智能体数组Bestt中的智能体适应度函数值的数值关系,结合处理代数t与预设代数阈值的关系,选取合适的智能体的数据进行软件模块聚类处理,包括:
如果所述极大智能体数组CBestt+1中智能体的适应度函数值大于所述最优智能体数组Bestt中的智能体的适应度函数值,并且此时t的数值大于预设阈值,则将所述极大智能体数组CBestt+1中存储的智能体的数据赋予最优智能体数组Bestt+1中,根据所述最优智能体数组Bestt+1中的数据进行软件模块聚类处理;
如果所述极大智能体数组CBestt+1中智能体的适应度函数值大于所述最优智能体数组Bestt中的智能体的适应度函数值,但此时所述t的数值不大于所述预设阈值,则令所述t+1,重复步骤三至步骤五的处理过程,直至所述t的数值大于预设阈值,以便将所述极大智能体数组CBestt+1中存储的智能体的数据赋予最优智能体数组Bestt+1中,根据所述最优智能体数组Bestt+1中的数据进行软件模块聚类处理;
如果所述极大智能体数组CBestt+1中智能体的适应度函数值不大于所述最优智能体数组Bestt中的智能体的适应度函数值,则将所述最优智能体数组Bestt中的智能体适应度函数值替换到所述最优智能体数组Bestt+1中,同时将所述最优智能体数组Bestt中的智能体适应度函数值替换到所述极大智能体数组CBestt+1中,此时如果t的数值大于预设阈值,则将所述极大智能体数组CBestt+1中存储的智能体的数据赋予最优智能体数组Bestt+1中,根据所述最优智能体数组Bestt+1中的数据进行软件模块聚类处理;
如果所述极大智能体数组CBestt+1中智能体的适应度函数值不大于所述最优智能体数组Bestt中的智能体的适应度函数值,则将所述最优智能体数组Bestt中的智能体适应度函数值替换到所述最优智能体数组Bestt+1中,同时将所述最优智能体数组Bestt中的智能体适应度函数值替换到所述极大智能体数组CBestt+1中,如果此时所述t的数值不大于所述预设阈值,则令所述t+1,重复所述步骤三至步骤五的处理过程,直至所述t的数值大于预设阈值,将所述极大智能体数组CBestt+1中存储的智能体的数据赋予最优智能体数组Bestt+1中,根据所述最优智能体数组Bestt+1中的数据进行软件模块聚类处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510518314.5A CN105117224A (zh) | 2015-08-21 | 2015-08-21 | 一种基于多智能体进化的软件模块聚类分析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510518314.5A CN105117224A (zh) | 2015-08-21 | 2015-08-21 | 一种基于多智能体进化的软件模块聚类分析方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105117224A true CN105117224A (zh) | 2015-12-02 |
Family
ID=54665226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510518314.5A Pending CN105117224A (zh) | 2015-08-21 | 2015-08-21 | 一种基于多智能体进化的软件模块聚类分析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105117224A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105787180A (zh) * | 2016-02-29 | 2016-07-20 | 武汉大学 | 基于Map-Reduce与多智能体模型的大规模人群行为演化分析方法 |
CN106610616A (zh) * | 2016-11-30 | 2017-05-03 | 交控科技股份有限公司 | 一种基于大数据分析的性能自动调优方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104537660A (zh) * | 2014-12-25 | 2015-04-22 | 西安电子科技大学 | 基于多目标智能体进化聚类算法的图像分割方法 |
-
2015
- 2015-08-21 CN CN201510518314.5A patent/CN105117224A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104537660A (zh) * | 2014-12-25 | 2015-04-22 | 西安电子科技大学 | 基于多目标智能体进化聚类算法的图像分割方法 |
Non-Patent Citations (3)
Title |
---|
WEICAI ZHONG 等: "A Multiagent Genetic Algorithm for Global Numerical Optimization", 《IEEE TRANSACTIONS ON SYSTEMS, MAN, AND CYBERNETICS-PART B: CYBERNETICS》 * |
钟伟才 等: "多智能体遗传算法用于线性系统逼近", 《自动化学报》 * |
钟伟才 等: "多智能体遗传算法用于超高维函数优化", 《自然科学进展》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105787180A (zh) * | 2016-02-29 | 2016-07-20 | 武汉大学 | 基于Map-Reduce与多智能体模型的大规模人群行为演化分析方法 |
CN106610616A (zh) * | 2016-11-30 | 2017-05-03 | 交控科技股份有限公司 | 一种基于大数据分析的性能自动调优方法及装置 |
CN106610616B (zh) * | 2016-11-30 | 2019-12-03 | 交控科技股份有限公司 | 一种基于大数据分析的性能自动调优方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Kumari et al. | Software module clustering using a hyper-heuristic based multi-objective genetic algorithm | |
Beheshti et al. | Binary accelerated particle swarm algorithm (BAPSA) for discrete optimization problems | |
CN105931046A (zh) | 一种可疑交易节点集合侦测方法及装置 | |
Murugan | Modified particle swarm optimisation with a novel initialisation for finding optimal solution to the transmission expansion planning problem | |
Nebro et al. | Optimal antenna placement using a new multi-objective CHC algorithm | |
CN105388402A (zh) | 基于参数优化svm算法的交联电缆局部放电模式识别方法 | |
Mohi-Aldeen et al. | Application of Negative Selection Algorithm (NSA) for test data generation of path testing | |
CN103440275A (zh) | 一种基于普利姆的k均值聚类方法 | |
Kumari et al. | Software module clustering using a fast multi-objective hyper-heuristic evolutionary algorithm | |
Zhang et al. | Automatic design of deterministic and non-halting membrane systems by tuning syntactical ingredients | |
CN104899657A (zh) | 社团融合事件的预测方法 | |
CN105117224A (zh) | 一种基于多智能体进化的软件模块聚类分析方法 | |
Toğan et al. | Time-cost trade-off optimization with a new initial population approach | |
Janssen et al. | Möbius evolver: Competitive exploration of urban massing strategies | |
CN112416588B (zh) | 一种基于随机森林算法的资源分配方法 | |
Clearwater et al. | A rule-learning program in high energy physics event classification | |
CN106022936A (zh) | 适用论文合作网络的基于社团结构的影响最大化算法 | |
CN103916953B (zh) | 目标定位的方法、系统及检测节点 | |
CN102663230B (zh) | 一种基于遗传算法的土地资源评价因子级别划分方法 | |
Arasteh et al. | Düzen: generating the structural model from the software source code using shuffled frog leaping algorithm | |
Pattanaik et al. | Opposition-based differential evolution for hydrothermal power system | |
CN108267683A (zh) | 一种fpga自测的方法及装置 | |
CN113206712B (zh) | 一种软件无线电符合性测试方法及系统 | |
Hou et al. | Research on dynamic assignment of satellite communication tasks based on GA algorithm | |
Yang et al. | A hybrid evolutionary algorithm for finding pareto optimal set in multi-objective optimization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20151202 |
|
RJ01 | Rejection of invention patent application after publication |