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

📄 individual.cpp

📁 一个用c++编写的多目标遗传算法程序
💻 CPP
字号:
/*******************************************************************************	Individual.cpp		last change: 01/06/1999		version: 0.0.0		design:	Eckart Zitzler			Paul E. Sevinc		implementation:	Paul E. Sevinc		(c) 1998-1999:	Computer Engineering and Networks Laboratory				Swiss Federal Institute of Technology Zurich				description:			See Individual.h*******************************************************************************/#include "Individual.h"#include <cstddef>#include <vector>#include "RandomNr.h"#include "TIKEAFExceptions.h"using namespace std;Individual::Individual(	RandomNr&	rn,			size_t		noo )	: randomNr( rn ), nrOfObjectives( noo ), validObj( noo ), objective( noo ){	for ( size_t s = 0; s < nrOfObjectives; ++s )	{		validObj[ s ] = false;	}}Individual::~Individual(){}voidIndividual::initRandom(){	subInitRandom();	for ( size_t s = 0; s < nrOfObjectives; ++s )	{		validObj[ s ] = false;	}}voidIndividual::mutate(){	if ( subMutate() )	{		for ( size_t s = 0; s < nrOfObjectives; ++s )		{			validObj[ s ] = false;		}	}}doubleIndividual::getObjective( size_t index )	throw ( LimitsException ){#ifndef NOTIKEAFEXCEPTIONS	if ( index >= nrOfObjectives )	{		throw LimitsException( "Individual::getObjective" );	}#endif	if ( !validObj[ index ] )	{		objective[ index ] = subGetObjective( index );		validObj[ index ] = true;	}	return objective[ index ];}boolIndividual::covers(	bool		bigger,			Individual*	ind ){	if ( bigger )	{		for ( size_t s = 0; s < nrOfObjectives; ++s )		{			if ( ind->getObjective( s ) > getObjective( s ) )			{				return false;			}		}	}	else	{		for ( size_t s = 0; s < nrOfObjectives; ++s )		{			if ( ind->getObjective( s ) < getObjective( s ) )			{				return false;			}		}	}	return true;}boolIndividual::dominates(	bool		bigger,			Individual*	ind ){	bool	dominated = false;	if ( bigger )	{		for ( size_t s = 0; s < nrOfObjectives; ++s )		{			double	igO = ind->getObjective( s ),				gO = getObjective( s );						if ( igO > gO )			{				return false;			}			else if ( gO > igO )			{				dominated = true;			}		}	}	else	{		for ( size_t s = 0; s < nrOfObjectives; ++s )		{			double	igO = ind->getObjective( s ),				gO = getObjective( s );						if ( igO < gO )			{				return false;			}			else if ( gO < igO )			{				dominated = true;			}		}	}	return dominated;}boolIndividual::equals( Individual* ind )	throw ( NilException ){#ifndef NOTIKEAFEXCEPTIONS	if ( ind == 0 )	{		throw NilException( "from Individual::equals" );	}#endif	for ( size_t s = 0; s < nrOfObjectives; ++s )	{		if ( ind->getObjective( s ) != getObjective( s ) )		{			return false;		}	}	return true;}

⌨️ 快捷键说明

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