📄 lineardup.cpp
字号:
//头文件: LinearDup.hpp
//目的: 为没有重复个体的稳态再生遗传算法提供基类,本类为LinearSteady的派生类
//语言: VC++ 6.0
//时间: 1999年7月
//作者: 刘康
//环境: Win32
//注意: EvalVal(INIDIVIDUAL&)应由用户类覆盖,以提供正确的评价函数.
//////////////////////////////////////////////////////////////////////
#include "LinearDup.hpp"
//重复个体检查函数
bool LinearDup::IndividualDup(INDIVIDUAL& ind)
{
bool dup = false;
int i = 0;
while(!dup && i<IndNumber)
{
if(ind.Chrom==Individual[i].Chrom) dup=true;
i++;
}
return dup;
}
//进行一代再生
void LinearDup::Generation()
{
CurrentChild = 0;
if(Elitism==ELITISM) GenElitism();
while(CurrentChild < ChildrenNum-1)
{
if(OperatorSelect()==1 || CurrentChild>=ChildrenNum-1)
GenMutation();
else
GenCross();
}
int chi = 0;
for(int i=0; i<ChildrenNum; i++)
{
if(!IndividualDup(Children[i]))
{
Individual[IndIndex[IndNumber-chi-1]].Chrom = Children[i].Chrom;
chi++;
}
}
Prepare();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -