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

📄 person.h

📁 这是一个柔性加工车间的优化调度的遗传算法
💻 H
字号:
#ifndef PERSN_H
#define PERSN_H

//名词缩写说明
//pop 种群		//persn 个体  
//select 选择  //crsover 交叉	//mutate  变异  
//gen  代   //chrom 染色体		//cont   约束条件

#define GAPARAFILE   "C:\\gaCal\\gapara.ini"	//遗传算法的参数设定文件
#define CALPARAFILE  "C:\\gaCal\\calpara.ini"   //目标问题的约束条件文件

#define PERSNDATA    "C:\\gacal\\Persn.ini"		//个体计算的结果输出

#define MAXGENNUM	500		//最大代数
#define MAXGENENUM  50		//最大基因座宽度
#define MAXCHROMNUM  30     //最大染色体长度
#define MAXPOPSIZE   100	//最大个体数目

class SYSPARA
{
public:

	int popsize;	//种群大小
	int calgennum;	//收敛代数
	int genenum;	//基因座宽度
	int chromnum;	//染色体长度

	double pc;     //交叉概率
	double pm;     //变异概率

	double bcont1[MAXGENENUM];	//约束条件
	double bcont2[MAXGENENUM];
	double bcont3[MAXGENENUM];

	int ncont1[MAXGENENUM];		//约束条件
	int ncont2[MAXGENENUM];
	int ncont3[MAXGENENUM];

	BYTE nconts[MAXGENENUM][MAXCHROMNUM];	

	BOOL LoadPara(int groupno);
	BOOL DownPara(int groupno);
	SYSPARA()
	{
		popsize = 0;
		calgennum = 0;
		genenum = 0;
		chromnum = 0;

		pc = 0.0;
		pm = 0.0;

		for(int i = 0; i< MAXGENENUM; i++)
		{
			ncont1[i] = 0;
			ncont2[i] = 0;
			ncont3[i] = 0;

			bcont1[i] = 0.0;
			bcont2[i] = 0.0;
			bcont3[i] = 0.0;
			for(int j = 0; j < MAXCHROMNUM; j++)
			{
				nconts[i][j] = 0;
			}
		}
	}
};

//染色体决定如何编码
class CHROM
{
public:
	BYTE abc[MAXGENENUM][MAXCHROMNUM];

public:
	 CHROM()
	{
		memset(abc,0,MAXGENENUM *  MAXCHROMNUM);
	}
};

class PERSN
{
public:
    CHROM  chrom;		//染色体
	double dval;        //目标函数
	double dfit;        //适应度

	double CalVal(CHROM chrom);
	double CalFit(double dval);
	BOOL   FitCnst(int conno);
	PERSN()
	{
		dval = 0.0;
		dfit = 0.0;
	}
};
#endif

⌨️ 快捷键说明

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