📄 ga.h
字号:
//遗传算法类头文件
//Edit by Wang Shimin
//2004.7.5~2004.7.30
//本文件为最新文件,修改于2006.3.12
// GA.h: interface for the GA class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_GA_H__70D86D6D_B252_44BB_8FBA_ABDD2747B1E8__INCLUDED_)
#define AFX_GA_H__70D86D6D_B252_44BB_8FBA_ABDD2747B1E8__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "individual.h"
#include "bndload.h"
#include "bestever.h"
class GA
{
private:
int m_numbndload; /* 反演涉及的边界荷载个数 */
bndload * p_Bndload; /* 反演涉及的边界荷载信息 */
int * p_BAKindflag; /* 反演种类项标志 */
int * p_iparameter; /* 反演材料种类项标志 */
int * p_jparameter; /* 反演材料性质项标志 */
bool m_errorflag; /* 误差标志变量 */
double m_precision; /* 收敛精度,目标值增量与上一步目标值之比小于此值即可认为满足精度要求 */
int m_convergencenumber; /* 无明显进化次数 */
int m_precisionnum; /* 迭代终止条件,即连续多少次无明显进化即终止 */
double * p_calculation; /* 存储计算值 */
double * p_observation; /* 存储观测值 */
individual * p_oldpop; /* 当前代种群 */
individual * p_newpop; /* 新一代种群 */
bestever m_bestfit; /* 最佳个体 */
bestever m_oldbestfit; /* 上一步最佳个体 */
double m_sumfitness; /* 种群中个体适应度累计 */
double m_averagefitness; /* 种群中个体平均适应度 */
double m_minfitness; /* 种群中个体最小适应度,实际上是最佳个体的适应度 */
double * p_highboundary; /* 存储变量上限的数组 */
double * p_lowboundary; /* 存储变量下限的数组 */
double * p_deltavariable; /* 存储变量精度的数组 */
double m_pcross; /* 交叉概率 */
double m_pmutation; /* 变异概率 */
int m_popsize; /* 种群大小 */
int m_sumlchrom; /* 染色体总长度 */
int m_perlchrom; /* 染色体中一个参数的串长度 */
int m_numpoint; /* 观测点的个数 */
int m_numvar; /* 染色体中变量的个数 */
int m_pernumbytes; /* 染色体中每个参数所占的字节长度 */
int m_sumnumbytes; /* 染色体的总字节长度 */
int m_currentgen; /* 当前世代数 */
int m_maxgen; /* 最大世代数 */
int m_nmutation; /* 当前代变异发生次数 */
int m_ncross; /* 当前代交叉发生次数 */
double m_pc2; /* 最小交叉概率 */
double m_pc1; /* 最大交叉概率 */
double m_pm2; /* 最小变异概率 */
double m_pm1; /* 最小变异概率 */
bool m_blErrorExit; //error occur
public:
GA();
virtual ~GA();
void Compute(); /* 遗传计算 */
private:
void Criterion();
void ReadMEA();
void WriteResult();
void ReadINP();
void ReadBAA();
void ReadFromFem(double * calculatevalue);
void WriteToFem(individual *pop);
void Statistics(individual * pop);
double adjust_cp(double fitness);
double adjust_mp(double fitness);
double m_randseed;
void Replaceworst(individual *);
void decode(individual *);
void objectfunc();
int select();
void initmalloc();
void generation();
void initpop();
void initialize();
double randomperc(double *seed);
int randomint(int, int);
bool flip(double);
void crossover (BYTE *, BYTE *, BYTE *, BYTE *);
void mutation(BYTE *);
void Keepbest(individual *);
};
#endif // !defined(AFX_GA_H__70D86D6D_B252_44BB_8FBA_ABDD2747B1E8__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -