diff --git a/trunk/paradiseo-peo/test/CMakeLists.txt b/trunk/paradiseo-peo/test/CMakeLists.txt index 83974ee36..d6ab600da 100644 --- a/trunk/paradiseo-peo/test/CMakeLists.txt +++ b/trunk/paradiseo-peo/test/CMakeLists.txt @@ -19,13 +19,13 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) INCLUDE(CheckLibraryExists) SET (CMAKE_CXX_COMPILER mpicxx) -ADD_CUSTOM_TARGET(install DEPENDS ${ParadisEO-PEO_SOURCE_DIR}/test/lesson.param ${ParadisEO-PEO_SOURCE_DIR}/test/schema.xml) +ADD_CUSTOM_TARGET(install DEPENDS ${ParadisEO-PEO_SOURCE_DIR}/test/param ${ParadisEO-PEO_SOURCE_DIR}/test/schema.xml) ADD_CUSTOM_COMMAND( TARGET install POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different - ${ParadisEO-PEO_SOURCE_DIR}/test/lesson.param + ${ParadisEO-PEO_SOURCE_DIR}/test/param ${ParadisEO-PEO_BINARY_DIR}/test) ADD_CUSTOM_COMMAND( TARGET install @@ -60,12 +60,10 @@ ENDIF(WIN32 AND NOT CYGWIN) ###################################################################################### SET (TEST_LIST t-peo - t-peoPSO - t-peoInsularPSO ) -SET (TEST_LIBRARY t-peoPSOPara - t-peoPSOParaIsland) +SET (TEST_LIBRARY t-EAParaEval + ) FOREACH (test ${TEST_LIST} ${TEST_LIBRARY}) diff --git a/trunk/paradiseo-peo/test/lesson.param b/trunk/paradiseo-peo/test/param similarity index 100% rename from trunk/paradiseo-peo/test/lesson.param rename to trunk/paradiseo-peo/test/param diff --git a/trunk/paradiseo-peo/test/t-EAParaEval.cpp b/trunk/paradiseo-peo/test/t-EAParaEval.cpp new file mode 100644 index 000000000..7461f9faf --- /dev/null +++ b/trunk/paradiseo-peo/test/t-EAParaEval.cpp @@ -0,0 +1,41 @@ +// Test of parallel evaluation with a PSO +#include +typedef eoRealParticle < double >Indi; +double f (const Indi & _indi) +{ + double sum=_indi[0]+_indi[1]; + return (-sum); +} +int main (int __argc, char *__argv[]) +{ + peo :: init( __argc, __argv ); + rng.reseed (time(0)); + eoGenContinue < Indi > genContPara (5); + eoCombinedContinue continuatorPara (genContPara); + eoCheckPoint checkpoint(continuatorPara); + peoEvalFunc plainEval(f); + peoPopEval< Indi > eval(plainEval); + eoUniformGenerator < double >uGen (-2., 2.); + eoInitFixedLength < Indi > random (2, uGen); + eoUniformGenerator < double >sGen (-1., 1.); + eoVelocityInitFixedLength < Indi > veloRandom (2, sGen); + eoFirstIsBestInit < Indi > localInit; + eoRealVectorBounds bndsFlight(2,-2.,2.); + eoStandardFlight < Indi > flight(bndsFlight); + eoPop < Indi > pop; + pop.append (20, random); + eoLinearTopology topology(6); + eoRealVectorBounds bnds(2,-1.,1.); + eoStandardVelocity < Indi > velocity (topology,1,0.5,2.,bnds); + 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< -* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 -* (C) OPAC Team, LIFL, 2002-2007 -* -* Sebastien Cahon, Alexandru-Adrian Tantar -* -* 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 -* -*/ -//----------------------------------------------------------------------------- -// t-peo.cpp -//----------------------------------------------------------------------------- #include -//----------------------------------------------------------------------------- - - -//----------------------------------------------------------------------------- - -int main() +void EAParaEval () { - std::cout << "Please fill the test" << std::endl; - - return 0; + char *tmp="mpiexec -n 4 ./t-EAParaEval @param "; + system(tmp); } -//----------------------------------------------------------------------------- +int main (int __argc, char *__argv[]) +{ + EAParaEval(); +} diff --git a/trunk/paradiseo-peo/test/t-peoInsularPSO.cpp b/trunk/paradiseo-peo/test/t-peoInsularPSO.cpp deleted file mode 100644 index cb8c44396..000000000 --- a/trunk/paradiseo-peo/test/t-peoInsularPSO.cpp +++ /dev/null @@ -1,133 +0,0 @@ -/* -* -* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 -* (C) OPAC Team, LIFL, 2002-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 -* clive.canape@inria.fr -*/ -//----------------------------------------------------------------------------- -// t-peoInsularPSO.cpp -//----------------------------------------------------------------------------- - -#include - -#define N 4 - -typedef eoRealParticle < double >Indi; -double f (const Indi & _indi) -{ - const double PI = 4.0 * atan(1.0); - double sum=0.; - for (unsigned i = 0; i < _indi.size()-1; i++) - sum+=pow((_indi[i]-1),2)*(1+pow(sin(3*PI*_indi[i+1]),2)); - sum+=pow(sin(3*PI*_indi[0]),2); - sum+=(_indi[_indi.size()-1]-1)*(1+pow(sin(2*PI*_indi[_indi.size()-1]),2)); - return (-sum); - -} - -template < class POT > class eoPrint : public eoContinue - { - public : - - bool operator () (const eoPop & __pop) - { - double result[__pop.size()]; - for (unsigned i=0;i<__pop.size();i++) - result[i]=__pop[i].best(); - std::sort(result,result+__pop.size()); - std::cout << "\n"< plainEvalSeq(f); - eoEvalFuncCounter < Indi > evalSeq (plainEvalSeq); - 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 > popSeq; - popSeq.append (POP_SIZE, random); - apply(evalSeq, popSeq); - ; - apply < Indi > (veloRandom, popSeq); - apply < Indi > (localInit, popSeq); - eoLinearTopology topologySeq(NEIGHBORHOOD_SIZE); - topologySeq.setup(popSeq); - eoRealVectorBounds bndsSeq(VEC_SIZE,INIT_VELOCITY_MIN,INIT_VELOCITY_MAX); - eoStandardVelocity < Indi > velocitySeq (topologySeq,omega,C1,C2,bndsSeq); - eoGenContinue < Indi > genContSeq (MAX_GEN); - eoPrint printSeq; - eoCombinedContinue continuatorSeq(genContSeq); - continuatorSeq.add(printSeq); - eoCheckPoint checkpointSeq(continuatorSeq); - eoSyncEasyPSO < Indi > psaSeq(checkpointSeq, evalSeq, velocitySeq, flight); - psaSeq (popSeq); - popSeq.sort (); - */ -} - -void peoPSOPara() -{ - char *tmp="mpiexec -n ",*tmp2=" ./t-peoPSOParaIsland @lesson.param ",tmp3[4],buffer[256]; - sprintf(tmp3,"%d",N); - strcpy(buffer,tmp); - strcat(buffer,tmp3); - strcat(buffer,tmp2); - system(buffer); -} - -int main (int __argc, char *__argv[]) -{ - - peoPSOSeq (); - peoPSOPara(); -} diff --git a/trunk/paradiseo-peo/test/t-peoPSO.cpp b/trunk/paradiseo-peo/test/t-peoPSO.cpp deleted file mode 100644 index c2526d715..000000000 --- a/trunk/paradiseo-peo/test/t-peoPSO.cpp +++ /dev/null @@ -1,122 +0,0 @@ -/* -* -* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 -* (C) OPAC Team, LIFL, 2002-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 -* clive.canape@inria.fr -*/ -//----------------------------------------------------------------------------- -// t-peoPSO.cpp -//----------------------------------------------------------------------------- - -#include - -#define N 4 - -typedef eoRealParticle < double >Indi; -double f (const Indi & _indi) -{ - double sum = 0; - for (unsigned i = 0; i < _indi.size (); i++) - sum += pow(_indi[i],2); - return (-sum); -} - -double peoPSOSeq () -{ - /* - clock_t beginSeq,endSeq; - double timeSeq; - const unsigned int VEC_SIZE = 2; - const unsigned int POP_SIZE = 10; - const unsigned int NEIGHBORHOOD_SIZE= 5; - const unsigned int MAX_GEN = 5000; - const double FIT_CONT = -1e-6; - const double INIT_POSITION_MIN = -5.0; - const double INIT_POSITION_MAX = 5.0; - const double INIT_VELOCITY_MIN = -1; - const double INIT_VELOCITY_MAX = 1; - const double C1 = 2; - const double C2 = 2; - rng.reseed (36); - beginSeq=clock(); - eoEvalFuncPtr plainEvalSeq(f); - eoEvalFuncCounter < Indi > evalSeq (plainEvalSeq); - 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 > popSeq; - popSeq.append (POP_SIZE, random); - apply(evalSeq, popSeq); - ; - apply < Indi > (veloRandom, popSeq); - apply < Indi > (localInit, popSeq); - eoLinearTopology topologySeq(NEIGHBORHOOD_SIZE); - topologySeq.setup(popSeq); - eoRealVectorBounds bndsSeq(VEC_SIZE,INIT_VELOCITY_MIN,INIT_VELOCITY_MAX); - eoStandardVelocity < Indi > velocitySeq (topologySeq,C1,C2,bndsSeq); - eoGenContinue < Indi > genContSeq (MAX_GEN); - eoFitContinue < Indi > fitContSeq (FIT_CONT); - eoCombinedContinue continuatorSeq (genContSeq); - continuatorSeq.add(fitContSeq); - eoCheckPoint checkpointSeq(continuatorSeq); - eoSyncEasyPSO < Indi > psaSeq(checkpointSeq, evalSeq, velocitySeq, flight); - //Sequential - psaSeq (popSeq); - popSeq.sort (); - endSeq=clock(); - timeSeq = endSeq-beginSeq; - return timeSeq; - */ -} - -void peoPSOPara(long int arg) -{ - char *tmp="mpiexec -n ",*tmp2=" ./t-peoPSOPara @lesson.param ",tmp3[4],buffer[256]; - sprintf(tmp3,"%d",N); - strcpy(buffer,tmp); - strcat(buffer,tmp3); - strcat(buffer,tmp2); - sprintf(tmp3,"%ld",arg); - strcat(buffer,tmp3); - system(buffer); -} - -int main (int __argc, char *__argv[]) -{ - long int timeSeq; - timeSeq=(long int)peoPSOSeq (); - peoPSOPara(timeSeq); -} diff --git a/trunk/paradiseo-peo/test/t-peoPSOPara.cpp b/trunk/paradiseo-peo/test/t-peoPSOPara.cpp deleted file mode 100644 index 275bf3b21..000000000 --- a/trunk/paradiseo-peo/test/t-peoPSOPara.cpp +++ /dev/null @@ -1,107 +0,0 @@ -/* -* -* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 -* (C) OPAC Team, LIFL, 2002-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 -* clive.canape@inria.fr -*/ -//----------------------------------------------------------------------------- -// t-peoPSOPara.cpp -//----------------------------------------------------------------------------- - -#include -#include "../src/rmc/mpi/schema.h" -#include "../src/rmc/mpi/node.h" - -typedef eoRealParticle < double >Indi; -double f (const Indi & _indi) -{ - double sum = 0; - for (unsigned i = 0; i < _indi.size (); i++) - sum += pow(_indi[i],2); - return (-sum); -} - -int main (int __argc, char *__argv[]) -{ - peo :: init( __argc, __argv ); - clock_t begin,end; - double time; - const unsigned int VEC_SIZE = 2; - const unsigned int POP_SIZE = 10; - const unsigned int NEIGHBORHOOD_SIZE= 5; - const unsigned int MAX_GEN = 500; - const double FIT_CONT = -1e-6; - const double INIT_POSITION_MIN = -5.0; - const double INIT_POSITION_MAX = 5.0; - const double INIT_VELOCITY_MIN = -1; - const double INIT_VELOCITY_MAX = 1; - const double C1 = 2; - const double C2 = 2; - rng.reseed (36); - if ((isScheduleNode())&&(__argc >= 3)) - begin=clock(); - peoEvalFuncPSO plainEvalPara(f); - eoEvalFuncCounter < Indi > evalStartPara (plainEvalPara); - peoParaPopEval< Indi > evalPara(plainEvalPara); - 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 > popPara; - popPara.append (POP_SIZE, random); - apply(evalStartPara, popPara); - apply < Indi > (veloRandom, popPara); - apply < Indi > (localInit, popPara); - eoLinearTopology topologyPara(NEIGHBORHOOD_SIZE); - topologyPara.setup(popPara); - eoRealVectorBounds bndsPara(VEC_SIZE,INIT_VELOCITY_MIN,INIT_VELOCITY_MAX); - eoStandardVelocity < Indi > velocityPara (topologyPara,C1,C2,bndsPara); - eoGenContinue < Indi > genContPara (MAX_GEN); - eoFitContinue < Indi > fitContPara (FIT_CONT); - eoCombinedContinue continuatorPara (genContPara); - continuatorPara.add(fitContPara); - eoCheckPoint checkpointPara(continuatorPara); - peoPSO < Indi > psaPara(checkpointPara, evalPara, velocityPara, flight); - psaPara(popPara); - peo :: run(); - peo :: finalize(); - if ((isScheduleNode())&&(__argc >= 3)) - { - end=clock(); - time=end-begin; - std::cout<<"\n\nEfficiency : "<<(atoi(__argv[2])/(time*getNumberOfNodes()))<<"\n"; - } - return 1; -} diff --git a/trunk/paradiseo-peo/test/t-peoPSOParaIsland.cpp b/trunk/paradiseo-peo/test/t-peoPSOParaIsland.cpp deleted file mode 100644 index 0d6690da6..000000000 --- a/trunk/paradiseo-peo/test/t-peoPSOParaIsland.cpp +++ /dev/null @@ -1,170 +0,0 @@ -/* -* -* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 -* (C) OPAC Team, LIFL, 2002-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 -* clive.canape@inria.fr -*/ -//----------------------------------------------------------------------------- -// t-peoPSOParaIsland.cpp -//----------------------------------------------------------------------------- - -#include - -typedef eoRealParticle < double >Indi; - - -//Evaluation function -double f (const Indi & _indi) -{ - - const double PI = 4.0 * atan(1.0); - double sum=0.; - for (unsigned i = 0; i < _indi.size()-1; i++) - sum+=pow((_indi[i]-1),2)*(1+pow(sin(3*PI*_indi[i+1]),2)); - sum+=pow(sin(3*PI*_indi[0]),2); - sum+=(_indi[_indi.size()-1]-1)*(1+pow(sin(2*PI*_indi[_indi.size()-1]),2)); - return (-sum); - -} - -template < class POT > class eoPrint : public eoContinue - { - public : - - bool operator () (const eoPop & __pop) - { - double result[__pop.size()]; - for (unsigned i=0;i<__pop.size();i++) - result[i]=__pop[i].best(); - std::sort(result,result+__pop.size()); - std::cout << "\n"< plainEval(f); - 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); - eoEvalFuncCounter < Indi > evalSeq (plainEval); - peoParaPopEval< Indi > eval(plainEval); - eoPop < Indi > pop; - pop.append (POP_SIZE, random); - apply(evalSeq, pop); - apply < Indi > (veloRandom, pop); - apply < Indi > (localInit, pop); - eoLinearTopology topology(NEIGHBORHOOD_SIZE); - topology.setup(pop); - eoRealVectorBounds bnds(VEC_SIZE,INIT_VELOCITY_MIN,INIT_VELOCITY_MAX); - eoStandardVelocity < Indi > velocity (topology,C1,C2,bnds); - eoGenContinue < Indi > genContPara (MAX_GEN); - eoPrint print; - eoCombinedContinue continuator(genContPara); - continuator.add(print); - eoCheckPoint checkpoint(continuator); - RingTopology topologyMig; - /*******************************************************************/ - eoPeriodicContinue< Indi > mig_cont( MIG_FREQ ); - peoPSOSelect mig_selec(topology); - eoSelectNumber< Indi > mig_select(mig_selec); - peoPSOReplacement mig_replace; - /*****************************************************************/ - - peoEvalFuncPSO plainEval2(f); - eoUniformGenerator < double >uGen2 (INIT_POSITION_MIN, INIT_POSITION_MAX); - eoInitFixedLength < Indi > random2 (VEC_SIZE, uGen); - 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); - eoEvalFuncCounter < Indi > evalSeq2 (plainEval2); - peoParaPopEval< Indi > eval2(plainEval2); - eoPop < Indi > pop2; - pop2.append (POP_SIZE, random2); - apply(evalSeq2, pop2); - apply < Indi > (veloRandom2, pop2); - apply < Indi > (localInit2, pop2); - eoLinearTopology topology2(NEIGHBORHOOD_SIZE); - topology2.setup(pop2); - 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; - - 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, pop); - checkpoint2.add( mig2 ); - - peoPSO < Indi > psa(checkpoint, eval, velocity, flight); - mig.setOwner( psa ); - psa(pop); - peoPSO < Indi > psa2(checkpoint2, eval2, velocity2, flight2); - mig2.setOwner( psa2 ); - psa2(pop2); - - peo :: run(); - peo :: finalize(); -} -