📄 genvacuum.hpp
字号:
//头文件: MLeader.hpp
//目的: 多首领遗传算法类,本类用自定义小生境技术,总个体适合度
// 计算综合考虑个体适合度值以及个体间距离影响,即每代个体
// 总适合度按如下方式计算:设Fit(i)为原个体适合度,FitN(i)
// 为新个体适合度,则新个体适合度如下:
// FitN(0)=Fit(0)
// FitN(i)=max(FitN(i-1)-1/(Fit(k)*D(k))) k=i,i+1,...,n
// D(k)=d(k,0)+d(k,1)+...+d(k,i-1)
// 式中:D(k)--个体k与前i-1个个体距离和
// d(k,m)--个体k与个体m的距离函数,表征个体间相似性
// 按上述方式计算个体适合度的目的在于使相似个体的适合度只
// 有一个能取较大值,这样保证最终适合度高的个体之间的相似
// 性较小,从而避免汇聚的发生
//语言: VC++ 6.0
//时间: 2001年3月
//作者: 刘康
//环境: Win32
//注意: EvalVal(INIDIVIDUAL&)应由用户类覆盖,以提供正确的评价函数.
//////////////////////////////////////////////////////////////////////
#ifndef __GENVACUUM_HPP
#define __GENVACUUM_HPP
#include "genetic.hpp"
#include "genvacuum.hpp"
class GenVacuum : public Genetic
{
protected:
double DisThrd; //距离门槛值
//个体间距离函数,如果需要应被重载
virtual double Distance(INDIVIDUAL&,INDIVIDUAL&);
//重载总适合度计算函数
virtual void CalFitIndex();
public:
//构造函数
GenVacuum():Genetic(){DisThrd=0;};
GenVacuum(int n,int gl):Genetic(n,gl){DisThrd=0;};
GenVacuum(GenVacuum&g):Genetic(g){DisThrd=0;};
//设置距离门槛值
void SetDisThrd(double t){DisThrd=t;};
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -