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

📄 genevecchromosome.cpp

📁 一个用c++编写的多目标遗传算法程序
💻 CPP
字号:
/*******************************************************************************	GeneVecChromosome.cpp				last change: 01/07/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 GeneVecChromosome.h*******************************************************************************/#include "GeneVecChromosome.h"#include <cstddef>#include <vector>#include "Chromosome.h"#include "Gene.h"#include "LinearChromosome.h"#include "RandomNr.h"#include "TIKEAFExceptions.h"using namespace std;GeneVecChromosome::GeneVecChromosome(	RandomNr&		rn,					vector< Gene* >&	vg )	: LinearChromosome( rn, vg.size() ), genes( vg ){}GeneVecChromosome::~GeneVecChromosome(){	for ( size_t s = 0; s < length; ++s )	{		delete genes[ s ];	}}voidGeneVecChromosome::initRandom(){	for ( size_t s = 0; s < length; ++s )	{		genes[ s ]->initRandom();	}}voidGeneVecChromosome::mutate(){	for ( size_t s = 0; s < length; ++s )	{		genes[ s ]->mutate();	}}Chromosome*GeneVecChromosome::clone(){	GeneVecChromosome*	gvc;	vector< Gene* >		vg = vector< Gene* >( length );		for ( size_t s = 0; s < length; ++s )	{		vg[ s ] = genes[ s ]->clone();	}	gvc = new GeneVecChromosome( randomNr, vg );	return gvc;}voidGeneVecChromosome::setPMutation(	size_t	index,					double	pm )	throw ( LimitsException, ProbabilityException ){#ifndef NOTIKEAFEXCEPTIONS	if ( index >= length )	{		throw LimitsException( "from GeneVecChromosome::setPMutation" );	}#endif		genes[ index ]->setPMutation( pm );}voidGeneVecChromosome::copy(	LinearChromosome*	lc,				size_t			begin,	// inclusive				size_t			end )	// exclusive	throw ( LimitsException ){#ifndef NOTIKEAFEXCEPTIONS	if ( begin > end || end > length )	{		throw LimitsException( "from GeneVecChromosome::copy" );	}#endif	GeneVecChromosome*	gvc = dynamic_cast< GeneVecChromosome* >( lc );			for ( size_t s = begin; s < end; ++s )	{		delete genes[ s ];		genes[ s ] = gvc->genes[ s ]->clone();	}}Gene*GeneVecChromosome::at( size_t index )	throw ( LimitsException ){#ifndef NOTIKEAFEXCEPTIONS	if ( index >= length )	{		throw LimitsException( "from GeneVecChromosome::at" );	}#endif	return genes[ index ];}

⌨️ 快捷键说明

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