diff --git a/eo/tutorial/Templates/crossover.tmpl b/eo/tutorial/Templates/crossover.tmpl new file mode 100644 index 00000000..ed8344c9 --- /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 00000000..3622e214 --- /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 +}; +