From 3d93a07d74ddd717a7f35156ec266eaf74a9113f Mon Sep 17 00:00:00 2001 From: evomarc Date: Fri, 8 Dec 2000 15:10:13 +0000 Subject: [PATCH] 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) --- eo/tutorial/Templates/crossover.tmpl | 68 ++++++++++++++++++++++++++++ eo/tutorial/Templates/mutation.tmpl | 35 ++++++++++++++ 2 files changed, 103 insertions(+) create mode 100644 eo/tutorial/Templates/crossover.tmpl create mode 100644 eo/tutorial/Templates/mutation.tmpl diff --git a/eo/tutorial/Templates/crossover.tmpl b/eo/tutorial/Templates/crossover.tmpl new file mode 100644 index 000000000..ed8344c95 --- /dev/null +++ b/eo/tutorial/Templates/crossover.tmpl @@ -0,0 +1,68 @@ +Template for simple operators +============================= + +=========================================================================== +eoQuad : crossover operators that take 2 parents and modify both +====== + +template class eoMyDerivedQuadOp: public eoQuadOp +{ +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 eoMyDerivedBinOp: public eoBinOp +{ +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 +}; diff --git a/eo/tutorial/Templates/mutation.tmpl b/eo/tutorial/Templates/mutation.tmpl new file mode 100644 index 000000000..3622e214d --- /dev/null +++ b/eo/tutorial/Templates/mutation.tmpl @@ -0,0 +1,35 @@ +Template for simple operators +============================= + +=========================================================================== +eoMon : mutation operators +====== + +template class eoMyDerivedMonOp: public eoMonOp +{ +public: + /** + * (Default) Constructor. + */ + eoMyDerivedMonOp(paramType _anyParameter) : + anyParameter(_anyParameter) {} + + /// The class name. Used to display statistics + string className() const { return "eoMyDerivedMonOp"; } + + /** + * eoMon crossover - modifies the parent + * @param Indi The parent + */ + void operator()(Indi& Indi) + { + // do whatever needs to be done + +// DON'T FORGET if an individual is modified, to invalidate its fitness!!! + Indi.invalidate(); + } + +protected: + paramType anyParameter +}; +