路由模拟——路由算法1的实现(路由基因类)
来源:互联网 发布:all of the stars知乎 编辑:程序博客网 时间:2024/06/06 06:40
//文件routgene.h
#pragma once
#include "nodeset.h"
class RoutGene
{
public:
RoutGene(int _nodeNum=0);
~RoutGene(void);
public:
void SetNodeNum(int _nodeNum);
void Init(int from, int to);
//gene增加element片段
void Increase(int element);
void operator =(RoutGene &gene);
bool IsMax();
public:
friend NodeSet & NODE(RoutGene &gene);
//随即删除gene中的片段
friend void RANDOMDELETE(RoutGene &gene);
//打印:测试之用
friend void Print(RoutGene &gene);
private:
int nodeNum;
int last;
NodeSet geneData;
};
//文件routgene.cpp
#include "routgene.h"
#using <mscorlib.dll>
#include "resource.h"
#include <iostream>
using namespace GeneResource;
using namespace std;
RoutGene::RoutGene(int _nodeNum)
{
if(_nodeNum<0)
{
cout<<"/nError :the node number < 0 !/n/n";
exit(-1);
}
nodeNum = _nodeNum;
last = 0;
geneData.SetNodeNum(nodeNum);
}
RoutGene::~RoutGene(void)
{
}
void RoutGene::SetNodeNum(int _nodeNum)
{
if(_nodeNum<=1)
{
cout<<"/nError :the node number <= 1 !/n/n";
exit(-1);
}
nodeNum = _nodeNum;
last = 0;
geneData.SetNodeNum(nodeNum);
}
void RoutGene::Init(int from, int to)
{
last = 0;
for(int i=0;i<GENE_LENGTH;i++)
*(geneData.GetpNodeSet()+i) = -1;
*(geneData.GetpNodeSet())=from;
++ last;
*(geneData.GetpNodeSet()+last)=to;
}
void RoutGene::Increase(int element)
{//gene增加element片段
if(last<GENE_LENGTH-1)
{
*(geneData.GetpNodeSet()+last+1) = *(geneData.GetpNodeSet()+last);
*(geneData.GetpNodeSet()+last) = element;
++ last;
}
}
void RoutGene::operator =(RoutGene &gene)
{
nodeNum = gene.nodeNum;
last = gene.last;
geneData = gene.geneData;
}
bool RoutGene::IsMax()
{
return last>=GENE_LENGTH-1;
}
NodeSet & NODE(RoutGene &gene)
{
//TODO: return statement
return gene.geneData;
}
void RANDOMDELETE(RoutGene &gene)
{//随机删除gene中的片段
int randInteger;
randInteger = RandInteger(gene.last);
if(gene.last-randInteger >= 1 && randInteger>0 ){
for(int i=1;i<randInteger;i++)
*(gene.geneData.GetpNodeSet()+gene.last-i) = -1;
*(gene.geneData.GetpNodeSet()+gene.last-randInteger) =
*(gene.geneData.GetpNodeSet()+gene.last);
*(gene.geneData.GetpNodeSet()+gene.last) = -1;
gene.last -= randInteger;
}
}
void Print(RoutGene &gene)
{
cout<<"/n/nGene:/n";
for(int i=0;i<=gene.last;i++)
cout<<*(gene.geneData.GetpNodeSet()+i);
cout<<"/n/n";
}
- 路由模拟——路由算法1的实现(路由基因类)
- 路由模拟——路由算法1的实现(基因集合类)
- 路由模拟——路由算法1的实现(基因集合类)
- 路由模拟——路由算法1的实现(路由计算类1)
- 路由模拟——路由算法1的实现(路由计算类1)
- 路由模拟——路由算法1的实现(路由计算类2)
- 路由模拟——路由算法2的实现
- 路由模拟——路由算法1的实现(结点集合类)
- 路由模拟——路由算法1的构想
- 路由模拟——设计方案的实现(1)
- 路由模拟——设计方案的实现(1)
- 路由模拟——论文算法设计部分(1)
- 路由模拟——设计方案的实现(2)
- 路由模拟——设计方案的实现(3)
- 路由模拟——设计方案的实现(4)
- 路由模拟——设计方案的实现(5)
- 路由模拟——设计方案的实现(6)
- 一个用Dijkstra算法实现的路由算法的java程序——1 GraphAdjList类
- 路由模拟——设计方案的实现(4)
- 路由模拟——设计方案的实现(5)
- 路由模拟——设计方案的实现(6)
- 路由模拟——路由算法2的实现
- 路由模拟——路由算法1的实现(结点集合类)
- 路由模拟——路由算法1的实现(路由基因类)
- 路由模拟——路由算法1的实现(基因集合类)
- 路由模拟——路由算法1的实现(路由计算类1)
- 路由模拟——路由算法1的实现(路由计算类2)
- 也说计算机自动编程
- 路由模拟——论文算法设计部分(1)
- 路由模拟——论文算法设计部分(2)
- 路由模拟——论文算法设计部分(3)
- 路由模拟——论文算法设计部分(4)