diff --git a/eo/tutorial/html/FirstBitEA.html b/eo/tutorial/html/FirstBitEA.html index 0663d8a2e..6b06faac6 100644 --- a/eo/tutorial/html/FirstBitEA.html +++ b/eo/tutorial/html/FirstBitEA.html @@ -2,9 +2,9 @@
- +
-
-
+|
-//----------------------------------------------------------------------------- -// FirstBitEA.cpp -//----------------------------------------------------------------------------- -//* -// Still an instance of a VERY simple Bitstring Genetic Algorithm -// (see FirstBitGA.cpp) but now with Breeder - and Combined Ops -// -//----------------------------------------------------------------------------- -// standard includes -#include <stdexcept> // runtime_error -#include <iostream> // cout -#include <strstream> // ostrstream, istrstream -// the general include for eo -#include <eo> - - |
+//-----------------------------------------------------------------------------
+ // FirstBitEA.cpp + //----------------------------------------------------------------------------- + //* + // Still an instance of a VERY simple Bitstring +Genetic Algorithm + // (see FirstBitGA.cpp) but now with +Breeder - and Combined Ops + // + //----------------------------------------------------------------------------- + // standard includes + #include <stdexcept> // runtime_error + #include <iostream> +// cout + #include <strstream> // ostrstream, +istrstream + // the general include for eo + #include <eo> |
| //-----------------------------------------------------------------------------
+ // Include the corresponding file + #include <ga.h> +// bitstring representation & operators + // define your individuals + typedef eoBin<double> Indi; // +A bitstring with fitness double |
+
| //-----------------------------------------------------------------------------
+ // a simple fitness function that computes +the number of ones of a bitstring + // Now in a separate file, and declared as +binary_value(const vector<bool> &) + #include "binary_value.h" |
+
| //-----------------------------------------------------------------------------
+ void main_function(int argc, char **argv) + { |
+
| const unsigned int SEED = 42; //
+seed for random number generator
+ const unsigned int T_SIZE = 3; // +size for tournament selection + const unsigned int VEC_SIZE = 8; +// Number of bits in genotypes + const unsigned int POP_SIZE = 20; +// Size of population + const unsigned int MAX_GEN = 500; +// Maximum number of generation before STOP + const float CROSS_RATE = 0.8; // +Crossover rate + const double P_MUT_PER_BIT = 0.01; +// probability of bit-flip mutation + const float MUT_RATE = 1.0; // +mutation rate + // some parameters for chosing +among different operators + const double onePointRate = 0.5; +// rate for 1-pt Xover + const double twoPointsRate = 0.5; +// rate for 2-pt Xover + const double URate = 0.5; +// rate for Uniform Xover + const double bitFlipRate = 0.5; +// rate for bit-flip mutation + const double oneBitRate = 0.5; +// rate for one-bit mutation |
+
| //////////////////////////
+ // Random seed + ////////////////////////// + //reproducible random seed: +if you don't change SEED above, + // you'll aways get the same +result, NOT a random run + rng.reseed(SEED); |
+
| /////////////////////////////
+ // Fitness function + //////////////////////////// + // Evaluation: from a plain +C++ fn to an EvalFunc Object + // you need to give the full +description of the function + eoEvalFuncPtr<Indi, double, const +vector<bool>& > eval( binary_value ); |
+
| ////////////////////////////////
+ // Initilisation of population + //////////////////////////////// + // based on boolean_generator +class (see utils/rnd_generator.h) + eoInitFixedLength<Indi, boolean_generator> + random(VEC_SIZE, +boolean_generator()); + // Initialization of the population + eoPop<Indi> pop(POP_SIZE, random); + // and evaluate it in one line + apply<Indi>(eval, pop); // +STL syntax |
+
| // sort pop before printing
+it!
+ pop.sort(); + // Print (sorted) intial population +(raw printout) + cout << "Initial Population" +<< endl; + cout << pop; |
+
| /////////////////////////////////////
+ // selection and replacement + //////////////////////////////////// |
+
| // And we now have the full
+slection/replacement - though with
+ // no replacement (== generational +replacement) at the moment :-) + eoNoReplacement<Indi> replace; |
+
| //////////////////////////////////////
+ // The variation operators + ////////////////////////////////////// |
+
| // 1-point crossover for bitstring
+ eoBinCrossover<Indi> xover1; + // uniform crossover for bitstring + eoBinUxOver<Indi> xoverU; + // 2-pots xover + eoBinNxOver<Indi> xover2(2); + // Combine them with relative +rates + eoPropCombinedQuadOp<Indi> xover(xover1, +onePointRate); + xover.add(xoverU, URate); + xover.add(xover2, twoPointsRate, +true); |
+
|
-
-//----------------------------------------------------------------------------- -// a simple fitness function that computes the number of ones of a bitstring -// Now in a separate file, and declared as binary_value(const vector<bool> &) -#include "binary_value.h" - - |
+
|
-
-//----------------------------------------------------------------------------- -void main_function(int argc, char **argv) -{ - - |
+ //////////////////////////////////////
+ // termination conditions: use +more than one + ///////////////////////////////////// + // stop after MAX_GEN generations + eoGenContinue<Indi> genCont(MAX_GEN); + // do MIN_GEN gen., then stop +after STEADY_GEN gen. without improvement + eoSteadyFitContinue<Indi> steadyCont(MIN_GEN, +STEADY_GEN); + // stop when fitness reaches +a target (here VEC_SIZE) + eoFitContinue<Indi> fitCont(0); + // do stop when one of the above +says so + eoCombinedContinue<Indi> continuator(genCont); + continuator.add(steadyCont); + continuator.add(fitCont); |
|
-
- const unsigned int SEED = 42; // seed for random number generator - const unsigned int T_SIZE = 3; // size for tournament selection - const unsigned int VEC_SIZE = 8; // Number of bits in genotypes - const unsigned int POP_SIZE = 20; // Size of population - const unsigned int MAX_GEN = 500; // Maximum number of generation before STOP - const float CROSS_RATE = 0.8; // Crossover rate - const double P_MUT_PER_BIT = 0.01; // probability of bit-flip mutation - const float MUT_RATE = 1.0; // mutation rate - // some parameters for chosing among different operators - const double onePointRate = 0.5; // rate for 1-pt Xover - const double twoPointsRate = 0.5; // rate for 2-pt Xover - const double URate = 0.5; // rate for Uniform Xover - const double bitFlipRate = 0.5; // rate for bit-flip mutation - const double oneBitRate = 0.5; // rate for one-bit mutation - - |
+ /////////////////////////////////////////
+ // the algorithm + //////////////////////////////////////// + // Easy EA requires + // selection, transformation, +eval, replacement, and stopping criterion + eoEasyEA<Indi> gga(continuator, +eval, select, transform, replace); + // Apply algo to pop - that's +it! + gga(pop); + |
|
-
- ////////////////////////// - // Random seed - ////////////////////////// - //reproducible random seed: if you don't change SEED above, - // you'll aways get the same result, NOT a random run - rng.reseed(SEED); - - |
+ // Print (sorted) intial population
+ pop.sort(); + cout << "FINAL Population\n" +<< pop << endl; |
|
-
- ///////////////////////////// - // Fitness function - //////////////////////////// - // Evaluation: from a plain C++ fn to an EvalFunc Object - // you need to give the full description of the function - eoEvalFuncPtr<Indi, double, const vector<bool>& > eval( binary_value ); - - |
-
|
-
- //////////////////////////////// - // Initilisation of population - //////////////////////////////// - // based on boolean_generator class (see utils/rnd_generator.h) - eoInitFixedLength<Indi, boolean_generator> - random(VEC_SIZE, boolean_generator()); - // Initialization of the population - eoPop<Indi> pop(POP_SIZE, random); - // and evaluate it in one line - apply<Indi>(eval, pop); // STL syntax - - |
-
|
-
- // sort pop before printing it! - pop.sort(); - // Print (sorted) intial population (raw printout) - cout << "Initial Population" << endl; - cout << pop; - - |
-
|
-
- ///////////////////////////////////// - // selection and replacement - //////////////////////////////////// - - |
-
|
-
- // And we now have the full slection/replacement - though with - // no replacement (== generational replacement) at the moment :-) - eoNoReplacement<Indi> replace; - - |
-
|
-
- ////////////////////////////////////// - // The variation operators - ////////////////////////////////////// - - |
-
|
-
- // 1-point crossover for bitstring - eoBinCrossover<Indi> xover1; - // uniform crossover for bitstring - eoBinUxOver<Indi> xoverU; - // 2-pots xover - eoBinNxOver<Indi> xover2(2); - // Combine them with relative rates - eoPropCombinedQuadOp<Indi> xover(xover1, onePointRate); - xover.add(xoverU, URate); - xover.add(xover2, twoPointsRate, true); - - |
-
| - - - | -
|
-
- ////////////////////////////////////// - // termination conditions: use more than one - ///////////////////////////////////// - // stop after MAX_GEN generations - eoGenContinue<Indi> genCont(MAX_GEN); - // do MIN_GEN gen., then stop after STEADY_GEN gen. without improvement - eoSteadyFitContinue<Indi> steadyCont(MIN_GEN, STEADY_GEN); - // stop when fitness reaches a target (here VEC_SIZE) - eoFitContinue<Indi> fitCont(0); - // do stop when one of the above says so - eoCombinedContinue<Indi> continuator(genCont); - continuator.add(steadyCont); - continuator.add(fitCont); - - |
-
|
-
- ///////////////////////////////////////// - // the algorithm - //////////////////////////////////////// - // Easy EA requires - // selection, transformation, eval, replacement, and stopping criterion - eoEasyEA<Indi> gga(continuator, eval, select, transform, replace); - // Apply algo to pop - that's it! - gga(pop); - - - |
-
|
-
- // Print (sorted) intial population - pop.sort(); - cout << "FINAL Population\n" << pop << endl; - - |
-
|
-
-} -// A main that catches the exceptions -int main(int argc, char **argv) -{ -#ifdef _MSC_VER - // rng.reseed(42); - int flag = _CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF); - flag |= _CRTDBG_LEAK_CHECK_DF; - _CrtSetDbgFlag(flag); -// _CrtSetBreakAlloc(100); -#endif - try - { - main_function(argc, argv); - } - catch(exception& e) - { - cout << "Exception: " << e.what() << '\n'; - } - return 1; -} - |
+}
+ // A main that catches the exceptions + int main(int argc, char **argv) + { + #ifdef _MSC_VER + // rng.reseed(42); + int flag = _CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF); + flag +|= _CRTDBG_LEAK_CHECK_DF; + _CrtSetDbgFlag(flag); + // _CrtSetBreakAlloc(100); + #endif + try + { + +main_function(argc, argv); + } + catch(exception& +e) + { + +cout << "Exception: " << e.what() << '\n'; + } + return 1; + } |
-
-
+|
-//----------------------------------------------------------------------------- -// FirstBitGA.cpp -//----------------------------------------------------------------------------- -//* -// An instance of a VERY simple Bitstring Genetic Algorithm -// -//----------------------------------------------------------------------------- -// standard includes -#include <stdexcept> // runtime_error -#include <iostream> // cout -#include <strstream> // ostrstream, istrstream -// the general include for eo -#include <eo> - - |
+//-----------------------------------------------------------------------------
+ // FirstBitGA.cpp + //----------------------------------------------------------------------------- + //* + // An instance of a VERY simple Bitstring +Genetic Algorithm + // + //----------------------------------------------------------------------------- + // standard includes + #include <stdexcept> // runtime_error + #include <iostream> +// cout + #include <strstream> // ostrstream, +istrstream + // the general include for eo + #include <eo> |
|
-
-//----------------------------------------------------------------------------- -// define your individuals -typedef eoBin<double> Indi; // A bitstring with fitness double - - |
+//-----------------------------------------------------------------------------
+ // Include the corresponding file + #include <ga.h> +// bitstring representation & operators + // define your individuals + typedef eoBin<double> Indi; +// A bitstring with fitness double |
| //-----------------------------------------------------------------------------
+ void main_function(int argc, char **argv) + { |
+
| // all parameters are hard-coded!
+ const unsigned int SEED = 42; +// seed for random number generator + const unsigned int T_SIZE = 3; +// size for tournament selection + const unsigned int VEC_SIZE = 8; +// Number of bits in genotypes + const unsigned int POP_SIZE = 20; +// Size of population + const unsigned int MAX_GEN = 100; +// Maximum number of generation before STOP + const float CROSS_RATE = 0.8; +// Crossover rate + const double P_MUT_PER_BIT = 0.01; +// probability of bit-flip mutation + const float MUT_RATE = 1.0; +// mutation rate |
+
| /////////////////////////////
+ // Fitness function + //////////////////////////// + // Evaluation: from a plain +C++ fn to an EvalFunc Object + eoEvalFuncPtr<Indi> eval( +binary_value ); |
+
| ////////////////////////////////
+ // Initilisation of population + //////////////////////////////// + // declare the population + eoPop<Indi> pop; + // fill it! + for (unsigned int igeno=0; igeno<POP_SIZE; +igeno++) + { + +Indi v; +// void individual, to be filled + +for (unsigned ivar=0; ivar<VEC_SIZE; ivar++) + +{ + +bool r = rng.flip(); // new value, random in {0,1} + +v.push_back(r); // +append that random value to v + +} + +eval(v); +// evaluate it + +pop.push_back(v); +// and put it in the population + } |
+
| // sort pop before printing
+it!
+ pop.sort(); + // Print (sorted) intial population +(raw printout) + cout << "Initial Population" +<< endl; + cout << pop; |
+
| /////////////////////////////////////
+ // selection and replacement + //////////////////////////////////// |
+
| // The robust tournament selection
+ eoDetTournamentSelect<Indi> select(T_SIZE); +// T_SIZE in [2,POP_SIZE] |
+
| // The simple GA evolution engine
+uses generational replacement
+ // so no replacement procedure +is needed |
+
| + |
| //////////////////////////////////////
+ // The variation operators + ////////////////////////////////////// |
+
| // 1-point mutation for bitstring
+ eoBinCrossover<Indi> xover; |
+
|
-
-//----------------------------------------------------------------------------- -void main_function(int argc, char **argv) -{ - - |
+
|
-
- // all parameters are hard-coded! - const unsigned int SEED = 42; // seed for random number generator - const unsigned int T_SIZE = 3; // size for tournament selection - const unsigned int VEC_SIZE = 8; // Number of bits in genotypes - const unsigned int POP_SIZE = 20; // Size of population - const unsigned int MAX_GEN = 100; // Maximum number of generation before STOP - const float CROSS_RATE = 0.8; // Crossover rate - const double P_MUT_PER_BIT = 0.01; // probability of bit-flip mutation - const float MUT_RATE = 1.0; // mutation rate - - |
+ //////////////////////////////////////
+ // termination condition + ///////////////////////////////////// + // stop after MAX_GEN generations + eoGenContinue<Indi> continuator(MAX_GEN); + |
|
-
- ///////////////////////////// - // Fitness function - //////////////////////////// - // Evaluation: from a plain C++ fn to an EvalFunc Object - eoEvalFuncPtr<Indi> eval( binary_value ); - - |
+ // Print (sorted) intial population
+ pop.sort(); + cout << "FINAL Population\n" +<< pop << endl; |
|
-
- //////////////////////////////// - // Initilisation of population - //////////////////////////////// - // declare the population - eoPop<Indi> pop; - // fill it! - for (unsigned int igeno=0; igeno<POP_SIZE; igeno++) - { - Indi v; // void individual, to be filled - for (unsigned ivar=0; ivar<VEC_SIZE; ivar++) - { - bool r = rng.flip(); // new value, random in {0,1} - v.push_back(r); // append that random value to v - } - eval(v); // evaluate it - pop.push_back(v); // and put it in the population - } - - |
-
|
-
- // sort pop before printing it! - pop.sort(); - // Print (sorted) intial population (raw printout) - cout << "Initial Population" << endl; - cout << pop; - - |
-
|
-
- ///////////////////////////////////// - // selection and replacement - //////////////////////////////////// - - |
-
|
-
- // The robust tournament selection - eoDetTournamentSelect<Indi> select(T_SIZE); // T_SIZE in [2,POP_SIZE] - - |
-
|
-
- // The simple GA evolution engine uses generational replacement - // so no replacement procedure is needed - - |
-
| - - - | -
|
-
- ////////////////////////////////////// - // The variation operators - ////////////////////////////////////// - - |
-
|
-
- // 1-point mutation for bitstring - eoBinCrossover<Indi> xover; - - |
-
|
-
- - // standard bit-flip mutation for bitstring - eoBinMutation<Indi> mutation(P_MUT_PER_BIT); - - |
-
|
-
- ////////////////////////////////////// - // termination condition - ///////////////////////////////////// - // stop after MAX_GEN generations - eoGenContinue<Indi> continuator(MAX_GEN); - - - |
-
|
-
- ///////////////////////////////////////// - // the algorithm - //////////////////////////////////////// - // standard Generational GA requires as parameters - // selection, evaluation, crossover and mutation, stopping criterion - - eoSGA<Indi> gga(select, xover, CROSS_RATE, mutation, MUT_RATE, - eval, continuator); - // Apply algo to pop - that's it! - gga(pop); - - - |
-
|
-
- // Print (sorted) intial population - pop.sort(); - cout << "FINAL Population\n" << pop << endl; - - |
-
|
-
-} - // A main that catches the exceptions -int main(int argc, char **argv) -{ -#ifdef _MSC_VER - // rng.reseed(42); - int flag = _CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF); - flag |= _CRTDBG_LEAK_CHECK_DF; - _CrtSetDbgFlag(flag); -// _CrtSetBreakAlloc(100); -#endif - try - { - main_function(argc, argv); - } - catch(exception& e) - { - cout << "Exception: " << e.what() << '\n'; - } - return 1; -} - |
+}
+ // A main that catches the exceptions + int main(int argc, char **argv) + { + #ifdef _MSC_VER + // rng.reseed(42); + int flag = _CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF); + flag +|= _CRTDBG_LEAK_CHECK_DF; + _CrtSetDbgFlag(flag); + // _CrtSetBreakAlloc(100); + #endif + try + { + +main_function(argc, argv); + } + catch(exception& +e) + { + +cout << "Exception: " << e.what() << '\n'; + } + return 1; + } |
-
-
+|
-//----------------------------------------------------------------------------- -// FirstRealGA.cpp -//----------------------------------------------------------------------------- -//* -// An instance of a VERY simple Real-coded Genetic Algorithm -// -//----------------------------------------------------------------------------- -// standard includes -#include <stdexcept> // runtime_error -#include <iostream> // cout -#include <strstream> // ostrstream, istrstream -// the general include for eo -#include <eo> - - |
+//-----------------------------------------------------------------------------
+ // FirstRealGA.cpp + //----------------------------------------------------------------------------- + //* + // An instance of a VERY simple Real-coded +Genetic Algorithm + // + //----------------------------------------------------------------------------- + // standard includes + #include <stdexcept> // runtime_error + #include <iostream> +// cout + #include <strstream> // ostrstream, +istrstream + // the general include for eo + #include <eo> |
|
-
-//----------------------------------------------------------------------------- -// define your individuals - typedef eoReal<double> Indi; - - |
+//-----------------------------------------------------------------------------
+ // Include the corresponding file + #include <es.h> +// real-representation & operators + // define your individuals + typedef eoReal<double> Indi; |
|
-
-//----------------------------------------------------------------------------- -void main_function(int argc, char **argv) -{ - - |
+//-----------------------------------------------------------------------------
+ void main_function(int argc, char **argv) + { |
|
-
- // all parameters are hard-coded! - const unsigned int SEED = 42; // seed for random number generator - const unsigned int VEC_SIZE = 8; // Number of object variables in genotypes - const unsigned int POP_SIZE = 20; // Size of population - const unsigned int T_SIZE = 3; // size for tournament selection - const unsigned int MAX_GEN = 500; // Maximum number of generation before STOP - const float CROSS_RATE = 0.8; // Crossover rate - const double EPSILON = 0.01; // range for real uniform mutation - const float MUT_RATE = 0.5; // mutation rate - - |
+ // all parameters are hard-coded!
+ const unsigned int SEED = 42; // +seed for random number generator + const unsigned int VEC_SIZE = 8; +// Number of object variables in genotypes + const unsigned int POP_SIZE = 20; +// Size of population + const unsigned int T_SIZE = 3; // +size for tournament selection + const unsigned int MAX_GEN = 500; +// Maximum number of generation before STOP + const float CROSS_RATE = 0.8; // +Crossover rate + const double EPSILON = 0.01; +// range for real uniform mutation + const float MUT_RATE = 0.5; +// mutation rate |
|
-
- ///////////////////////////// - // Fitness function - //////////////////////////// - // Evaluation: from a plain C++ fn to an EvalFunc Object - eoEvalFuncPtr<Indi> eval( real_value ); - - |
+ /////////////////////////////
+ // Fitness function + //////////////////////////// + // Evaluation: from a plain +C++ fn to an EvalFunc Object + eoEvalFuncPtr<Indi> eval( +real_value ); |
|
-
- //////////////////////////////// - // Initilisation of population - //////////////////////////////// - // declare the population - eoPop<Indi> pop; - // fill it! - for (unsigned int igeno=0; igeno<POP_SIZE; igeno++) - { - Indi v; // void individual, to be filled - for (unsigned ivar=0; ivar<VEC_SIZE; ivar++) - { - double r = 2*rng.uniform() - 1; // new value, random in [-1,1) - v.push_back(r); // append that random value to v - } - eval(v); // evaluate it - pop.push_back(v); // and put it in the population - } - - |
+ ////////////////////////////////
+ // Initilisation of population + //////////////////////////////// + // declare the population + eoPop<Indi> pop; + // fill it! + for (unsigned int igeno=0; igeno<POP_SIZE; +igeno++) + { + +Indi v; +// void individual, to be filled + +for (unsigned ivar=0; ivar<VEC_SIZE; ivar++) + +{ + +double r = 2*rng.uniform() - 1; // new value, random in [-1,1) + +v.push_back(r); +// append that random value to v + +} + +eval(v); +// evaluate it + +pop.push_back(v); +// and put it in the population + } |
|
-
- // sort pop before printing it! - pop.sort(); - // Print (sorted) intial population (raw printout) - cout << "Initial Population" << endl; - cout << pop; - - |
+ // sort pop before printing
+it!
+ pop.sort(); + // Print (sorted) intial population +(raw printout) + cout << "Initial Population" +<< endl; + cout << pop; |
|
-
- ///////////////////////////////////// - // selection and replacement - //////////////////////////////////// - - |
+ /////////////////////////////////////
+ // selection and replacement + //////////////////////////////////// |
|
-
- // The robust tournament selection - eoDetTournamentSelect<Indi> select(T_SIZE); // T_SIZE in [2,POP_SIZE] - - |
+ // The robust tournament selection
+ eoDetTournamentSelect<Indi> select(T_SIZE); +// T_SIZE in [2,POP_SIZE] |
|
-
- // eoSGA uses generational replacement by default - // so no replacement procedure has to be given - - |
+ // eoSGA uses generational replacement
+by default
+ // so no replacement procedure +has to be given |
| - - - | +
|
-
- ////////////////////////////////////// - // termination condition - ///////////////////////////////////// - // stop after MAX_GEN generations - eoGenContinue<Indi> continuator(MAX_GEN); - - - |
+ //////////////////////////////////////
+ // termination condition + ///////////////////////////////////// + // stop after MAX_GEN generations + eoGenContinue<Indi> continuator(MAX_GEN); + |
|
-
- ////////////////////////////////////// - // The variation operators - ////////////////////////////////////// - - |
+ //////////////////////////////////////
+ // The variation operators + ////////////////////////////////////// |
|
-
- // offspring(i) uniformly chosen in [parent(i)-epsilon, parent(i)+epsilon] - eoUniformMutation<Indi> mutation(EPSILON); - - |
+ // offspring(i) uniformly chosen
+in [parent(i)-epsilon, parent(i)+epsilon]
+ eoUniformMutation<Indi> +mutation(EPSILON); |
|
-
- // offspring(i) is a linear combination of parent(i) - eoArithmeticCrossover<Indi> xover; - - |
+ // offspring(i) is a linear
+combination of parent(i)
+ eoArithmeticCrossover<Indi> xover; |
|
-
- ///////////////////////////////////////// - // the algorithm - //////////////////////////////////////// - // standard Generational GA requires - // selection, evaluation, crossover and mutation, stopping criterion - - eoSGA<Indi> gga(select, xover, CROSS_RATE, mutation, MUT_RATE, - eval, continuator); - // Apply algo to pop - that's it! - gga(pop); - - - |
+ /////////////////////////////////////////
+ // the algorithm + //////////////////////////////////////// + // standard Generational GA +requires + // selection, evaluation, crossover +and mutation, stopping criterion + eoSGA<Indi> gga(select, xover,
+CROSS_RATE, mutation, MUT_RATE,
+ |
|
-
- // Print (sorted) intial population - pop.sort(); - cout << "FINAL Population\n" << pop << endl; - - |
+ // Print (sorted) intial population
+ pop.sort(); + cout << "FINAL Population\n" +<< pop << endl; |
|
-
-} -// A main that catches the exceptions -int main(int argc, char **argv) -{ -#ifdef _MSC_VER - // rng.reseed(42); - int flag = _CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF); - flag |= _CRTDBG_LEAK_CHECK_DF; - _CrtSetDbgFlag(flag); -// _CrtSetBreakAlloc(100); -#endif - try - { - main_function(argc, argv); - } - catch(exception& e) - { - cout << "Exception: " << e.what() << '\n'; - } - return 1; -} - |
+}
+ // A main that catches the exceptions + int main(int argc, char **argv) + { + #ifdef _MSC_VER + // rng.reseed(42); + int flag = _CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF); + flag +|= _CRTDBG_LEAK_CHECK_DF; + _CrtSetDbgFlag(flag); + // _CrtSetBreakAlloc(100); + #endif + try + { + +main_function(argc, argv); + } + catch(exception& +e) + { + +cout << "Exception: " << e.what() << '\n'; + } + return 1; + } |
| //-----------------------------------------------------------------------------
+ // Include the corresponding file + #include <ga.h> +// bitstring representation & operators // define your genotype and fitness types typedef eoBin<double> Indi; |
| // The robust tournament selection
eoDetTournamentSelect<Indi> selectOne(tSize); - // tSize in [2,POPSIZE] // is now encapsulated in a eoSelectPerc (entage) diff --git a/eo/tutorial/html/eoLesson1.html b/eo/tutorial/html/eoLesson1.html index 581b07f2d..9da1a4482 100644 --- a/eo/tutorial/html/eoLesson1.html +++ b/eo/tutorial/html/eoLesson1.html @@ -99,9 +99,14 @@ this is a file that contains the list of the most important EO files. +Then a typedef +directive will allow one to handle the abstract Indi +all around in the main code. Remember that all evolution-related objects +you will need are templatized w.r.t. the type of individuals.
-
- Note: In the
-previous files (Bit - Real)
+
- Note: Don't
+ |