## CSDN博客

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

路由算法的构想

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();

(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) );

}.

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

newNode = RANDOM( NODE( gene’) );

}.

(3),    if ( gene is COMPLETE ) {

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