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

📄 ga.h

📁 用C#写的一个神经网络结合遗传算法优化的程序
💻 H
字号:
#ifndef _GA_H_
#define _GA_H_

#include "include.h"

struct SGenome
{
	vector<double> vecWeights;//神经网络的编码(权值序列)
	double dFitness;//基因的适应度
	SGenome() : dFitness(0) {}//默认构造函数,一个不带参数的构造函数当然是默认构造函数,如果参数被提供了默认值,那么带参数的默认构造函数也是可能的

	SGenome(vector<double> w, double f) : vecWeights(w),dFitness(f) {} //构造函数
	friend bool operator<(const SGenome& lhs, const SGenome& rhs)
	{
		return lhs.dFitness<rhs.dFitness;
	}
};

class CGA
{
private:
	vector<SGenome> m_vecPop;//群体
	int m_iPopSize;//群体
	int m_iChromoLength;//染色体长度
	double m_dTotalFitness;//总体适应度
	double m_dBestFitness;//最好适应度
	double m_dWorstFitness;//最差适应度
	double m_dAverageFitness;//平均适应度
	int m_iFittestGenome;//最适合基因
	double m_dMutationRate;//变异率
	double m_dCrossoverRate;//杂交率
	int m_iGeneration;//代

	void Mutate(vector<double> &chromo);//变异
	void Crossover(const vector<double> &mum,const vector<double> &dad, vector<double> &baby1, vector<double> &baby2);//杂交
	SGenome GetChromoRoulette();
	void GrabNBest(int NBest, const int NumCopies, vector<SGenome> &vecPop);//精英选择
	void CalculateBestWorstAvTot();//计算适应度
	void Reset();
public:
	CGA() {}
	CGA(int popsize, double mutationrate, double crossoverrate, int numweights);
	vector<SGenome> Epoch(vector<SGenome> &old_pop);
	vector<SGenome> GetChromos() const {return m_vecPop;}
	double AverageFitness() {return m_dTotalFitness/m_iPopSize;}
	double BestFitness() {return m_dBestFitness;}
};

#endif;

⌨️ 快捷键说明

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