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

📄 ga.h

📁 遗传算法类的声明及定义
💻 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 + -