bestsavega.cpp

来自「遗传算法(图像处理)」· C++ 代码 · 共 97 行

CPP
97
字号
// BestSaveGA.cpp: implementation of the CBestSaveGA class.
//
//////////////////////////////////////////////////////////////////////

#include "BestSaveGA.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CBestSaveGA::CBestSaveGA()
{

}

CBestSaveGA::~CBestSaveGA()
{

}
/********************************************************/
/*                INITIAL WAREHOUSE                     */
/*                基因仓库初始化函数                    */
/*********************************************************/
void  CBestSaveGA::InitialGenBase(int size1)
{
	m_GenBase.Initial(size1);
	return;
}

/********************************************************/
/*                RETAIN GOOD GENE                      */
/*                优良基因保存函数                      */
/*********************************************************/
void CBestSaveGA::RetainGoodGen(void)
{int i;
  m_GenBase.AddIndividual(m_lpParents[m_iMaxLocation]);
  for(i=0;i<m_iPopuSize;i++)
  {
	  if(m_lpParents[i].m_dFitness>m_dAverageFitness)
		  m_GenBase.AddIndividual(m_lpParents[i]);
  }
 return;	
}

/********************************************************/
/*                RECALL GOOD GENE                      */
/*                优良基因输出函数                      */
/*********************************************************/
void  CBestSaveGA::RecallGoodGen(int size1)
{
	int i,j;
	j=0;
	for(i=0;i<m_iPopuSize;i++)
	{
		if(m_lpParents[i].m_dFitness<m_GenBase.m_lpGAUnite[j].m_dFitness)
		{
		  m_lpParents[i]=m_GenBase.m_lpGAUnite[j];
		  j++;
		}
		if(j>=size1) break;
	}
	return;
}

void CBestSaveGA::BegineProc(int popusize,double mutationp,
							 double crossingp,int warhousesize)
{
	Initial(popusize,mutationp,crossingp);
	InitialGenBase(warhousesize);
	Statistic();
	RetainGoodGen();
	CalcuAffinity();
	m_dOldAverageFitness=m_dAverageFitness;
	return;
}

void CBestSaveGA::Proc()
{
	Generation();
	NextGeneration();
	Statistic();
	RetainGoodGen();
//	if(m_dAverageFitness<m_dOldAverageFitness)
	{
		RecallGoodGen(m_GenBase.m_iWarehouseSize);
		Statistic();
	}
	CalcuAffinity();
	m_dOldAverageFitness=m_dAverageFitness;
	return;
}

void CBestSaveGA::EndProc()
{
	FreeSpace();
	return;
}

⌨️ 快捷键说明

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