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

📄 bestsavega.cpp

📁 遗传算法(图像处理)
💻 CPP
字号:
// 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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -