diff --git a/trunk/paradiseo-peo/tutorial/Lesson1/CMakeLists.txt b/trunk/paradiseo-peo/tutorial/Lesson1/CMakeLists.txt index d140a9dac..9827cfc22 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson1/CMakeLists.txt +++ b/trunk/paradiseo-peo/tutorial/Lesson1/CMakeLists.txt @@ -21,13 +21,6 @@ ADD_CUSTOM_COMMAND( ARGS -E copy_if_different ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson1/schema.xml ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson1) -ADD_CUSTOM_COMMAND( - TARGET install - POST_BUILD - COMMAND ${CMAKE_COMMAND} - ARGS -E copy_if_different - ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson1/Lesson1.pdf - ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson1) ###################################################################################### @@ -36,7 +29,7 @@ ADD_CUSTOM_COMMAND( ### 1) Include the sources ###################################################################################### -INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src ${MO_SRC_DIR}/src ${ParadisEO-PEO_SOURCE_DIR}/src) +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src ${MOEO_SRC_DIR}/src ${MO_SRC_DIR}/src ${ParadisEO-PEO_SOURCE_DIR}/src) ###################################################################################### diff --git a/trunk/paradiseo-peo/tutorial/Lesson1/Lesson1.pdf b/trunk/paradiseo-peo/tutorial/Lesson1/Lesson1.pdf deleted file mode 100644 index 5f6b05a6d..000000000 Binary files a/trunk/paradiseo-peo/tutorial/Lesson1/Lesson1.pdf and /dev/null differ diff --git a/trunk/paradiseo-peo/tutorial/Lesson1/mainEA.cpp b/trunk/paradiseo-peo/tutorial/Lesson1/mainEA.cpp index 7a4169e6c..01e4a2b8d 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson1/mainEA.cpp +++ b/trunk/paradiseo-peo/tutorial/Lesson1/mainEA.cpp @@ -77,20 +77,10 @@ int main (int __argc, char *__argv[]) eoCombinedContinue continuatorPara (genContPara); eoCheckPoint checkpoint(continuatorPara); - - /* In this lesson, you should define a peoEvalFunc witch will allow to initialize : - * - * - peoSeqPopEval : using to the sequential evaluation - * - * OR - * - * - peoParaPopEval : using to the parallel evaluation - * - */ - // For a parallel evaluation + peoEvalFunc plainEval(f); - peoParaPopEval< Indi > eval(plainEval); + peoPopEval eval(plainEval); // Initialization @@ -105,21 +95,26 @@ int main (int __argc, char *__argv[]) eoSegmentCrossover crossover; // Crossover eoUniformMutation mutation(EPSILON); // Mutation eoSGATransform transform(crossover,CROSS_RATE,mutation,MUT_RATE); - peoSeqTransform eaTransform(transform); - + // Replacement eoPlusReplacement replace; // Creation of the population eoPop < Indi > pop; pop.append (POP_SIZE, random); + +// Algorithm + eoEasyEA< Indi > eaAlg( checkpoint, eval, select, transform, replace ); //Parallel algorithm - peoEA Algo(checkpoint,eval,select,eaTransform,replace); - Algo(pop); - + peoWrapper parallelEA( eaAlg, pop); + eval.setOwner(parallelEA); + peo :: run(); peo :: finalize(); if (getNodeRank()==1) + { + pop.sort(); std::cout << "Final population :\n" << pop << std::endl; + } } diff --git a/trunk/paradiseo-peo/tutorial/Lesson1/mainPSO.cpp b/trunk/paradiseo-peo/tutorial/Lesson1/mainPSO.cpp index ac53c2970..e4f7293dc 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson1/mainPSO.cpp +++ b/trunk/paradiseo-peo/tutorial/Lesson1/mainPSO.cpp @@ -71,12 +71,11 @@ int main (int __argc, char *__argv[]) const double INIT_POSITION_MIN = -2.0; // For initialize x const double INIT_POSITION_MAX = 2.0; // In the case of the Rosenbrock function : -2 < x[i] < 2 - - const double INIT_VELOCITY_MIN = -1.; // For initialize PSO's velocity - const double INIT_VELOCITY_MAX = 1.; // ie Lesson 6 of ParadisEO-EO - - const double C1 = 0.5; // For calculate the velocity - const double C2 = 2.; // ie Lesson 6 of ParadisEO-EO + const double INIT_VELOCITY_MIN = -1.; + const double INIT_VELOCITY_MAX = 1.; + const double weight = 1; + const double C1 = 0.5; + const double C2 = 2.; rng.reseed (time(0)); // Stopping @@ -85,38 +84,22 @@ int main (int __argc, char *__argv[]) eoCheckPoint checkpoint(continuatorPara); - - - /* In this lesson, you should define a peoEvalFuncPSO witch will allow to initialize : - * - * - peoSeqPopEval : using to the sequential evaluation - * - * OR - * - * - peoParaPopEval : using to the parallel evaluation - * - */ - // For a parallel evaluation peoEvalFunc plainEval(f); - peoParaPopEval< Indi > eval(plainEval); - - - - + peoPopEval< Indi > eval(plainEval); // Initialization eoUniformGenerator < double >uGen (INIT_POSITION_MIN, INIT_POSITION_MAX); eoInitFixedLength < Indi > random (VEC_SIZE, uGen); -// Velocity (ie Lesson 6 of ParadisEO-PEO) +// Velocity eoUniformGenerator < double >sGen (INIT_VELOCITY_MIN, INIT_VELOCITY_MAX); eoVelocityInitFixedLength < Indi > veloRandom (VEC_SIZE, sGen); -// Initializing the best (ie Lesson 6 of ParadisEO-PEO) +// Initializing the best eoFirstIsBestInit < Indi > localInit; -// Flight (ie Lesson 6 of ParadisEO-PEO) +// Flight eoRealVectorBounds bndsFlight(VEC_SIZE,INIT_POSITION_MIN,INIT_POSITION_MAX); eoStandardFlight < Indi > flight(bndsFlight); @@ -124,19 +107,24 @@ int main (int __argc, char *__argv[]) eoPop < Indi > pop; pop.append (POP_SIZE, random); -// Initialization - peoInitializer init(eval,veloRandom,localInit,pop); - // Topology (ie Lesson 6 of ParadisEO-PEO) eoLinearTopology topology(NEIGHBORHOOD_SIZE); eoRealVectorBounds bnds(VEC_SIZE,INIT_VELOCITY_MIN,INIT_VELOCITY_MAX); - eoStandardVelocity < Indi > velocity (topology,C1,C2,bnds); - + eoStandardVelocity < Indi > velocity (topology,weight,C1,C2,bnds); + +// Initialization + eoInitializer init(eval,veloRandom,localInit,topology,pop); + //Parallel algorithm - peoPSO < Indi > psa(init,checkpoint, eval, velocity, flight); - psa(pop); + eoSyncEasyPSO psa(init,checkpoint,eval, velocity, flight); + peoWrapper parallelPSO( psa, pop); + eval.setOwner(parallelPSO); + peo :: run(); peo :: finalize(); if (getNodeRank()==1) + { + pop.sort(); std::cout << "Final population :\n" << pop << std::endl; + } } diff --git a/trunk/paradiseo-peo/tutorial/Lesson2/CMakeLists.txt b/trunk/paradiseo-peo/tutorial/Lesson2/CMakeLists.txt index f00f4a277..b5bd31249 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson2/CMakeLists.txt +++ b/trunk/paradiseo-peo/tutorial/Lesson2/CMakeLists.txt @@ -21,13 +21,6 @@ ADD_CUSTOM_COMMAND( ARGS -E copy_if_different ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson2/schema.xml ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson2) -ADD_CUSTOM_COMMAND( - TARGET install - POST_BUILD - COMMAND ${CMAKE_COMMAND} - ARGS -E copy_if_different - ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson2/Lesson2.pdf - ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson2) ###################################################################################### @@ -36,7 +29,7 @@ ADD_CUSTOM_COMMAND( ### 1) Include the sources ###################################################################################### -INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src ${MO_SRC_DIR}/src ${ParadisEO-PEO_SOURCE_DIR}/src) +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src ${MOEO_SRC_DIR}/src ${MO_SRC_DIR}/src ${ParadisEO-PEO_SOURCE_DIR}/src) ###################################################################################### diff --git a/trunk/paradiseo-peo/tutorial/Lesson2/Lesson2.pdf b/trunk/paradiseo-peo/tutorial/Lesson2/Lesson2.pdf deleted file mode 100644 index 134355409..000000000 Binary files a/trunk/paradiseo-peo/tutorial/Lesson2/Lesson2.pdf and /dev/null differ diff --git a/trunk/paradiseo-peo/tutorial/Lesson2/mainEA.cpp b/trunk/paradiseo-peo/tutorial/Lesson2/mainEA.cpp index e2be01508..69d62b6af 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson2/mainEA.cpp +++ b/trunk/paradiseo-peo/tutorial/Lesson2/mainEA.cpp @@ -52,54 +52,43 @@ int main (int __argc, char *__argv[]) { peo :: init( __argc, __argv ); - const unsigned int VEC_SIZE = 2; - const unsigned int POP_SIZE = 20; - const unsigned int MAX_GEN = 300; + const unsigned int VEC_SIZE = 2; + const unsigned int POP_SIZE = 20; + const unsigned int MAX_GEN = 300; const double INIT_POSITION_MIN = -2.0; - const double INIT_POSITION_MAX = 2.0; - const float CROSS_RATE = 0.8; - const double EPSILON = 0.01; - const float MUT_RATE = 0.3; + const double INIT_POSITION_MAX = 2.0; + const float CROSS_RATE = 0.8; + const double EPSILON = 0.01; + const float MUT_RATE = 0.3; rng.reseed (time(0)); eoGenContinue < Indi > genContPara (MAX_GEN); eoCombinedContinue continuatorPara (genContPara); eoCheckPoint checkpoint(continuatorPara); peoEvalFunc plainEval(f); - peoSeqPopEval< Indi > eval(plainEval); // Here, the evaluation is sequential + peoPopEval eval(plainEval); eoUniformGenerator < double >uGen (INIT_POSITION_MIN, INIT_POSITION_MAX); eoInitFixedLength < Indi > random (VEC_SIZE, uGen); eoRankingSelect selectionStrategy; eoSelectNumber select(selectionStrategy,POP_SIZE); - eoSegmentCrossover crossover; + eoSegmentCrossover crossover; eoUniformMutation mutation(EPSILON); - - /******************************************************************************************/ - - /* In this lesson, you can choose between : - * - * - A sequential transformation (crossover + mutation) : eoSGATransform transform(crossover,CROSS_RATE,mutation,MUT_RATE); - * peoSeqTransform eaTransform(transform); - * - * OR - * - * - A parallel transformation (crossover + mutation) : peoParaSGATransform eaTransform(crossover,CROSS_RATE,mutation,MUT_RATE); - * - * Unfortunately, if you don't use a crossover which creates two children with two parents, - * you can't use this operator. - * In this case, you should send a mail to : paradiseo-help@lists.gforge.inria.fr - */ - - peoParaSGATransform eaTransform(crossover,CROSS_RATE,mutation,MUT_RATE); - - /******************************************************************************************/ + + peoTransform transform(crossover,CROSS_RATE,mutation,MUT_RATE); eoPlusReplacement replace; eoPop < Indi > pop; pop.append (POP_SIZE, random); - peoEA Algo(checkpoint,eval,select,eaTransform,replace); - Algo(pop); + eoEasyEA< Indi > eaAlg( checkpoint, eval, select, transform, replace ); + peoWrapper parallelEA( eaAlg, pop); + eval.setOwner(parallelEA); + + transform.setOwner (parallelEA); + peo :: run(); peo :: finalize(); if (getNodeRank()==1) + { + pop.sort(); std::cout << "Final population :\n" << pop << std::endl; + } } diff --git a/trunk/paradiseo-peo/tutorial/Lesson3/CMakeLists.txt b/trunk/paradiseo-peo/tutorial/Lesson3/CMakeLists.txt index 254777acb..a1f006c06 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson3/CMakeLists.txt +++ b/trunk/paradiseo-peo/tutorial/Lesson3/CMakeLists.txt @@ -21,13 +21,6 @@ ADD_CUSTOM_COMMAND( ARGS -E copy_if_different ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson3/schema.xml ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson3) -ADD_CUSTOM_COMMAND( - TARGET install - POST_BUILD - COMMAND ${CMAKE_COMMAND} - ARGS -E copy_if_different - ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson3/Lesson3.pdf - ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson3) ###################################################################################### @@ -36,7 +29,7 @@ ADD_CUSTOM_COMMAND( ### 1) Include the sources ###################################################################################### -INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src ${MO_SRC_DIR}/src ${ParadisEO-PEO_SOURCE_DIR}/src) +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src ${MOEO_SRC_DIR}/src ${MO_SRC_DIR}/src ${ParadisEO-PEO_SOURCE_DIR}/src) ###################################################################################### diff --git a/trunk/paradiseo-peo/tutorial/Lesson3/Lesson3.pdf b/trunk/paradiseo-peo/tutorial/Lesson3/Lesson3.pdf deleted file mode 100644 index 1f5d54e07..000000000 Binary files a/trunk/paradiseo-peo/tutorial/Lesson3/Lesson3.pdf and /dev/null differ diff --git a/trunk/paradiseo-peo/tutorial/Lesson3/mainEA.cpp b/trunk/paradiseo-peo/tutorial/Lesson3/mainEA.cpp index b6bf2bee8..bfb411bfc 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson3/mainEA.cpp +++ b/trunk/paradiseo-peo/tutorial/Lesson3/mainEA.cpp @@ -71,77 +71,72 @@ int main (int __argc, char *__argv[]) // First algorithm /*****************************************************************************************/ + eoGenContinue < Indi > genContPara (MAX_GEN); eoCombinedContinue continuatorPara (genContPara); eoCheckPoint checkpoint(continuatorPara); - peoEvalFunc plainEval(f); - peoSeqPopEval< Indi > eval(plainEval); // Here, the evaluation is sequential + peoEvalFunc mainEval( f ); + peoPopEval eval(mainEval); eoUniformGenerator < double >uGen (INIT_POSITION_MIN, INIT_POSITION_MAX); eoInitFixedLength < Indi > random (VEC_SIZE, uGen); eoRankingSelect selectionStrategy; eoSelectNumber select(selectionStrategy,POP_SIZE); eoSegmentCrossover crossover; - eoUniformMutation mutation(EPSILON); - eoSGATransform transform(crossover,CROSS_RATE,mutation,MUT_RATE); - peoSeqTransform eaTransform(transform); // Here, the transformation is sequential + eoUniformMutation mutation(EPSILON); + peoTransform transform(crossover,CROSS_RATE,mutation,MUT_RATE); + peoPop < Indi > pop; + pop.append (POP_SIZE, random); eoPlusReplacement replace; - eoPop < Indi > pop; - pop.append (POP_SIZE, random); - - eoPeriodicContinue mig_cont( MIG_FREQ ); // Migration occurs periodically - eoRandomSelect mig_select_one; // Emigrants are randomly selected - eoSelectNumber mig_select (mig_select_one,MIG_SIZE); - eoPlusReplacement mig_replace; // Immigrants replace the worse individuals + eoRandomSelect mig_select_one; + eoSelector > mig_select (mig_select_one,MIG_SIZE,pop); + eoReplace > mig_replace (replace,pop); + peoSyncIslandMig > mig(MIG_FREQ,mig_select,mig_replace,topology,pop,pop); + checkpoint.add(mig); + eoEasyEA< Indi > eaAlg( checkpoint, eval, select, transform, replace ); + peoWrapper parallelEA( eaAlg, pop); + eval.setOwner(parallelEA); + transform.setOwner(parallelEA); + mig.setOwner(parallelEA); /*****************************************************************************************/ // Second algorithm (on the same model but with others names) /*****************************************************************************************/ + eoGenContinue < Indi > genContPara2 (MAX_GEN); eoCombinedContinue continuatorPara2 (genContPara2); eoCheckPoint checkpoint2(continuatorPara2); - peoEvalFunc plainEval2(f); - peoSeqPopEval< Indi > eval2(plainEval2); + peoEvalFunc mainEval2( f ); + peoPopEval eval2(mainEval2); eoUniformGenerator < double >uGen2 (INIT_POSITION_MIN, INIT_POSITION_MAX); eoInitFixedLength < Indi > random2 (VEC_SIZE, uGen2); eoRankingSelect selectionStrategy2; eoSelectNumber select2(selectionStrategy2,POP_SIZE); eoSegmentCrossover crossover2; - eoUniformMutation mutation2(EPSILON); - eoSGATransform transform2(crossover2,CROSS_RATE,mutation2,MUT_RATE); - peoSeqTransform eaTransform2(transform2); + eoUniformMutation mutation2(EPSILON); + peoTransform transform2(crossover2,CROSS_RATE,mutation2,MUT_RATE); + peoPop < Indi > pop2; + pop2.append (POP_SIZE, random2); eoPlusReplacement replace2; - eoPop < Indi > pop2; - pop2.append (POP_SIZE, random2); - eoPeriodicContinue mig_cont2( MIG_FREQ ); eoRandomSelect mig_select_one2; - eoSelectNumber mig_select2 (mig_select_one2,MIG_SIZE); - eoPlusReplacement mig_replace2; + eoSelector > mig_select2 (mig_select_one2,MIG_SIZE,pop2); + eoReplace > mig_replace2 (replace2,pop2); + peoSyncIslandMig > mig2(MIG_FREQ,mig_select2,mig_replace2,topology,pop2,pop2); + checkpoint2.add(mig2); + eoEasyEA< Indi > eaAlg2( checkpoint2, eval2, select2, transform2, replace2 ); + peoWrapper parallelEA2( eaAlg2, pop2); + eval2.setOwner(parallelEA2); + transform2.setOwner(parallelEA2); + mig2.setOwner(parallelEA2); /*****************************************************************************************/ -// You can choose between : -// -// - Synchronous communication : peoSyncIslandMig mig(MIG_FREQ,mig_select,mig_replace,topology,pop,pop); -// - Asynchronous communication : peoAsyncIslandMig mig(mig_cont,mig_select,mig_replace,topology,pop,pop); -// With a grid, you should use an asynchronous communication - peoAsyncIslandMig mig(mig_cont,mig_select,mig_replace,topology,pop,pop2); - checkpoint.add(mig); - peoAsyncIslandMig mig2(mig_cont2,mig_select2,mig_replace2,topology,pop2,pop); - checkpoint2.add(mig2); - -// Initialization of the algorithms - peoEA Algo(checkpoint,eval,select,eaTransform,replace); - mig.setOwner(Algo); - Algo(pop); - peoEA Algo2(checkpoint2,eval2,select2,eaTransform2,replace2); - mig2.setOwner(Algo2); - Algo2(pop2); - peo :: run(); peo :: finalize(); if (getNodeRank()==1) { + pop.sort(); + pop2.sort(); std::cout << "Final population 1 :\n" << pop << std::endl; std::cout << "Final population 2 :\n" << pop2 << std::endl; } diff --git a/trunk/paradiseo-peo/tutorial/Lesson3/mainPSO.cpp b/trunk/paradiseo-peo/tutorial/Lesson3/mainPSO.cpp index 0635a90f8..3a21ce086 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson3/mainPSO.cpp +++ b/trunk/paradiseo-peo/tutorial/Lesson3/mainPSO.cpp @@ -49,37 +49,31 @@ double f (const Indi & _indi) int main (int __argc, char *__argv[]) { - -// In this lesson, we define two algorithms of the PSO witch represents two islands. -// Obviously, you can define more algorithms. - -// The parameters are common between the two algorithms. - /*****************************************************************************************/ peo :: init( __argc, __argv ); - const unsigned int VEC_SIZE = 2; - const unsigned int POP_SIZE = 20; + const unsigned int VEC_SIZE = 2; + const unsigned int POP_SIZE = 20; const unsigned int NEIGHBORHOOD_SIZE= 6; - const unsigned int MAX_GEN = 150; + const unsigned int MAX_GEN = 100; const double INIT_POSITION_MIN = -2.0; - const double INIT_POSITION_MAX = 2.0; + const double INIT_POSITION_MAX = 2.0; const double INIT_VELOCITY_MIN = -1.; const double INIT_VELOCITY_MAX = 1.; + const unsigned int MIG_FREQ = 10; + const double omega = 1; const double C1 = 0.5; - const double C2 = 2.; -// C3 is used for the calculation of one of the strategies of the island model. - const double C3 = 2.; -// MIG_FREQ define the frequency of the migration. - const unsigned int MIG_FREQ = 10; // The optimal value is 1 or 2 for the component peoPSOVelocity. + const double C2 = 2.; rng.reseed (time(0)); - /*****************************************************************************************/ -// Define the topology of your island model +// Island model + RingTopology topologyMig; - -// First algorithm - /*****************************************************************************************/ + +// First + eoGenContinue < Indi > genContPara (MAX_GEN); + eoCombinedContinue continuatorPara (genContPara); + eoCheckPoint checkpoint(continuatorPara); peoEvalFunc plainEval(f); - peoSeqPopEval< Indi > eval(plainEval); // Here, the evaluation is sequential ! + peoPopEval< Indi > eval(plainEval); eoUniformGenerator < double >uGen (INIT_POSITION_MIN, INIT_POSITION_MAX); eoInitFixedLength < Indi > random (VEC_SIZE, uGen); eoUniformGenerator < double >sGen (INIT_VELOCITY_MIN, INIT_VELOCITY_MAX); @@ -87,27 +81,33 @@ int main (int __argc, char *__argv[]) eoFirstIsBestInit < Indi > localInit; eoRealVectorBounds bndsFlight(VEC_SIZE,INIT_POSITION_MIN,INIT_POSITION_MAX); eoStandardFlight < Indi > flight(bndsFlight); - eoPop < Indi > pop; + peoPop < Indi > pop; pop.append (POP_SIZE, random); - peoInitializer init(eval,veloRandom,localInit,pop); eoLinearTopology topology(NEIGHBORHOOD_SIZE); eoRealVectorBounds bnds(VEC_SIZE,INIT_VELOCITY_MIN,INIT_VELOCITY_MAX); - eoStandardVelocity < Indi > velocity (topology,C1,C2,bnds); - eoGenContinue < Indi > genContPara (MAX_GEN); - eoCheckPoint checkpoint(genContPara); -// Specific implementation for the island model + eoStandardVelocity < Indi > velocity (topology,omega,C1,C2,bnds); + eoInitializer init(eval,veloRandom,localInit,topology,pop); + +// Island model + eoPeriodicContinue< Indi > mig_cont( MIG_FREQ ); peoPSOSelect mig_selec(topology); - eoSelectNumber< Indi > mig_select(mig_selec); -// If you want to use a replacement stategy : peoPSOReplacement mig_replace; -// If you want to use a consideration of the migration in the calculation of the velocity : peoPSOVelocity mig_replace(C3,velocity); - peoPSOReplacement mig_replace; - /*****************************************************************************************/ + peoWorstPositionReplacement mig_replac; + + // Specific implementation (peoData.h) + + eoContinuator cont(mig_cont, pop); + eoSelector > mig_select (mig_selec,1,pop); + eoReplace > mig_replace (mig_replac,pop); -// Second algorithm (on the same model but with others names) - /*****************************************************************************************/ + +// Second + + eoGenContinue < Indi > genContPara2 (MAX_GEN); + eoCombinedContinue continuatorPara2 (genContPara2); + eoCheckPoint checkpoint2(continuatorPara2); peoEvalFunc plainEval2(f); - peoSeqPopEval< Indi > eval2(plainEval2); + peoPopEval< Indi > eval2(plainEval2); eoUniformGenerator < double >uGen2 (INIT_POSITION_MIN, INIT_POSITION_MAX); eoInitFixedLength < Indi > random2 (VEC_SIZE, uGen2); eoUniformGenerator < double >sGen2 (INIT_VELOCITY_MIN, INIT_VELOCITY_MAX); @@ -115,38 +115,51 @@ int main (int __argc, char *__argv[]) eoFirstIsBestInit < Indi > localInit2; eoRealVectorBounds bndsFlight2(VEC_SIZE,INIT_POSITION_MIN,INIT_POSITION_MAX); eoStandardFlight < Indi > flight2(bndsFlight2); - eoPop < Indi > pop2; + peoPop < Indi > pop2; pop2.append (POP_SIZE, random2); - peoInitializer init2(eval2,veloRandom2,localInit2,pop2); eoLinearTopology topology2(NEIGHBORHOOD_SIZE); eoRealVectorBounds bnds2(VEC_SIZE,INIT_VELOCITY_MIN,INIT_VELOCITY_MAX); - eoStandardVelocity < Indi > velocity2 (topology2,C1,C2,bnds2); - eoGenContinue < Indi > genContPara2 (MAX_GEN); - eoCheckPoint checkpoint2(genContPara2); + eoStandardVelocity < Indi > velocity2 (topology2,omega,C1,C2,bnds2); + eoInitializer init2(eval2,veloRandom2,localInit2,topology2,pop2); + +// Island model + eoPeriodicContinue< Indi > mig_cont2( MIG_FREQ ); peoPSOSelect mig_selec2(topology2); - eoSelectNumber< Indi > mig_select2(mig_selec2); - peoPSOReplacement mig_replace2; - /*****************************************************************************************/ + peoWorstPositionReplacement mig_replac2; -// Define the communication between the islands - peoAsyncIslandMig< Indi > mig( mig_cont, mig_select, mig_replace, topologyMig, pop, pop); +// Specific implementation (peoData.h) + + eoContinuator cont2(mig_cont2,pop2); + eoSelector > mig_select2 (mig_selec2,1,pop2); + eoReplace > mig_replace2 (mig_replac2,pop2); + + +// Island model + + peoAsyncIslandMig< Indi, peoPop > mig(cont,mig_select, mig_replace, topologyMig, pop, pop); checkpoint.add( mig ); - peoAsyncIslandMig< Indi > mig2( mig_cont2, mig_select2, mig_replace2, topologyMig, pop2, pop2); + peoAsyncIslandMig< Indi, peoPop > mig2(cont2,mig_select2, mig_replace2, topologyMig, pop2, pop2); checkpoint2.add( mig2 ); -// Initialization of the algorithms - peoPSO < Indi > psa(init,checkpoint, eval, velocity, flight); - mig.setOwner( psa ); - psa(pop); - peoPSO < Indi > psa2(init2,checkpoint2, eval2, velocity2, flight2); - mig2.setOwner( psa2 ); - psa2(pop2); + +// Parallel algorithm + + eoSyncEasyPSO psa(init,checkpoint,eval, velocity, flight); + peoWrapper parallelPSO( psa, pop); + eval.setOwner(parallelPSO); + mig.setOwner(parallelPSO); + eoSyncEasyPSO psa2(init2,checkpoint2,eval2, velocity2, flight2); + peoWrapper parallelPSO2( psa2, pop2); + eval2.setOwner(parallelPSO2); + mig2.setOwner(parallelPSO2); peo :: run(); peo :: finalize(); if (getNodeRank()==1) - { - std::cout << "Population 1 :\n" << pop << std::endl; - std::cout << "Population 2 :\n" << pop2 << std::endl; - } + { + pop.sort(); + pop2.sort(); + std::cout << "Final population :\n" << pop << std::endl; + std::cout << "Final population :\n" << pop2 << std::endl; + } } diff --git a/trunk/paradiseo-peo/tutorial/Lesson4/CMakeLists.txt b/trunk/paradiseo-peo/tutorial/Lesson4/CMakeLists.txt index 56edc1a4d..ebcbb9b29 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson4/CMakeLists.txt +++ b/trunk/paradiseo-peo/tutorial/Lesson4/CMakeLists.txt @@ -21,13 +21,6 @@ ADD_CUSTOM_COMMAND( ARGS -E copy_if_different ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson4/schema.xml ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson4) -ADD_CUSTOM_COMMAND( - TARGET install - POST_BUILD - COMMAND ${CMAKE_COMMAND} - ARGS -E copy_if_different - ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson4/Lesson4.pdf - ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson4) ###################################################################################### @@ -36,7 +29,7 @@ ADD_CUSTOM_COMMAND( ### 1) Include the sources ###################################################################################### -INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src ${MO_SRC_DIR}/src ${ParadisEO-PEO_SOURCE_DIR}/src) +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src ${MOEO_SRC_DIR}/src ${MO_SRC_DIR}/src ${ParadisEO-PEO_SOURCE_DIR}/src ${TSP_SRC_DIR}) ###################################################################################### @@ -46,13 +39,14 @@ INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src ${MO_SRC_DIR}/src ${ParadisEO-PEO_SOURCE_D ###################################################################################### IF(NOT WIN32 OR CYGWIN) - LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${ParadisEO-PEO_BINARY_DIR}/lib) + LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${MOEO_BIN_DIR}/lib ${ParadisEO-PEO_BINARY_DIR}/lib ${TSP_BINARY_DIR}/lib) ENDIF(NOT WIN32 OR CYGWIN) # especially for Visual Studio IF(WIN32 AND NOT CYGWIN) - LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${ParadisEO-PEO_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE}) -ENDIF(WIN32 AND NOT CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${ParadisEO-PEO_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${TSP_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE}) +ENDIF(WIN32 AND NOT CYGWIN) + ###################################################################################### @@ -60,10 +54,11 @@ ENDIF(WIN32 AND NOT CYGWIN) ### 3) Define your target(s): just an executable here ###################################################################################### -ADD_EXECUTABLE(pso mainPSO.cpp) -ADD_DEPENDENCIES(pso peo rmc_mpi) -ADD_EXECUTABLE(ea mainEA.cpp) -ADD_DEPENDENCIES(ea peo rmc_mpi) +ADD_EXECUTABLE(lsea mainLSEA.cpp) +ADD_DEPENDENCIES(lsea tsp peo rmc_mpi) +ADD_EXECUTABLE(eals mainEALS.cpp) +ADD_DEPENDENCIES(eals tsp peo rmc_mpi) + ###################################################################################### @@ -72,8 +67,9 @@ ADD_DEPENDENCIES(ea peo rmc_mpi) ###################################################################################### SET(LESSON4_VERSION ${GLOBAL_VERSION}) -SET_TARGET_PROPERTIES(pso PROPERTIES VERSION "${LESSON4_VERSION}") -SET_TARGET_PROPERTIES(ea PROPERTIES VERSION "${LESSON4_VERSION}") +SET_TARGET_PROPERTIES(lsea PROPERTIES VERSION "${LESSON4_VERSION}") +SET_TARGET_PROPERTIES(eals PROPERTIES VERSION "${LESSON4_VERSION}") + ###################################################################################### @@ -81,8 +77,8 @@ SET_TARGET_PROPERTIES(ea PROPERTIES VERSION "${LESSON4_VERSION}") ### 5) Link the librairies ###################################################################################### -TARGET_LINK_LIBRARIES(pso ${XML2_LIBS} peo rmc_mpi eo eoutils) -TARGET_LINK_LIBRARIES(ea ${XML2_LIBS} peo rmc_mpi eo eoutils) +TARGET_LINK_LIBRARIES(lsea ${XML2_LIBS} tsp peo rmc_mpi eo eoutils) +TARGET_LINK_LIBRARIES(eals ${XML2_LIBS} tsp peo rmc_mpi eo eoutils) ###################################################################################### diff --git a/trunk/paradiseo-peo/tutorial/Lesson4/Lesson4.pdf b/trunk/paradiseo-peo/tutorial/Lesson4/Lesson4.pdf deleted file mode 100644 index 95abc2da9..000000000 Binary files a/trunk/paradiseo-peo/tutorial/Lesson4/Lesson4.pdf and /dev/null differ diff --git a/trunk/paradiseo-peo/tutorial/Lesson4/mainEA.cpp b/trunk/paradiseo-peo/tutorial/Lesson4/mainEA.cpp deleted file mode 100644 index e79caf9a2..000000000 --- a/trunk/paradiseo-peo/tutorial/Lesson4/mainEA.cpp +++ /dev/null @@ -1,152 +0,0 @@ -/* -* -* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 -* (C) OPAC Team, INRIA, 2007 -* -* Clive Canape -* -* This software is governed by the CeCILL license under French law and -* abiding by the rules of distribution of free software. You can use, -* modify and/ or redistribute the software under the terms of the CeCILL -* license as circulated by CEA, CNRS and INRIA at the following URL -* "http://www.cecill.info". -* -* As a counterpart to the access to the source code and rights to copy, -* modify and redistribute granted by the license, users are provided only -* with a limited warranty and the software's author, the holder of the -* economic rights, and the successive licensors have only limited liability. -* -* In this respect, the user's attention is drawn to the risks associated -* with loading, using, modifying and/or developing or reproducing the -* software by the user in light of its specific status of free software, -* that may mean that it is complicated to manipulate, and that also -* therefore means that it is reserved for developers and experienced -* professionals having in-depth computer knowledge. Users are therefore -* encouraged to load and test the software's suitability as regards their -* requirements in conditions enabling the security of their systems and/or -* data to be ensured and, more generally, to use and operate it in the -* same conditions as regards security. -* The fact that you are presently reading this means that you have had -* knowledge of the CeCILL license and that you accept its terms. -* -* ParadisEO WebSite : http://paradiseo.gforge.inria.fr -* Contact: paradiseo-help@lists.gforge.inria.fr -* -*/ - -#include -#include - -typedef eoReal Indi; - -double f (const Indi & _indi) -{ - double sum; - sum=_indi[1]-pow(_indi[0],2); - sum=100*pow(sum,2); - sum+=pow((1-_indi[0]),2); - return (-sum); -} - -int main (int __argc, char *__argv[]) -{ - -// In this lesson, we can see an example of an evolutionary algorithms with three islands. -// The evaluation is parallel. -// The transformation is parallel. - - peo :: init( __argc, __argv ); - const unsigned int VEC_SIZE = 2; - const unsigned int POP_SIZE = 20; - const unsigned int MAX_GEN = 300; - const double INIT_POSITION_MIN = -2.0; - const double INIT_POSITION_MAX = 2.0; - const float CROSS_RATE = 0.8; - const double EPSILON = 0.01; - const float MUT_RATE = 0.3; - const unsigned int MIG_FREQ = 10; - const unsigned int MIG_SIZE = 5; - rng.reseed (time(0)); - RingTopology topology; - eoGenContinue < Indi > genContPara (MAX_GEN); - eoCombinedContinue continuatorPara (genContPara); - eoCheckPoint checkpoint(continuatorPara); - peoEvalFunc plainEval(f); - peoParaPopEval< Indi > eval(plainEval); - eoUniformGenerator < double >uGen (INIT_POSITION_MIN, INIT_POSITION_MAX); - eoInitFixedLength < Indi > random (VEC_SIZE, uGen); - eoRankingSelect selectionStrategy; - eoSelectNumber select(selectionStrategy,POP_SIZE); - eoSegmentCrossover crossover; - eoUniformMutation mutation(EPSILON); - peoParaSGATransform eaTransform(crossover,CROSS_RATE,mutation,MUT_RATE); - eoPlusReplacement replace; - eoPop < Indi > pop; - pop.append (POP_SIZE, random); - eoPeriodicContinue mig_cont( MIG_FREQ ); - eoRandomSelect mig_select_one; - eoSelectNumber mig_select (mig_select_one,MIG_SIZE); - eoPlusReplacement mig_replace; - eoGenContinue < Indi > genContPara2 (MAX_GEN); - eoCombinedContinue continuatorPara2 (genContPara2); - eoCheckPoint checkpoint2(continuatorPara2); - peoEvalFunc plainEval2(f); - peoParaPopEval< Indi > eval2(plainEval2); - eoUniformGenerator < double >uGen2 (INIT_POSITION_MIN, INIT_POSITION_MAX); - eoInitFixedLength < Indi > random2 (VEC_SIZE, uGen2); - eoRankingSelect selectionStrategy2; - eoSelectNumber select2(selectionStrategy2,POP_SIZE); - eoSegmentCrossover crossover2; - eoUniformMutation mutation2(EPSILON); - peoParaSGATransform eaTransform2(crossover2,CROSS_RATE,mutation2,MUT_RATE); - eoPlusReplacement replace2; - eoPop < Indi > pop2; - pop2.append (POP_SIZE, random2); - eoPeriodicContinue mig_cont2( MIG_FREQ ); - eoRandomSelect mig_select_one2; - eoSelectNumber mig_select2 (mig_select_one2,MIG_SIZE); - eoPlusReplacement mig_replace2; - eoGenContinue < Indi > genContPara3 (MAX_GEN); - eoCombinedContinue continuatorPara3 (genContPara3); - eoCheckPoint checkpoint3(continuatorPara3); - peoEvalFunc plainEval3(f); - peoParaPopEval< Indi > eval3(plainEval3); - eoUniformGenerator < double >uGen3 (INIT_POSITION_MIN, INIT_POSITION_MAX); - eoInitFixedLength < Indi > random3 (VEC_SIZE, uGen3); - eoRankingSelect selectionStrategy3; - eoSelectNumber select3(selectionStrategy3,POP_SIZE); - eoSegmentCrossover crossover3; - eoUniformMutation mutation3(EPSILON); - peoParaSGATransform eaTransform3(crossover3,CROSS_RATE,mutation3,MUT_RATE); - eoPlusReplacement replace3; - eoPop < Indi > pop3; - pop3.append (POP_SIZE, random3); - eoPeriodicContinue mig_cont3( MIG_FREQ ); - eoRandomSelect mig_select_one3; - eoSelectNumber mig_select3 (mig_select_one3,MIG_SIZE); - eoPlusReplacement mig_replace3; - peoAsyncIslandMig mig(mig_cont,mig_select,mig_replace,topology,pop,pop2); - checkpoint.add(mig); - peoAsyncIslandMig mig2(mig_cont2,mig_select2,mig_replace2,topology,pop2,pop); - checkpoint2.add(mig2); - peoAsyncIslandMig mig3(mig_cont3,mig_select3,mig_replace3,topology,pop3,pop); - checkpoint3.add(mig3); - peoEA Algo(checkpoint,eval,select,eaTransform,replace); - mig.setOwner(Algo); - Algo(pop); - peoEA Algo2(checkpoint2,eval2,select2,eaTransform2,replace2); - mig2.setOwner(Algo2); - Algo2(pop2); - peoEA Algo3(checkpoint3,eval3,select3,eaTransform3,replace3); - mig3.setOwner(Algo3); - Algo3(pop3); - - peo :: run(); - peo :: finalize(); - if (getNodeRank()==1) - { - std::cout << "Final population 1 :\n" << pop << std::endl; - std::cout << "Final population 2 :\n" << pop2 << std::endl; - std::cout << "Final population 3 :\n" << pop3 << std::endl; - } -} diff --git a/trunk/paradiseo-peo/tutorial/Lesson5/example.cpp b/trunk/paradiseo-peo/tutorial/Lesson4/mainEALS.cpp similarity index 61% rename from trunk/paradiseo-peo/tutorial/Lesson5/example.cpp rename to trunk/paradiseo-peo/tutorial/Lesson4/mainEALS.cpp index 621d2d148..9831a3360 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson5/example.cpp +++ b/trunk/paradiseo-peo/tutorial/Lesson4/mainEALS.cpp @@ -1,9 +1,9 @@ /* -* +* * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 -* (C) OPAC Team, LIFL, 2002-2007 +* (C) OPAC Team, INRIA, 2007 * -* Sebastien Cahon, Alexandru-Adrian Tantar, Clive Canape +* Clive Canape * * This software is governed by the CeCILL license under French law and * abiding by the rules of distribution of free software. You can use, @@ -33,11 +33,7 @@ * Contact: paradiseo-help@lists.gforge.inria.fr * */ -// (c) OPAC Team, LIFL, 2007 -// -// Contact: paradiseo-help@lists.gforge.inria.fr -// Libraries of problem #include "param.h" #include "route_init.h" #include "route_eval.h" @@ -54,7 +50,7 @@ #include #define POP_SIZE 10 -#define NUM_GEN 10 +#define NUM_GEN 100 #define CROSS_RATE 1.0 #define MUT_RATE 0.01 @@ -62,57 +58,57 @@ int main (int __argc, char * * __argv) { - // Example of a problem (TSP) with an hybridization - peo :: init (__argc, __argv); - - - loadParameters (__argc, __argv); /* Processing some parameters relative to the tackled - problem (TSP) */ - - RouteInit route_init; /* Its builds random routes */ - RouteEval full_eval; /* Full route evaluator */ - - - OrderXover order_cross; /* Recombination */ + loadParameters (__argc, __argv); + RouteInit route_init; + RouteEval full_eval; + OrderXover order_cross; PartialMappedXover pm_cross; EdgeXover edge_cross; - CitySwap city_swap_mut; /* Mutation */ + CitySwap city_swap_mut; - - /** Local Search */ +// Initialization of the local search TwoOptInit pmx_two_opt_init; TwoOptNext pmx_two_opt_next; TwoOptIncrEval pmx_two_opt_incr_eval; moBestImprSelect pmx_two_opt_move_select; moHC hc (pmx_two_opt_init, pmx_two_opt_next, pmx_two_opt_incr_eval, pmx_two_opt_move_select, full_eval); - /** The EA */ - eoPop ox_pop (POP_SIZE, route_init); /* Population */ - - eoGenContinue ox_cont (NUM_GEN); /* A fixed number of iterations */ - eoCheckPoint ox_checkpoint (ox_cont); /* Checkpoint */ - peoSeqPopEval ox_pop_eval (full_eval); - eoStochTournamentSelect ox_select_one; - eoSelectNumber ox_select (ox_select_one, POP_SIZE); - eoSGATransform ox_transform (order_cross, CROSS_RATE, city_swap_mut, MUT_RATE); - peoSeqTransform ox_para_transform (ox_transform); - eoEPReplacement ox_replace (2); - - peoEA ox_ea (ox_checkpoint, ox_pop_eval, ox_select, ox_para_transform, ox_replace); - - ox_ea (ox_pop); /* Application to the given population */ - - +// EA + eoPop pop (POP_SIZE, route_init); + eoGenContinue cont (NUM_GEN); + eoCheckPoint checkpoint (cont); + eoEvalFuncCounter< Route > eval(full_eval); + eoStochTournamentSelect select_one; + eoSelectNumber select (select_one, POP_SIZE); + eoSGATransform transform (order_cross, CROSS_RATE, city_swap_mut, MUT_RATE); + eoEPReplacement replace (2); + eoEasyEA< Route > eaAlg( checkpoint, eval, select, transform, replace ); + peoWrapper parallelEA( eaAlg, pop); peo :: run (); - peo :: finalize (); /* Termination */ + peo :: finalize (); if (getNodeRank()==1) - std :: cout << "\nResult : "< initParallelHC (hc); + peoWrapper parallelHC (initParallelHC, pop); + initParallelHC.setOwner(parallelHC); + peo :: run( ); + peo :: finalize( ); + if (getNodeRank()==1) - std :: cout << "\n\nAfter an hybridization : " << ox_pop[ 0 ].fitness() << std :: endl; - - - return 0; + { + std :: cout << "\nResult after the local search\n"; + pop.sort(); + for(unsigned i=0;i +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, INRIA, 2007 +* +* Clive Canape +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "param.h" +#include "route_init.h" +#include "route_eval.h" +#include "order_xover.h" +#include "edge_xover.h" +#include "partial_mapped_xover.h" +#include "city_swap.h" +#include "part_route_eval.h" +#include "merge_route_eval.h" +#include "two_opt_init.h" +#include "two_opt_next.h" +#include "two_opt_incr_eval.h" + +#include + +#define POP_SIZE 10 +#define NUM_GEN 200 +#define CROSS_RATE 1.0 +#define MUT_RATE 0.1 + + +int main (int __argc, char * * __argv) +{ + + peo :: init (__argc, __argv); + loadParameters (__argc, __argv); + RouteInit route_init; + RouteEval full_eval; + OrderXover order_cross; + PartialMappedXover pm_cross; + EdgeXover edge_cross; + CitySwap city_swap_mut; + +// Local search + TwoOptInit pmx_two_opt_init; + TwoOptNext pmx_two_opt_next; + TwoOptIncrEval pmx_two_opt_incr_eval; + moBestImprSelect pmx_two_opt_move_select; + moHC hc (pmx_two_opt_init, pmx_two_opt_next, pmx_two_opt_incr_eval, pmx_two_opt_move_select, full_eval); + eoPop pop (POP_SIZE, route_init); + peoMultiStart initParallelHC (hc); + peoWrapper parallelHC (initParallelHC, pop); + initParallelHC.setOwner(parallelHC); + peo :: run( ); + peo :: finalize( ); + + if (getNodeRank()==1) + { + std :: cout << "\nResult before the EA\n"; + pop.sort(); + for(unsigned i=0;i cont (NUM_GEN); + eoCheckPoint checkpoint (cont); + eoEvalFuncCounter< Route > eval(full_eval); + eoStochTournamentSelect select_one; + eoSelectNumber select (select_one, POP_SIZE); + eoSGATransform transform (order_cross, CROSS_RATE, city_swap_mut, MUT_RATE); + eoEPReplacement replace (2); + eoEasyEA< Route > eaAlg( checkpoint, eval, select, transform, replace ); + peoWrapper parallelEA( eaAlg, pop); + peo :: run (); + peo :: finalize (); + + if (getNodeRank()==1) + { + std :: cout << "\nResult after the EA\n"; + pop.sort(); + for(unsigned i=0;i -* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 -* (C) OPAC Team, INRIA, 2007 -* -* Clive Canape -* -* This software is governed by the CeCILL license under French law and -* abiding by the rules of distribution of free software. You can use, -* modify and/ or redistribute the software under the terms of the CeCILL -* license as circulated by CEA, CNRS and INRIA at the following URL -* "http://www.cecill.info". -* -* As a counterpart to the access to the source code and rights to copy, -* modify and redistribute granted by the license, users are provided only -* with a limited warranty and the software's author, the holder of the -* economic rights, and the successive licensors have only limited liability. -* -* In this respect, the user's attention is drawn to the risks associated -* with loading, using, modifying and/or developing or reproducing the -* software by the user in light of its specific status of free software, -* that may mean that it is complicated to manipulate, and that also -* therefore means that it is reserved for developers and experienced -* professionals having in-depth computer knowledge. Users are therefore -* encouraged to load and test the software's suitability as regards their -* requirements in conditions enabling the security of their systems and/or -* data to be ensured and, more generally, to use and operate it in the -* same conditions as regards security. -* The fact that you are presently reading this means that you have had -* knowledge of the CeCILL license and that you accept its terms. -* -* ParadisEO WebSite : http://paradiseo.gforge.inria.fr -* Contact: paradiseo-help@lists.gforge.inria.fr -* -*/ - -#include - -typedef eoRealParticle < double >Indi; - -double f (const Indi & _indi) -{ - double sum; - sum=_indi[1]-pow(_indi[0],2); - sum=100*pow(sum,2); - sum+=pow((1-_indi[0]),2); - return (-sum); -} - -int main (int __argc, char *__argv[]) -{ - -// In this lesson, we can see an example of a PSO with three islands. -// The strategy of migration is the replacement. -// The evaluation is parallel. - - peo :: init( __argc, __argv ); - const unsigned int VEC_SIZE = 2; - const unsigned int POP_SIZE = 20; - const unsigned int NEIGHBORHOOD_SIZE= 6; - const unsigned int MAX_GEN = 150; - const double INIT_POSITION_MIN = -2.0; - const double INIT_POSITION_MAX = 2.0; - const double INIT_VELOCITY_MIN = -1.; - const double INIT_VELOCITY_MAX = 1.; - const double C1 = 0.5; - const double C2 = 2.; - const double C3 = 2.; - const unsigned int MIG_FREQ = 10; - rng.reseed (time(0)); - RingTopology topologyMig; - peoEvalFunc plainEval(f); - peoParaPopEval< Indi > eval(plainEval); - eoUniformGenerator < double >uGen (INIT_POSITION_MIN, INIT_POSITION_MAX); - eoInitFixedLength < Indi > random (VEC_SIZE, uGen); - eoUniformGenerator < double >sGen (INIT_VELOCITY_MIN, INIT_VELOCITY_MAX); - eoVelocityInitFixedLength < Indi > veloRandom (VEC_SIZE, sGen); - eoFirstIsBestInit < Indi > localInit; - eoRealVectorBounds bndsFlight(VEC_SIZE,INIT_POSITION_MIN,INIT_POSITION_MAX); - eoStandardFlight < Indi > flight(bndsFlight); - eoPop < Indi > pop; - pop.append (POP_SIZE, random); - peoInitializer init(eval,veloRandom,localInit,pop); - eoLinearTopology topology(NEIGHBORHOOD_SIZE); - eoRealVectorBounds bnds(VEC_SIZE,INIT_VELOCITY_MIN,INIT_VELOCITY_MAX); - eoStandardVelocity < Indi > velocity (topology,C1,C2,bnds); - eoGenContinue < Indi > genContPara (MAX_GEN); - eoCheckPoint checkpoint(genContPara); - eoPeriodicContinue< Indi > mig_cont( MIG_FREQ ); - peoPSOSelect mig_selec(topology); - eoSelectNumber< Indi > mig_select(mig_selec); - peoPSOReplacement mig_replace; - peoEvalFunc plainEval2(f); - peoParaPopEval< Indi > eval2(plainEval2); - eoUniformGenerator < double >uGen2 (INIT_POSITION_MIN, INIT_POSITION_MAX); - eoInitFixedLength < Indi > random2 (VEC_SIZE, uGen2); - eoUniformGenerator < double >sGen2 (INIT_VELOCITY_MIN, INIT_VELOCITY_MAX); - eoVelocityInitFixedLength < Indi > veloRandom2 (VEC_SIZE, sGen2); - eoFirstIsBestInit < Indi > localInit2; - eoRealVectorBounds bndsFlight2(VEC_SIZE,INIT_POSITION_MIN,INIT_POSITION_MAX); - eoStandardFlight < Indi > flight2(bndsFlight2); - eoPop < Indi > pop2; - pop2.append (POP_SIZE, random2); - peoInitializer init2(eval2,veloRandom2,localInit2,pop2); - eoLinearTopology topology2(NEIGHBORHOOD_SIZE); - eoRealVectorBounds bnds2(VEC_SIZE,INIT_VELOCITY_MIN,INIT_VELOCITY_MAX); - eoStandardVelocity < Indi > velocity2 (topology2,C1,C2,bnds2); - eoGenContinue < Indi > genContPara2 (MAX_GEN); - eoCheckPoint checkpoint2(genContPara2); - eoPeriodicContinue< Indi > mig_cont2( MIG_FREQ ); - peoPSOSelect mig_selec2(topology2); - eoSelectNumber< Indi > mig_select2(mig_selec2); - peoPSOReplacement mig_replace2; - peoEvalFunc plainEval3(f); - peoParaPopEval< Indi > eval3(plainEval3); - eoUniformGenerator < double >uGen3 (INIT_POSITION_MIN, INIT_POSITION_MAX); - eoInitFixedLength < Indi > random3 (VEC_SIZE, uGen3); - eoUniformGenerator < double >sGen3 (INIT_VELOCITY_MIN, INIT_VELOCITY_MAX); - eoVelocityInitFixedLength < Indi > veloRandom3 (VEC_SIZE, sGen3); - eoFirstIsBestInit < Indi > localInit3; - eoRealVectorBounds bndsFlight3(VEC_SIZE,INIT_POSITION_MIN,INIT_POSITION_MAX); - eoStandardFlight < Indi > flight3(bndsFlight3); - eoPop < Indi > pop3; - pop3.append (POP_SIZE, random3); - peoInitializer init3(eval3,veloRandom3,localInit3,pop3); - eoLinearTopology topology3(NEIGHBORHOOD_SIZE); - eoRealVectorBounds bnds3(VEC_SIZE,INIT_VELOCITY_MIN,INIT_VELOCITY_MAX); - eoStandardVelocity < Indi > velocity3 (topology3,C1,C2,bnds3); - eoGenContinue < Indi > genContPara3 (MAX_GEN); - eoCheckPoint checkpoint3(genContPara3); - eoPeriodicContinue< Indi > mig_cont3( MIG_FREQ ); - peoPSOSelect mig_selec3(topology3); - eoSelectNumber< Indi > mig_select3(mig_selec3); - peoPSOReplacement mig_replace3; - peoAsyncIslandMig< Indi > mig( mig_cont, mig_select, mig_replace, topologyMig, pop, pop2); - checkpoint.add( mig ); - peoAsyncIslandMig< Indi > mig2( mig_cont2, mig_select2, mig_replace2, topologyMig, pop2, pop3); - checkpoint2.add( mig2 ); - peoAsyncIslandMig< Indi > mig3( mig_cont3, mig_select3, mig_replace3, topologyMig, pop3, pop); - checkpoint3.add( mig3 ); - peoPSO < Indi > psa(init,checkpoint, eval, velocity, flight); - mig.setOwner( psa ); - psa(pop); - peoPSO < Indi > psa2(init2,checkpoint2, eval2, velocity2, flight2); - mig2.setOwner( psa2 ); - psa2(pop2); - peoPSO < Indi > psa3(init3,checkpoint3, eval3, velocity3, flight3); - mig3.setOwner( psa3 ); - psa3(pop3); - - peo :: run(); - peo :: finalize(); - if (getNodeRank()==1) - { - std::cout << "Population 1 :\n" << pop << std::endl; - std::cout << "Population 2 :\n" << pop2 << std::endl; - std::cout << "Population 3 :\n" << pop3 << std::endl; - } -} diff --git a/trunk/paradiseo-peo/tutorial/Lesson4/param b/trunk/paradiseo-peo/tutorial/Lesson4/param index 730f547e1..77a8c99d6 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson4/param +++ b/trunk/paradiseo-peo/tutorial/Lesson4/param @@ -6,4 +6,6 @@ --schema=schema.xml +## parameters +--inst=../examples/tsp/benchs/eil101.tsp diff --git a/trunk/paradiseo-peo/tutorial/Lesson4/schema.xml b/trunk/paradiseo-peo/tutorial/Lesson4/schema.xml index 90b7b0bde..f34107574 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson4/schema.xml +++ b/trunk/paradiseo-peo/tutorial/Lesson4/schema.xml @@ -7,8 +7,6 @@ 1 - 2 - 3 diff --git a/trunk/paradiseo-peo/tutorial/Lesson5/CMakeLists.txt b/trunk/paradiseo-peo/tutorial/Lesson5/CMakeLists.txt index f85ca5819..b89275562 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson5/CMakeLists.txt +++ b/trunk/paradiseo-peo/tutorial/Lesson5/CMakeLists.txt @@ -21,13 +21,6 @@ ADD_CUSTOM_COMMAND( ARGS -E copy_if_different ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson5/schema.xml ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson5) -ADD_CUSTOM_COMMAND( - TARGET install - POST_BUILD - COMMAND ${CMAKE_COMMAND} - ARGS -E copy_if_different - ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson5/Lesson5.pdf - ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson5) ###################################################################################### @@ -36,7 +29,7 @@ ADD_CUSTOM_COMMAND( ### 1) Include the sources ###################################################################################### -INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src ${MO_SRC_DIR}/src ${ParadisEO-PEO_SOURCE_DIR}/src ${TSP_SRC_DIR}) +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src ${MOEO_SRC_DIR}/src ${MO_SRC_DIR}/src ${ParadisEO-PEO_SOURCE_DIR}/src) ###################################################################################### @@ -46,12 +39,12 @@ INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src ${MO_SRC_DIR}/src ${ParadisEO-PEO_SOURCE_D ###################################################################################### IF(NOT WIN32 OR CYGWIN) - LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${ParadisEO-PEO_BINARY_DIR}/lib ${TSP_BINARY_DIR}/lib) + LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${ParadisEO-PEO_BINARY_DIR}/lib) ENDIF(NOT WIN32 OR CYGWIN) # especially for Visual Studio IF(WIN32 AND NOT CYGWIN) - LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${ParadisEO-PEO_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${TSP_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE}) + LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${ParadisEO-PEO_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE}) ENDIF(WIN32 AND NOT CYGWIN) ###################################################################################### @@ -62,8 +55,8 @@ ENDIF(WIN32 AND NOT CYGWIN) ###################################################################################### # no matter what is the OS, hopefully -ADD_EXECUTABLE(example example.cpp) -ADD_DEPENDENCIES(example tsp peo rmc_mpi) +ADD_EXECUTABLE(pso main.cpp) +ADD_DEPENDENCIES(pso peo rmc_mpi) ###################################################################################### @@ -74,7 +67,7 @@ ADD_DEPENDENCIES(example tsp peo rmc_mpi) ###################################################################################### SET(WALKTHROUGH_VERSION ${GLOBAL_VERSION}) -SET_TARGET_PROPERTIES(example PROPERTIES VERSION "${WALKTHROUGH_VERSION}") +SET_TARGET_PROPERTIES(pso PROPERTIES VERSION "${WALKTHROUGH_VERSION}") ###################################################################################### @@ -83,7 +76,7 @@ SET_TARGET_PROPERTIES(example PROPERTIES VERSION "${WALKTHROUGH_VERSION}") ### 5) Link the librairies ###################################################################################### -TARGET_LINK_LIBRARIES(example ${XML2_LIBS} tsp peo rmc_mpi eo eoutils) +TARGET_LINK_LIBRARIES(pso ${XML2_LIBS} peo rmc_mpi eo eoutils) ###################################################################################### diff --git a/trunk/paradiseo-peo/tutorial/Lesson5/Lesson5.pdf b/trunk/paradiseo-peo/tutorial/Lesson5/Lesson5.pdf deleted file mode 100644 index 56a993a1d..000000000 Binary files a/trunk/paradiseo-peo/tutorial/Lesson5/Lesson5.pdf and /dev/null differ diff --git a/trunk/paradiseo-peo/tutorial/Lesson5/main.cpp b/trunk/paradiseo-peo/tutorial/Lesson5/main.cpp new file mode 100644 index 000000000..1e5d4c484 --- /dev/null +++ b/trunk/paradiseo-peo/tutorial/Lesson5/main.cpp @@ -0,0 +1,126 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, INRIA, 2007 +* +* Clive Canape +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include +#include + +typedef eoRealParticle < double >Indi; + +double f (const Indi & _indi) +{ + double sum; + sum=_indi[1]-pow(_indi[0],2); + sum=100*pow(sum,2); + sum+=pow((1-_indi[0]),2); + return (-sum); +} + +template +class eoResizerInit: public eoInit +{ + public: + + typedef typename EOT::AtomType AtomType; + + eoResizerInit(unsigned _size) + : size(_size){} + + virtual void operator()(EOT& chrom) + { + chrom.resize(size); + chrom.invalidate(); + } + private : + unsigned size; +}; + + +int main( int __argc, char** __argv ) +{ + + peo :: init( __argc, __argv ); + const unsigned int VEC_SIZE = 2; + const unsigned int POP_SIZE = 20; + const unsigned int NEIGHBORHOOD_SIZE= 6; + const unsigned int MAX_GEN = 300; + const double INIT_POSITION_MIN = -2.0; + const double INIT_POSITION_MAX = 2.0; + const double INIT_VELOCITY_MIN = -1.; + const double INIT_VELOCITY_MAX = 1.; + const double omega = 1; + const double C1 = 0.5; + const double C2 = 2.; + rng.reseed (time(0)); + eoGenContinue < Indi > genContPara (MAX_GEN); + eoCombinedContinue continuatorPara (genContPara); + eoCheckPoint checkpoint(continuatorPara); + eoUniformGenerator < double >uGen (INIT_POSITION_MIN, INIT_POSITION_MAX); + eoUniformGenerator < double >sGen (INIT_VELOCITY_MIN, INIT_VELOCITY_MAX); + eoVelocityInitFixedLength < Indi > veloRandom (VEC_SIZE, sGen); + eoFirstIsBestInit < Indi > localInit; + eoRealVectorBounds bndsFlight(VEC_SIZE,INIT_POSITION_MIN,INIT_POSITION_MAX); + eoStandardFlight < Indi > flight(bndsFlight); + eoLinearTopology topology(NEIGHBORHOOD_SIZE); + eoRealVectorBounds bnds(VEC_SIZE,INIT_VELOCITY_MIN,INIT_VELOCITY_MAX); + eoStandardVelocity < Indi > velocity (topology,omega,C1,C2,bnds); + + eoResizerInit sizeInit(VEC_SIZE); + // need at least a size initialization + eoPop < Indi > pop(POP_SIZE,sizeInit); + eoInitFixedLength < Indi > randomSeq (VEC_SIZE, uGen); + peoMultiStart initRandom (randomSeq); + peoWrapper random (initRandom,pop); + initRandom.setOwner(random); + peo :: run( ); + peo :: finalize( ); + +// Parallel algorithm + + peo :: init (__argc, __argv); + peoEvalFunc plainEval(f); + peoPopEval< Indi > eval(plainEval); + eoInitializer init(eval,veloRandom,localInit,topology,pop); + eoSyncEasyPSO psa(init,checkpoint,eval, velocity, flight); + peoWrapper parallelPSO( psa, pop); + eval.setOwner(parallelPSO); + peo :: run(); + peo :: finalize(); + if (getNodeRank()==1) + { + pop.sort(); + std::cout << "Final population :\n" << pop << std::endl; + } +} diff --git a/trunk/paradiseo-peo/tutorial/Lesson5/param b/trunk/paradiseo-peo/tutorial/Lesson5/param index ea2a065e2..86a19d5fd 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson5/param +++ b/trunk/paradiseo-peo/tutorial/Lesson5/param @@ -5,9 +5,3 @@ ## deployment schema --schema=schema.xml - -## parameters - ---inst=../examples/tsp/benchs/eil101.tsp - - diff --git a/trunk/paradiseo-peo/tutorial/Lesson6/CMakeLists.txt b/trunk/paradiseo-peo/tutorial/Lesson6/CMakeLists.txt index b1b8458aa..43a86ba78 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson6/CMakeLists.txt +++ b/trunk/paradiseo-peo/tutorial/Lesson6/CMakeLists.txt @@ -4,9 +4,17 @@ ###################################################################################### SET (CMAKE_CXX_COMPILER mpicxx) +SET(MAKE_SRC_DIR "${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson6/make" CACHE PATH "Make source directory" FORCE) -ADD_CUSTOM_TARGET(install DEPENDS ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson6/param ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson6/schema.xml) +ADD_CUSTOM_TARGET(install DEPENDS ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson6/param ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson6/FlowShopEA.param ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson6/schema.xml) +ADD_CUSTOM_COMMAND( + TARGET install + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different + ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson6/FlowShopEA.param + ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson6) ADD_CUSTOM_COMMAND( TARGET install POST_BUILD @@ -21,13 +29,7 @@ ADD_CUSTOM_COMMAND( ARGS -E copy_if_different ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson6/schema.xml ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson6) -ADD_CUSTOM_COMMAND( - TARGET install - POST_BUILD - COMMAND ${CMAKE_COMMAND} - ARGS -E copy_if_different - ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson6/Lesson6.pdf - ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson6) + ###################################################################################### @@ -35,7 +37,7 @@ ADD_CUSTOM_COMMAND( ### 1) Include the sources ###################################################################################### -INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src ${MO_SRC_DIR}/src ${ParadisEO-PEO_SOURCE_DIR}/src ${TSP_SRC_DIR}) +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src ${MOEO_SRC_DIR}/src ${FLOWSHOP_SRC_DIR} ${MO_SRC_DIR}/src ${ParadisEO-PEO_SOURCE_DIR}/src ${TSP_SRC_DIR} ${MAKE_SRC_DIR}) ###################################################################################### @@ -45,13 +47,10 @@ INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src ${MO_SRC_DIR}/src ${ParadisEO-PEO_SOURCE_D ###################################################################################### IF(NOT WIN32 OR CYGWIN) - LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${ParadisEO-PEO_BINARY_DIR}/lib ${TSP_BINARY_DIR}/lib) + LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${MOEO_BIN_DIR}/lib ${FLOWSHOP_BIN_DIR}/lib ${ParadisEO-PEO_BINARY_DIR}/lib ${TSP_BINARY_DIR}/lib) ENDIF(NOT WIN32 OR CYGWIN) -# especially for Visual Studio -IF(WIN32 AND NOT CYGWIN) - LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${ParadisEO-PEO_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${TSP_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE}) -ENDIF(WIN32 AND NOT CYGWIN) + ###################################################################################### @@ -61,7 +60,8 @@ ENDIF(WIN32 AND NOT CYGWIN) ###################################################################################### ADD_EXECUTABLE(example main.cpp) -ADD_DEPENDENCIES(example tsp peo rmc_mpi) +ADD_DEPENDENCIES(example flowshop moeo peo rmc_mpi) + ###################################################################################### @@ -70,22 +70,13 @@ ADD_DEPENDENCIES(example tsp peo rmc_mpi) ### 4) Optionnal: define your target(s)'s version: no effect for windows ###################################################################################### -SET(LESSON6_VERSION ${GLOBAL_VERSION}) -SET_TARGET_PROPERTIES(example PROPERTIES VERSION "${LESSON6_VERSION}") ###################################################################################### - ###################################################################################### ### 5) Link the librairies ###################################################################################### -TARGET_LINK_LIBRARIES(example ${XML2_LIBS} tsp peo rmc_mpi eo eoutils) - +TARGET_LINK_LIBRARIES(example ${XML2_LIBS} flowshop moeo peo rmc_mpi eo eoutils) ###################################################################################### - - - - - diff --git a/trunk/paradiseo-peo/tutorial/Lesson7/FlowShopEA.param b/trunk/paradiseo-peo/tutorial/Lesson6/FlowShopEA.param similarity index 100% rename from trunk/paradiseo-peo/tutorial/Lesson7/FlowShopEA.param rename to trunk/paradiseo-peo/tutorial/Lesson6/FlowShopEA.param diff --git a/trunk/paradiseo-peo/tutorial/Lesson6/Lesson6.pdf b/trunk/paradiseo-peo/tutorial/Lesson6/Lesson6.pdf deleted file mode 100644 index 24f6c1cfb..000000000 Binary files a/trunk/paradiseo-peo/tutorial/Lesson6/Lesson6.pdf and /dev/null differ diff --git a/trunk/paradiseo-peo/tutorial/Lesson6/main.cpp b/trunk/paradiseo-peo/tutorial/Lesson6/main.cpp index c679f2c1b..f01a252fc 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson6/main.cpp +++ b/trunk/paradiseo-peo/tutorial/Lesson6/main.cpp @@ -34,72 +34,34 @@ * */ - #include - -// Specific libraries (TSP) -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include -int main( int __argc, char** __argv ) + +int main(int argc, char* argv[]) { - /* In this lesson you will learn to use a multi-start. - * - * Thanks to this method, you can use several local searches together !!! - * - */ - -// Parameter - const unsigned int POP_SIZE = 10; - srand( time(NULL) ); - -// Initializing the ParadisEO-PEO environment - peo :: init( __argc, __argv ); -// Processing the command line specified parameters - loadParameters( __argc, __argv ); - -// Define a Hill Climbing (you can choose an other local search) -// ie Lessons of ParadisEO - MO - Route route; - RouteInit init; - init(route); - RouteEval eval; - eval(route); - TwoOptInit initHC; - TwoOptNext nextHC; - TwoOptIncrEval incrHC; - moBestImprSelect< TwoOpt > selectHC; - moHC< TwoOpt > hc(initHC, nextHC, incrHC, selectHC, eval); - -// Define a population - RouteInit initPop; // Creates random Route objects - RouteEval evalPop; // Offers a fitness value for a specified Route object - eoPop < Route > pop(POP_SIZE, initPop); - for ( unsigned int index = 0; index < POP_SIZE; index++ ) - evalPop( pop[ index ] ); - -// Setting up the parallel wrapper - peoSynchronousMultiStart< Route > parallelHC(hc); - peoParallelAlgorithmWrapper WrapHC (parallelHC, pop); - parallelHC.setOwner( WrapHC ); - - peo :: run( ); - peo :: finalize( ); - if ( getNodeRank() == 1 ) - { - - std :: cout << "\n\nBefore : \n" << route; - std :: cout << "\n\nWith the synchronous Multi-Start HCs:"; - for ( unsigned int index = 0; index < POP_SIZE; index++ ) - std::cout <<"\n"<< pop[ index ]; - } - + peo :: init( argc,argv ); + eoParser parser(argc, argv); + eoState state; + peoMoeoPopEval& eval = do_make_para_eval(parser, state); + eoInit& init = do_make_genotype(parser, state); + eoGenOp& op = do_make_op(parser, state); + eoPop& pop = do_make_pop(parser, state, init); + moeoArchive arch; + eoContinue& term = do_make_continue_moeo(parser, state, eval); + eoCheckPoint& checkpoint = do_make_checkpoint_moeo(parser, state, eval, term, pop, arch); + eoAlgo& algo = do_make_ea_moeo(parser, state, eval, checkpoint, op, arch); + peoWrapper parallelMOEO( algo, pop); + eval.setOwner(parallelMOEO); + peo :: run(); + peo :: finalize(); + if (getNodeRank()==1) + { + pop.sort(); + std::cout << "Final population :\n" << pop << std::endl; + } } diff --git a/trunk/paradiseo-peo/tutorial/Lesson7/make_checkpoint_moeo.h b/trunk/paradiseo-peo/tutorial/Lesson6/make/make_checkpoint_moeo.h similarity index 100% rename from trunk/paradiseo-peo/tutorial/Lesson7/make_checkpoint_moeo.h rename to trunk/paradiseo-peo/tutorial/Lesson6/make/make_checkpoint_moeo.h diff --git a/trunk/paradiseo-peo/tutorial/Lesson7/make_continue_moeo.h b/trunk/paradiseo-peo/tutorial/Lesson6/make/make_continue_moeo.h similarity index 100% rename from trunk/paradiseo-peo/tutorial/Lesson7/make_continue_moeo.h rename to trunk/paradiseo-peo/tutorial/Lesson6/make/make_continue_moeo.h diff --git a/trunk/paradiseo-peo/tutorial/Lesson7/make_ea_moeo.h b/trunk/paradiseo-peo/tutorial/Lesson6/make/make_ea_moeo.h similarity index 100% rename from trunk/paradiseo-peo/tutorial/Lesson7/make_ea_moeo.h rename to trunk/paradiseo-peo/tutorial/Lesson6/make/make_ea_moeo.h diff --git a/trunk/paradiseo-peo/tutorial/Lesson6/make/make_library.h b/trunk/paradiseo-peo/tutorial/Lesson6/make/make_library.h new file mode 100644 index 000000000..fd2eeb42c --- /dev/null +++ b/trunk/paradiseo-peo/tutorial/Lesson6/make/make_library.h @@ -0,0 +1,8 @@ +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/trunk/paradiseo-peo/tutorial/Lesson7/make_para_eval.h b/trunk/paradiseo-peo/tutorial/Lesson6/make/make_para_eval.h similarity index 100% rename from trunk/paradiseo-peo/tutorial/Lesson7/make_para_eval.h rename to trunk/paradiseo-peo/tutorial/Lesson6/make/make_para_eval.h diff --git a/trunk/paradiseo-peo/tutorial/Lesson6/schema.xml b/trunk/paradiseo-peo/tutorial/Lesson6/schema.xml index 2bbd4e4af..262e2a9d7 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson6/schema.xml +++ b/trunk/paradiseo-peo/tutorial/Lesson6/schema.xml @@ -6,10 +6,6 @@ 1 - 2 - 3 - 4 - 5 diff --git a/trunk/paradiseo-peo/tutorial/Lesson7/CMakeLists.txt b/trunk/paradiseo-peo/tutorial/Lesson7/CMakeLists.txt deleted file mode 100644 index 76106a5d2..000000000 --- a/trunk/paradiseo-peo/tutorial/Lesson7/CMakeLists.txt +++ /dev/null @@ -1,81 +0,0 @@ - -###################################################################################### -### 0) Set the compiler and define targets to easily run the lessons -###################################################################################### - -SET (CMAKE_CXX_COMPILER mpicxx) - -ADD_CUSTOM_TARGET(install DEPENDS ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson7/param ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson7/FlowShopEA.param ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson7/schema.xml) - -ADD_CUSTOM_COMMAND( - TARGET install - POST_BUILD - COMMAND ${CMAKE_COMMAND} - ARGS -E copy_if_different - ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson7/FlowShopEA.param - ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson7) -ADD_CUSTOM_COMMAND( - TARGET install - POST_BUILD - COMMAND ${CMAKE_COMMAND} - ARGS -E copy_if_different - ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson7/param - ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson7) -ADD_CUSTOM_COMMAND( - TARGET install - POST_BUILD - COMMAND ${CMAKE_COMMAND} - ARGS -E copy_if_different - ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson7/schema.xml - ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson7) - -###################################################################################### - - -###################################################################################### -### 1) Include the sources -###################################################################################### - -INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src ${MOEO_SRC_DIR}/src ${FLOWSHOP_SRC_DIR} ${MO_SRC_DIR}/src ${ParadisEO-PEO_SOURCE_DIR}/src ${TSP_SRC_DIR}) - -###################################################################################### - - -###################################################################################### -### 2) Specify where CMake can find the libraries (mandatory: before 3) ) -###################################################################################### - -IF(NOT WIN32 OR CYGWIN) - LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${MOEO_BIN_DIR}/lib ${FLOWSHOP_BIN_DIR}/lib ${ParadisEO-PEO_BINARY_DIR}/lib ${TSP_BINARY_DIR}/lib) -ENDIF(NOT WIN32 OR CYGWIN) - - - -###################################################################################### - - -###################################################################################### -### 3) Define your target(s): just an executable here -###################################################################################### - -ADD_EXECUTABLE(example main.cpp) -ADD_DEPENDENCIES(example flowshop moeo peo rmc_mpi) - - -###################################################################################### - - -###################################################################################### -### 4) Optionnal: define your target(s)'s version: no effect for windows -###################################################################################### - - -###################################################################################### - -###################################################################################### -### 5) Link the librairies -###################################################################################### - -TARGET_LINK_LIBRARIES(example ${XML2_LIBS} flowshop moeo peo rmc_mpi eo eoutils) - -###################################################################################### diff --git a/trunk/paradiseo-peo/tutorial/Lesson7/main.cpp b/trunk/paradiseo-peo/tutorial/Lesson7/main.cpp deleted file mode 100644 index 9b2e6d6d6..000000000 --- a/trunk/paradiseo-peo/tutorial/Lesson7/main.cpp +++ /dev/null @@ -1,35 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include <../tutorial/Lesson7/make_continue_moeo.h> -#include <../tutorial/Lesson7/make_checkpoint_moeo.h> -#include <../tutorial/Lesson7/make_ea_moeo.h> -#include <../tutorial/Lesson7/make_para_eval.h> -#include - - - -int main(int argc, char* argv[]) -{ - - peo :: init( argc,argv ); - eoParser parser(argc, argv); - eoState state; - peoMoeoPopEval& eval = do_make_para_eval(parser, state); - eoInit& init = do_make_genotype(parser, state); - eoGenOp& op = do_make_op(parser, state); - eoPop& pop = do_make_pop(parser, state, init); - moeoArchive arch; - eoContinue& term = do_make_continue_moeo(parser, state, eval); - eoCheckPoint& checkpoint = do_make_checkpoint_moeo(parser, state, eval, term, pop, arch); - eoAlgo& algo = do_make_ea_moeo(parser, state, eval, checkpoint, op, arch); - peoWrapper parallelMOEO( algo, pop); - eval.setOwner(parallelMOEO); - peo :: run(); - peo :: finalize(); - if (getNodeRank()==1) - std::cout << "Final population :\n" << pop << std::endl; -} diff --git a/trunk/paradiseo-peo/tutorial/Lesson7/param b/trunk/paradiseo-peo/tutorial/Lesson7/param deleted file mode 100644 index eb843c65f..000000000 --- a/trunk/paradiseo-peo/tutorial/Lesson7/param +++ /dev/null @@ -1,12 +0,0 @@ -## miscallenous parameters - ---debug=false - -## deployment schema - ---schema=schema.xml - -## parameters - ---inst=../examples/tsp/benchs/eil101.tsp - diff --git a/trunk/paradiseo-peo/tutorial/Lesson7/schema.xml b/trunk/paradiseo-peo/tutorial/Lesson7/schema.xml deleted file mode 100644 index 262e2a9d7..000000000 --- a/trunk/paradiseo-peo/tutorial/Lesson7/schema.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - 1 - - - - - - -