演化路由算法框架的流程图如下图所示:
图8 演化路由算法的框架流程图
那么,演化路由算法被定义如下:
Algorithm EvoRoutCompute.
//演化路由计算
BEGIN
evoTime = 0; //演化代数
geneSet = NIL; //成熟基因集合
bestGeneSet = NIL; //较好基因集合
halfGeneSet = NIL; //基因缓冲集合
While ( evoTime < MAX_EVOTIME )
{//
While ( geneSet.geneNumber < MAX_GENE_NUMBER )
{//
Gene-Init;
While ( gene IS NOT COMPLETE )
{ // gene成长至成熟
Gene-Builder;
If ( Gene-DECOMPLETE )
Gene-RANDOMDELETE;
};
geneSet.AddRear( gene );
};
geneSet.Sort();
best = geneSet.GetBest();
bestGeneSet.AddRear( best );
geneSet.RemoveHalf();
/*在第二草稿的演化路由算法中,以下注释部分没有程序实现,
从而geneSet中的一半基因没有进一步演化直接进入下一代的竞争.
While ( geneSet.geneNumber > 0 )
{
gene = geneSet.GetFirst();
geneSet.RemoveFirst();
Gene-Evolution;
halfGeneSet.AddRear( gene );
};
While ( halfGeneSet.geneNumber > 0 )
{
gene = halfGeneSet.GetFirst();
geneSet.AddRear( gene );
halfGeneSet.RemoveFirst();
};
***********************************************/
};
bestGeneSet.Sort();
BEST = bestGeneSet.GetBest();
返回BEST;
END.
由返回的BEST,便可以获得一个好的路由路径,进而可以得到路由器的路由表。演化路由算法the EvoRoutCompute Algorithm (第二草稿)的设计过程中借鉴了参考资料[3]的诸多思想,并已经通过C++编程实现,其后我们将通过实验数据来看算法的效率和可能的进一步改进处。