?? bestsavega.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 + -