[发明专利]一种基于Spark平台的多目标进化社区检测方法有效
申请号: | 201710371317.X | 申请日: | 2017-05-19 |
公开(公告)号: | CN107276843B | 公开(公告)日: | 2020-02-07 |
发明(设计)人: | 公茂果;陈兰强;秦晓雷;王善峰 | 申请(专利权)人: | 西安电子科技大学 |
主分类号: | H04L12/26 | 分类号: | H04L12/26;G06Q50/00 |
代理公司: | 61200 西安通大专利代理有限责任公司 | 代理人: | 徐文权 |
地址: | 710065 陕*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 spark 平台 多目标 进化 社区 检测 方法 | ||
1.一种基于Spark平台的多目标进化社区检测方法,其特征在于,包括以下步骤:
步骤1:读入待社区划分的网络邻接表,并初始化种群,利用节点数据集count函数,求出网络节点总数记为|V|;网络邻接表是网络数据的一种存储方式,邻接表中节点成对存在,表示这对节点有边连接;具体方法如下:
步骤1-0:利用Hadoop分布式平台的文件管理,将待检测的网络邻接表保存到分布式文件存储系统;
步骤1-1:利用Spark平台的图模型库GraphX通过读取网络的邻接表创建graph网络对象;
步骤1-2:利用标签传播算法,初始化网络的节点属性,并利用随机函数生成种群,种群大小记为popSize;
步骤1-3:利用节点数据集count函数求出网络节点总数;
需要说明的是:graph对象包含VertexRDD[VertexId,VD]节点数据集、EdgeRDD[ED]网络边数据集;其中VertexId即节点的id、VD为节点的属性,且成对存在,ED是网络边的属性;初始化后,节点的社区划分存储在节点属性VD中;对于种群而言,节点属性VD被扩展为数组,数组长度为种群中个体的数量,该数组记为popArray;
步骤2:每个节点收集由该节点参与构成的三角结构信息,以及该节点的度;具体方法如下:
步骤2-0:利用图模型GraphX的消息分发聚合机制收集节点的相邻节点id,组成相邻节点id表,记为ListIds;
步骤2-1:求步骤2-0中得到的ListIds长度,即得到该节点的度d,并存入节点属性VD中;
步骤2-1:在利用消息分发聚合机制,检查消息分发的源节点与目标节的ListIds是否有相同的id,及是否有相同的邻接点,有则表示能够构成三角结构,向目标节点发送该相邻节点的id,在目标节点的节点属性VD中存入该三角结构,节点能够组成的三角结构记为ListTriangles;
步骤2-2:经以上步骤,节点属性VD变为三元组:(popArray,d,ListTriangles);popArray表示种群在该节点的社区划分,d为节点的度,ListTriangles为该节点可组成的三角结构;
步骤3:计算种群每个个体的目标函数值,复制初始种群中的个体到当前个体的最好社区划分记录,记为Pbest,并记迭代次数i=0;目标函数公式如下:
其中i是节点编号,V是网络中所有节点的集合,Sj是V的一个子集来代表一个社区,t(i,S)表示节点i与社区S内的点构成的三角结构数量,d表示节点i的度,|V|为集合V中节点的个数;特别的,公式(1)中节点i是社区Sj中与其他社区相连接的点;
公式(1)用来表示社区间的联系紧密度,其值越大代表社区间的联系越稀疏;公式(2)表示社区内节点的联系紧密度,其值越大代表社区内节点联系越紧密;
所述步骤3的具体方法如下:
步骤3-0:利用图模型GraphX的消息分发聚合机制收集相邻节点的popArray,按位找出该节点i在其所属社区S中可构成的三角数t(i,S);
步骤3-1:判断节点i是否与其他社区的节点相连,若果是则onBound=1,否则onBound=0;
步骤3-2:在该节点为每一个个体,分别计算记为td,如果在步骤3-1被onBound=1,计算记为tv,否则tv=0;
步骤3-3:利用reduce函数对节点数据集的td、tv以及onBound进行求和,onBound的和记为M;
步骤3-4:对于每个个体,
步骤3-5:复制初始种群中的个体到个体当前个体的最好社区划分记录,记为Pbest,记迭代次数i=0;
步骤4:通过交叉变异产生新个体,并计算新个体的目标函数值,具体方法如下:
步骤4-0:将步骤3中求出的目标函数值,利用广播的方式,广播到每一个分布式集群的子机上;
步骤4-1:在种群中正负5个范围内,随机选出每个个体的Gbest;
步骤4-2:对于每个节点,取0到1内的随机值,与交叉概率比较,如果小于则执行步骤4-3,如果大于则跳转到步骤4-4;
步骤4-3:根据公式(3),为每个个体计算Pbest及Gbest的边界交叉聚合d的值gbip,分别记为PbestG,GbestG;
步骤4-3-1:取0到1内的随机值,与PbestG/(PbestG+GbestG)比较,如果大于则将PbestG的社区id赋给该个体,否则将Gbest的社区id赋给该个体;
步骤4-4:取0到1内的随机值,与变异概率比较,如果小于则个体保持不变,否则该节点在popArray中选取一个需要变异的个体;
步骤4-4-1:如果该节点有需要变异的个体,则利用消息分发聚合机制,收集相邻节点的在该个体处的社区划分;
步骤4-4-2:从收集到的社区划分中随机选出一个赋给该节点的变异个体;
步骤4-5:利用步骤3中求目标函数值的方法,求出新生的个体函数值;
步骤5:通过基于边界交叉方式的分解策略来选择新一代种群,更新当前个体的最好社区划分记录;
步骤6:如果迭代次数i<iMax,则i=i+1,并跳转到步骤4,否则跳转到步骤7;
步骤7:输出多目标进化的社区发现结果。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安电子科技大学,未经西安电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710371317.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种低能耗、自动化恒温控制电路
- 下一篇:智慧校园信息采集系统及方法