CN111159523B - 一种基于Spark的并行蚁群优化社区发现方法 - Google Patents
一种基于Spark的并行蚁群优化社区发现方法 Download PDFInfo
- Publication number
- CN111159523B CN111159523B CN201911342546.4A CN201911342546A CN111159523B CN 111159523 B CN111159523 B CN 111159523B CN 201911342546 A CN201911342546 A CN 201911342546A CN 111159523 B CN111159523 B CN 111159523B
- Authority
- CN
- China
- Prior art keywords
- node
- community
- rdd
- network
- nodes
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 51
- 238000005457 optimization Methods 0.000 title claims abstract description 22
- 238000012546 transfer Methods 0.000 claims abstract description 24
- 230000008569 process Effects 0.000 claims abstract description 20
- 238000010276 construction Methods 0.000 claims abstract description 8
- 230000001174 ascending effect Effects 0.000 claims abstract description 7
- 241000257303 Hymenoptera Species 0.000 claims description 17
- 239000003016 pheromone Substances 0.000 claims description 13
- 238000004364 calculation method Methods 0.000 claims description 10
- 239000011159 matrix material Substances 0.000 claims description 10
- 238000005192 partition Methods 0.000 claims description 9
- 230000005251 gamma ray Effects 0.000 claims description 5
- 238000012216 screening Methods 0.000 claims description 5
- 208000022417 sinus histiocytosis with massive lymphadenopathy Diseases 0.000 claims description 5
- NAWXUBYGYWOOIX-SFHVURJKSA-N (2s)-2-[[4-[2-(2,4-diaminoquinazolin-6-yl)ethyl]benzoyl]amino]-4-methylidenepentanedioic acid Chemical compound C1=CC2=NC(N)=NC(N)=C2C=C1CCC1=CC=C(C(=O)N[C@@H](CC(=C)C(O)=O)C(O)=O)C=C1 NAWXUBYGYWOOIX-SFHVURJKSA-N 0.000 claims description 2
- KJONHKAYOJNZEC-UHFFFAOYSA-N nitrazepam Chemical compound C12=CC([N+](=O)[O-])=CC=C2NC(=O)CN=C1C1=CC=CC=C1 KJONHKAYOJNZEC-UHFFFAOYSA-N 0.000 claims description 2
- 238000013468 resource allocation Methods 0.000 claims description 2
- 230000001133 acceleration Effects 0.000 description 6
- 230000007704 transition Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000005065 mining Methods 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 102000004169 proteins and genes Human genes 0.000 description 2
- 108090000623 proteins and genes Proteins 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 235000005156 Brassica carinata Nutrition 0.000 description 1
- 244000257790 Brassica carinata Species 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/004—Artificial life, i.e. computing arrangements simulating life
- G06N3/006—Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明为一种基于Spark的并行蚁群优化社区发现方法,主要包含三个并行模块:确定蚂蚁转移顺序、构造最优解和解的优化。确定蚂蚁转移顺序模块负责计算网络节点的凝聚性度量值,并将其升序排列,获取对应的节点顺序列表,作为蚁群的转移顺序,降低蚂蚁转移过程中的随机性,从而提高算法的精确度;构造最优解模块负责使每只蚂蚁均完成解向量的构造,构成解空间,并获取最优解空间中模块度最高的解;解的优化模块负责对蚁群产生的最优解进行优化,以获得更好的社区划分结果。该方法提高了在大规模网络中进行社区发现的可行性和有效性。
Description
技术领域
本发明属于大规模复杂网络中的社区发现领域,具体涉及一种基于Spark的并行蚁群优化社区发现方法。
背景技术
自然界中各种数据关系存在复杂的网络结构,如社会网中人与人的关系,生物蛋白质中蛋白质的相互作用,互联网中网页的链接关系等。自从有网络社区发现概念以来,复杂网络的社区发现研究已经成为了现代网络科学中最热门的课题之一。随着近年来互联网的高速发展,复杂网络的种类和规模得到了快速的发展和变化,数据量呈指数级增长。单机执行的FN算法基于贪心思想,每次只能合并一对社区,需要多次循环,耗时严重,因此不适用于大规模网络。GN算法通过计算各边的边介数,并通过循环删除边介数最大的边来达到划分社区的目的,但是GN算法的求解效率低,依然不适用于大规模网络。
2013年,Jierui等人将马尔科夫聚类算法的思想引入到LPA中,借助矩阵相乘来完成标签传播过程,从而提高算法的稳定性。但是该算法在实现过程中使用矩阵相乘会消耗大量内存和计算资源,因而不适用于大规模网络。
因此需要借助分布式平台,进行并行的社区发现算法研究。在社区发现算法中以蚁群算法为代表的元启发式算法是对自然界中的优秀种群协作完成某种行为的抽象和总结,该类算法具有天然的并行性,本发明进行并行的蚁群优化社区发现方法研究。目前并行蚁群优化算法多用于解决TSP或航路规划等路径问题,而没有直接用于挖掘网络社区结构的先例。因此,本发明主要着眼于提出一种可行有效的蚁群优化算法,并在Spark平台上实现并行化,用于挖掘大规模网络中的社区结构。
发明内容
本发明的目的在于提高在大规模网络中进行社区发现的可行性和有效性,提出一种基于Spark的并行蚁群优化社区发现方法。
本发明充分利用Spark平台提供的RDD算子,实现了并行化蚁群算法在社区发现中的应用。本发明主要包含三个并行模块:确定蚂蚁转移顺序、构造最优解和解的优化。确定蚂蚁转移顺序模块负责计算网络节点的凝聚性度量值,并将其升序排列,获取对应的节点顺序列表,作为蚁群的转移顺序,降低蚂蚁转移过程中的随机性,从而提高算法的精确度;构造最优解模块负责使每只蚂蚁均完成解向量的构造,构成解空间,并获取最优解空间中模块度最高的解;解的优化模块负责对蚁群产生的最优解进行优化,以获得更好的社区划分结果。
本发明提出的一种基于Spark的并行蚁群优化社区发现方法,该方法的步骤如下:
步骤一:确定蚂蚁转移顺序:确定大规模网络中网络节点数量N,并行独立计算每个网络节点的凝聚性度量值,将每个网络节点的凝聚性度量值按照升序排列,获取对应的节点顺序列表,作为蚁群的转移顺序;
步骤二:构造最优解:将蚂蚁个体分布到大规模网络的各分区中,并行的使每只蚂蚁为网络中节点确定标签,蚂蚁按照步骤一确定的蚂蚁的转移顺序在网络中移动,结合信息素和启发式信息综合确定节点标签的概率,同时按照式(7)计算任意两个节点的皮尔逊系数C(i,j),按公式(9)计算此次蚂蚁产生的社区划分的模块度Q,
其中,i和j表示任意两个节点;A是邻接矩阵,记录网络的拓扑结构,Aiq表示邻接矩阵的第i行第q列的元素值,代表节点i与节点q之间是否有边相连,有边相连则该值为1,反之则为0;γi表示观测值Aiq的均值;σi表示观测值Aiq的标准差;Ajq表示邻接矩阵的第j行第q列的元素值,代表节点j与节点q之间是否有边相连,有边相连则该值为1,反之则为0;γj表示观测值Ajq的均值;σj表示观测值Ajq的标准差;
公式(9)中,nc表示网络图中含有的社区个数,lc表示社区c内部包含的边数,dc表示社区c内部节点的度数总和,e则表示网络图的总边数;
完成每个解向量的构造,从而构成整个解空间,最后获取解空间中模块度最高的解作为蚁群产生的最优解,实现网络社区的划分;
步骤三:解的优化:并行的计算划分后的网络社区中相连社区对合并后的模块度增量是否大于零,若大于零则筛选出待合并的社区对,并按照连边率从大到小的顺序对待合并的社区对一一合并,同时用模块度增量控制合并过程,从而对步骤二中蚁群产生的最优解进行优化,直至模块度增量为零,形成最终解,获得最终的社区划分结果。
与现有的技术相比,本发明的优点及有益效果是,
本发明具有如下突出的特点和显著的进步:
(1)针对大规模网络数据量大的问题,本发明设计了并行的蚁群优化算法,充分利用了Spark平台的RDD算子,实现算法的并行化,解决现有蚁群算法难以在大规模网络中进行社区发现的问题。
(2)针对蚂蚁转移过程中的随机性问题,本发明在并行的蚁群优化算法中引入节点凝聚性度量,以节点凝聚性为参考确定蚂蚁转移顺序,降低蚂蚁转移过程中的随机性,从而提高算法精度。
(3)针对蚁群优化算法的收敛速度慢的问题,本发明在并行的蚁群优化算法中将标签传播思想引入到蚁群搜索过程,提出一种蚂蚁定标策略,该策略结合信息素和启发式信息,综合确定节点标签,该方法通过更短的时间得到了模块度更高的社区划分,有效的提高算法的收敛速度。
(4)本发明在并行的蚁群优化算法中引入连边率概念进行解的优化,提高合并的效率,按照连边率将社区对降序排列,再以模块度作为目标函数,采用基于模块度优化的合并策略,进行社区发现得到了更高模块度的社区划分,从而进一步提高算法精度。
(5)本发明主要着眼于提出一种可行有效的蚁群优化算法,并在Spark平台上实现并行化,用于挖掘大规模网络中的社区结构。
附图说明
图1为蚂蚁转移顺序并行框架图。
图2为蚂蚁转移顺序RDD状态转换流程图。
图3为构造最优解并行框架图。
图4为构造最优解RDD状态转换流程图。
图5为解的优化并行框架图。
图6为解的优化RDD状态转换流程图。
图7(a)为不同蚂蚁数量下的CA-GrQc网络的加速比,
图7(b)不同蚂蚁数量下的PGP网络的加速比,
图7(c)不同蚂蚁数量下的CA-Astroph网络的加速比。
具体实施方式
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚完整的描述,显然所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。
本发明方法是在Spark集群上执行的,集群包括Master节点和Worker节点,所有节点均属于同一局域网。Spark集群采用的是主/从模式,即Master-Slave模型。Master表示主节点,是集群的资源管理器,控制整个集群的资源分配和任务下达等工作。Slave表示从节点,即集群中含有Worker进程的节点,Worker节点负责接收Master节点下达的工作指令,并将工作指令传达给Executer进程,使其执行任务,任务结束后,Worker节点负责向Master节点做出相应的工作汇报。
本发明提出的一种基于Spark的并行蚁群优化社区发现方法,整体流程如下所示。具体实施步骤实施如下:
步骤一:确定蚂蚁转移顺序。并行计算网络节点的凝聚性度量值,其值的计算是相互独立的,可以进行并行实现。按其值升序排列,获取对应的节点顺序列表,作为蚁群的转移顺序。该部分的并行框架如图1所示。
步骤1.1:根据网络节点数量N,实例化N个节点对象,并将其存放于列表NodelList[N],通过parallelize()算子将列表NodeList[N]创建成RDD,记为RDD1。
步骤1.2:根据点数量将RDD1分成若干个分区,并按照负载均衡原则,将RDD1均匀分布到各分区中;然后RDD1通过map()算子,调用NodeCohesion()方法,此方法依据公式(1)(2)(3)计算当前节点的凝聚性Ψi,记为RDD2。
ψi=Ai×Ci (1)
公式(1)中的Ai为节点i的吸引力,其公式为:
公式(2)中的di表示节点i的度数,N是网络中的节点总数。
公式(1)中的Ci为节点i的聚类系数,其公式为:
公式(3)中,Ki表示节点i的邻居节点数,Ei表示网络中真实存在于节点i的所有邻居节点之间的链接数。i=0,1,2,...,n)
步骤1.3:通过collect()算子将各个Worker节点上凝聚性的计算结果收集起来,记为RDD3。
步骤1.4:通过sortBy()算子依据节点的凝聚性值对所有的节点进行升序排列,确定蚂蚁的转移顺序列表Ant_transfer。凝聚性越大,代表邻居节点多,所属社区内部链接越紧密,能准确的确定标签。
该过程的RDD(弹性分布式数据集)状态转换流程如图2所示。
步骤二:构造最优解。将蚂蚁个体分布到各分区中,并行的使每只蚂蚁均为网络中的节点确定标签,完成每个解向量的构造,从而构成整个解空间,最后获取初步解空间中模块度最高的解(社区划分的最优方案)。该部分的并行框架如图3所示。
步骤2.1:设定蚁群规模为x,实例化x个蚂蚁对象,并将其存放于列表List(x)中,通过parallelize()算子将列表List(x)创建成并行的RDD4,记为RDD3,并均匀分布到各分区中;
步骤2.2:每个RDD通过map()算子,调用labelDetermine()方法,此方法依据公式(4)(5)(6)(7)(8)为当前所在节点确定标签,并按公式(9)计算此次蚂蚁产生的社区划分的模块度Q,生成RDD5;
蚂蚁按照步骤一确定的蚂蚁转移顺序在网络中移动,结合信息素和启发式信息,综合确定节点标签,蚂蚁为节点i确定标签m的概率如公式(4)所示。
公式(4)中n和m代表节点的不同标签,α和β分别为信息素和启发式信息的相对重要程度,τim为节点i与其所有携带m标签的邻居节点之间的信息素含量总和,按公式(5)计算;ηim代表节点i与其所有携带m标签的邻居节点之间的启发式信息总和,按公式(6)计算;NLi表示节点i的候选标签集,用于存放节点i的所有邻居节点携带的标签种类。
其中,Ni代表节点i的邻居节点集合;label(j)代表节点j的标签,即该节点所属社区的编号;τij为实际分布在节点i与节点j之间边上的信息素含量。τmin与τmax是信息素含量的最小值和最大值
公式(6)(7)中C(i,j)为两个节点的皮尔逊系数。其中,i和j表示节点;N表示网络的节点总数;A是邻接矩阵,记录网络的拓扑结构,Aiq表示邻接矩阵的第i行第q列的元素值,代表节点i与节点q之间是否有边相连,有边相连则该值为1,反之则为0;γi表示观测值Aiq的均值。σi表示观测值Aiq的标准差,其定义如公式(8)所示。
公式(9)中,nc表示网络图中含有的社区个数,lc表示社区c内部包含的边数,dc表示社区c内部节点的度数总和,e则表示网络图的总边数。
步骤2.3:通过collect()算子(算子是spark中的工具)将各个Worker节点上生成的RDD4运行的结果收集起来,记为RDD6;
步骤2.4:通过maxBy()算子从蚁群产生的解中获取模块度最大的解,即最优解向量BestCommunity。该过程的RDD状态转换流程如图4所示。
步骤三:解的优化。并行的计算每一对相连社区合并后的模块度增量,根据模块度增量是否大于0,合并,筛选出待合并社区对,并按照连边率从大到小的顺序对待合并社区对一一合并,同时用模块度增量控制合并过程,从而对蚁群产生的最优解进行优化,以得到最终解。该部分的并行框架如图5所示。
步骤3.1:对蚁群产生的最优解中的所有社区对进行判定,筛选出所有相连的社区对(即存在一条边连接两社区内的点的社区对),形成列表List[community_pairs]。使用parallelize()算子将列List[community_pairs]创建成并行的RDD7;
步骤3.2:通过map()算子调用combine()方法,此方法计算每一对相连社区合并后的模块度增量ΔQ,记为RDD8;随后通过collect()算子收集结果,记为RDD9;
步骤3.3:通过filter()算子从产生的结果中筛选出将要进行合并的社区对,称为待合并社区对,即模块度增量大于0对应的社区对,记为RDD10;
步骤3.4:通过map()算子调用ETE_rate()方法,此方法按公式(10)计算待合并的社区对的连边率,生成RDD11;
其中,CA和CB表示社区,E(CA,CB)表示社区CA与社区CB之间的边数,N(CA)表示社区CA包含的节点数,因此分母部分表示社区CA与社区CB的平均规模。
步骤3.5:通过collect()算子将连边率的计算结果收集起来,记为RDD12;通过sortBy()算子依据ETE_rate结果对所有待合并社区对进行降序排列,得到排序后的待合并社区对;
步骤3.6:依次合并排序后的待合并社区对,同时计算每次合并后产生的模块度增量ΔQ,直到模块度增量小于0时停止合并,并输出优化后的最终解last_community,算法终止。
该过程的RDD状态转换流程如图6所示。
实验结果
本文在数据集上应用5种算法,进行100次社区发现实验,并对模块度的平均值进行比较。平均模块度对比结果如表1所示,其中加粗数据为对应网络在5种算法上求得的最优值。我们的算法是SPACO,与其他四种算法进行对比。
表1平均模块度对比
由表1可知,SPACO在其中的4种网络中均取得最优结果,尤其在email网络上明显优于其他算法。虽然在karate网络中没有取得最优值,但获取的模块度在5种算法中也相对较高.
评价并行算法,主要侧重于评价算法的并行效果,而加速比(Speedup)正是用于评估算法并行效果的指标,表示同一个任务在单机处理系统和并行处理系统中运行消耗的时间比率,其计算方式如公式(11)所示。
首先,固定需要挖掘社区结构的网络,在节点数大于3000的较大规模斯坦福数据集中使用不同蚁群规模的SPACO算法,斯坦福数据集如表2所示。
表2斯坦福数据集介绍
从算法对并行性的需求程度角度测试算法的并行效果,实验结果如图7所示,其中横坐标为Worker节点的个数,纵坐标为加速比。
由图7可知,斜率为1的曲线为理想情况下的线性加速比。图7(a)、图7(b)和图7(c)的另外三条曲线分别表示将蚁群规模为10、100和200的SPACO算法应用于相应网络,所获得的加速比曲线。分别观察每个曲线图可知,无论网络规模多大,算法设置的蚂蚁规模越大,加速比曲线的斜率就越大。表明SPACO算法在求解社区发现问题时,对并行性的需求程度越高,算法的并行效果越好。
实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
本发明未述及之处适用于现有技术。
Claims (4)
1.一种基于Spark的并行蚁群优化社区发现方法,方法是在Spark集群上执行的,集群包括Master节点和Worker节点,所有节点均属于同一局域网;Spark集群采用的是主/从模式,即Master-Slave模型;Master表示主节点,是集群的资源管理器,控制整个集群的资源分配和任务下达等工作;Slave表示从节点,即集群中含有Worker进程的节点,Worker节点负责接收Master节点下达的工作指令,并将工作指令传达给Executer进程,使其执行任务,任务结束后,Worker节点负责向Master节点做出相应的工作汇报;
该发现方法的步骤是:
步骤一:确定蚂蚁转移顺序:确定大规模网络中网络节点数量N,并行独立计算每个网络节点的凝聚性度量值,将每个网络节点的凝聚性度量值按照升序排列,获取对应的节点顺序列表,作为蚁群的转移顺序;
步骤二:构造最优解:将蚂蚁个体分布到大规模网络的各分区中,并行的使每只蚂蚁为网络中节点确定标签,蚂蚁按照步骤一确定的蚂蚁的转移顺序在网络中移动,结合信息素和启发式信息综合确定节点标签的概率,同时按照式(7)计算任意两个节点的皮尔逊系数C(i,j),按公式(9)计算此次蚂蚁产生的社区划分的模块度Q,
其中,i和j表示任意两个节点;A是邻接矩阵,记录网络的拓扑结构,Aiq表示邻接矩阵的第i行第q列的元素值,代表节点i与节点q之间是否有边相连,有边相连则该值为1,反之则为0;γi表示观测值Aiq的均值;σi表示观测值Aiq的标准差;Ajq表示邻接矩阵的第j行第q列的元素值,代表节点j与节点q之间是否有边相连,有边相连则该值为1,反之则为0;γj表示观测值Ajq的均值;σj表示观测值Ajq的标准差;
公式(9)中,nc表示网络图中含有的社区个数,lc表示社区c内部包含的边数,dc表示社区c内部节点的度数总和,e则表示网络图的总边数;
完成每个解向量的构造,从而构成整个解空间,最后获取解空间中模块度最高的解作为蚁群产生的最优解,实现网络社区的划分;
步骤三:解的优化:并行的计算划分后的网络社区中相连社区对合并后的模块度增量是否大于零,若大于零则筛选出待合并的社区对,并按照连边率从大到小的顺序对待合并的社区对一一合并,同时用模块度增量控制合并过程,从而对步骤二中蚁群产生的最优解进行优化,直至模块度增量为零,形成最终解,获得最终的社区划分结果。
2.根据权利要求1所述的发现方法,其特征在于,步骤一的具体过程是:
步骤1.1:根据网络节点数量N,实例化N个节点对象,并将其存放于列表NodelList[N],通过parallelize()算子将列表NodeList[N]创建成RDD,记为RDD1;
步骤1.2:根据点数量将RDD1分成若干个分区,并按照负载均衡原则,将RDD1均匀分布到各分区中;然后RDD1通过map()算子,计算当前节点的凝聚性Ψi,记为RDD2;
步骤1.3:通过collect()算子将各个Worker节点上凝聚性的计算结果收集起来,记为RDD3;
步骤1.4:通过sortBy()算子依据节点的凝聚性值对所有的节点进行升序排列,确定蚂蚁的转移顺序列表Ant_transfer;凝聚性越大,代表邻居节点多,所属社区内部链接越紧密,能准确的确定标签。
3.根据权利要求1所述的发现方法,其特征在于,步骤二的具体过程是:
步骤2.1:设定蚁群规模为x,实例化x个蚂蚁对象,并将其存放于列表List(x)中,通过parallelize()算子将列表List(x)创建成并行的RDD,记为RDD4,并均匀分布到各分区中;
步骤2.2:每个RDD4通过map()算子,调用labelDetermine()方法,此方法依据公式(4)(5)(6)(7)(8)为当前所在节点确定标签,并按公式(9)计算此次蚂蚁产生的社区划分的模块度Q,生成RDD5;
蚂蚁按照步骤一确定的蚂蚁转移顺序在网络中移动,结合信息素和启发式信息,综合确定节点标签,蚂蚁为节点i确定标签m的概率为公式(4);
公式(4)中n和m代表节点的不同标签,α和β分别为信息素和启发式信息的相对重要程度,τim为节点i与其所有携带m标签的邻居节点之间的信息素含量总和,按公式(5)计算;ηim代表节点i与其所有携带m标签的邻居节点之间的启发式信息总和,按公式(6)计算;NLi表示节点i的候选标签集,用于存放节点i的所有邻居节点携带的标签种类;
其中,Ni代表节点i的邻居节点集合;label(j)代表节点j的标签,即该节点所属社区的编号;τij为实际分布在节点i与节点j之间边上的信息素含量;τmin与τmax是信息素含量的最小值和最大值;
σi表示观测值Aiq的标准差,定义为公式(8):
步骤2.3:通过collect()算子将各个Worker节点上生成的RDD5运行的结果收集起来,记为RDD6;
步骤2.4:通过maxBy()算子从蚁群产生的解中获取模块度最大的解,即最优解向量BestCommunity。
4.根据权利要求1所述的发现方法,其特征在于,步骤三的具体过程是:
步骤3.1:对蚁群产生的最优解中的所有社区对进行判定,筛选出所有相连的社区对,形成列表List[community_pairs],使用parallelize()算子将列List[community_pairs]创建成并行的RDD7;
步骤3.2:通过map()算子调用combine()计算每一对相连社区合并后的模块度增量ΔQ,记为RDD8;随后通过collect()算子收集结果,记为RDD9;
步骤3.3:通过filter()算子从产生的结果中筛选出将要进行合并的社区对,称为待合并社区对,即模块度增量大于0对应的社区对,记为RDD10;
步骤3.4:通过map()算子调用ETE_rate()方法,此方法按公式(10)计算待合并的社区对的连边率,生成RDD11;
其中,CA和CB表示社区,E(CA,CB)表示社区CA与社区CB之间的边数,N(CA)表示社区CA包含的节点数;
步骤3.5:通过collect()算子将连边率的计算结果收集起来,记为RDD12;通过sortBy()算子依据ETE_rate结果对所有待合并社区对进行降序排列,得到排序后的待合并社区对;
步骤3.6:依次合并排序后的待合并社区对,同时计算每次合并后产生的模块度增量ΔQ,直到模块度增量小于0时停止合并,并输出优化后的最终解last_community,算法终止。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911342546.4A CN111159523B (zh) | 2019-12-23 | 2019-12-23 | 一种基于Spark的并行蚁群优化社区发现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911342546.4A CN111159523B (zh) | 2019-12-23 | 2019-12-23 | 一种基于Spark的并行蚁群优化社区发现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111159523A CN111159523A (zh) | 2020-05-15 |
CN111159523B true CN111159523B (zh) | 2024-03-01 |
Family
ID=70558198
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911342546.4A Active CN111159523B (zh) | 2019-12-23 | 2019-12-23 | 一种基于Spark的并行蚁群优化社区发现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111159523B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012066350A (ja) * | 2010-09-24 | 2012-04-05 | Ihi Marine United Inc | マーカの移動経路最適化方法 |
CN107784356A (zh) * | 2017-10-27 | 2018-03-09 | 天津理工大学 | 一种基于蚁群和信号传递的重叠社区发现方法 |
CN110244733A (zh) * | 2019-06-20 | 2019-09-17 | 西南交通大学 | 一种基于改进蚁群算法的移动机器人路径规划方法 |
-
2019
- 2019-12-23 CN CN201911342546.4A patent/CN111159523B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012066350A (ja) * | 2010-09-24 | 2012-04-05 | Ihi Marine United Inc | マーカの移動経路最適化方法 |
CN107784356A (zh) * | 2017-10-27 | 2018-03-09 | 天津理工大学 | 一种基于蚁群和信号传递的重叠社区发现方法 |
CN110244733A (zh) * | 2019-06-20 | 2019-09-17 | 西南交通大学 | 一种基于改进蚁群算法的移动机器人路径规划方法 |
Non-Patent Citations (3)
Title |
---|
王诏远 等.基于Spark的蚁群优化算法.《计算机应用》.2015,第35卷(第35期),2777-2780、2797. * |
顾军华 等.基于Spark的多策略蚁群算法求解最大团问题.《中国科学技术大学学报》.2019,第49卷(第49期),851-860. * |
顾军华 等.基于标签传播的蚁群优化算法求解社区发现问题.《计算机应用与软件》.2019,第36卷(第36期),233-242. * |
Also Published As
Publication number | Publication date |
---|---|
CN111159523A (zh) | 2020-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111242282B (zh) | 基于端边云协同的深度学习模型训练加速方法 | |
CN104914835A (zh) | 一种柔性作业车间调度多目标的方法 | |
CN114492770B (zh) | 一种面向循环脉冲神经网络的类脑计算芯片映射方法 | |
CN109840551B (zh) | 一种用于机器学习模型训练的优化随机森林参数的方法 | |
CN110830292B (zh) | 面向医疗大数据的云雾混合路径确定方法 | |
Gu et al. | Maximizing workflow throughput for streaming applications in distributed environments | |
CN107992358A (zh) | 一种适用于核外图处理系统的异步io执行方法及系统 | |
CN108364030B (zh) | 一种基于三层动态粒子群算法的多分类器模型构建方法 | |
CN104698838B (zh) | 基于论域动态划分和学习的模糊调度规则挖掘方法 | |
CN107528731B (zh) | 应用于ns3并行仿真的网络分割优化算法 | |
CN111159523B (zh) | 一种基于Spark的并行蚁群优化社区发现方法 | |
CN117636004A (zh) | 基于通信需求和网络资源匹配的分布式训练任务分配方法 | |
CN108182243A (zh) | 一种基于Spark的分布式进化算法岛模型并行化方法 | |
CN116523045B (zh) | 一种面向多芯粒芯片的深度学习推理模拟器 | |
CN110119268B (zh) | 基于人工智能的工作流优化方法 | |
Nematpour et al. | Enhanced genetic algorithm with some heuristic principles for task graph scheduling | |
CN115001978B (zh) | 一种基于强化学习模型的云租户虚拟网络智能映射方法 | |
CN116089083A (zh) | 一种多目标数据中心资源调度方法 | |
CN110941767A (zh) | 一种基于多相似度集成的网络社团检测对抗增强方法 | |
CN113946424B (zh) | 基于图卷积网络的软硬件划分和任务调度模型及其方法 | |
Faysal et al. | Fast stochastic block partitioning using a single commodity machine | |
Gu et al. | On a multi-objective evolutionary algorithm for optimizing end-to-end performance of scientific workflows in distributed environments | |
US11973662B1 (en) | Intelligent mapping method for cloud tenant virtual network based on reinforcement learning model | |
Guo et al. | Parallel graph partitioning framework for solving the maximum clique problem using Hadoop | |
CN112862251B (zh) | 一种基于改进pi算法的分布式多auv任务分配方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |