CSDN博客

img PercyLee

路由模拟——路由算法1的构想

发表于2004/4/19 19:10:00  1066人阅读

 

                                                                 路由算法的构想

2004-4-9

一,对于这个网络,有如下定义:

1,        nodeSet = { A,B,C,D,E,F,G }.

* 原操作 NEXTHOP() : NEXTHOP(node) = set with all the node’s adjacent-nodes.

* 原操作 RANDOM() : RANDOM(set of nodes) = one random node in set of nodes.

2,        gene : string of element in nodeSet.

           * 原操作 NODE() : NODE(gene) =  node set which constructs the string of gene.

           gene’: NODE(gene’) = nodeSet – NODE(gene).

3,        geneSet = 成熟态gene的集合.

* geneSet 的操作:

(1),    best = geneSet.GetBest();

(2),    worst = geneSet.GetWorst();

(3),    gene = geneSet.First();

(4),    gene = geneSet.Random();

(5),    geneSet.AddFirst(gene);

(6),    geneSet.AddRear(gene);

(7),    geneSet.RemoveFirst();

(8),    geneSet.RemoveRear();

(9),  geneSet.Sort();

         4,      from  , to    , pre  , next : node in nodeSet.

 

         e.g.             NEXTHOP(A) = { B,C,D };

                            gene = ABFC;

                            gene’ = DEG;

                            NODE(gene) = { A,B,F,C };

 

    二, 构想的算法过程为:

 

1,      gene.Init() : NODE(gene.Init) = { from ,to };

gene-set.Init() {

For i := 0 to gene number Do

         gene_i.Init();

}.

 

p.s. After gene.Init(),the rear of the gene is the element just before the last one, that is, the one before the ‘to’.

 

2,      (1),    gene.Builder1() { //保守成长

                   newNode = RANDOM( NEXTHOP( gene’s rear-node) );

                   ADJUST( gene’);

                   }.

         (2),    gene.Builder2() { //开明成长

                   newNode = RANDOM( NODE( gene’) );

                   ADJUST( gene’);

                   }.

         (3),    if ( gene is COMPLETE ) {

                   gene 进入成熟态;

                   geneSet.AddRear( gene );

                   }.

         //

         While( geneSet.geneNumber < MAX_GENE_NUMBER ) {

(1)     &  (2);

(3);

if (gene can’t be COMPLETE )

         random-delete some nodes from the rear of NODE(gene);

         }.

3,      geneSet : 成熟态的gene的集合.

4,      best = geneSet.GetBest();

         COPY( best );

         If( best is BEST)

                   停机.

 

5,      //

geneSet.ReBuilder() {

                   give up half genes of the geneSet which are not so good;

                   while( geneSet.geneNumber >0){

                            gene = geneSet. First();

                            (1) gene 演化;

                            存储 gene in another half genes’ set;

                            geneSet.RemoveFirst();

                   };

                   put another half genes into geneSet;

}.

 

         1继续填充geneSet.

 

(1)       gene演化 {

{ //保守变异

random-select two node XY in NODE(gene);

node = RANDOM( NEXTHOP( X));

change Y with node;

                            } & { //开明变异

random-select two node XY in NODE(gene);

node = RANDOM( NODE(gene’) );

change Y with node;

                            } & { //自舍一段

                                     random-delete some nodes in NODE(gene);

                            };

                            gene 成长至成熟.

}.

 

 

         注:& 是一种选择策略.

 

 

 

 

 

 

                                                                                                          <2004-4-12 完成草稿>

 

0 0

相关博文

我的热门文章

img
取 消
img