一种基于多智能体进化的软件模块聚类分析方法

文档序号:9396690阅读:342来源:国知局
一种基于多智能体进化的软件模块聚类分析方法
【技术领域】
[0001] 本发明属于软件工程领域,特别涉及一种基于多智能体进化的软件模块聚类分析 方法。
【背景技术】
[0002] 软件模块聚类(software module clustering)是指基于软件模块间的连接关系 对软件模块系统进行自动划分并得到模块化较好的聚类结果。软件模块聚类对软件系统设 计,维护和发展的过程起着至关重要的作用,其结果对软件系统的设计和维护起着重要的 指导作用。随着商业和生活的需求,软件系统的功能越来越强大,同时软件系统的大小也随 之上升,这使得软件模块聚类的作用尤为重要。针对软件模块聚类问题,已有许多国内外学 者提出多种不同的优化算法,包括爬山法,遗传算法,模拟退火算法等。爬山法的基本操作 是从一个随机的划分开始,不断地重复搜索其邻域中更好的划分,直至其邻域中没有找到 更优的目标适应度函数值对应的划分为止。由于它的灵活简单,并能够快速地找到问题的 最优解的特点,因而受到广泛的应用。
[0003] 然而,爬山法的缺点是在优化过程中容易陷入局部最优,使得最终得到的最优划 分并不是最好的结果,为了避免这个问题,很多学者开始使用进化算法来解决软件模块聚 类问题,其中以遗传算法的使用较为常见,遗传算法的实现主要通过设计选择、交叉、变异 这三个主要的操作算子,来对解空间进行搜索,从而得到最优的适应度函数值,最后将最优 的适应度函数值所对应的解决方法作为最终的解决方法。虽然遗传算法能够有效地克服容 易陷入局部最优的缺点,但是传统的遗传算法在产生后代的选择操作中是依据个体的适应 度进行全局选取,这显然不符合自然选择的规律。在实际自然选择的过程中,个体间的互动 仅发生在一定的局部环境中,即每个个体仅能与周围的个体进行交互。
[0004] 在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
[0005] 对于软件模块聚类问题已研究的算法大都采用启发式算法和传统的遗传算法。现 有的启发式算法在求解软件模块聚类问题中仅是容易得到局部最优、整体效果并不出众, 而遗传算法的稳定性低。

【发明内容】

