⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chrom.hpp

📁 遗传算法源程序evolution calculates the law origin code ,C-C++,人工智能/AI-NN-PR
💻 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 + -