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

📄 gastructs.h

📁 利用基本遗传算法(SGA)来对函数 进行求优
💻 H
字号:
#define MAXSTRLENGTH 100     //这里是不用分号的

struct SingleInformation      //个体结构体
{	
	double *x;                //指向参数变量数组的指针,数组大小根据IniData结构体的parameters来定
	char  Bin[MAXSTRLENGTH];  //二进制编码
	char  Gray[MAXSTRLENGTH]; //格雷码编码
	double funvalue;           //函数值
	double fitness;            //适应度值
	int   gentimes;           //遗传次数
	float genrate;            //遗传概率
	int   parent1,parent2;    //父母
	int   ID;                 //该个体的编号
};

struct GengerationResult       //一代的计算结果结构体
{
	float sumfitness;          //这一代的适应度值的总和
	float max;                 //这一代中的最大值
	int   maxID;               //这一代中的最大值对应ID号
	float min;                 //这一代中的最小值
	int   minID;               //这一代中的最小值对应ID号
	float avg;                 //这一代中的平均值
	float variance;            //这一代的适应度的方差
	int   maxnum;              //这一代最大值个数
	int   ID;                  //记录总第几代
	float varfitness;          //这一代与上一代的平均适应度变化值
};

//初始化值保存结构
struct IniData
{
	int   parameters;          //记录参数个数
	int   popsize;             //群体规模
	int   lchrom;              //单个参数所对应的染色体长度
	int   maxgen;              //最大代数
	float crossrate;           //交叉概率
	float mutationrate;        //变异概率

};

struct pop
{
	SingleInformation * newpop;//指向新群体
	SingleInformation * oldpop;//指向旧群体
	SingleInformation * temp;  //用于交换的指针
	//GengerationResult *GR;
};

//输出格式,记录各种数据的长度
struct ReportFormat
{
	int x_l;                   //x值的长度
	bool Reportx;              //是否输出x值
	int Bin_l;                 //二进制编码的长度
	bool ReportBin;            //是否输出二进制编码
	int Gray_l;                //格雷码编码的长度
	bool ReportGray;           //是否输出格雷码编码
	int funvalue_l;            //函数值的长度
	bool Reportfunvalue;       //是否输出函数值 
	int fitness_l;             //适应度值的长度
	bool Reportfitness;        //是否输出适应度值
	int parent1_l,parent2_l;   //父母ID值的长度
	bool Reportparent1;        //是否输出父母ID值
	bool Reportparent2;        //是否输出父母ID值
	int ID_l;                  //ID值的长度
	bool ReportID;             //是否输出ID值
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -