📄 person.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 + -