#include #include #include "smpTestClass.h" using namespace paradiseo::smp; using namespace std; int main(void) { // Defining parameters typedef struct { unsigned popSize = 1000; unsigned tSize = 2; double pCross = 0.8; double pMut = 0.7; unsigned maxGen = 1000; } Param; Param param; // Fixing the seed rng.reseed(42); // Load instance loadInstances("t-data.dat", n, bkv, a, b); //Common part to all islands IndiEvalFunc plainEval; IndiInit chromInit; eoDetTournamentSelect selectOne(param.tSize); eoSelectPerc select(selectOne);// by default rate==1 IndiXover Xover; // CROSSOVER IndiSwapMutation mutationSwap; // MUTATION eoSGATransform transform(Xover, param.pCross, mutationSwap, param.pMut); eoPlusReplacement replace; // MODEL // Topologies Topology topo; // ISLAND 1 // // Algorithm part eoGenContinue genCont(param.maxGen+100); eoPop pop(param.popSize, chromInit); // // Emigration policy // // // Element 1 eoPeriodicContinue criteria(5); eoDetTournamentSelect selectOne1(20); eoSelectNumber who(selectOne1, 3); MigPolicy migPolicy; migPolicy.push_back(PolicyElement(who, criteria)); // // Integration policy eoPlusReplacement intPolicy; try { std::vector> pops = IslandModelWrapper(50, topo, 100, chromInit, intPolicy, migPolicy, genCont, plainEval, select, transform, replace); for(auto& pop : pops) { for(auto& indi : pop) plainEval(indi); pop.sort(); std::cout << pop << std::endl; } } catch(exception& e) { cout << "Exception: " << e.what() << '\n'; } return 0; }