diff --git a/trunk/paradiseo-peo/tutorial/Lesson1/mainEA.cpp b/trunk/paradiseo-peo/tutorial/Lesson1/mainEA.cpp index a6d5bf74f..9209c499e 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson1/mainEA.cpp +++ b/trunk/paradiseo-peo/tutorial/Lesson1/mainEA.cpp @@ -1,7 +1,7 @@ /* * -* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 -* (C) OPAC Team, INRIA, 2007 +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 +* (C) OPAC Team, INRIA, 2008 * * Clive Canape * @@ -40,7 +40,6 @@ typedef eoReal Indi; //Evaluation function - double f (const Indi & _indi) { // Rosenbrock function f(x) = 100*(x[1]-x[0]^2)^2+(1-x[0])^2 @@ -56,20 +55,19 @@ double f (const Indi & _indi) int main (int __argc, char *__argv[]) { - // Initialization of the parallel environment : thanks this instruction, ParadisEO-PEO can initialize himself peo :: init( __argc, __argv ); //Parameters - - const unsigned int VEC_SIZE = 2; // Don't change this parameter when you are resolving the Rosenbrock function - const unsigned int POP_SIZE = 20; // As with a sequential algorithm, you change the size of the population - const unsigned int MAX_GEN = 300; // Define the number of maximal generation - 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 float CROSS_RATE = 0.8; // Crossover rate - const double EPSILON = 0.01; // Range for real uniform mutation - const float MUT_RATE = 0.3; // Mutation rate + eoParser parser(__argc, __argv); + unsigned int POP_SIZE = parser.createParam((unsigned int)(20), "popSize", "Population size",'P',"Param").value(); + unsigned int MAX_GEN = parser.createParam((unsigned int)(100), "maxGen", "Maximum number of generations",'G',"Param").value(); + double EPSILON = parser.createParam(0.01, "mutEpsilon", "epsilon for mutation",'e',"Param").value(); + double CROSS_RATE = parser.createParam(0.25, "pCross", "Crossover probability",'C',"Param").value(); + double MUT_RATE = parser.createParam(0.35, "pMut", "Mutation probability",'M',"Param").value(); + unsigned int VEC_SIZE = parser.createParam((unsigned int)(2), "vecSize", "Vector size",'V',"Param").value(); + double INIT_POSITION_MIN = parser.createParam(-2.0, "pMin", "Init position min",'N',"Param").value(); + double INIT_POSITION_MAX = parser.createParam(2.0, "pMax", "Init position max",'X',"Param").value(); rng.reseed (time(0)); // Stopping @@ -78,11 +76,9 @@ int main (int __argc, char *__argv[]) eoCheckPoint checkpoint(continuatorPara); // For a parallel evaluation - peoEvalFunc plainEval(f); peoPopEval eval(plainEval); - // Initialization eoUniformGenerator < double >uGen (INIT_POSITION_MIN, INIT_POSITION_MAX); eoInitFixedLength < Indi > random (VEC_SIZE, uGen); @@ -92,8 +88,8 @@ int main (int __argc, char *__argv[]) eoSelectNumber select(selectionStrategy,POP_SIZE); // Transformation - eoSegmentCrossover crossover; // Crossover - eoUniformMutation mutation(EPSILON); // Mutation + eoSegmentCrossover crossover; + eoUniformMutation mutation(EPSILON); eoSGATransform transform(crossover,CROSS_RATE,mutation,MUT_RATE); // Replacement diff --git a/trunk/paradiseo-peo/tutorial/Lesson1/mainPSO.cpp b/trunk/paradiseo-peo/tutorial/Lesson1/mainPSO.cpp index 5b8c9771d..40d26dd84 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson1/mainPSO.cpp +++ b/trunk/paradiseo-peo/tutorial/Lesson1/mainPSO.cpp @@ -1,7 +1,7 @@ /* * -* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 -* (C) OPAC Team, INRIA, 2007 +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 +* (C) OPAC Team, INRIA, 2008 * * Clive Canape * @@ -39,7 +39,6 @@ typedef eoRealParticle < double >Indi; //Evaluation function - double f (const Indi & _indi) { // Rosenbrock function f(x) = 100*(x[1]-x[0]^2)^2+(1-x[0])^2 @@ -55,27 +54,22 @@ double f (const Indi & _indi) int main (int __argc, char *__argv[]) { - // Initialization of the parallel environment : thanks this instruction, ParadisEO-PEO can initialize himself peo :: init( __argc, __argv ); //Parameters - - const unsigned int VEC_SIZE = 2; // Don't change this parameter when you are resolving the Rosenbrock function - - const unsigned int POP_SIZE = 20; // As with a sequential algorithm, you change the size of the population - - const unsigned int NEIGHBORHOOD_SIZE= 6; // This parameter define the neighborhoods in the PSO's topology - - const unsigned int MAX_GEN = 150; // Define the number of maximal generation - - 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.; - const double INIT_VELOCITY_MAX = 1.; - const double weight = 1; - const double C1 = 0.5; - const double C2 = 2.; + eoParser parser(__argc, __argv); + unsigned int POP_SIZE = parser.createParam((unsigned int)(20), "popSize", "Population size",'P',"Param").value(); + unsigned int MAX_GEN = parser.createParam((unsigned int)(100), "maxGen", "Maximum number of generations",'G',"Param").value(); + unsigned int VEC_SIZE = parser.createParam((unsigned int)(2), "vecSize", "Vector size",'V',"Param").value(); + double INIT_POSITION_MIN = parser.createParam(-2.0, "pMin", "Init position min",'N',"Param").value(); + double INIT_POSITION_MAX = parser.createParam(2.0, "pMax", "Init position max",'X',"Param").value(); + double INIT_VELOCITY_MIN = parser.createParam(-1.0, "vMin", "Init velocity min",'n',"Param").value(); + double INIT_VELOCITY_MAX = parser.createParam(1.0, "vMax", "Init velocity max",'x',"Param").value(); + double weight = parser.createParam(1.0, "weight", "Weight",'w',"Param").value(); + double C1 = parser.createParam(0.5, "c1", "C1",'1',"Param").value(); + double C2 = parser.createParam(2.0, "c2t", "C2",'2',"Param").value(); + unsigned int NEIGHBORHOOD_SIZE = parser.createParam((unsigned int)(6), "neighSize", "Neighborhood size",'H',"Param").value(); rng.reseed (time(0)); // Stopping @@ -83,7 +77,6 @@ int main (int __argc, char *__argv[]) eoCombinedContinue continuatorPara (genContPara); eoCheckPoint checkpoint(continuatorPara); - // For a parallel evaluation peoEvalFunc plainEval(f); peoPopEval< Indi > eval(plainEval); @@ -107,7 +100,7 @@ int main (int __argc, char *__argv[]) eoPop < Indi > pop; pop.append (POP_SIZE, random); -// Topology (ie Lesson 6 of ParadisEO-PEO) +// Topology eoLinearTopology topology(NEIGHBORHOOD_SIZE); eoRealVectorBounds bnds(VEC_SIZE,INIT_VELOCITY_MIN,INIT_VELOCITY_MAX); eoStandardVelocity < Indi > velocity (topology,weight,C1,C2,bnds); diff --git a/trunk/paradiseo-peo/tutorial/Lesson1/param b/trunk/paradiseo-peo/tutorial/Lesson1/param index 730f547e1..7caa1c61f 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson1/param +++ b/trunk/paradiseo-peo/tutorial/Lesson1/param @@ -1,3 +1,19 @@ +###### Param ###### +--popSize=20 # -P : Population size +--maxGen=200 # -G : Maximum number of generations +--mutEpsilon=0.01 # -e : epsilon for mutation +--pCross=0.80 # -C : Crossover probability +--pMut=0.30 # -M : Mutation probability +--vecSize=2 # -V : Vector size +--pMin=-2.0 # -N : Init position min +--pMax=2.0 # -X : Init position max +--vMin=-1.0 # -n : Init velocity min +--vMax=1.0 # -x : Init velocity max +--neighSize=6 # -H : Neighborhood size +--weight=1.0 # -w : Weight +--c1=0.5 # -1 : C1 +--c2=2.0 # -2 : C2 + ## miscallenous parameters --debug=false diff --git a/trunk/paradiseo-peo/tutorial/Lesson2/mainEA.cpp b/trunk/paradiseo-peo/tutorial/Lesson2/mainEA.cpp index 4ff15a1e7..7aaa700cb 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson2/mainEA.cpp +++ b/trunk/paradiseo-peo/tutorial/Lesson2/mainEA.cpp @@ -1,7 +1,7 @@ /* * -* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 -* (C) OPAC Team, INRIA, 2007 +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 +* (C) OPAC Team, INRIA, 2008 * * Clive Canape * @@ -52,14 +52,15 @@ 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 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; + eoParser parser(__argc, __argv); + unsigned int POP_SIZE = parser.createParam((unsigned int)(20), "popSize", "Population size",'P',"Param").value(); + unsigned int MAX_GEN = parser.createParam((unsigned int)(100), "maxGen", "Maximum number of generations",'G',"Param").value(); + double EPSILON = parser.createParam(0.01, "mutEpsilon", "epsilon for mutation",'e',"Param").value(); + double CROSS_RATE = parser.createParam(0.25, "pCross", "Crossover probability",'C',"Param").value(); + double MUT_RATE = parser.createParam(0.35, "pMut", "Mutation probability",'M',"Param").value(); + unsigned int VEC_SIZE = parser.createParam((unsigned int)(2), "vecSize", "Vector size",'V',"Param").value(); + double INIT_POSITION_MIN = parser.createParam(-2.0, "pMin", "Init position min",'N',"Param").value(); + double INIT_POSITION_MAX = parser.createParam(2.0, "pMax", "Init position max",'X',"Param").value(); rng.reseed (time(0)); eoGenContinue < Indi > genContPara (MAX_GEN); eoCombinedContinue continuatorPara (genContPara); @@ -73,6 +74,7 @@ int main (int __argc, char *__argv[]) eoSegmentCrossover crossover; eoUniformMutation mutation(EPSILON); +// Parallel transformation peoTransform transform(crossover,CROSS_RATE,mutation,MUT_RATE); eoPlusReplacement replace; @@ -82,6 +84,7 @@ int main (int __argc, char *__argv[]) peoWrapper parallelEA( eaAlg, pop); eval.setOwner(parallelEA); +// setOwner transform.setOwner (parallelEA); peo :: run(); diff --git a/trunk/paradiseo-peo/tutorial/Lesson2/param b/trunk/paradiseo-peo/tutorial/Lesson2/param index 730f547e1..dce69287a 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson2/param +++ b/trunk/paradiseo-peo/tutorial/Lesson2/param @@ -1,3 +1,13 @@ +###### Param ###### +--popSize=20 # -P : Population size +--maxGen=300 # -G : Maximum number of generations +--mutEpsilon=0.01 # -e : epsilon for mutation +--pCross=0.80 # -C : Crossover probability +--pMut=0.30 # -M : Mutation probability +--vecSize=2 # -V : Vector size +--pMin=-2.0 # -N : Init position min +--pMax=2.0 # -X : Init position max + ## miscallenous parameters --debug=false diff --git a/trunk/paradiseo-peo/tutorial/Lesson3/mainEA.cpp b/trunk/paradiseo-peo/tutorial/Lesson3/mainEA.cpp index db9a22271..ae058711a 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson3/mainEA.cpp +++ b/trunk/paradiseo-peo/tutorial/Lesson3/mainEA.cpp @@ -1,7 +1,7 @@ /* * -* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 -* (C) OPAC Team, INRIA, 2007 +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 +* (C) OPAC Team, INRIA, 2008 * * Clive Canape * @@ -52,18 +52,17 @@ 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 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; -// MIG_FREQ define the frequency of the migration. - const unsigned int MIG_FREQ = 10; -// MIG_SIZE define the size of each migration. - const unsigned int MIG_SIZE = 5; + eoParser parser(__argc, __argv); + unsigned int POP_SIZE = parser.createParam((unsigned int)(20), "popSize", "Population size",'P',"Param").value(); + unsigned int MAX_GEN = parser.createParam((unsigned int)(100), "maxGen", "Maximum number of generations",'G',"Param").value(); + double EPSILON = parser.createParam(0.01, "mutEpsilon", "epsilon for mutation",'e',"Param").value(); + double CROSS_RATE = parser.createParam(0.25, "pCross", "Crossover probability",'C',"Param").value(); + double MUT_RATE = parser.createParam(0.35, "pMut", "Mutation probability",'M',"Param").value(); + unsigned int VEC_SIZE = parser.createParam((unsigned int)(2), "vecSize", "Vector size",'V',"Param").value(); + double INIT_POSITION_MIN = parser.createParam(-2.0, "pMin", "Init position min",'N',"Param").value(); + double INIT_POSITION_MAX = parser.createParam(2.0, "pMax", "Init position max",'X',"Param").value(); + unsigned int MIG_FREQ = parser.createParam((unsigned int)(10), "migFreq", "Migration frequency",'F',"Param").value(); + unsigned int MIG_SIZE = parser.createParam((unsigned int)(5), "migSize", "Migration size",'S',"Param").value(); rng.reseed (time(0)); // Define the topology of your island model @@ -86,16 +85,24 @@ int main (int __argc, char *__argv[]) peoTransform transform(crossover,CROSS_RATE,mutation,MUT_RATE); eoPop < Indi > pop; pop.append (POP_SIZE, random); - eoPlusReplacement replace; + +// Define a synchronous island + + // Seclection eoRandomSelect mig_select_one; eoSelector > mig_select (mig_select_one,MIG_SIZE,pop); + // Replacement + eoPlusReplacement replace; eoReplace > mig_replace (replace,pop); + // Island peoSyncIslandMig, eoPop > mig(MIG_FREQ,mig_select,mig_replace,topology); checkpoint.add(mig); + eoEasyEA< Indi > eaAlg( checkpoint, eval, select, transform, replace ); peoWrapper parallelEA( eaAlg, pop); eval.setOwner(parallelEA); transform.setOwner(parallelEA); +// setOwner mig.setOwner(parallelEA); /*****************************************************************************************/ diff --git a/trunk/paradiseo-peo/tutorial/Lesson3/mainPSO.cpp b/trunk/paradiseo-peo/tutorial/Lesson3/mainPSO.cpp index 210dea399..a5c7cfa7a 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson3/mainPSO.cpp +++ b/trunk/paradiseo-peo/tutorial/Lesson3/mainPSO.cpp @@ -1,7 +1,7 @@ /* * -* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 -* (C) OPAC Team, INRIA, 2007 +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 +* (C) OPAC Team, INRIA, 2008 * * Clive Canape * @@ -50,18 +50,19 @@ double f (const Indi & _indi) 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 = 100; - 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 unsigned int MIG_FREQ = 10; - const double omega = 1; - const double C1 = 0.5; - const double C2 = 2.; + eoParser parser(__argc, __argv); + unsigned int POP_SIZE = parser.createParam((unsigned int)(20), "popSize", "Population size",'P',"Param").value(); + unsigned int MAX_GEN = parser.createParam((unsigned int)(100), "maxGen", "Maximum number of generations",'G',"Param").value(); + unsigned int VEC_SIZE = parser.createParam((unsigned int)(2), "vecSize", "Vector size",'V',"Param").value(); + double INIT_POSITION_MIN = parser.createParam(-2.0, "pMin", "Init position min",'N',"Param").value(); + double INIT_POSITION_MAX = parser.createParam(2.0, "pMax", "Init position max",'X',"Param").value(); + double INIT_VELOCITY_MIN = parser.createParam(-1.0, "vMin", "Init velocity min",'n',"Param").value(); + double INIT_VELOCITY_MAX = parser.createParam(1.0, "vMax", "Init velocity max",'x',"Param").value(); + double omega = parser.createParam(1.0, "weight", "Weight",'w',"Param").value(); + double C1 = parser.createParam(0.5, "c1", "C1",'1',"Param").value(); + double C2 = parser.createParam(2.0, "c2t", "C2",'2',"Param").value(); + unsigned int NEIGHBORHOOD_SIZE = parser.createParam((unsigned int)(6), "neighSize", "Neighborhood size",'H',"Param").value(); + unsigned int MIG_FREQ = parser.createParam((unsigned int)(10), "migFreq", "Migration frequency",'F',"Param").value(); rng.reseed (time(0)); // Island model @@ -135,7 +136,7 @@ int main (int __argc, char *__argv[]) eoReplace > mig_replace2 (mig_replac2,pop2); -// Island model +// Asynchronous island peoAsyncIslandMig< eoPop, eoPop > mig(cont,mig_select, mig_replace, topologyMig); checkpoint.add( mig ); diff --git a/trunk/paradiseo-peo/tutorial/Lesson3/param b/trunk/paradiseo-peo/tutorial/Lesson3/param index 730f547e1..8cffb7601 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson3/param +++ b/trunk/paradiseo-peo/tutorial/Lesson3/param @@ -1,3 +1,21 @@ +###### Param ###### +--popSize=20 # -P : Population size +--maxGen=200 # -G : Maximum number of generations +--mutEpsilon=0.01 # -e : epsilon for mutation +--pCross=0.80 # -C : Crossover probability +--pMut=0.30 # -M : Mutation probability +--vecSize=2 # -V : Vector size +--pMin=-2.0 # -N : Init position min +--pMax=2.0 # -X : Init position max +--vMin=-1.0 # -n : Init velocity min +--vMax=1.0 # -x : Init velocity max +--neighSize=6 # -H : Neighborhood size +--weight=1.0 # -w : Weight +--c1=0.5 # -1 : C1 +--c2=2.0 # -2 : C2 +--migFreq=10 # -F : Migration frequency +--migSize=5 # -S : Migration size + ## miscallenous parameters --debug=false