[0006] 为了解决现有技术的问题,本发明提供了一种基于多智能体进化的软件模块聚类 分析方法,所述基于多智能体进化的软件模块聚类分析方法,包括:
[0007] 步骤一,对待分析的智能体网格进行初始化,得到初始化智能体网格L°,确定与所 述初始化智能体网格1^°对应的最优智能体数组Best °,在所述初始化智能体网格L°中随机 生成带有编码的预设数量的智能体;
[0008] 步骤二,根据预设的适应度函数,确定所述初始化智能体网格1^°中每个所述智能 体的适应度数值,选取所述初始化智能体网格1^°中的最大适应度函数值,将与所述最大适 应度函数值的智能体存入所述最优智能体数组Best°* ;
[0009] 步骤三,选取所述初始化智能体网格1^°中任一所述智能体作为第一目标智能体, 在所述初始化智能体网格L°中确定具有最大适应度函数值的智能体,并对对所述第一智能 体中的数据进行选择性替换,对所述初始化智能体网格L°中的全部所述智能体都进行选择 性替换后,得到中间代智能体网格Lt+1/2;
[0010] 步骤四,选取所述中间代智能体网格1^+1/2中任一所述智能体作为第二目标智能体 和符合预定标准的智能体,将所述符合预定标准的智能体中的数据替换到所述第二智能体 中,将所述中间代智能体网格Lt+1/2中的全部智能体都进行完数据替换后,得到后续智能体 网格Lt+1;
[0011] 步骤五,在所述后续智能体网格Lt+1中选取具有最大适应度函数值的智能体作为 第三智能体,对所述第三智能体执行如所述步骤三和所述步骤四中的处理过程,从处理后 的智能体中选取具有最大适应度函数值的极大适应度函数值智能体,更新所述最优智能体 数组Best°,获取此时的最优智能体数组Bestt,并将所述极大适应度函数值智能体存入极 大智能体数组CBestt+1中;
[0012] 步骤六,根据所述极大智能体数组CBestt+1与所述最优智能体数组Best 的智能 体适应度函数值的数值关系,结合处理代数t与预设代数阈值的关系,选取合适的智能体 的数据进行软件模块聚类处理。
[0013] 可选的,所述选取所述初始化智能体网格1^°中任一所述智能体作为第一目标智能 体,在所述初始化智能体网格L°中确定具有最大适应度函数值的智能体,并对对所述第一 智能体中的数据进行选择性替换,对所述初始化智能体网格L°中的全部所述智能体都进行 选择性替换后,得到中间代智能体网格Lt+1/2,包括:
[0014] 步骤101,从所述初始化智能体网格L°中通过随机选取的方式选取任一所述智能 体作为第一目标智能体;
[0015] 步骤102,获取随机概率数值,如果所述随机概率数值小于预设概率数值,则获取 随机位置数值;
[0016] 步骤103,在所述初始化智能体网格L°中确定具有最大适应度函数值的智能体 Lmaxli ,,在所述智能体Lma\ ,选取与所述随机位置数值对应的数据,将所述数值替换到所述 第一目标智能体中的相同位置;
[0017] 步骤104,对所述初始化智能体网格L°中的全部所述智能体都进行如步骤103所 示的选择性替换后,得到中间代智能体网格Lt+1/2。
[0018] 可选的,所述选取所述中间代智能体网格Lt+1/2中任一所述智能体作为第二目标智 能体和符合预定标准的智能体,将所述符合预定标准的智能体中的数据替换到所述第二智 能体中,将所述中间代智能体网格Lt+1/2中的全部智能体都进行完数据替换后,得到后续智 能体网格Lt+1,包括:
[0019] 步骤201,从所述中间代智能体网格Lt+1/2中通过随机选取的方式选取任一所述智 能体作为第二目标智能体;
[0020] 步骤202,获取随机概率数值,如果所述随机概率数值小于预设变异数值,则产生 随机智能体编号;
[0021] 步骤203,从所述中间代智能体网格Lt+1/2中选取与所述随机智能体编号对应的智 能体的邻接智能体;
[0022] 步骤204,将所述邻接智能体中的数据替换到所述与所述随机智能体编号对应的 智能体中;
[0023] 步骤205,对所述中间代智能体网格Lt+1/2中的全部所述智能体都进行如步骤202 至204所示的处理后,得到后续智能体网格Lt+1。
[0024] 可选的,所述根据所述极大智能体数组CBestt+1与所述最优智能体数组Best t中的 智能体适应度函数值的数值关系,结合处理代数t与预设代数阈值的关系,选取合适的智 能体的数据进行软件模块聚类处理,包括:
[0025] 如果所述极大智能体数组CBestt+1中智能体的适应度函数值大于所述最优智能体 数组Bestt中的智能体的适应度函数值,并且此时t的数值大于预设阈值,则将所述极大智 能体数组CBestt+1中存储的智能体的数据赋予最优智能体数组Best t+1中,根据所述最优智 能体数组Bestt+1中的数据进行软件模块聚类处理;
[0026] 如果所述极大智能体数组CBestt+1中智能体的适应度函数值大于所述最优智能体 数组Bestt中的智能体的适应度函数值,但此时所述t的数值不大于所述预设阈值,则令所 述t+Ι,重复步骤三至步骤五的处理过程,直至所述t的数值大于预设阈值,以便将所述极 大智能体数组CBestt+1中存储的智能体的数据赋予最优智能体数组Best t+1中,根据所述最 优智能体数组Bestt+1中的数据进行软件模块聚类处理;
[0027] 如果所述极大智能体数组CBestt+1中智能体的适应度函数值不大于所述最优智能 体数组Bestt中的智能体的适应度函数值,则将所述最优智能体数组Best 的智能体适应 度函数值替换到所述最优智能体数组Bestt+1中,同时将所述最优智能体数组Best 1中的智 能体适应度函数值替换到所述极大智能体数组CBestt+1中,此时如果t的数值大于预设阈 值,则将所述极大智能体数组CBestt+1中存储的智能体的数据赋予最优智能体数组Best t+1中,根据所述最优智能体数组Bestt+1中的数据进行软件模块聚类处理;
[0028] 如果所述极大智能体数组CBestt+1中智能体的适应度函数值不大于所述最优智能
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1