§3.3 Floyed路由算法与演化路由算法实验数据分析
算法的测试数据,使用图7中的网络结构。则网络的拓扑信息与耗散信息分别为:
拓扑信息矩阵 | 耗散信息矩阵 |
1 1 1 0 0 1 1 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 1 |
0 2 3 1000000 1000000 2 0 1000000 6 1000000 3 1000000 0 4 1000000 1000000 6 4 0 5 1000000 1000000 1000000 5 0 |
表8 算法测试数据网络信息表
注释:耗散信息中,1000000表示无穷大。
3.3.1 Floyed路由算法分析
我们知道Floyed算法的复杂度是O(n3)的,但改造的Floyed路由算法的复杂度略微大于这个。因为算法的停机条件是路由表的完成。可以证明,Floyed路由算法对于连通图计算所得的路由表是全局最优的。证明本文从略,详见于参考资料[2]。
下面是五次实验算法的测试结果:
实验标号 源路由器标号 计算路由表所耗时间(ms) 平均时间(ms)
1 0 109 -
2 0 109 -
3 0 110 -
4 0 110 -
5 0 109 -
表9 Floyed算法测试结果表
该表格的数据将作为一种对比标准,与后面的演化路由算法的测试数据进行对比分析。
3.3.2 演化路由算法分析
1,演化路由算法的参数设置
演化路由算法的参数设置如下:
名称 | 说明 | 算法设定值 |
MAX_GENE_NUMBER | 种群大小 | 20 |
GENE_LENGTH | 基因最大长度 | 100 |
PBUILDER | 保守成长与开明成长的分界概率 | 0.08 |
MAX_T | 演化代数 | 10 |
表10 演化路由算法参数设置说明表
这些参数的设置,都是根据个人经验。但并不一定是最优的。我们下面竟通过实验数据来分析算法的性能。
2,演化路由算法收敛性的说明
但首先要说明的是,演化路由算法是收敛的。
研究演化路由算法Algorithm EvoRoutCompute,可知算法的收敛性关键在于下面的过程收敛:
While ( gene IS NOT COMPLETE )
{ // gene成长至成熟
Gene-Builder;
If ( Gene-DECOMPLETE )
Gene-RANDOMDELETE;
};
此过程用于gene初始化后,或gene成熟后的进一步演化中。
如定义,非空gene中的元素始终包含from与to。且由算法Algorithm 5. Gene-Builder可知,gene新增的片段都是gene的对立基因_gene中的元素,由对立基因的定义可知:
gene中元素的序列是NodeSet集合或其子集的元素的排列,记为from p1…pm to。其中p1,…,pm都是NodeSet集合的元素即 图中的结点。(1)
如果(1)中排列所形成的“路径”在图中是合法的,即gene处于成熟态(COMPLETE),该过程结束,演化路由算法收敛。
如果(1)中排列所形成的“路径”在图中不合法,则gene继续成长;若对立基因_gene已为空,由算法Algorithm 6. Gene-DECOMPLETE可以判断这种情况,则由算法Algorithm 7. Gene-RANDOMDELETE对gene随机删除一段(gene可能再次成为初始态)而重新成长。
换言之,该过程是按照随机策略搜索NodeSet集合中元素排列空间的序列点,如果该序列是图中合法的路径则搜索过程结束。由于图的连通性,合法路径在这个空间中是必然存在的,这个过程也将收敛,则演化路由算法是收敛的。
3,演化路由算法分析
下面是演化路由算法的测试结果:
目标路由器标号 演化代数(第?代) 路由计算所耗时间(ms) 平均时间(ms)
0 0 47 -
0 1 16 -
0 2 0 -
0 3 18 -
0 4 0 -
0 5 26 -
0 6 0 -
0 7 16 -
0 8 15 -
0 9 16 15.4
1 0 15 -
1 1 0 -
1 2 16 -
1 3 16 -
1 4 0 -
1 5 15 -
1 6 16 -
1 7 16 -
1 8 15 -
1 9 16 12.5
2 0 16 -
2 1 16 -
2 2 15 -
2 3 16 -
2 4 16 -
2 5 31 -
2 6 15 -
2 7 16 -
2 8 16 -
2 9 15 17.2
3 0 0 -
3 1 31 -
3 2 16 -
3 3 15 -
3 4 16 -
3 5 16 -
3 6 15 -
3 7 32 -
3 8 15 -
3 9 16 17.2
4 0 62 -
4 1 47 -
4 2 31 -
4 3 32 -
4 4 31 -
4 5 31 -
4 6 31 -
4 7 32 -
4 8 62 -
4 9 31 39.0
- - - 总时间:101.3
表11 演化路由算法测试结果表
对于图7的测试数据,实验结果表明,演化路由算法在执行过程中,每一代的演化获得的路由路径均是全局最优的(当然,原因之一是网络结构的测试数据量太小)。测试结果表中的总时间,就是通过一代演化获得路由表的平均总时间。
与Floyed路由算法实验数据对比,演化路由算法在图7网络中的测试数据上并没有很大的优势:
Floyed路由算法完成0号路由器的路由表计算,平均总时间是在109-110ms; 演化路由算法完成0号路由器的路由表计算(按演化一代计算),平均总时间为101.3ms。 |