From b84a13e108c2d0a4d0fd70a2f5dc24b86b48df85 Mon Sep 17 00:00:00 2001 From: nojhan Date: Tue, 6 Oct 2020 15:07:04 +0200 Subject: [PATCH] fix tests after FastGA foundry changes --- eo/test/t-eoAlgoFoundryFastGA.cpp | 8 +++--- eo/test/t-eoFoundryFastGA.cpp | 42 +++++++++++++++++++++++-------- 2 files changed, 36 insertions(+), 14 deletions(-) diff --git a/eo/test/t-eoAlgoFoundryFastGA.cpp b/eo/test/t-eoAlgoFoundryFastGA.cpp index 9c5881eb2..b80d19eb5 100644 --- a/eo/test/t-eoAlgoFoundryFastGA.cpp +++ b/eo/test/t-eoAlgoFoundryFastGA.cpp @@ -71,9 +71,9 @@ int main(int /*argc*/, char** /*argv*/) } /***** Offspring population size *****/ - foundry.pop_sizes.add(0); // 0 = same as parent pop + foundry.offspring_sizes.add(0); // 0 = same as parent pop // for(size_t s = pop_size; s < 2*pop_size; s+=pop_size/10) { - // foundry.pop_sizes.add(s); + // foundry.offspring_sizes.add(s); // } @@ -87,7 +87,7 @@ int main(int /*argc*/, char** /*argv*/) * foundry.mutations.size() * foundry.replacements.size() * foundry.continuators.size() - * foundry.pop_sizes.size(); + * foundry.offspring_sizes.size(); std::clog << n << " possible algorithms instances." << std::endl; EOT best_sol; @@ -103,7 +103,7 @@ int main(int /*argc*/, char** /*argv*/) for(size_t i_mut = 0; i_mut < foundry.mutations.size(); ++i_mut ) { for(size_t i_rep = 0; i_rep < foundry.replacements.size(); ++i_rep ) { for(size_t i_cont = 0; i_cont < foundry.continuators.size(); ++i_cont ) { - for(size_t i_pop = 0; i_pop < foundry.pop_sizes.size(); ++i_pop ) { + for(size_t i_pop = 0; i_pop < foundry.offspring_sizes.size(); ++i_pop ) { std::clog << "\r" << i++ << "/" << n-1; std::clog.flush(); eoPop pop; diff --git a/eo/test/t-eoFoundryFastGA.cpp b/eo/test/t-eoFoundryFastGA.cpp index 2718f514e..45abe7d84 100644 --- a/eo/test/t-eoFoundryFastGA.cpp +++ b/eo/test/t-eoFoundryFastGA.cpp @@ -26,7 +26,7 @@ eoAlgoFoundryFastGA& make_foundry(eoFunctorStore& store, eoInit& ini } for(size_t i=5; i<100; i+=10) { - foundry.pop_sizes.add(i); + foundry.offspring_sizes.add(i); } /***** Crossovers ****/ @@ -51,14 +51,24 @@ eoAlgoFoundryFastGA& make_foundry(eoFunctorStore& store, eoInit& ini } /***** Selectors *****/ - foundry.selectors.add< eoRandomSelect >(); - foundry.selectors.add< eoSequentialSelect >(); - foundry.selectors.add< eoProportionalSelect >(); - for(size_t i=2; i < 10; i+=1) { // Tournament size. - foundry.selectors.add< eoDetTournamentSelect >(i); + for(eoOperatorFoundry>& ops : + {std::ref(foundry.crossover_selectors), + std::ref(foundry.aftercross_selectors), + std::ref(foundry.mutation_selectors) }) { + + ops.add< eoRandomSelect >(); + ops.add< eoStochTournamentSelect >(0.5); + ops.add< eoSequentialSelect >(); + ops.add< eoProportionalSelect >(); + for(size_t i=2; i < 10; i+=4) { + ops.add< eoDetTournamentSelect >(i); + } } - for(double i=0.51; i<0.91; i+=0.1) { // Tournament size as perc of pop. - foundry.selectors.add< eoStochTournamentSelect >(i); + + /***** Variation rates *****/ + for(double r = 0.0; r < 1.0; r+=0.1) { + foundry.crossover_rates.add(r); + foundry. mutation_rates.add(r); } /***** Replacements ****/ @@ -88,8 +98,20 @@ int main(int /*argc*/, char** /*argv*/) auto& foundry = make_foundry(store, init, onemax_eval); - size_t n = foundry.continuators.size() * foundry.crossovers.size() * foundry.mutations.size() * foundry.selectors.size() * foundry.replacements.size()* foundry.crossover_rates.size() * foundry.mutation_rates.size() * foundry.pop_sizes.size(); - std::clog << n << " possible algorithms instances." << std::endl; + + size_t n = + foundry.crossover_rates.size() + * foundry.crossover_selectors.size() + * foundry.crossovers.size() + * foundry.aftercross_selectors.size() + * foundry.mutation_rates.size() + * foundry.mutation_selectors.size() + * foundry.mutations.size() + * foundry.replacements.size() + * foundry.continuators.size() + * foundry.offspring_sizes.size(); + + std::clog << n << " possible algorithms instances." << std::endl; eoPop pop; pop.append(5,init);