genvacuum.hpp

来自「用VC++6.0编写的遗传算法源程序」· HPP 代码 · 共 44 行

HPP
44
字号
//头文件:		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 + =
减小字号Ctrl + -
显示快捷键?