From 240685493b3247c99ff5b13a6d7a5563ae4d41a4 Mon Sep 17 00:00:00 2001 From: canape Date: Mon, 11 Feb 2008 12:27:19 +0000 Subject: [PATCH] peo modified git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@927 331e1502-861f-0410-8da2-ba01fb791d7f --- trunk/paradiseo-peo/src/core/eoPop_mesg.h | 21 ++++++- trunk/paradiseo-peo/src/peoAsyncIslandMig.h | 4 +- trunk/paradiseo-peo/src/peoData.h | 53 ----------------- trunk/paradiseo-peo/src/peoSyncIslandMig.h | 4 +- trunk/paradiseo-peo/test/t-EAAsyncIsland.cpp | 16 ++--- trunk/paradiseo-peo/test/t-EASyncIsland.cpp | 16 ++--- trunk/paradiseo-peo/test/t-PSOGlobalBest.cpp | 16 ++--- .../paradiseo-peo/test/t-PSOWorstPosition.cpp | 16 ++--- .../paradiseo-peo/tutorial/Lesson3/mainEA.cpp | 16 ++--- .../tutorial/Lesson3/mainPSO.cpp | 16 ++--- .../tutorial/Lesson6/make/make_library.h | 2 +- .../tutorial/Lesson6/make/make_peoMoeoPop.h | 59 ------------------- trunk/paradiseo-peo/tutorial/Lesson7/main.cpp | 30 +++++----- trunk/paradiseo-peo/tutorial/Lesson8/main.cpp | 30 +++++----- .../tutorial/Lesson8/parallelStruct.h | 48 --------------- 15 files changed, 103 insertions(+), 244 deletions(-) delete mode 100644 trunk/paradiseo-peo/tutorial/Lesson6/make/make_peoMoeoPop.h diff --git a/trunk/paradiseo-peo/src/core/eoPop_mesg.h b/trunk/paradiseo-peo/src/core/eoPop_mesg.h index ac409ed56..6c24fdc58 100644 --- a/trunk/paradiseo-peo/src/core/eoPop_mesg.h +++ b/trunk/paradiseo-peo/src/core/eoPop_mesg.h @@ -42,7 +42,7 @@ #include "messaging.h" -template void pack (const eoPop & __pop) +template void pack (eoPop & __pop) { pack ((unsigned) __pop.size ()); @@ -61,4 +61,23 @@ template void unpack (eoPop & __pop) unpack (__pop [i]); } +template void pack (moeoArchive < MOEOT > & __pop) +{ + + pack ((unsigned) __pop.size ()); + for (unsigned i = 0; i < __pop.size (); i ++) + pack (__pop [i]); +} + +template void unpack (moeoArchive < MOEOT > & __pop) +{ + + unsigned n; + + unpack (n); + __pop.resize (n); + for (unsigned i = 0; i < n; i ++) + unpack (__pop [i]); +} + #endif diff --git a/trunk/paradiseo-peo/src/peoAsyncIslandMig.h b/trunk/paradiseo-peo/src/peoAsyncIslandMig.h index f813ae03d..5917eafb2 100644 --- a/trunk/paradiseo-peo/src/peoAsyncIslandMig.h +++ b/trunk/paradiseo-peo/src/peoAsyncIslandMig.h @@ -129,7 +129,7 @@ template< class TYPESELECT , class TYPEREPLACE> void peoAsyncIslandMig< TYPESELE { lock (); ::pack( coop_em.front()->getKey() ); - em.front().pack(); + ::pack(em.front()); coop_em.pop(); em.pop(); unlock(); @@ -140,7 +140,7 @@ template< class TYPESELECT, class TYPEREPLACE> void peoAsyncIslandMig< TYPESELE { lock (); TYPEREPLACE mig; - mig.unpack(); + ::unpack(mig); imm.push( mig ); unlock(); } diff --git a/trunk/paradiseo-peo/src/peoData.h b/trunk/paradiseo-peo/src/peoData.h index 480f6e823..4596976db 100644 --- a/trunk/paradiseo-peo/src/peoData.h +++ b/trunk/paradiseo-peo/src/peoData.h @@ -40,59 +40,6 @@ #include "core/eoVector_mesg.h" #include "core/messaging.h" -/**************************************************************************************/ -/************************** DEFINE A DATA ******************************************/ -/**************************************************************************************/ - -//! @class peoData -//! @brief Abstract class for a data exchanged by migration -//! @version 1.0 -//! @date january 2008 -class peoData - { - public: - - //! @brief Function realizing packages - virtual void pack () - {} - - //! @brief Function reconstituting packages - virtual void unpack () - {} - - }; - -//! @class peoPop -//! @brief Specific class for a migration of a population -//! @see peoData eoPop -//! @version 1.0 -//! @date january 2008 -template -class peoPop: public eoPop, public peoData - { - public: - - //! @brief Function realizing packages - virtual void pack () - { - ::pack ((unsigned) this->size ()); - for (unsigned i = 0; i < this->size (); i ++) - ::pack ((*this)[i]); - } - - //! @brief Function reconstituting packages - virtual void unpack () - { - unsigned n; - ::unpack (n); - this->resize (n); - for (unsigned i = 0; i < n; i ++) - ::unpack ((*this)[i]); - } - - }; - - /**************************************************************************************/ /************************** DEFINE A CONTINUATOR ***********************************/ /**************************************************************************************/ diff --git a/trunk/paradiseo-peo/src/peoSyncIslandMig.h b/trunk/paradiseo-peo/src/peoSyncIslandMig.h index fc9dc183b..25d61408c 100644 --- a/trunk/paradiseo-peo/src/peoSyncIslandMig.h +++ b/trunk/paradiseo-peo/src/peoSyncIslandMig.h @@ -153,7 +153,7 @@ template< class TYPESELECT, class TYPEREPLACE > peoSyncIslandMig< TYPESELECT,TYP template< class TYPESELECT, class TYPEREPLACE > void peoSyncIslandMig< TYPESELECT, TYPEREPLACE > :: pack() { ::pack( coop_em.front()->getKey() ); - em.front().pack(); + ::pack(em.front()); coop_em.pop(); em.pop(); } @@ -161,7 +161,7 @@ template< class TYPESELECT, class TYPEREPLACE > void peoSyncIslandMig< TYPESELEC template< class TYPESELECT, class TYPEREPLACE > void peoSyncIslandMig< TYPESELECT, TYPEREPLACE > :: unpack() { TYPEREPLACE mig; - mig.unpack(); + ::unpack(mig); imm.push( mig ); explicitPassive = true; } diff --git a/trunk/paradiseo-peo/test/t-EAAsyncIsland.cpp b/trunk/paradiseo-peo/test/t-EAAsyncIsland.cpp index 1e2849622..40435796b 100644 --- a/trunk/paradiseo-peo/test/t-EAAsyncIsland.cpp +++ b/trunk/paradiseo-peo/test/t-EAAsyncIsland.cpp @@ -27,15 +27,15 @@ int main (int __argc, char *__argv[]) eoSegmentCrossover crossover; eoUniformMutation mutation(0.01); peoTransform transform(crossover,0.8,mutation,0.3); - peoPop < Indi > pop; + /*p*/eoPop < Indi > pop; pop.append (10, random); eoPlusReplacement replace; eoRandomSelect mig_select_one; - eoSelector > mig_select (mig_select_one,2,pop); - eoReplace > mig_replace (replace,pop); + eoSelector > mig_select (mig_select_one,2,pop); + eoReplace > mig_replace (replace,pop); eoPeriodicContinue< Indi > mig_cont( 2 ); eoContinuator cont(mig_cont, pop); - peoAsyncIslandMig, peoPop > mig(cont,mig_select,mig_replace,topology); + peoAsyncIslandMig, eoPop > mig(cont,mig_select,mig_replace,topology); checkpoint.add(mig); eoEasyEA< Indi > eaAlg( checkpoint, eval, select, transform, replace ); peoWrapper parallelEA( eaAlg, pop); @@ -54,15 +54,15 @@ int main (int __argc, char *__argv[]) eoSegmentCrossover crossover2; eoUniformMutation mutation2(0.01); peoTransform transform2(crossover2,0.8,mutation2,0.3); - peoPop < Indi > pop2; + /*p*/eoPop < Indi > pop2; pop2.append (10, random2); eoPlusReplacement replace2; eoRandomSelect mig_select_one2; - eoSelector > mig_select2 (mig_select_one2,2,pop2); - eoReplace > mig_replace2 (replace2,pop2); + eoSelector > mig_select2 (mig_select_one2,2,pop2); + eoReplace > mig_replace2 (replace2,pop2); eoPeriodicContinue< Indi > mig_cont2( 2 ); eoContinuator cont2(mig_cont2, pop2); - peoAsyncIslandMig, peoPop > mig2(cont2,mig_select2,mig_replace2,topology); + peoAsyncIslandMig, eoPop > mig2(cont2,mig_select2,mig_replace2,topology); checkpoint2.add(mig2); eoEasyEA< Indi > eaAlg2( checkpoint2, eval2, select2, transform2, replace2 ); peoWrapper parallelEA2( eaAlg2, pop2); diff --git a/trunk/paradiseo-peo/test/t-EASyncIsland.cpp b/trunk/paradiseo-peo/test/t-EASyncIsland.cpp index 514c371f3..d272db101 100644 --- a/trunk/paradiseo-peo/test/t-EASyncIsland.cpp +++ b/trunk/paradiseo-peo/test/t-EASyncIsland.cpp @@ -27,13 +27,13 @@ int main (int __argc, char *__argv[]) eoSegmentCrossover crossover; eoUniformMutation mutation(0.01); peoTransform transform(crossover,0.8,mutation,0.3); - peoPop < Indi > pop; + eoPop < Indi > pop; pop.append (10, random); eoPlusReplacement replace; eoRandomSelect mig_select_one; - eoSelector > mig_select (mig_select_one,2,pop); - eoReplace > mig_replace (replace,pop); - peoSyncIslandMig, peoPop > mig(2,mig_select,mig_replace,topology); + eoSelector > mig_select (mig_select_one,2,pop); + eoReplace > mig_replace (replace,pop); + peoSyncIslandMig, eoPop > mig(2,mig_select,mig_replace,topology); checkpoint.add(mig); eoEasyEA< Indi > eaAlg( checkpoint, eval, select, transform, replace ); peoWrapper parallelEA( eaAlg, pop); @@ -52,13 +52,13 @@ int main (int __argc, char *__argv[]) eoSegmentCrossover crossover2; eoUniformMutation mutation2(0.01); peoTransform transform2(crossover2,0.8,mutation2,0.3); - peoPop < Indi > pop2; + eoPop < Indi > pop2; pop2.append (10, random2); eoPlusReplacement replace2; eoRandomSelect mig_select_one2; - eoSelector > mig_select2 (mig_select_one2,2,pop2); - eoReplace > mig_replace2 (replace2,pop2); - peoSyncIslandMig, peoPop > mig2(2,mig_select2,mig_replace2,topology); + eoSelector > mig_select2 (mig_select_one2,2,pop2); + eoReplace > mig_replace2 (replace2,pop2); + peoSyncIslandMig, eoPop > mig2(2,mig_select2,mig_replace2,topology); checkpoint2.add(mig2); eoEasyEA< Indi > eaAlg2( checkpoint2, eval2, select2, transform2, replace2 ); peoWrapper parallelEA2( eaAlg2, pop2); diff --git a/trunk/paradiseo-peo/test/t-PSOGlobalBest.cpp b/trunk/paradiseo-peo/test/t-PSOGlobalBest.cpp index 2ff0efa70..ef4fda2e5 100644 --- a/trunk/paradiseo-peo/test/t-PSOGlobalBest.cpp +++ b/trunk/paradiseo-peo/test/t-PSOGlobalBest.cpp @@ -25,7 +25,7 @@ int main (int __argc, char *__argv[]) eoFirstIsBestInit < Indi > localInit; eoRealVectorBounds bndsFlight(2,0,1.); eoStandardFlight < Indi > flight(bndsFlight); - peoPop < Indi > pop; + eoPop < Indi > pop; pop.append (10, random); eoLinearTopology topology(2); eoRealVectorBounds bnds(2,-1.,1.); @@ -35,8 +35,8 @@ int main (int __argc, char *__argv[]) peoPSOSelect mig_selec(topology); peoGlobalBestVelocity mig_replac (2.,velocity); eoContinuator cont(mig_cont, pop); - eoSelector > mig_select (mig_selec,1,pop); - eoReplace > mig_replace (mig_replac,pop); + eoSelector > mig_select (mig_selec,1,pop); + eoReplace > mig_replace (mig_replac,pop); eoGenContinue < Indi > genContPara2 (10); eoCombinedContinue continuatorPara2 (genContPara2); eoCheckPoint checkpoint2(continuatorPara2); @@ -49,7 +49,7 @@ int main (int __argc, char *__argv[]) eoFirstIsBestInit < Indi > localInit2; eoRealVectorBounds bndsFlight2(2,0,1.); eoStandardFlight < Indi > flight2(bndsFlight2); - peoPop < Indi > pop2; + eoPop < Indi > pop2; pop2.append (10, random2); eoLinearTopology topology2(2); eoRealVectorBounds bnds2(2,-1.,1.); @@ -59,11 +59,11 @@ int main (int __argc, char *__argv[]) peoPSOSelect mig_selec2(topology2); peoGlobalBestVelocity mig_replac2 (2.,velocity2); eoContinuator cont2(mig_cont2,pop2); - eoSelector > mig_select2 (mig_selec2,1,pop2); - eoReplace > mig_replace2 (mig_replac2,pop2); - peoAsyncIslandMig< peoPop, peoPop > mig(cont,mig_select, mig_replace, topologyMig); + eoSelector > mig_select2 (mig_selec2,1,pop2); + eoReplace > mig_replace2 (mig_replac2,pop2); + peoAsyncIslandMig< eoPop, eoPop > mig(cont,mig_select, mig_replace, topologyMig); checkpoint.add( mig ); - peoAsyncIslandMig< peoPop, peoPop > mig2(cont2,mig_select2, mig_replace2, topologyMig); + peoAsyncIslandMig< eoPop, eoPop > mig2(cont2,mig_select2, mig_replace2, topologyMig); checkpoint2.add( mig2 ); eoSyncEasyPSO psa(init,checkpoint,eval, velocity, flight); peoWrapper parallelPSO( psa, pop); diff --git a/trunk/paradiseo-peo/test/t-PSOWorstPosition.cpp b/trunk/paradiseo-peo/test/t-PSOWorstPosition.cpp index 85f3d0f15..0be5eea39 100644 --- a/trunk/paradiseo-peo/test/t-PSOWorstPosition.cpp +++ b/trunk/paradiseo-peo/test/t-PSOWorstPosition.cpp @@ -25,7 +25,7 @@ int main (int __argc, char *__argv[]) eoFirstIsBestInit < Indi > localInit; eoRealVectorBounds bndsFlight(2,0,1.); eoStandardFlight < Indi > flight(bndsFlight); - peoPop < Indi > pop; + eoPop < Indi > pop; pop.append (10, random); eoLinearTopology topology(2); eoRealVectorBounds bnds(2,-1.,1.); @@ -35,8 +35,8 @@ int main (int __argc, char *__argv[]) peoPSOSelect mig_selec(topology); peoWorstPositionReplacement mig_replac; eoContinuator cont(mig_cont, pop); - eoSelector > mig_select (mig_selec,1,pop); - eoReplace > mig_replace (mig_replac,pop); + eoSelector > mig_select (mig_selec,1,pop); + eoReplace > mig_replace (mig_replac,pop); eoGenContinue < Indi > genContPara2 (10); eoCombinedContinue continuatorPara2 (genContPara2); eoCheckPoint checkpoint2(continuatorPara2); @@ -49,7 +49,7 @@ int main (int __argc, char *__argv[]) eoFirstIsBestInit < Indi > localInit2; eoRealVectorBounds bndsFlight2(2,0,1.); eoStandardFlight < Indi > flight2(bndsFlight2); - peoPop < Indi > pop2; + eoPop < Indi > pop2; pop2.append (10, random2); eoLinearTopology topology2(2); eoRealVectorBounds bnds2(2,-1.,1.); @@ -59,11 +59,11 @@ int main (int __argc, char *__argv[]) peoPSOSelect mig_selec2(topology2); peoWorstPositionReplacement mig_replac2; eoContinuator cont2(mig_cont2,pop2); - eoSelector > mig_select2 (mig_selec2,1,pop2); - eoReplace > mig_replace2 (mig_replac2,pop2); - peoAsyncIslandMig< peoPop, peoPop > mig(cont,mig_select, mig_replace, topologyMig); + eoSelector > mig_select2 (mig_selec2,1,pop2); + eoReplace > mig_replace2 (mig_replac2,pop2); + peoAsyncIslandMig< eoPop, eoPop > mig(cont,mig_select, mig_replace, topologyMig); checkpoint.add( mig ); - peoAsyncIslandMig< peoPop, peoPop > mig2(cont2,mig_select2, mig_replace2, topologyMig); + peoAsyncIslandMig< eoPop, eoPop > mig2(cont2,mig_select2, mig_replace2, topologyMig); checkpoint2.add( mig2 ); eoSyncEasyPSO psa(init,checkpoint,eval, velocity, flight); peoWrapper parallelPSO( psa, pop); diff --git a/trunk/paradiseo-peo/tutorial/Lesson3/mainEA.cpp b/trunk/paradiseo-peo/tutorial/Lesson3/mainEA.cpp index b66ff3c79..db9a22271 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson3/mainEA.cpp +++ b/trunk/paradiseo-peo/tutorial/Lesson3/mainEA.cpp @@ -84,13 +84,13 @@ int main (int __argc, char *__argv[]) eoSegmentCrossover crossover; eoUniformMutation mutation(EPSILON); peoTransform transform(crossover,CROSS_RATE,mutation,MUT_RATE); - peoPop < Indi > pop; + eoPop < Indi > pop; pop.append (POP_SIZE, random); eoPlusReplacement replace; eoRandomSelect mig_select_one; - eoSelector > mig_select (mig_select_one,MIG_SIZE,pop); - eoReplace > mig_replace (replace,pop); - peoSyncIslandMig, peoPop > mig(MIG_FREQ,mig_select,mig_replace,topology); + eoSelector > mig_select (mig_select_one,MIG_SIZE,pop); + eoReplace > mig_replace (replace,pop); + peoSyncIslandMig, eoPop > mig(MIG_FREQ,mig_select,mig_replace,topology); checkpoint.add(mig); eoEasyEA< Indi > eaAlg( checkpoint, eval, select, transform, replace ); peoWrapper parallelEA( eaAlg, pop); @@ -115,13 +115,13 @@ int main (int __argc, char *__argv[]) eoSegmentCrossover crossover2; eoUniformMutation mutation2(EPSILON); peoTransform transform2(crossover2,CROSS_RATE,mutation2,MUT_RATE); - peoPop < Indi > pop2; + eoPop < Indi > pop2; pop2.append (POP_SIZE, random2); eoPlusReplacement replace2; eoRandomSelect mig_select_one2; - eoSelector > mig_select2 (mig_select_one2,MIG_SIZE,pop2); - eoReplace > mig_replace2 (replace2,pop2); - peoSyncIslandMig, peoPop > mig2(MIG_FREQ,mig_select2,mig_replace2,topology); + eoSelector > mig_select2 (mig_select_one2,MIG_SIZE,pop2); + eoReplace > mig_replace2 (replace2,pop2); + peoSyncIslandMig, eoPop > mig2(MIG_FREQ,mig_select2,mig_replace2,topology); checkpoint2.add(mig2); eoEasyEA< Indi > eaAlg2( checkpoint2, eval2, select2, transform2, replace2 ); peoWrapper parallelEA2( eaAlg2, pop2); diff --git a/trunk/paradiseo-peo/tutorial/Lesson3/mainPSO.cpp b/trunk/paradiseo-peo/tutorial/Lesson3/mainPSO.cpp index 56dc29a5b..210dea399 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson3/mainPSO.cpp +++ b/trunk/paradiseo-peo/tutorial/Lesson3/mainPSO.cpp @@ -81,7 +81,7 @@ int main (int __argc, char *__argv[]) eoFirstIsBestInit < Indi > localInit; eoRealVectorBounds bndsFlight(VEC_SIZE,INIT_POSITION_MIN,INIT_POSITION_MAX); eoStandardFlight < Indi > flight(bndsFlight); - peoPop < Indi > pop; + eoPop < Indi > pop; pop.append (POP_SIZE, random); eoLinearTopology topology(NEIGHBORHOOD_SIZE); eoRealVectorBounds bnds(VEC_SIZE,INIT_VELOCITY_MIN,INIT_VELOCITY_MAX); @@ -97,8 +97,8 @@ int main (int __argc, char *__argv[]) // Specific implementation (peoData.h) eoContinuator cont(mig_cont, pop); - eoSelector > mig_select (mig_selec,1,pop); - eoReplace > mig_replace (mig_replac,pop); + eoSelector > mig_select (mig_selec,1,pop); + eoReplace > mig_replace (mig_replac,pop); // Second @@ -115,7 +115,7 @@ int main (int __argc, char *__argv[]) eoFirstIsBestInit < Indi > localInit2; eoRealVectorBounds bndsFlight2(VEC_SIZE,INIT_POSITION_MIN,INIT_POSITION_MAX); eoStandardFlight < Indi > flight2(bndsFlight2); - peoPop < Indi > pop2; + eoPop < Indi > pop2; pop2.append (POP_SIZE, random2); eoLinearTopology topology2(NEIGHBORHOOD_SIZE); eoRealVectorBounds bnds2(VEC_SIZE,INIT_VELOCITY_MIN,INIT_VELOCITY_MAX); @@ -131,15 +131,15 @@ int main (int __argc, char *__argv[]) // Specific implementation (peoData.h) eoContinuator cont2(mig_cont2,pop2); - eoSelector > mig_select2 (mig_selec2,1,pop2); - eoReplace > mig_replace2 (mig_replac2,pop2); + eoSelector > mig_select2 (mig_selec2,1,pop2); + eoReplace > mig_replace2 (mig_replac2,pop2); // Island model - peoAsyncIslandMig< peoPop, peoPop > mig(cont,mig_select, mig_replace, topologyMig); + peoAsyncIslandMig< eoPop, eoPop > mig(cont,mig_select, mig_replace, topologyMig); checkpoint.add( mig ); - peoAsyncIslandMig< peoPop, peoPop > mig2(cont2,mig_select2, mig_replace2, topologyMig); + peoAsyncIslandMig< eoPop, eoPop > mig2(cont2,mig_select2, mig_replace2, topologyMig); checkpoint2.add( mig2 ); diff --git a/trunk/paradiseo-peo/tutorial/Lesson6/make/make_library.h b/trunk/paradiseo-peo/tutorial/Lesson6/make/make_library.h index 02e47c3ef..52752f5c6 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson6/make/make_library.h +++ b/trunk/paradiseo-peo/tutorial/Lesson6/make/make_library.h @@ -1,7 +1,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/paradiseo-peo/tutorial/Lesson6/make/make_peoMoeoPop.h b/trunk/paradiseo-peo/tutorial/Lesson6/make/make_peoMoeoPop.h deleted file mode 100644 index 07c07d6e4..000000000 --- a/trunk/paradiseo-peo/tutorial/Lesson6/make/make_peoMoeoPop.h +++ /dev/null @@ -1,59 +0,0 @@ -template -peoMoeoPop& do_make_pop(eoParser & _parser, eoState& _state, eoInit & _init) -{ - // random seed - eoValueParam& seedParam = _parser.createParam(uint32_t(0), "seed", "Random number seed", 'S'); - if (seedParam.value() == 0) - seedParam.value() = time(0); - eoValueParam& popSize = _parser.createParam(unsigned(20), "popSize", "Population Size", 'P', "Evolution Engine"); - - // Either load or initialize - // create an empty pop and let the state handle the memory - peoMoeoPop& pop = _state.takeOwnership(peoMoeoPop()); - - eoValueParam& loadNameParam = _parser.createParam(std::string(""), "Load","A save file to restart from",'L', "Persistence" ); - eoValueParam & recomputeFitnessParam = _parser.createParam(false, "recomputeFitness", "Recompute the fitness after re-loading the pop.?", 'r', "Persistence" ); - - if (loadNameParam.value() != "") // something to load - { - // create another state for reading - eoState inState; // a state for loading - WITHOUT the parser - // register the rng and the pop in the state, so they can be loaded, - // and the present run will be the exact continuation of the saved run - // eventually with different parameters - inState.registerObject(pop); - inState.registerObject(rng); - inState.load(loadNameParam.value()); // load the pop and the rng - // the fitness is read in the file: - // do only evaluate the pop if the fitness has changed - if (recomputeFitnessParam.value()) - { - for (unsigned i=0; i popSize.value()) - { - std::cerr << "WARNING, Load file contained too many individuals. Only the best will be retained" << std::endl; - pop.resize(popSize.value()); - } - } - else // nothing loaded from a file - { - rng.reseed(seedParam.value()); - } - - if (pop.size() < popSize.value()) // missing some guys - { - // Init pop from the randomizer: need to use the append function - pop.append(popSize.value(), _init); - } - - // for future stateSave, register the algorithm into the state - _state.registerObject(_parser); - _state.registerObject(pop); - _state.registerObject(rng); - - return pop; -} diff --git a/trunk/paradiseo-peo/tutorial/Lesson7/main.cpp b/trunk/paradiseo-peo/tutorial/Lesson7/main.cpp index 262c66dbb..d53c4a3a6 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson7/main.cpp +++ b/trunk/paradiseo-peo/tutorial/Lesson7/main.cpp @@ -39,7 +39,7 @@ int main (int __argc, char *__argv[]) eoPopLoopEval < Indi > evalArchive(firstEval); eoUniformGenerator < double > uGenArchive (INIT_POSITION_MIN, INIT_POSITION_MAX); eoInitFixedLength < Indi > randomArchive (VEC_SIZE, uGenArchive); - peoPop < Indi > empty_pop,archive; + eoPop < Indi > empty_pop,archive; archive.append(POP_SIZE, randomArchive); evalArchive (empty_pop,archive); archive.sort(); @@ -65,24 +65,24 @@ int main (int __argc, char *__argv[]) eoSegmentCrossover crossover; eoUniformMutation mutation(EPSILON); peoTransform transform(crossover,CROSS_RATE,mutation,MUT_RATE); - peoPop < Indi > pop; + eoPop < Indi > pop; pop.append (POP_SIZE, random); eoPlusReplacement replace; eoBestSelect mig_select_one; - eoSelector > mig_select (mig_select_one,MIG_SIZE,pop); - eoReplace > mig_replace (replace,pop); + eoSelector > mig_select (mig_select_one,MIG_SIZE,pop); + eoReplace > mig_replace (replace,pop); eoPeriodicContinue< Indi > mig_cont( MIG_FREQ ); eoContinuator cont(mig_cont, pop); - peoAsyncIslandMig< peoPop, peoPop > mig(cont,mig_select, mig_replace, topology); + peoAsyncIslandMig< eoPop, eoPop > mig(cont,mig_select, mig_replace, topology); checkpoint.add(mig); eoRandomSelect mig_select_oneArchive; - eoSelector > mig_selectArchive (mig_select_oneArchive,MIG_SIZE,archive); - eoReplace > mig_replaceArchive (replace,archive); + eoSelector > mig_selectArchive (mig_select_oneArchive,MIG_SIZE,archive); + eoReplace > mig_replaceArchive (replace,archive); eoPeriodicContinue< Indi > mig_contArchive( MIG_FREQ ); eoContinuator contArchive(mig_contArchive, pop); - peoAsyncIslandMig< peoPop, peoPop > migArchive(contArchive,mig_selectArchive, mig_replaceArchive, topology); + peoAsyncIslandMig< eoPop, eoPop > migArchive(contArchive,mig_selectArchive, mig_replaceArchive, topology); checkpoint.add(migArchive); eoEasyEA< Indi > eaAlg( checkpoint, eval, select, transform, replace ); @@ -107,24 +107,24 @@ int main (int __argc, char *__argv[]) eoSegmentCrossover crossover2; eoUniformMutation mutation2(EPSILON); peoTransform transform2(crossover2,CROSS_RATE,mutation2,MUT_RATE); - peoPop < Indi > pop2; + eoPop < Indi > pop2; pop2.append (POP_SIZE, random2); eoPlusReplacement replace2; eoBestSelect mig_select_one2; - eoSelector > mig_select2 (mig_select_one2,MIG_SIZE,pop2); - eoReplace > mig_replace2 (replace2,pop2); + eoSelector > mig_select2 (mig_select_one2,MIG_SIZE,pop2); + eoReplace > mig_replace2 (replace2,pop2); eoPeriodicContinue< Indi > mig_cont2( MIG_FREQ ); eoContinuator cont2(mig_cont2, pop2); - peoAsyncIslandMig< peoPop, peoPop > mig2(cont2,mig_select2, mig_replace2, topology); + peoAsyncIslandMig< eoPop, eoPop > mig2(cont2,mig_select2, mig_replace2, topology); checkpoint2.add(mig2); eoRandomSelect mig_select_oneArchive2; - eoSelector > mig_selectArchive2 (mig_select_oneArchive2,MIG_SIZE,archive); - eoReplace > mig_replaceArchive2 (replace2,archive); + eoSelector > mig_selectArchive2 (mig_select_oneArchive2,MIG_SIZE,archive); + eoReplace > mig_replaceArchive2 (replace2,archive); eoPeriodicContinue< Indi > mig_contArchive2( MIG_FREQ ); eoContinuator contArchive2(mig_contArchive2, pop2); - peoAsyncIslandMig< peoPop, peoPop > migArchive2(contArchive2,mig_selectArchive2, mig_replaceArchive2, topology); + peoAsyncIslandMig< eoPop, eoPop > migArchive2(contArchive2,mig_selectArchive2, mig_replaceArchive2, topology); checkpoint2.add(migArchive2); diff --git a/trunk/paradiseo-peo/tutorial/Lesson8/main.cpp b/trunk/paradiseo-peo/tutorial/Lesson8/main.cpp index 20562f807..98a8068e5 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson8/main.cpp +++ b/trunk/paradiseo-peo/tutorial/Lesson8/main.cpp @@ -14,7 +14,7 @@ int main(int argc, char* argv[]) // Global archive - peoMoeoArchive globalArch; + moeoArchive globalArch; if (getNodeRank()==1) std::cout << "Archive before :\n" << globalArch << std::endl; @@ -31,7 +31,7 @@ int main(int argc, char* argv[]) peoMoeoPopEval& eval = do_make_para_eval(parser, state); eoInit& init = do_make_genotype(parser, state); eoGenOp& op = do_make_op(parser, state); - peoMoeoPop& pop = do_make_pop(parser, state, init); // peoMoeoPop is defined in parallelStruct.h + eoPop& pop = do_make_pop(parser, state, init); // peoMoeoPop is defined in parallelStruct.h moeoArchive arch; eoContinue& term = do_make_continue_moeo(parser, state, eval); eoCheckPoint < FlowShop> & checkpoint = state.storeFunctor(new eoCheckPoint < FlowShop > (term)); @@ -40,24 +40,24 @@ int main(int argc, char* argv[]) // Selection mode in the EA moeoRandomSelect mig_select_one; - moeoSelector > mig_select (mig_select_one,MIG_SIZE,pop); // moeoSelector is defined in parallelStruct.h + moeoSelector > mig_select (mig_select_one,MIG_SIZE,pop); // moeoSelector is defined in parallelStruct.h // Mode of replacement in the EA - moeoReplace < peoMoeoArchive, peoMoeoPop > mig_replace (pop); // moeoReplace is defined in parallelStruct.h + moeoReplace < moeoArchive, eoPop > mig_replace (pop); // moeoReplace is defined in parallelStruct.h // Continuator for the island eoPeriodicContinue< FlowShop> mig_cont( MIG_FREQ ); eoContinuator cont(mig_cont, pop); // Communication : EA ---> global archive - peoAsyncIslandMig< peoMoeoPop, peoMoeoArchive > mig(cont,mig_select, mig_replace, topology); + peoAsyncIslandMig< eoPop, moeoArchive > mig(cont,mig_select, mig_replace, topology); checkpoint.add(mig); // Selection mode in the global archive - moeoSelectorArchive < peoMoeoArchive > mig_selectArchive (globalArch); // moeoSelectorArchive is defined in parallelStruct.h + moeoSelectorArchive < moeoArchive > mig_selectArchive (globalArch); // moeoSelectorArchive is defined in parallelStruct.h // Mode of replacement in the global archive - moeoReplaceArchive < peoMoeoPop, peoMoeoArchive > mig_replaceArchive (globalArch); // moeoReplaceArchive is defined in parallelStruct.h + moeoReplaceArchive < eoPop, moeoArchive > mig_replaceArchive (globalArch); // moeoReplaceArchive is defined in parallelStruct.h // Continuator for the island eoPeriodicContinue< FlowShop> mig_contArchive( MIG_FREQ ); eoContinuator contArchive(mig_contArchive, pop); // Communication : global archive ---> EA - peoAsyncIslandMig< peoMoeoArchive, peoMoeoPop > migArchive(contArchive, mig_selectArchive, mig_replaceArchive, topology); + peoAsyncIslandMig< moeoArchive, eoPop > migArchive(contArchive, mig_selectArchive, mig_replaceArchive, topology); checkpoint.add(migArchive); eoAlgo& algo = do_make_ea_moeo(parser, state, eval, checkpoint, op, arch); @@ -79,22 +79,22 @@ int main(int argc, char* argv[]) peoMoeoPopEval& eval2 = do_make_para_eval(parser2, state2); eoInit& init2 = do_make_genotype(parser2, state2); eoGenOp& op2 = do_make_op(parser2, state2); - peoMoeoPop& pop2 = do_make_pop(parser2, state2, init2); + eoPop& pop2 = do_make_pop(parser2, state2, init2); moeoArchive arch2; eoContinue& term2 = do_make_continue_moeo(parser2, state2, eval2); eoCheckPoint < FlowShop> & checkpoint2 = state2.storeFunctor(new eoCheckPoint < FlowShop > (term2)); moeoRandomSelect mig_select_one2; - moeoSelector > mig_select2 (mig_select_one2,MIG_SIZE,pop2); - moeoReplace < peoMoeoArchive, peoMoeoPop > mig_replace2 (pop2); + moeoSelector > mig_select2 (mig_select_one2,MIG_SIZE,pop2); + moeoReplace < moeoArchive, eoPop > mig_replace2 (pop2); eoPeriodicContinue< FlowShop> mig_cont2( MIG_FREQ ); eoContinuator cont2(mig_cont2, pop2); - peoAsyncIslandMig< peoMoeoPop, peoMoeoArchive > mig2(cont2,mig_select2, mig_replace2, topology2); + peoAsyncIslandMig< eoPop, moeoArchive > mig2(cont2,mig_select2, mig_replace2, topology2); checkpoint2.add(mig2); - moeoSelectorArchive < peoMoeoArchive > mig_selectArchive2 (globalArch); - moeoReplaceArchive < peoMoeoPop, peoMoeoArchive > mig_replaceArchive2 (globalArch); + moeoSelectorArchive < moeoArchive > mig_selectArchive2 (globalArch); + moeoReplaceArchive < eoPop, moeoArchive > mig_replaceArchive2 (globalArch); eoPeriodicContinue< FlowShop> mig_contArchive2( MIG_FREQ ); eoContinuator contArchive2(mig_contArchive2, pop2); - peoAsyncIslandMig< peoMoeoArchive, peoMoeoPop > migArchive2(contArchive2, mig_selectArchive2, mig_replaceArchive2, topology2); + peoAsyncIslandMig< moeoArchive, eoPop > migArchive2(contArchive2, mig_selectArchive2, mig_replaceArchive2, topology2); checkpoint2.add(migArchive2); eoAlgo& algo2 = do_make_ea_moeo(parser2, state2, eval2, checkpoint2, op2, arch2); peoWrapper parallelMOEO2( algo2, pop2); diff --git a/trunk/paradiseo-peo/tutorial/Lesson8/parallelStruct.h b/trunk/paradiseo-peo/tutorial/Lesson8/parallelStruct.h index b61e8427b..ff44b64ee 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson8/parallelStruct.h +++ b/trunk/paradiseo-peo/tutorial/Lesson8/parallelStruct.h @@ -1,51 +1,3 @@ -template -class peoMoeoPop: public eoPop, public peoData - { - public: - - virtual void pack () - { - ::pack ((unsigned) this->size ()); - for (unsigned i = 0; i < this->size (); i ++) - ::pack ((*this)[i]); - } - - virtual void unpack () - { - unsigned n; - ::unpack (n); - this->resize (n); - for (unsigned i = 0; i < n; i ++) - ::unpack ((*this)[i]); - } - - }; - -template -class peoMoeoArchive: public moeoArchive < MOEOT >, public peoData - { - public: - - virtual void pack () - { - ::pack ((unsigned) this->size ()); - for (unsigned i = 0; i < this->size (); i ++) - ::pack ((*this)[i]); - } - - - virtual void unpack () - { - unsigned n; - ::unpack (n); - this->resize (n); - for (unsigned i = 0; i < n; i ++) - ::unpack ((*this)[i]); - - } - -}; - template < class EOT, class TYPE> class moeoSelector : public selector< TYPE > { public: