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

📄 adaptivega.cpp

📁 遗传算法(图像处理)
💻 CPP
字号:
// AdaptiveGA.cpp: implementation of the CAdaptiveGA class.
//
//////////////////////////////////////////////////////////////////////

#include "AdaptiveGA.h"

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

CAdaptiveGA::CAdaptiveGA()
{

}

void CAdaptiveGA::ChangeMutationP()
{
	m_dMutationP=m_dMutationP+m_dDeltMutationP;
	return;
}


void CAdaptiveGA::RestoreMutationP()
{
	m_dMutationP=m_dOldMutationP;
	return;
}



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

/********************************************************/
/*                RETAIN GOOD GENE                      */
/*                优良基因保存函数                      */
/*********************************************************/
void CAdaptiveGA::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  CAdaptiveGA::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 CAdaptiveGA::BeginProc(int popusize,double crossingp,double mutationp,
							double deltmutationp,double setaffinity,int warehousesize)
{
	Initial(popusize,mutationp,crossingp);
	m_dOldMutationP=m_dMutationP;
	m_dDeltMutationP=deltmutationp;
	m_dSetAffinity=setaffinity;
	m_GenBase.Initial(warehousesize);
	Statistic();
	CalcuAffinity();
	RetainGoodGen();
	m_dOldAverageFitness=m_dAverageFitness;
	return;
}

void CAdaptiveGA::Proc()
{
	if(m_dAffinity<m_dSetAffinity)		ChangeMutationP();
	else	RestoreMutationP();
	Generation();
	NextGeneration();
	Statistic();
	RetainGoodGen();
//	if(m_dAverageFitness<m_dOldAverageFitness)
	{
			RecallGoodGen(m_GenBase.m_iWarehouseSize);
			Statistic();			
	}
	CalcuAffinity();
	//cin>>k;
	ReportGeneration();
	m_dOldAverageFitness=m_dAverageFitness;
	return;	
}

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

CAdaptiveGA::~CAdaptiveGA()
{

}

⌨️ 快捷键说明

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