paradiseo/eo/tutorial/Templates/crossover.tmpl
evomarc 3d93a07d74 Adding Templates in dir tutorial, to hold some simple files that
only need to be filled by the user to code new items.
At the moment, only eoMonOp (in mutation.tmpl), and
eoBinOp and eoQuadOp (in crossover.tmpl)
2000-12-08 15:10:13 +00:00

68 lines
1.7 KiB
Cheetah

Template for simple operators
=============================
===========================================================================
eoQuad : crossover operators that take 2 parents and modify both
======
template<class Indi> class eoMyDerivedQuadOp: public eoQuadOp<Indi>
{
public:
/**
* (Default) Constructor.
*/
eoMyDerivedQuadOp(paramType _anyParameter) :
anyParameter(_anyParameter) {}
/// The class name. Used to display statistics
string className() const { return "eoMyDerivedQuadOp"; }
/**
* eoQuad crossover - modifies both parents
* @param Indi1 The first parent
* @param Indi2 The first parent
*/
void operator()(Indi& Indi1, Indi& Indi2)
{
// do whatever needs to be done
// DON'T FORGET if an individual is modified, to invalidate its fitness!!!
Indi1.invalidate();
Indi2.invalidate();
}
protected:
paramType anyParameter
};
===========================================================================
eoBin : crossover operators that take 2 parents and modify the first one
=====
template<class Indi> class eoMyDerivedBinOp: public eoBinOp<Indi>
{
public:
/**
* (Default) Constructor.
*/
eoMyDerivedBinOp(paramType _anyParameter) :
anyParameter(_anyParameter) {}
/// The class name. Used to display statistics
string className() const { return "eoMyDerivedBinOp"; }
/**
* eoQuad crossover - modifies first parent only
* @param Indi1 The first parent
* @param Indi2 The first parent - const
*/
void operator()(Indi& Indi1, const Indi& Indi2)
{
// do whatever needs to be done
// DON'T FORGET if an individual is modified, to invalidate its fitness!!!
Indi1.invalidate();
}
protected:
paramType anyParameter
};