CN107911300B - 基于鲸鱼算法的组播路由优化方法及其在Spark平台上的应用 - Google Patents
基于鲸鱼算法的组播路由优化方法及其在Spark平台上的应用 Download PDFInfo
- Publication number
- CN107911300B CN107911300B CN201711006269.0A CN201711006269A CN107911300B CN 107911300 B CN107911300 B CN 107911300B CN 201711006269 A CN201711006269 A CN 201711006269A CN 107911300 B CN107911300 B CN 107911300B
- Authority
- CN
- China
- Prior art keywords
- individual
- whale
- multicast
- population
- fitness
- 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.)
- Expired - Fee Related
Links
- 241000283153 Cetacea Species 0.000 title claims abstract description 265
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000005457 optimization Methods 0.000 title claims abstract description 47
- 238000004364 calculation method Methods 0.000 claims description 16
- 230000007246 mechanism Effects 0.000 claims description 14
- 230000009471 action Effects 0.000 claims description 11
- 238000004891 communication Methods 0.000 claims description 9
- 230000008602 contraction Effects 0.000 claims description 7
- 208000022417 sinus histiocytosis with massive lymphadenopathy Diseases 0.000 claims description 4
- 230000008569 process Effects 0.000 abstract description 7
- 230000000052 comparative effect Effects 0.000 description 10
- 230000008859 change Effects 0.000 description 4
- 238000011156 evaluation Methods 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000002068 genetic effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000035772 mutation Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/16—Multipoint routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/12—Shortest path evaluation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/48—Routing tree calculation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于鲸鱼算法的组播路由优化方法,本发明针对具体的组播路由优化问题,在鲸鱼算法上作出进一步改进以适应对组播路由优化问题的解决,本发明通过位置信息的二进制编码把优化连续问题的鲸鱼算法映射到离散的搜索空间,并在位置更新策略中引入了个体交叉、变异、味道浓度等其他算法的思想,使其更适合解决组播路由问题,由此简化了组播路由优化过程,加快了收敛速度。本发明还公开了一种基于鲸鱼算法的组播路由优化方法在Spark平台上的应用,由此使得上述基于鲸鱼算法的组播路由优化方法在Spark平台上实现了并行化,大大加快了算法的执行速度。
Description
技术领域
本发明涉及计算机网络技术领域,具体而言,涉及一种基于鲸鱼算法的组播路由优化方法及其在Spark平台上的应用。
背景技术
现今高速发展的互联网领域,各种新奇的互联网应用层出不穷,如在线媒体、远程会议、网络游戏等。这些互联应用大部分都需要较高的网络资源、较短的响应时间,其发送方发出的数据具有大量的重复性。传统的”一对一”传输无法满足网络应用的实时性、高带宽等需求,组播技术的出现很好的解决了这方面的问题。组播的主要特征是,服务的发送方和多个接收方构建一个组播树,发送发只需要发送一份数据包,组播树的各个分支节点复制数据包并转发到相应的接收方节点即可,有效的节省了网络资源并提高了带宽利用率。如何高效的寻找到一个有效的组播树,是组播路由优化问题的关键。
在现今网络规模越来越庞大、复杂的情况下,传统的组播树寻优算法已不再适用,元启发式智能算法的出现使得组播路由优化问题的研究得到了突破。遗传算法(简称GA)是智能算法领域比较成熟、应用最广泛的算法,它可以在有限的时间内找到一个可行解,并随着算法的不断迭代计算,找到更优的解。然而,GA的算子较多,选择、交叉、变异等操作过程较为复杂,收敛速度慢。
鲸鱼算法(简称WOA)是2016年由澳大利亚的Seyedali Mirjalili等人提出的一种新的群智能优化算法。该算法模仿座头鲸的狩猎行为,操作简单,参数少,每一次的迭代中计算量少,运行速度快,全局寻优能力强。但是直接使用上述鲸鱼算法还不能很好的解决组播路由优化问题。
发明内容
本发明的主要目的在于提供基于鲸鱼算法的组播路由优化方法,以解决现有技术组播路由优化过程复杂,收敛速度较慢的问题。
本发明基于鲸鱼算法的组播路由优化方法,1.基于鲸鱼算法的组播路由优化方法,将通信子网模拟成一个无向的带权连通图G=(V,E),V={v1,v2,...,vN}表示节点集合,E={e1,e2,...,eM}表示连接节点之间的边集合,N与M分别表示节点和边的个数,S∈V是组播源节点,是组播目的节点集合,K表示目的节点个数,对每条边e∈E,定义cost(e)为边e的开销,即边e上的权值,以源节点S为根节点,包含所有目的节点集D的一棵树T={VT,ET},T即为组播树,其中VT是T中所有节点的集合,ET是T中所有边的集合,组播树T是G的一个子图,其步骤包括:
(1)输入拓扑G=(V,E)的节点信息和边信息,构建网络拓扑,输入组播源节点S和组播目的节点集D={d1,d2,...,dk};
(2)初始化鲸鱼种群,并在鲸鱼种群中初始化各个鲸鱼个体,鲸鱼种群规模初始化为M,初始化鲸鱼种群W={w1,w2,...,wM},生成的每个鲸鱼个体的个体属性包括位置和适应度值,初始化最大迭代次数MAX_T,当前迭代次数t=1,初始化全局最优鲸鱼个体gbest,令其适应度值为最大适应度MAX_FITNESS;
(3)评估鲸鱼种群W,计算每个鲸鱼个体的当前适应度值,找到当代最优鲸鱼个体cbest,若cbest的适应度值优于gbest,则gbest的位置和适应度值被cbest替换;
(4)更新种群W中每个鲸鱼个体的位置信息;
(5)t=t+1,若t<MAX_T,转到步骤(3),否则退出循环,输出gbest,并求出gbest下的组播树;
其中,在步骤(2)中对鲸鱼种群和鲸鱼个体进行封装,在步骤(2)中每个鲸鱼个体的适应度值为Double型变量,代表该个体所生成的组播树的开销,适应度值初始化为MAX_FITNESS=999999.0,若该个体无法生成组播树,则该个体非法,令其适应度值为MAX_FITNESS;
位置的表示方式是一个二进制数组,令其中li∈{0,1},i∈{1,2,...n},初始化每个鲸鱼个体L=[l1,l2,...,l,n]个体时,位置数组的每个元素都根据概率Ps取值,若p<Ps取1,否则取0,其中p是(0,1)之间的随机数,
其中,在步骤(3)中鲸鱼个体的适应度值计算方式为:
对某鲸鱼个体w,其位置信息为Lw=[lw,1,lw,2,...,lm,n],在输入的原始网络拓扑Gw=(V,Ew)G=(V,E)上,有 则生成一个新拓扑,在新拓扑Gw上,组播源节点S,组播目的节点集D={d1,d2,...,dk},以S为源节点,Ew中各边的开销为边上的权值,运行Dijkstra算法,若S与任意di∈D均连通,则Dijkstra算法运行成功,所得结果中包含源节点到所有目的节点共K条最短路径,K条最短路径包含的所有边去重后构成新的边集Ew,则按照如下公式计算该个体的适应度值:
若S与某个di∈D不连通,则Dijkstra算法运行失败,该个体w为非法个体,令其适应度值为MAX_FITNESS;
其中,在步骤(4)中具体包括以下步骤:
(a)对鲸鱼个体w,更新参数a、A、C,其计算公式分别为:
a=2-2t/MAX_T,t为当前迭代次数,MAX_T为最大迭代次数,
A=2ar-a,r是(0,1)中的随机数,
C=2r,r是(0,1)中的随机数;
(b)用概率Pi定义鲸鱼个体的行动,若P<Pi,鲸鱼个体通过收缩包围机制更新位置;若P≥Pi,鲸鱼个体通过螺旋模型更新位置,其中P是(0,1)中的随机值;
其中,鲸鱼个体通过收缩包围机制更新位置包括以下两种情况:
当P<Pi且|A|≥1时,
当前个体w的位置信息Lw=[lw,1,lw,2,...,lm,n],从种群中随机选取另一个体w,其位置信息Lw=[lw`,1,lw`,2,...,lm`,n],随机选取交叉点k,交叉后的当前个体w的位置信息Lw=[lw,1,lw,2,...,lw,k,lw`,k+1,lw`,k+2,...,lw`,n],另一个体w`的位置信息Lw`=[lw`,1,lw`,2,...,lw`,k,lw,k+1,lw,k+2,...,lw,n],
当P<Pi且|A|<1
设当前个体w的位置信息Lw=[lw,1,lw,2,...,lm,n],全局最优个体gbest的位置信息Lg=[lg,1,lg,2,...,lg,n],对Lw中的每一位,按照如下公式计算:
其中,i∈{1,2,...,n},rand是(0,1)中的随机值,!lg,i表示对该位取反,即原来是0则取1,原来是1则取0;
其中,通过螺旋模型来更新位置的方法为:
定义鲸鱼个体位置信息每一位被选中的浓度概率Phi,公式如下:
其中i∈{1,2,...,n},k是(-1,1)中的随机值,b是一个用来定义鲸鱼个体螺旋模型行动中螺线的形状的常数,
当前个体w的位置信息Lw=[lw,1,lw,2,...,lm,n],全局最优个体gbest的位置信息Lg=[lg,1,lg,2,...,lg,n],对Lw中的每一位,按照如下公式计算:
其中,i∈{1,2,...,n},rand是(0,1)中的随机值。
鲸鱼算法是一种新颖的群体智能优化算法,相比于传统的遗传算法等,它流程简单,计算量少,运行速度快。鲸鱼算法的核心在于个体的适应度评估和位置更新策略,适应度评估和具体的问题相关,而鲸鱼的位置更新策略实质上是一种概率选择模型,依照不同的概率做出相应的操作,实质只有一个算子,本发明针对具体的组播路由优化问题,在鲸鱼算法上作出进一步改进以适应对组播路由优化问题的解决,本发明通过位置信息的二进制编码把优化连续问题的鲸鱼算法映射到离散的搜索空间,并在位置更新策略中引入了个体交叉、变异、味道浓度等其他算法的思想,使其更适合解决组播路由问题,由此简化了组播路由优化过程,加快了收敛速度。
进一步地,优选Ps=0.65。
进一步地,优选Pi=0.5。
本发明还提供了一种基于鲸鱼个体算法的组播路由优化方法在Spark平台上的应用,将通信子网模拟成一个无向的带权连通图G=(V,E),V={v1,v2,...,vN}表示节点集合,E={e1,e2,...,eM}表示连接节点之间的边集合,N与M分别表示节点和边的个数,S∈V是组播源节点,是组播目的节点集合,K表示目的节点个数,对每条边e∈E,定义cost(e)为边e的开销,即边e上的权值,以源节点S为根节点,包含所有目的节点集D的一棵树T={VT,ET},T即为组播树,其中VT是T中所有节点的集合,ET是T中所有边的集合,组播树T是G的一个子图,其步骤包括:
(1)输入拓扑G=(V,E)的节点信息和边信息,构建网络拓扑,输入组播源节点S和组播目的节点集D={d1,d2,...,dk};
(2)初始化至少两个鲸鱼种群,并在每个鲸鱼种群中初始化各个鲸鱼个体,鲸鱼种群规模初始化为M,初始化鲸鱼种群W={w1,w2,...,wM},初始化最大迭代次数MAX_T,当前迭代次数t=1,初始化全局最优鲸鱼个体gbest,令其适应度值为最大适应度MAX_FITNESS;
(3)初始化SparkContext调用SparkContext.broadcast()接口生成固定信息广播量,广播到Spark平台中的所有计算节点内;这里的固定信息包括例如拓扑节点信息、边信息、组播源节点S、组播目的节点集D等。
(4)调用SparkContext.parallelize()接口将各个鲸鱼种群对象并行化,生成对应的RDD;
(5)调用RDD.map()接口,在该接口中,评估每个鲸鱼种群的适应度,并行的计算各个种群中每个鲸鱼个体的当前适应度值;
(6)调用RDD.collect()接口,收集每个鲸鱼种群返回的最优个体,找到当代最优个体cbest,若cbest优于gbest,则用cbest替换gbest,生成gbest的广播量,并广播到所有计算节点内;
(7)调用RDD.foreach()接口,在该接口中,并行的更新每个种群中每个鲸鱼个体的位置信息;
(8)t=t+1,若t<MAX_T,转到步骤(5),否则退出循环,输出gbest,并求出gbest下的组播树,
其中,在步骤(2)中将每个鲸鱼个体封装,每个鲸鱼个体有适应度值和位置共两个属性,适应度值为Double型变量,代表该个体所生成的组播树的开销,适应度值初始化为MAX_FITNESS=999999.0,若该个体无法生成组播树,则该个体非法,令其适应度值为MAX_FITNESS;位置的表示方式是一个二进制数组,令其中li∈{0,1},i∈{1,2,...n},初始化每个鲸鱼个体L=[l1,l2,...,l,n]个体时,位置数组的每个元素都根据概率Ps取值,若p<Ps取1,否则取0,其中p是(0,1)之间的随机数;
其中,在步骤(2)中将每个鲸鱼种群封装,每个鲸鱼种群有两个属性,包括鲸鱼个体的数量和鲸鱼个体对象的链表,其余为鲸鱼种群的动作接口,包括初始化该种群、评估该种群的适应度、更新该种群的位置等;
其中,在步骤(5)中鲸鱼个体的适应度值计算方式为:
对某鲸鱼个体w,其位置信息为Lw=[lw,1,lw,2,...,lm,n],在输入的原始网络拓扑G=(V,E)上,有 则生成一个新拓扑Gw=(V,Ew),在新拓扑Gw上,组播源节点S,组播目的节点集D={d1,d2,...,dk},以S为源节点,Ew中各边的开销为边上的权值,运行Dijkstra算法,若S与任意di∈D均连通,则Dijkstra算法运行成功,所得结果中包含源节点到所有目的节点共K条最短路径,K条最短路径包含的所有边去重后构成新的边集Ew,则按照如下公式计算该个体的适应度值:
若S与某个di∈D不连通,则Dijkstra算法运行失败,该个体w为非法个体,令其适应度值为MAX_FITNESS;
其中,在步骤(7)中更新每个鲸鱼个体的位置信息具体包括以下步骤:
(a)对鲸鱼个体w,更新参数a、A、C,其计算公式分别为:
a=2-2t/MAX_T,t为当前迭代次数,MAX_T为最大迭代次数,
A=2ar-a,r是(0,1)中的随机数,
C=2r,r是(0,1)中的随机数;
(b)用概率Pi定义鲸鱼个体的行动,若P<Pi,鲸鱼个体通过收缩包围机制更新位置;若P≥Pi,鲸鱼个体通过螺旋模型更新位置,其中P是(0,1)中的随机值;
其中,鲸鱼个体通过收缩包围机制更新位置包括以下两种情况:
当P<Pi且|A|≥1时,
当前个体w的位置信息Lw=[lw,1,lw,2,...,lm,n],从种群中随机选取另一个体w,其位置信息Lw=[lw`,1,lw`,2,...,lm`,n],随机选取交叉点k,交叉后的当前个体w的位置信息Lw=[lw,1,lw,2,...,lw,k,lw`,k+1,lw`,k+2,...,lw`,n],另一个体w`的位置信息Lw`=[lw`,1,lw`,2,...,lw`,k,lw,k+1,lw,k+2,...,lw,n],
当P<Pi且|A|<1
设当前个体w的位置信息Lw=[lw,1,lw,2,...,lm,n],全局最优个体gbest的位置信息Lg=[lg,1,lg,2,...,lg,n],对Lw中的每一位,按照如下公式计算:
其中,i∈{1,2,...,n},rand是(0,1)中的随机值,!lg,i表示对该位取反,即原来是0则取1,原来是1则取0;
其中,通过螺旋模型来更新位置的方法为:
定义鲸鱼个体位置信息每一位被选中的浓度概率Phi,公式如下:
其中i∈{1,2,...,n},k是(-1,1)中的随机值,b是一个用来定义鲸鱼个体螺旋模型行动中螺线的形状的常数,
当前个体w的位置信息Lw=[lw,1,lw,2,...,lm,n],全局最优个体gbest的位置信息Lg=[lg,1,lg,2,...,lg,n],对Lw中的每一位,按照如下公式计算:
其中,i∈{1,2,...,n},rand是(0,1)中的随机值。
由此使得上述基于鲸鱼算法的组播路由优化方法在Spark平台上实现了并行化,并行化设计的核心思想是多种群协同演化,相当于可以在多台计算机上同时运行上述改进后的鲸鱼算法,大大加快了算法的执行速度。
进一步地,优选Ps=0.65。
进一步地,优选Pi=0.5。
可见,本发明基于鲸鱼算法的组播路由优化方法通过位置信息的二进制编码把优化连续问题的鲸鱼算法映射到离散的搜索空间,并在位置更新策略中引入了个体交叉、变异、味道浓度等其他算法的思想,使其更适合解决组播路由问题,由此简化了组播路由优化过程,加快了收敛速度。
基于鲸鱼算法的组播路由优化方法在Spark平台上实现了并行化,并行化设计的核心思想是多种群协同演化,相当于可以在多台计算机上同时运行上述改进后的鲸鱼算法,大大加快了算法的执行速度。
下面结合附图和具体实施方式对本发明做进一步的说明。本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
构成本发明的一部分的附图用来辅助对本发明的理解,附图中所提供的内容及其在本发明中有关的说明可用于解释本发明,但不构成对本发明的不当限定。在附图中:
图1为本发明中基于鲸鱼算法的组播路由优化方法的流程图。
图2为本发明中基于鲸鱼算法的组播路由优化方法在Spark平台上的应用流程图。
图3为本发明实施例1中网络拓扑结构示意图。
图4为对比例1与实施例2、实施例3的历史最优组播树开销的对比曲线图。
图5为对比例2与实施例4、实施例5的历史最优组播树开销的对比曲线图。
图6为对比例3与实施例6、实施例7的历史最优组播树开销的对比曲线图。
图7为对比例1与实施例2、实施例3的组播树平均开销的对比曲线图。
图8为对比例2与实施例4、实施例5的组播树平均开销的对比曲线图。
图9为对比例3与实施例6、实施例7的组播树平均开销的对比曲线图。
图10为实施例6和实施例7的执行时间对比曲线图。
图11为实施例7中加速比随工作节点个数的变化曲线。
图12为鲸鱼个体的类定义示意图。
图13为鲸鱼种群的类定义示意图。
具体实施方式
下面结合附图对本发明进行清楚、完整的说明。本领域普通技术人员在基于这些说明的情况下将能够实现本发明。在结合附图对本发明进行说明前,需要特别指出的是:
本发明中在包括下述说明在内的各部分中所提供的技术方案和技术特征,在不冲突的情况下,这些技术方案和技术特征可以相互组合。
此外,下述说明中涉及到的本发明的实施例通常仅是本发明一分部的实施例,而不是全部的实施例。因此,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
关于本发明中术语。本发明的说明书和权利要求书及有关的部分中的术语“包括”、“具有”以及它们的任何变形,意图在于覆盖不排他的包含。术语“Double型变量”表示双精度浮点数在机内占8个字节,用64位二进制描述。术语“Dijkstra算法”是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题。术语“封装”表示隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。术语“worker”表示工作节点。
如图1所示,基于鲸鱼算法的组播路由优化方法,将通信子网模拟成一个无向的带权连通图G=(V,E),V={v1,v2,...,vN}表示节点集合,E={e1,e2,...,eM}表示连接节点之间的边集合,N与M分别表示节点和边的个数,S∈V是组播源节点,是组播目的节点集合,K表示目的节点个数,对每条边e∈E,定义cost(e)为边e的开销,即边e上的权值,以源节点S为根节点,包含所有目的节点集D的一棵树T={VT,ET},T即为组播树,其中VT是T中所有节点的集合,ET是T中所有边的集合,组播树T是G的一个子图,其步骤包括:
(1)输入拓扑G=(V,E)的节点信息和边信息,构建网络拓扑,输入组播源节点S和组播目的节点集D={d1,d2,...,dk};
(2)初始化鲸鱼种群,并在鲸鱼种群中初始化各个鲸鱼个体,鲸鱼种群规模初始化为M,初始化鲸鱼种群W={w1,w2,...,wM},生成的每个鲸鱼个体的个体属性包括位置和适应度值,初始化最大迭代次数MAX_T,当前迭代次数t=1,初始化全局最优鲸鱼个体gbest,令其适应度值为最大适应度MAX_FITNESS;
(3)评估鲸鱼种群W,计算每个鲸鱼个体的当前适应度值,找到当代最优鲸鱼个体cbest,若cbest的适应度值优于gbest,则gbest的位置和适应度值被cbest替换;
(4)更新种群W中每个鲸鱼个体的位置信息;
(5)t=t+1,若t<MAX_T,转到步骤(3),否则退出循环,输出gbest,并求出gbest下的组播树;
其中,在步骤(2)中对鲸鱼种群和鲸鱼个体进行封装,在步骤(2)中每个鲸鱼个体的适应度值为Double型变量,代表该个体所生成的组播树的开销,适应度值初始化为MAX_FITNESS=999999.0,若该个体无法生成组播树,则该个体非法,令其适应度值为MAX_FITNESS;
位置的表示方式是一个二进制数组,令其中li∈{0,1},i∈{1,2,...n},初始化每个鲸鱼个体L=[l1,l2,...,l,n]个体时,位置数组的每个元素都根据概率Ps取值,若p<Ps取1,否则取0,其中p是(0,1)之间的随机数,
其中,在步骤(3)中鲸鱼个体的适应度值计算方式为:
对某鲸鱼个体w,其位置信息为Lw=[lw,1,lw,2,...,lm,n],在输入的原始网络拓扑Gw=(V,Ew)G=(V,E)上,有 则生成一个新拓扑,在新拓扑Gw上,组播源节点S,组播目的节点集D={d1,d2,...,dk},以S为源节点,Ew中各边的开销为边上的权值,运行Dijkstra算法,若S与任意di∈D均连通,则Dijkstra算法运行成功,所得结果中包含源节点到所有目的节点共K条最短路径,K条最短路径包含的所有边去重后构成新的边集Ew,则按照如下公式计算该个体的适应度值:
若S与某个di∈D不连通,则Dijkstra算法运行失败,该个体w为非法个体,令其适应度值为MAX_FITNESS;
其中,在步骤(4)中具体包括以下步骤:
(a)对鲸鱼个体w,更新参数a、A、C,其计算公式分别为:
a=2-2t/MAX_T,t为当前迭代次数,MAX_T为最大迭代次数,
A=2ar-a,r是(0,1)中的随机数,
C=2r,r是(0,1)中的随机数;
(b)用概率Pi定义鲸鱼个体的行动,若P<Pi,鲸鱼个体通过收缩包围机制更新位置;若P≥Pi,鲸鱼个体通过螺旋模型更新位置,其中P是(0,1)中的随机值;
其中,鲸鱼个体通过收缩包围机制更新位置包括以下两种情况:
当P<Pi且|A|≥1时,
当前个体w的位置信息Lw=[lw,1,lw,2,...,lm,n],从种群中随机选取另一个体w,其位置信息Lw=[lw`,1,lw`,2,...,lm`,n],随机选取交叉点k,交叉后的当前个体w的位置信息Lw=[lw,1,lw,2,...,lw,k,lw`,k+1,lw`,k+2,...,lw`,n],另一个体w`的位置信息Lw`=[lw`,1,lw`,2,...,lw`,k,lw,k+1,lw,k+2,...,lw,n],
当P<Pi且|A|<1
设当前个体w的位置信息Lw=[lw,1,lw,2,...,lm,n],全局最优个体gbest的位置信息Lg=[lg,1,lg,2,...,lg,n],对Lw中的每一位,按照如下公式计算:
其中,i∈{1,2,...,n},rand是(0,1)中的随机值,!lg,i表示对该位取反,即原来是0则取1,原来是1则取0;
其中,通过螺旋模型来更新位置的方法为:
定义鲸鱼个体位置信息每一位被选中的浓度概率Phi,公式如下:
其中i∈{1,2,...,n},k是(-1,1)中的随机值,b是一个用来定义鲸鱼个体螺旋模型行动中螺线的形状的常数,
当前个体w的位置信息Lw=[lw,1,lw,2,...,lm,n],全局最优个体gbest的位置信息Lg=[lg,1,lg,2,...,lg,n],对Lw中的每一位,按照如下公式计算:
其中,i∈{1,2,...,n},rand是(0,1)中的随机值。
优选Ps=0.65。
优选Pi=0.5。
如图2所示,本具体实施方式另一方面还提供了一种基于鲸鱼算法的组播路由优化方法在Spark平台上的应用,将通信子网模拟成一个无向的带权连通图G=(V,E),V={v1,v2,...,vN}表示节点集合,E={e1,e2,...,eM}表示连接节点之间的边集合,N与M分别表示节点和边的个数,S∈V是组播源节点,是组播目的节点集合,K表示目的节点个数,对每条边e∈E,定义cost(e)为边e的开销,即边e上的权值,以源节点S为根节点,包含所有目的节点集D的一棵树T={VT,ET},T即为组播树,其中VT是T中所有节点的集合,ET是T中所有边的集合,组播树T是G的一个子图,其步骤包括:
(1)输入拓扑G=(V,E)的节点信息和边信息,构建网络拓扑,输入组播源节点S和组播目的节点集D={d1,d2,...,dk};
(2)初始化至少两个鲸鱼种群,并在每个鲸鱼种群中初始化各个鲸鱼个体,鲸鱼种群规模初始化为M,初始化鲸鱼种群W={w1,w2,...,wM},初始化最大迭代次数MAX_T,当前迭代次数t=1,初始化全局最优鲸鱼个体gbest,令其适应度值为最大适应度MAX_FITNESS;
(3)初始化SparkContext,调用SparkContext.broadcast()接口生成固定信息的广播量,广播到Spark平台中的所有计算节点内;
(4)调用SparkContext.parallelize()接口将各个鲸鱼种群对象并行化,生成对应的RDD;
(5)调用RDD.map()接口,在该接口中,评估每个鲸鱼种群的适应度,并行的计算各个种群中每个鲸鱼个体的当前适应度值;
(6)调用RDD.collect()接口,收集每个鲸鱼种群返回的最优个体,找到当代最优个体cbest,若cbest优于gbest,则用cbest替换gbest,生成gbest的广播量,并广播到所有计算节点内;
(7)调用RDD.foreach()接口,在该接口中,并行的更新每个种群中每个鲸鱼个体的位置信息;
(8)t=t+1,若t<MAX_T,转到步骤(5),否则退出循环,输出gbest,并求出gbest下的组播树,
其中,在步骤(2)中将每个鲸鱼个体封装,每个鲸鱼个体有适应度值和位置共两个属性,适应度值为Double型变量,代表该个体所生成的组播树的开销,适应度值初始化为MAX_FITNESS=999999.0,若该个体无法生成组播树,则该个体非法,令其适应度值为MAX_FITNESS;位置的表示方式是一个二进制数组,令其中li∈{0,1},i∈{1,2,...n},初始化每个鲸鱼个体L=[l1,l2,...,l,n]个体时,位置数组的每个元素都根据概率Ps取值,若p<Ps取1,否则取0,其中p是(0,1)之间的随机数;
其中,在步骤(2)中将每个鲸鱼种群封装,每个鲸鱼种群有两个属性,包括鲸鱼个体的数量和鲸鱼个体对象的链表,其余为鲸鱼种群的动作接口,包括初始化该种群、评估该种群的适应度、更新该种群的位置等;
其中,在步骤(5)中鲸鱼个体的适应度值计算方式为:
对某鲸鱼个体w,其位置信息为Lw=[lw,1,lw,2,...,lm,n],在输入的原始网络拓扑G=(V,E)上,有 则生成一个新拓扑Gw=(V,Ew),在新拓扑Gw上,组播源节点S,组播目的节点集D={d1,d2,...,dk},以S为源节点,Ew中各边的开销为边上的权值,运行Dijkstra算法,若S与任意di∈D均连通,则Dijkstra算法运行成功,所得结果中包含源节点到所有目的节点共K条最短路径,K条最短路径包含的所有边去重后构成新的边集Ew,则按照如下公式计算该个体的适应度值:
若S与某个di∈D不连通,则Dijkstra算法运行失败,该个体w为非法个体,令其适应度值为MAX_FITNESS;
其中,在步骤(7)中更新每个鲸鱼个体的位置信息具体包括以下步骤:
(a)对鲸鱼个体w,更新参数a、A、C,其计算公式分别为:
a=2-2t/MAX_T,t为当前迭代次数,MAX_T为最大迭代次数,
A=2ar-a,r是(0,1)中的随机数,
C=2r,r是(0,1)中的随机数;
(b)用概率Pi定义鲸鱼个体的行动,若P<Pi,鲸鱼个体通过收缩包围机制更新位置;若P≥Pi,鲸鱼个体通过螺旋模型更新位置,其中P是(0,1)中的随机值;
其中,鲸鱼个体通过收缩包围机制更新位置包括以下两种情况:
当P<Pi且|A|≥1时,
当前个体w的位置信息Lw=[lw,1,lw,2,...,lm,n],从种群中随机选取另一个体w,其位置信息Lw=[lw`,1,lw`,2,...,lm`,n],随机选取交叉点k,交叉后的当前个体w的位置信息Lw=[lw,1,lw,2,...,lw,k,lw`,k+1,lw`,k+2,...,lw`,n],另一个体w`的位置信息Lw`=[lw`,1,lw`,2,...,lw`,k,lw,k+1,lw,k+2,...,lw,n],
当P<Pi且|A|<1
设当前个体w的位置信息Lw=[lw,1,lw,2,...,lm,n],全局最优个体gbest的位置信息Lg=[lg,1,lg,2,...,lg,n],对Lw中的每一位,按照如下公式计算:
其中,i∈{1,2,...,n},rand是(0,1)中的随机值,!lg,i表示对该位取反,即原来是0则取1,原来是1则取0;
其中,通过螺旋模型来更新位置的方法为:
定义鲸鱼个体位置信息每一位被选中的浓度概率Phi,公式如下:
其中i∈{1,2,...,n},k是(-1,1)中的随机值,b是一个用来定义鲸鱼个体螺旋模型行动中螺线的形状的常数,
当前个体w的位置信息Lw=[lw,1,lw,2,...,lm,n],全局最优个体gbest的位置信息Lg=[lg,1,lg,2,...,lg,n],对Lw中的每一位,按照如下公式计算:
其中,i∈{1,2,...,n},rand是(0,1)中的随机值。
优选Ps=0.65。
优选Pi=0.5。
以下通过具体实施例1对本发明解决组播路由优化问题的具体实施方式对本发明作进一步说明。
实施例1
如图3所示,所示网络拓扑,共有20个节点,节点编号为0~19,共有49条边,边编号为0~48(未画出),每条边上有对应的开销值(未画出),在(0,50)内随机生成。
设组播的源节点S为4,目的节点集D={7,13,17}。
设鲸鱼种群规模M=100,按照上述基于鲸鱼算法的组播路由优化方法中的步骤(2)初始化所有鲸鱼个体,每个鲸鱼的位置信息是一个长度为49(按边编码)的二进制数组,每一位取0或1,如[0,1,1,0,1,...,1,0],每个鲸鱼的适应度初始值为999999.0。在种群外创建一个全局最优鲸鱼个体gbest,其初始化方式如所述步骤(2)所描述。初始化最大迭代次数MAX_T=200,当前迭代次数t=1。
对种群中的每个鲸鱼个体进行适应度评估,按照步骤上述基于鲸鱼算法的组播路由优化方法中的步骤(3)所述,以4为源节点,{7,13,17}为目的节点集,运行Dijkstra算法,找到节点4到节点7的路径[4,1,7],节点4到节点13的路径[4,0,5,13],节点4到节点17的路径[4,3,9,17],把这三条路径上所有的边相加并去重后构成新的边集Ew`,按照所述步骤(3)给出的个体适应度值公式计算该个体的适应度值即可。
种群适应度评估完成后,找到当代最优个体cbest,若cbest的适应度值小于gbest,则gbest的适应度值和位置信息被cbest所替换,否则gbest保持不变。
按照上述基于鲸鱼算法的组播路由优化方法中的步骤(4)所述,更新每个鲸鱼个体的位置信息,对每个鲸鱼个体,首先计算参数a、A、C的值,令Pi=0.5,分三种情形说明:
(1)P<0.5且|A|≥1
若当前个体w的位置信息Lw=[0,1,...,1,0,0,1],随机选取另一个体w`,其位置信息Lw`=[0,0,...,0,1,1,0],随机选取交叉点位置46(位置数组长度为49),交叉后的当前个体w的位置Lw=[0,1,...,0,1,1,0],交叉后的另一个体w`的位置Lw`=[0,0,...,1,0,0,1]。
(2)P<0.5且|A|<1
设A=0.6,C=0.8,当前个体w的位置Lw=[0,1,1,...,0,0,1],全局最优个体gbest的位置Lg=[1,1,0,...,1,0,1],按照步骤4中第二种情况所述公式计算Lw中的每一位。
(3)P≥0.5
当前个体w的位置Lw=[1,0,0,...,0,1,0],全局最优个体gbest的位置Lg=[1,1,0,...,1,0,1],设b=1,按照步骤步骤4中第三种情况所述公式计算Lw中的每一位。
种群位置信息更新完毕后,重复上述的迭代计算过程,直到t>MAX_T,退出循环,输出全局最优个体gbest,并求出gbest下的组播树及其开销。
实施例1中将上述基于鲸鱼算法的组播路由优化方法在Spark平台上进行应用,即在Spark平台上进行并行化。
将通信子网模拟成一个无向的带权连通图G=(V,E),V={v1,v2,...,vN}表示节点集合,E={e1,e2,...,eM}表示连接节点之间的边集合,N与M分别表示节点和边的个数,S∈V是组播源节点,是组播目的节点集合,K表示目的节点个数,对每条边e∈E,定义cost(e)为边e的开销,即边e上的权值,以源节点S为根节点,包含所有目的节点集D的一棵树T={VT,ET},T即为组播树,其中VT是T中所有节点的集合,ET是T中所有边的集合,组播树T是G的一个子图,其步骤包括:
(1)输入拓扑G=(V,E)的节点信息和边信息,构建网络拓扑,输入组播源节点S和组播目的节点集D={d1,d2,...,dk};
(2)初始化至少两个鲸鱼种群,并在每个鲸鱼种群中初始化各个鲸鱼个体,鲸鱼种群规模初始化为M,初始化鲸鱼种群W={w1,w2,...,wM},初始化最大迭代次数MAX_T,当前迭代次数t=1,初始化全局最优鲸鱼个体gbest,令其适应度值为最大适应度MAX_FITNESS;
(3)初始化SparkContext,调用SparkContext.broadcast()接口生成固定信息的广播量,广播到Spark平台中的所有计算节点内;
(4)调用SparkContext.parallelize()接口将各个鲸鱼种群对象并行化,生成对应的RDD;
(5)调用RDD.map()接口,在该接口中,评估每个鲸鱼种群的适应度,并行的计算各个种群中每个鲸鱼个体的当前适应度值;
(6)调用RDD.collect()接口,收集每个鲸鱼种群返回的最优个体,找到当代最优个体cbest,若cbest优于gbest,则用cbest替换gbest,生成gbest的广播量,并广播到所有计算节点内;
(7)调用RDD.foreach()接口,在该接口中,并行的更新每个种群中每个鲸鱼个体的位置信息;
(8)t=t+1,若t<MAX_T,转到步骤(5),否则退出循环,输出gbest,并求出gbest下的组播树,
其中,在步骤(2)中将每个鲸鱼个体封装,每个鲸鱼封装成Whale类,每个鲸鱼个体有适应度值和位置共两个属性,适应度值为Double型变量,代表该个体所生成的组播树的开销,适应度值初始化为MAX_FITNESS=999999.0,若该个体无法生成组播树,则该个体非法,令其适应度值为MAX_FITNESS;位置的表示方式是一个二进制数组,令其中li∈{0,1},i∈{1,2,...n},初始化每个鲸鱼个体L=[l1,l2,...,l,n]个体时,位置数组的每个元素都根据概率Ps取值,若p<Ps取1,否则取0,其中p是(0,1)之间的随机数;
其中,在步骤(2)中将每个鲸鱼种群封装,每个鲸鱼种群封装成population类,每个鲸鱼种群有两个属性,包括鲸鱼个体的数量和鲸鱼个体对象的链表,其余为鲸鱼种群的动作接口,包括初始化该种群、评估该种群的适应度、更新该种群的位置等;
其中,在步骤(5)中鲸鱼个体的适应度值计算方式为:
对某鲸鱼个体w,其位置信息为Lw=[lw,1,lw,2,...,lm,n],在输入的原始网络拓扑G=(V,E)上,有 则生成一个新拓扑Gw=(V,Ew),在新拓扑Gw上,组播源节点S,组播目的节点集D={d1,d2,...,dk},以S为源节点,Ew中各边的开销为边上的权值,运行Dijkstra算法,若S与任意di∈D均连通,则Dijkstra算法运行成功,所得结果中包含源节点到所有目的节点共K条最短路径,K条最短路径包含的所有边去重后构成新的边集Ew,则按照如下公式计算该个体的适应度值:
若S与某个di∈D不连通,则Dijkstra算法运行失败,该个体w为非法个体,令其适应度值为MAX_FITNESS;
其中,在步骤(7)中更新每个鲸鱼个体的位置信息具体包括以下步骤:
(a)对鲸鱼个体w,更新参数a、A、C,其计算公式分别为:
a=2-2t/MAX_T,t为当前迭代次数,MAX_T为最大迭代次数,
A=2ar-a,r是(0,1)中的随机数,
C=2r,r是(0,1)中的随机数;
(b)用概率Pi定义鲸鱼个体的行动,若P<Pi,鲸鱼个体通过收缩包围机制更新位置;若P≥Pi,鲸鱼个体通过螺旋模型更新位置,其中P是(0,1)中的随机值;
其中,鲸鱼个体通过收缩包围机制更新位置包括以下两种情况:
当P<Pi且|A|≥1时,
当前个体w的位置信息Lw=[lw,1,lw,2,...,lm,n],从种群中随机选取另一个体w,其位置信息Lw=[lw`,1,lw`,2,...,lm`,n],随机选取交叉点k,交叉后的当前个体w的位置信息Lw=[lw,1,lw,2,...,lw,k,lw`,k+1,lw`,k+2,...,lw`,n],另一个体w`的位置信息Lw`=[lw`,1,lw`,2,...,lw`,k,lw,k+1,lw,k+2,...,lw,n],
当P<Pi且|A|<1
设当前个体w的位置信息Lw=[lw,1,lw,2,...,lm,n],全局最优个体gbest的位置信息Lg=[lg,1,lg,2,...,lg,n],对Lw中的每一位,按照如下公式计算:
其中,i∈{1,2,...,n},rand是(0,1)中的随机值,!lg,i表示对该位取反,即原来是0则取1,原来是1则取0;
其中,通过螺旋模型来更新位置的方法为:
定义鲸鱼个体位置信息每一位被选中的浓度概率Phi,公式如下:
其中i∈{1,2,...,n},k是(-1,1)中的随机值,b是一个用来定义鲸鱼个体螺旋模型行动中螺线的形状的常数,
当前个体w的位置信息Lw=[lw,1,lw,2,...,lm,n],全局最优个体gbest的位置信息Lg=[lg,1,lg,2,...,lg,n],对Lw中的每一位,按照如下公式计算:
其中,i∈{1,2,...,n},rand是(0,1)中的随机值。
优选Ps=0.65。
优选Pi=0.5。
上述鲸鱼个体Whale的类定义如图12:
其中,
fitness:该鲸鱼个体的适应度值,对应组播树的开销。
position:该鲸鱼个体的位置信息,一个二进制数组。
init():鲸鱼个体的初始化接口,用于初始化该个体的位置数组。
calcFitness():鲸鱼个体的适应度值计算接口,用于计算该个体的适应度值。
上述鲸鱼种群Population的类定义如图13:
其中,
whale_num:种群中含有多少个鲸鱼个体。
whale_list:鲸鱼对象的容器,存储该种群中所有的鲸鱼个体。
init():种群初始化接口,创建并初始化种群中所有的鲸鱼个体并将其存入容器中。
updatePositions():种群位置更新接口,更新种群中每个鲸鱼个体的位置信息。
fitnessEvaluate():种群适应度评估接口,计算种群中每个鲸鱼个体的适应度值。
ascendingEntitysByFitness():个体排序接口,把种群内的所有个体按照适应度值升序排序,排序后队首个体最优。
getBestEntity():获取种群内最优个体接口,即适应度值最小的个体。
以下通过场景一下的对比例1、实施例2、实施例3;场景二下的对比例2、实施例4、实施例5;场景三下的对比例3、实施例6、实施例7之间的比较对本发明基于鲸鱼算法的组播路由优化方法作进一步说明。
需要说明的是,
对比例1、对比例2、对比例3均采用遗传算法,以下将该方法简称为GA。
实施例2、实施例4、实施例6均采用本发明中的基于鲸鱼算法的组播路由优化方法在单机环境下的应用,以下将该方法简称为MWOA。
实施例3、实施例5、实施例7均采用本发明中的基于鲸鱼算法的组播路由优化方法在Spark平台上的应用,以下将该方法简称为PMWOA。
场景一:网络拓扑节点数100,边数280,组播源节点5,组播目的节点集{14,23,36,47,55,67,81,92,79}。
场景二:网络拓扑节点数150,边数370,组播源节点27,组播目的节点集{33,9,18,67,112,99,137,65,127,141,49,77}。
场景三:网络拓扑节点数200,边数542,组播源节点121,组播目的节点集{191,7,29,43,167,143,128,97,73,62,14,34,157,108,59,88,111,136}。
设种群规模为500,迭代次数200。其中,PMWOA启用4个worker节点,每个worker最多使用4个CPU,使用的最大内存1G。三种算法在三个场景中各自运行10次,结果取平均值。三种算法所得的组播树最优开销、标准差、算法用时的统计结果如下表1:
表1:
结果分析:MWOA与PMWOA在三个场景下的求解质量上明显优于GA,组播树最优开销更低,且运行时间远小于GA。其中,MWOA的运行效率尤其突出,用时极短。PMWOA因为运行在Spark中,一些资源调度、网络通信占据了运行用时,如广播常量操作、收集每个子种群的最优个体操作等,所以PMWOA的运行时间比MWOA多一些。但随着问题规模从场景二扩大到场景三后,PMWOA的运行时间增长率小于MWOA,MWOA运行时间增长了2.7s,PMWOA的运行时间仅增加了1.3秒,是MWOA的二分之一,说明PMWOA在处理更大规模的组播路由优化问题上比MWOA更高效。此外,三个场景中MWOA与PMWOA的组播树开销标准差在总体上看是小于GA的,说明MWOA与PMWOA比GA更稳定。
上述三种算法在场景一中所得的历史最优组播树开销随代数的变化曲线如图4所示,上述三种算法在场景二中所得的历史最优组播树开销随代数的变化曲线如图5所示,上述三种算法在场景二中所得的历史最优组播树开销随代数的变化曲线如图6所示。其中曲线图纵坐标为历史最优组播树开销,横坐标为代数。
结果分析:从图中可知,在三个场景下,MWOA和PMWOA比GA拥有更快的收敛速度,且所得结果拥有更好的解质量。
上述三种算法在场景一中所得的每一代组播树平均开销随代数的变化曲线如图7所示,上述三种算法在场景二中所得的每一代组播树平均开销随代数的变化曲线如图8所示,上述三种算法在场景二中所得的每一代组播树平均开销随代数的变化曲线如图9所示。其中曲线图纵坐标为每一代组播树平均开销,横坐标为代数。
结果分析:三个场景中,MWOA与PMWOA的平均开销随着代数的增长不断呈下降趋势,说明整个种群的适应度随着算法的不断迭代运行,整体呈变好的趋势。而GA的平均开销变化忽上忽下,从图中来看没有一个明显的趋势变化。由此可见,GA的解搜索能力随机性更强,而MWOA与PMWOA的解搜索能力有更好的指引性,能够通过历史最优解的指导性作用带领整个种群往更好的方向发展,有利于挖掘出问题的更优解。
MWOA与PMWOA在场景三中执行时间随种群规模的变化曲线如图10所示,其中曲线图纵坐标为执行时间,横坐标为种群规模。
结果分析:在种群规模不大的时候,单机中运行的MWOA其执行速度非常快,而Spark中运行的PMWOA由于一些资源调配、网络通信占据了用时,导致其耗时比MWOA长。随着种群规模增大,从图中明显看出PMWOA的耗时增长率比较缓慢,而MWOA的耗时增长率很快,到了种群规模1500之后,PMWOA的耗时开始少于MWOA,且随着规模的不断增加,其耗时远远小于MWOA。规模增大后,算法的各个算子成了耗时主体,而Spark平台相关的调度、通信时间开销仅占据总体耗时的一小部分,此时,并行化的优势体现出来,相比单机下的顺序执行,算法的并行运行大大减少了算法的执行时间,加快了执行效率。
设单机环境下MWOA的执行时间为Tm,Spark环境下PMWOA的执行时间为Tp,定义加速比设种群规模10000,迭代次数200,其中,PMWOA启用的每个worker最多使用8个CPU,使用的最大内存1G。在场景三中,speedup随Spark集群中worker节点的个数的变化曲线如图11所示,其中曲线图纵坐标为加速比,横坐标为工作节点个数。
结果分析:从图中可知,speedup在worker个数为1~3范围内是线性增加的,当worker个数超过3,speedup增长极为缓慢,甚至可以认为没有增长。结合speedup的定义可知,worker个数由1增加到3,相比MWOA的运行时间,PMWOA的运行时间是线性减少的,充分说明了利用Spark平台并行化MWOA能大大提升算法的执行效率。当worker个数超过3后,PMWOA的执行时间几乎不再减少,说明在当前问题规模、当前种群规模、当前迭代次数下,worker个数等于3能为PMWOA的执行提供最大的并行度,多了则浪费Spark平台资源,少了则不能最大化PMWOA的运行效率。当worker个数等于1时,speedup的理论值应该为1,从图中可知是大于1的,说明在worker=1时,PMWOA的运行时间要少于MWOA的运行时间,因为每个worker最多启用8个CPU,PMWOA即使只在1个worker中运行也能使用8个CPU并行计算,而MWOA仅在单机中顺序执行,所以PMWOA的执行时间要少于MWOA的执行时间。
以上对本发明的有关内容进行了说明。本领域普通技术人员在基于这些说明的情况下将能够实现本发明。基于本发明的上述内容,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
Claims (6)
1.基于鲸鱼算法的组播路由优化方法,将通信子网模拟成一个无向的带权连通图G=(V,E),V={v1,v2,...,vN}表示节点集合,E={e1,e2,...,eM}表示连接节点之间的边集合,N与M分别表示节点和边的个数,S∈V是组播源节点,是组播目的节点集合,K表示目的节点个数,对每条边e∈E,定义cost(e)为边e的开销,即边e上的权值,以源节点S为根节点,包含所有目的节点集D的一棵树T={VT,ET},T即为组播树,其中VT是T中所有节点的集合,ET是T中所有边的集合,组播树T是G的一个子图,其特征在于,其步骤包括:
(1)输入拓扑G=(V,E)的节点信息和边信息,构建网络拓扑,输入组播源节点S和组播目的节点集D={d1,d2,...,dk};
(2)初始化鲸鱼种群,并在鲸鱼种群中初始化各个鲸鱼个体,鲸鱼种群规模初始化为M(M≥2)初始化鲸鱼种群W={w1,w2,...,wM},生成的每个鲸鱼个体的个体属性包括位置和适应度值,初始化最大迭代次数MAX_T,当前迭代次数t=1,初始化全局最优鲸鱼个体gbest,令其适应度值为最大适应度MAX_FITNESS;
(3)评估鲸鱼种群W,计算每个鲸鱼个体的当前适应度值,找到当代最优鲸鱼个体cbest,若cbest的适应度值优于gbest,则gbest的位置和适应度值被cbest替换;
(4)更新种群W中每个鲸鱼个体的位置信息;
(5)t=t+1,若t<MAX_T,转到步骤(3),否则退出循环,输出gbest,并求出gbest下的组播树;
其中,在步骤(2)中对鲸鱼种群和鲸鱼个体进行封装,在步骤(2)中每个鲸鱼个体的适应度值为Double型变量,代表该个体所生成的组播树的开销,适应度值初始化为MAX_FITNESS=999999.0,若该个体无法生成组播树,则该个体非法,令其适应度值为MAX_FITNESS;
位置的表示方式是一个二进制数组,令其中li∈{0,1},i∈{1,2,...n},初始化每个鲸鱼个体L=[l1,l2......l,n]个体时,位置数组的每个元素都根据概率Ps取值,Ps代表初始化时,某个节点被选中的概率,若Ps>p取1,否则取0,其中p是(0,1)之间的随机数,n≥1;
其中,在步骤(3)中鲸鱼个体的适应度值计算方式为:
对某鲸鱼个体w,其位置信息为Lw=[lw,1,lw,2,...lm,n],在输入的原始网络拓扑Gw=(V,Ew)G=(V,E)上,有则生成一个新拓扑,在新拓扑Gw上,组播源节点S,组播目的节点集D={d1,d2,...,dk},以S为源节点,Ew中各边的开销为边上的权值,运行Dijkstra算法,若S与任意di∈D均连通,则Dijkstra算法运行成功,所得结果中包含源节点到所有目的节点共K条最短路径,K条最短路径包含的所有边去重后构成新的边集Ew,则按照如下公式计算该个体的适应度值:
若S与某个di∈D不连通,则Dijkstra算法运行失败,该个体w为非法个体,令其适应度值为MAX_FITNESS;
其中,在步骤(4)中具体包括以下步骤:
(a)对鲸鱼个体w,更新参数a、A、C,其计算公式分别为:
a=2-2t/MAX_T,t为当前迭代次数,MAX_T为最大迭代次数,
A=2ar-a,r是(0,1)中的随机数,
C=2r,r是(0,1)中的随机数;
(b)用概率Pi定义鲸鱼个体的行动,若Pi>P,鲸鱼个体通过收缩包围机制更新位置;若Pi≤P,鲸鱼个体通过螺旋模型更新位置,其中P是(0,1)中的随机值;其中,鲸鱼个体通过收缩包围机制更新位置包括以下两种情况:
当Pi>P且|A|≥1时,
当前个体w的位置信息Lw=[lw,1,lw,2,...,lm,n],从种群中随机选取另一个体w`,其位置信息Lw=[lw`,1,lw`,2,...,lm`,n],随机选取交叉点k,交叉后的当前个体w的位置信息Lw=[lw,1,lw,2,...,lw,k,lw`,k+1,lw`,k+2,...,lw`,n],另一个体w`的位置信息Lw`=[lw`,1,lw`,2,...,lw`,k,lw,k+1,lw,k+2,...,lw,n],
当Pi>P且|A|<1
设当前个体w的位置信息Lw=[lw,1,lw,2,...,lm,n],全局最优个体gbest的位置信息Lg=[lg,1,lg,2,...,lg,n],对Lw中的每一位,按照如下公式计算:
其中,i∈{1,2,...,n},rand是(0,1)中的随机值,!lg,i表示对该位取反,即原来是0则取1,原来是1则取0;
其中,通过螺旋模型来更新位置的方法为:
定义鲸鱼个体位置信息每一位被选中的浓度概率Phi,公式如下:
其中i∈{1,2,...,n},k’是(-1,1)中的随机值,b是一个用来定义鲸鱼个体螺旋模型行动中螺线的形状的常数,
当前个体w的位置信息Lw=[lw,1,lw,2,...,lm,n],全局最优个体gbest的位置信息Lg=[lg,1,lg,2,...,lg,n],对Lw中的每一位,按照如下公式计算:
其中,i∈{1,2,...,n},rand是(0,1)中的随机值。
2.如权利要求1所述的基于鲸鱼算法的组播路由优化方法,其特征在于,Ps=0.65。
3.如权利要求1所述的基于鲸鱼算法的组播路由优化方法,其特征在于,Pi=0.5。
4.基于鲸鱼算法的组播路由优化方法在Spark平台上的应用,其特征在于,将通信子网模拟成一个无向的带权连通图G=(V,E),V={v1,v2,...,vN}表示节点集合,E={e1,e2,...,eM}表示连接节点之间的边集合,N与M分别表示节点和边的个数,S∈V是组播源节点,是组播目的节点集合,K表示目的节点个数,对每条边e∈E,定义cost(e)为边e的开销,即边e上的权值,以源节点S为根节点,包含所有目的节点集D的一棵树T={VT,ET},T即为组播树,其中VT是T中所有节点的集合,ET是T中所有边的集合,组播树T是G的一个子图,其步骤包括:
(1)输入拓扑G=(V,E)的节点信息和边信息,构建网络拓扑,输入组播源节点S和组播目的节点集D={d1,d2,...,dk};
(2)初始化至少两个鲸鱼种群,并在每个鲸鱼种群中初始化各个鲸鱼个体,鲸鱼种群规模初始化为M(M≥2),初始化鲸鱼种群W={w1,w2,...,wM},初始化最大迭代次数MAX_T,当前迭代次数t=1,初始化全局最优鲸鱼个体gbest,令其适应度值为最大适应度MAX_FITNESS;
(3)初始化SparkContext,调用SparkContext.broadcast()接口生成固定信息的广播量,广播到Spark平台中的所有计算节点内;
(4)调用SparkContext.parallelize()接口将各个鲸鱼种群对象并行化,生成对应的RDD;
(5)调用RDD.map()接口,在该接口中,评估每个鲸鱼种群的适应度,并行的计算各个种群中每个鲸鱼个体的当前适应度值;
(6)调用RDD.collect()接口,收集每个鲸鱼种群返回的最优个体,找到当代最优个体cbest,若cbest优于gbest,则用cbest替换gbest,生成gbest的广播量,并广播到所有计算节点内;
(7)调用RDD.foreach()接口,在该接口中,并行的更新每个种群中每个鲸鱼个体的位置信息;
(8)t=t+1,若t<MAX_T,转到步骤(5),否则退出循环,输出gbest,并求出gbest下的组播树,
其中,在步骤(2)中将每个鲸鱼个体封装,每个鲸鱼个体有适应度值和位置共两个属性,适应度值为Double型变量,代表该个体所生成的组播树的开销,适应度值初始化为MAX_FITNESS=999999.0,若该个体无法生成组播树,则该个体非法,令其适应度值为MAX_FITNESS;位置的表示方式是一个二进制数组,令其中li∈{0,1},i∈{1,2,...n},初始化每个鲸鱼个体L=[l1,l2,...,l,n]个体时,位置数组的每个元素都根据概率Ps取值,若Ps>p取1,否则取0,其中p是(0,1)之间的随机数;
其中,在步骤(2)中将每个鲸鱼种群封装,每个鲸鱼种群有两个属性,包括鲸鱼个体的数量和鲸鱼个体对象的链表,其余为鲸鱼种群的动作接口,包括初始化该种群、评估该种群的适应度、更新该种群的位置等;
其中,在步骤(5)中鲸鱼个体的适应度值计算方式为:
对某鲸鱼个体w,其位置信息为Lw=[lw,1,lw,2,...,lm,n],在输入的原始网络拓扑G=(V,E)上,有则生成一个新拓扑Gw=(V,Ew),在新拓扑Gw上,组播源节点S,组播目的节点集D={d1,d2,...,dk},以S为源节点,Ew中各边的开销为边上的权值,运行Dijkstra算法,若S与任意di∈D均连通,则Dijkstra算法运行成功,所得结果中包含源节点到所有目的节点共K条最短路径,K条最短路径包含的所有边去重后构成新的边集Ew,则按照如下公式计算该个体的适应度值:
若S与某个di∈D不连通,则Dijkstra算法运行失败,该个体w为非法个体,令其适应度值为MAX_FITNESS;
其中,在步骤(7)中更新每个鲸鱼个体的位置信息具体包括以下步骤:
(a)对鲸鱼个体w,更新参数a、A、C,其计算公式分别为:
a=2-2t/MAX_T,t为当前迭代次数,MAX_T为最大迭代次数,
A=2ar-a,r是(0,1)中的随机数,
C=2r,r是(0,1)中的随机数;
(b)用概率Pi定义鲸鱼个体的行动,若Pi>P,鲸鱼个体通过收缩包围机制更新位置;若Pi≤P,鲸鱼个体通过螺旋模型更新位置,其中P是(0,1)中的随机值;
其中,鲸鱼个体通过收缩包围机制更新位置包括以下两种情况:
当Pi>P且|A|≥1时,
当前个体w的位置信息Lw=[lw,1,lw,2,...,lm,n],从种群中随机选取另一个体w,其位置信息Lw=[lw`,1,lw`,2,...,lm`,n],随机选取交叉点k,交叉后的当前个体w的位置信息Lw=[lw,1,lw,2,...,lw,k,lw`,k+1,lw`,k+2,...,lw`,n],另一个体w`的位置信息Lw`=[lw`,1,lw`,2,...,lw`,k,lw,k+1,lw,k+2,...,lw,n],
当Pi>P且|A|<1
设当前个体w的位置信息Lw=[lw,1,lw,2,...,lm,n],全局最优个体gbest的位置信息Lg=[lg,1,lg,2,...,lg,n],对Lw中的每一位,按照如下公式计算:
其中,i∈{1,2,...,n},rand是(0,1)中的随机值,!lg,i表示对该位取反,即原来是0则取1,原来是1则取0;
其中,通过螺旋模型来更新位置的方法为:
定义鲸鱼个体位置信息每一位被选中的浓度概率Phi,公式如下:
其中i∈{1,2,...,n},k是(-1,1)中的随机值,b是一个用来定义鲸鱼个体螺旋模型行动中螺线的形状的常数,
当前个体w的位置信息Lw=[lw,1,lw,2,...,lm,n],全局最优个体gbest的位置信息Lg=[lg,1,lg,2,...,lg,n],对Lw中的每一位,按照如下公式计算:
其中,i∈{1,2,...,n},rand是(0,1)中的随机值。
5.如权利要求4所述的基于鲸鱼算法的组播路由优化方法在Spark平台上的应用,其特征在于,Ps=0.65。
6.如权利要求4所述的基于鲸鱼算法的组播路由优化方法在Spark平台上的应用,其特征在于,Pi=0.5。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711006269.0A CN107911300B (zh) | 2017-10-25 | 2017-10-25 | 基于鲸鱼算法的组播路由优化方法及其在Spark平台上的应用 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711006269.0A CN107911300B (zh) | 2017-10-25 | 2017-10-25 | 基于鲸鱼算法的组播路由优化方法及其在Spark平台上的应用 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107911300A CN107911300A (zh) | 2018-04-13 |
CN107911300B true CN107911300B (zh) | 2020-10-13 |
Family
ID=61841781
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711006269.0A Expired - Fee Related CN107911300B (zh) | 2017-10-25 | 2017-10-25 | 基于鲸鱼算法的组播路由优化方法及其在Spark平台上的应用 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107911300B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109784604A (zh) * | 2018-11-15 | 2019-05-21 | 长安大学 | 一种基于鲸鱼算法的柔性作业车间制造资源分配方法 |
CN110059875B (zh) * | 2019-04-12 | 2023-02-17 | 湖北工业大学 | 基于分布式鲸鱼优化算法的公共自行车需求量预测方法 |
CN110266600B (zh) * | 2019-05-29 | 2021-08-10 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 带宽约束组播路由优化方法 |
CN110322050B (zh) * | 2019-06-04 | 2023-04-07 | 西安邮电大学 | 一种风能资源数据补偿方法 |
CN113344406A (zh) * | 2021-06-21 | 2021-09-03 | 国网山东省电力公司电力科学研究院 | 一种配网台区智能融合终端电能质量监测可靠性评估方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103905319A (zh) * | 2014-03-24 | 2014-07-02 | 中国电子科技集团公司第三十研究所 | 一种基于迭代编码的多约束组播路由算法 |
CN105306374A (zh) * | 2015-09-15 | 2016-02-03 | 东华大学 | 一种基于遗传算法的Overlay网络QoS广播方法 |
CN107016436A (zh) * | 2017-03-31 | 2017-08-04 | 浙江大学 | 一种仿生策略优化的混合鲸鱼算法 |
CN107094112A (zh) * | 2017-03-31 | 2017-08-25 | 西南交通大学 | 基于果蝇优化算法的带宽约束组播路由优化方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140147120A1 (en) * | 2012-11-25 | 2014-05-29 | Nec Laboratories America, Inc. | Grooming Multicast Traffic in Flexible Optical Wavelength Division Multiplexing WDM Networks |
-
2017
- 2017-10-25 CN CN201711006269.0A patent/CN107911300B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103905319A (zh) * | 2014-03-24 | 2014-07-02 | 中国电子科技集团公司第三十研究所 | 一种基于迭代编码的多约束组播路由算法 |
CN105306374A (zh) * | 2015-09-15 | 2016-02-03 | 东华大学 | 一种基于遗传算法的Overlay网络QoS广播方法 |
CN107016436A (zh) * | 2017-03-31 | 2017-08-04 | 浙江大学 | 一种仿生策略优化的混合鲸鱼算法 |
CN107094112A (zh) * | 2017-03-31 | 2017-08-25 | 西南交通大学 | 基于果蝇优化算法的带宽约束组播路由优化方法 |
Non-Patent Citations (2)
Title |
---|
《A Modified Ant Colony Optimization Algorithm for Network Coding Resource Minimization》;WangZhaoyuan等;《IEEE TRANSACTIONS ON EVOLUTIONARY COMPUTATION》;20160630;325-342 * |
《对机会网络中节点行为和组播问题的研究》;孙建飞;《中国优秀硕士学位论文全文数据库信息科技辑》;20150715;I136-354 * |
Also Published As
Publication number | Publication date |
---|---|
CN107911300A (zh) | 2018-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107911300B (zh) | 基于鲸鱼算法的组播路由优化方法及其在Spark平台上的应用 | |
CN107172166B (zh) | 面向工业智能化服务的云雾计算系统 | |
Hegeman et al. | Near-constant-time distributed algorithms on a congested clique | |
Xing et al. | An integer encoding grey wolf optimizer for virtual network function placement | |
CN112468401B (zh) | 用于类脑处理器的片上网络路由通信方法及片上网络 | |
CN107016077B (zh) | 一种面向Web服务组合的优化方法 | |
Liu et al. | An effective dynamic programming offloading algorithm in mobile cloud computing system | |
Wesolowski et al. | Tram: Optimizing fine-grained communication with topological routing and aggregation of messages | |
CN103138981A (zh) | 一种社交网络分析方法和装置 | |
CN101616074B (zh) | 基于量子进化的组播路由优化方法 | |
Gmyr et al. | Distributed monitoring of network properties: The power of hybrid networks | |
CN112100450A (zh) | 一种图计算数据分割方法、终端设备及存储介质 | |
CN109189393A (zh) | 业务处理方法及装置 | |
CN115543556A (zh) | 一种基于多任务遗传编程算法的自适应符号回归方法 | |
CN108400940A (zh) | 一种基于分布估计算法的组播虚拟网络功能部署方法 | |
Candan et al. | A dynamic island model for adaptive operator selection | |
Gandhi et al. | Performance comparison of parallel graph coloring algorithms on bsp model using hadoop | |
CN107257307B (zh) | 基于Spark的并行化遗传算法求解多终端协同接入网络方法 | |
CN108614932B (zh) | 基于边图的线性流重叠社区发现方法、系统及存储介质 | |
CN111683010B (zh) | 基于光缆网光路的双路由的生成方法及装置 | |
Maniscalco et al. | Binary and m-ary encoding in applications of tree-based genetic algorithms for QoS routing | |
CN107766927A (zh) | 基于个体‑种群的智能优化算法在Spark上的通用并行化方法 | |
Sun et al. | QPSO-based QoS multicast routing algorithm | |
CN105515984A (zh) | 一种多路径多通讯手段路由规划方法 | |
Ge et al. | Hybrid ant colony optimization algorithm for solving the open vehicle routing problem |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20201013 |