diff --git a/eo/src/eoEasyEA.h b/eo/src/eoEasyEA.h index e2ad1b5d..e09efc23 100644 --- a/eo/src/eoEasyEA.h +++ b/eo/src/eoEasyEA.h @@ -28,7 +28,7 @@ //----------------------------------------------------------------------------- #include -#include +#include #include #include #include @@ -55,7 +55,11 @@ Note: it looks ugly only because we wanted to authorize many different constructors. Please only look at the operator() and there shall be light */ -template class eoEasyEA: public eoAlgo +template class eoIslandsEasyEA ; + +template class eoDistEvalEasyEA ; + +template class eoEasyEA: public eoPopAlgo { public: @@ -66,21 +70,41 @@ template class eoEasyEA: public eoAlgo eoBreed& _breed, eoReplacement& _replace ) : continuator(_continuator), + eval (_eval), loopEval(_eval), popEval(loopEval), - selectTransform(dummySelect, dummyTransform), + selectTransform(dummySelect, dummyTransform), breed(_breed), mergeReduce(dummyMerge, dummyReduce), replace(_replace) {} + /* + eoEasyEA(eoContinue & _continuator, + eoPopEvalFunc & _pop_eval, + eoBreed & _breed, + eoReplacement & _replace + ) : + continuator (_continuator), + eval (dummyEval), + loopEval(dummyEval), + popEval (_pop_eval), + selectTransform (dummySelect, dummyTransform), + breed (_breed), + mergeReduce (dummyMerge, dummyReduce), + replace (_replace) { + + } + */ + /** NEW Ctor taking a breed and merge and an eoPopEval */ eoEasyEA( eoContinue& _continuator, eoPopEvalFunc& _eval, eoBreed& _breed, eoReplacement& _replace - ) : continuator(_continuator), + ) : continuator(_continuator), + eval (dummyEval), loopEval(dummyEval), popEval(_eval), selectTransform(dummySelect, dummyTransform), @@ -96,7 +120,8 @@ template class eoEasyEA: public eoAlgo eoBreed& _breed, eoMerge& _merge, eoReduce& _reduce - ) : continuator(_continuator), + ) : continuator(_continuator), + eval (_eval), loopEval(_eval), popEval(loopEval), selectTransform(dummySelect, dummyTransform), @@ -112,7 +137,8 @@ template class eoEasyEA: public eoAlgo eoSelect& _select, eoTransform& _transform, eoReplacement& _replace - ) : continuator(_continuator), + ) : continuator(_continuator), + eval (_eval), loopEval(_eval), popEval(loopEval), selectTransform(_select, _transform), @@ -130,6 +156,7 @@ template class eoEasyEA: public eoAlgo eoMerge& _merge, eoReduce& _reduce ) : continuator(_continuator), + eval (_eval), loopEval(_eval), popEval(loopEval), selectTransform(_select, _transform), @@ -145,7 +172,6 @@ template class eoEasyEA: public eoAlgo virtual void operator()(eoPop& _pop) { eoPop offspring; - do { try @@ -174,11 +200,11 @@ template class eoEasyEA: public eoAlgo } while ( continuator( _pop ) ); } - private: - +protected : + // If selectTransform needs not be used, dummySelect and dummyTransform are used // to instantiate it. - class eoDummySelect : public eoSelect + class eoDummySelect : public eoSelect { public : void operator()(const eoPop&, eoPop&) {} } dummySelect; class eoDummyTransform : public eoTransform @@ -188,8 +214,10 @@ template class eoEasyEA: public eoAlgo {public: void operator()(EOT &) {} } dummyEval; eoContinue& continuator; - + + eoEvalFunc & eval ; eoPopLoopEval loopEval; + eoPopEvalFunc& popEval; eoSelectTransform selectTransform; @@ -202,6 +230,10 @@ template class eoEasyEA: public eoAlgo eoMergeReduce mergeReduce; eoReplacement& replace; + + // Friend classes + friend class eoIslandsEasyEA ; + friend class eoDistEvalEasyEA ; }; //-----------------------------------------------------------------------------