📄 chrom.hpp
字号:
//头文件: Chrom.hpp
//目的: 为染色体提供基类
//语言: VC++ 6.0
//时间: 1999年6月~2000年1月
//作者: 刘康
//环境: Win32
//////////////////////////////////////////////////////////////////////
#if !defined(__CHROMOSOME__HPP)
#define __CHROMOSOME__HPP
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define OneChmType __int16 //一个染色体素类型
//染色体类
class Chromosome
{
protected:
OneChmType *Gene; //基因数组,二进制表示
int ChromNum; //染色体素个数
int GeneLen; //基因长度
static unsigned Seed; //染色体初始化种子
char *geneStr; //染色体字符串工作数组
void Init(); //染色体初始化
public:
//构造函数
Chromosome(); //基因长度MAX_GEN_LEN
Chromosome(int l); //基因长度l
Chromosome(const Chromosome&); //拷贝构造函数
//析构函数
virtual ~Chromosome();
//公用函数
Chromosome& operator = (const Chromosome&); //=号重载
bool operator == (const Chromosome&); //==号重载
void SetLen(int l); //设置基因长度
int GetLen() { return GeneLen; }; //返回基因长度
const char* GetGeneStr(); //返回基因(字符串形式)
unsigned __int64 GetInt(int i1,int i2); //返回i1位到i2位的整型值,
//包含i1,i2,i1>=1,i2-i1<64
virtual Chromosome Mutation(double); //位变异,返回一个亲子
//一点交叉算子(One point crossover)
bool OneCross(Chromosome& lover, //爱人
Chromosome& chld1, //亲子1
Chromosome& chld2); //亲子2
//两点交叉算子(Two point crossover
bool TwoCross(Chromosome &lover, //爱人
Chromosome &chld1, //亲子1
Chromosome &chld2); //亲子2
//均匀交叉算子(Uniform crossover)
bool UniCross(Chromosome &lover, //爱人
Chromosome &chld1, //亲子1
Chromosome &chld2); //亲子2
};
#endif // !defined(__CHROMOSOME__HPP)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -