?? 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 + -